/* ==========================================================================
   Global Fashion Intelligence Landscape — interface styles

   One idea carries the design: a reader must be able to tell an observation
   from an estimate without leaving the page. Hatching means "not observed" and
   is used identically on chips, table cells, charts and the map. Everything
   else stays quiet so that distinction reads.
   ========================================================================== */

:root {
	--gfil-paper: #FFFFFF;
	--gfil-shell: #F7F5F1;
	--gfil-linen: #EFECE5;
	--gfil-rule: #D9D6CE;
	--gfil-rule-strong: #B9B5AA;
	--gfil-slate: #5C6068;
	--gfil-graphite: #1E2024;
	--gfil-ink: #0B0C0E;
	--gfil-navy: #102338;
	--gfil-brass: #9A7B4F;
	--gfil-rising: #1F6F5C;
	--gfil-cooling: #8C3A2B;
	--gfil-aqua: #3F7F86;

	--gfil-display: Newsreader, "Iowan Old Style", "Hoefler Text", Georgia, "Times New Roman", serif;
	--gfil-ui: "Inter Tight", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	--gfil-data: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

	--gfil-hatch: repeating-linear-gradient(
		135deg,
		transparent 0 3px,
		rgba(92, 96, 104, 0.22) 3px 4px
	);

	--gfil-gutter: clamp(1.25rem, 4vw, 3rem);
	--gfil-max: 1560px;
	--gfil-measure: 820px;
}

/* Base -------------------------------------------------------------------- */

/* Horizontal overflow, solved at the root.

   The full-bleed technique below uses 100vw, and on a desktop with a classic
   scrollbar 100vw is wider than the document — which is what produces the
   left-right scroll. Three things fix it together: clip the horizontal axis on
   the root element, reserve the scrollbar so the measure does not jump between
   pages, and give every layout child a min-width of zero so a wide table can
   never push its own container open. */

html {
	overflow-x: clip;
	scrollbar-gutter: stable;
}

@supports not (overflow: clip) {
	html { overflow-x: hidden; }
}

body {
	background: var(--gfil-paper);
	color: var(--gfil-ink);
	font-family: var(--gfil-ui);
	font-feature-settings: "kern" 1, "liga" 1, "tnum" 0;
	-webkit-font-smoothing: antialiased;
	overflow-x: clip;
}

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

img,
svg,
video,
canvas,
iframe,
table {
	max-width: 100%;
}

img,
video { height: auto; }

/* Grid and flex children default to min-width:auto, which is what lets a wide
   child stretch its parent. Zero it for the layout primitives this theme uses. */
.wp-block-group > *,
.gfil-main > *,
.gfil-instrument__stage > *,
.gfil-views > *,
.gfil-indicators > *,
.gfil-dispersion > *,
.gfil-limits > *,
.gfil-editorial > * { min-width: 0; }

pre,
code { overflow-wrap: anywhere; }

.gfil-main {
	display: block;
}

/* The measure. Every full-width band uses this shell for its contents, so the
   reading line stays put while the band itself runs to the edge. */
.gfil-shell {
	width: 100%;
	max-width: var(--gfil-max);
	margin-inline: auto;
	padding-inline: var(--gfil-gutter);
}

.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

.gfil-skip {
	position: absolute;
	left: -9999px;
	z-index: 100;
	padding: 0.75rem 1rem;
	background: var(--gfil-ink);
	color: var(--gfil-paper);
	font-size: 0.8125rem;
}

.gfil-skip:focus {
	left: 1rem;
	top: 1rem;
}

a:focus-visible,
button:focus-visible,
select:focus-visible,
[tabindex]:focus-visible {
	outline: 2px solid var(--gfil-navy);
	outline-offset: 3px;
}

/* Masthead ------------------------------------------------------------------

   A publication establishes itself before it establishes the page: utility rule,
   centred wordmark, navigation rule. Sticky compression keeps the wordmark
   present without keeping its full height.
   -------------------------------------------------------------------------- */

.gfil-masthead {
	background: var(--gfil-paper);
	border-bottom: 1px solid var(--gfil-ink);
	position: relative;
	z-index: 20;
}

.gfil-masthead__utility {
	border-bottom: 1px solid var(--gfil-rule);
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--gfil-slate);
}

.gfil-masthead__utility .gfil-shell {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1.5rem;
	padding-block: 0.55rem;
}

.gfil-masthead__tag { color: var(--gfil-brass); }
.gfil-masthead__contact { text-decoration: none; color: var(--gfil-slate); }
.gfil-masthead__contact:hover { color: var(--gfil-ink); }

.gfil-masthead__brand .gfil-shell {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: 1rem;
	padding-block: clamp(1rem, 2.5vw, 1.9rem);
}

.gfil-wordmark {
	grid-column: 2;
	text-align: center;
	text-decoration: none;
	display: grid;
	gap: 0.35rem;
	justify-items: center;
}

.gfil-wordmark__group {
	font-family: var(--gfil-display);
	font-weight: 380;
	font-size: clamp(1.6rem, 4.4vw, 3.1rem);
	line-height: 0.95;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	color: var(--gfil-ink);
	white-space: nowrap;
}

.gfil-wordmark__name {
	font-family: var(--gfil-data);
	font-size: clamp(0.5rem, 1.1vw, 0.625rem);
	letter-spacing: 0.34em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	padding-left: 0.34em;
}

.gfil-masthead__cta {
	grid-column: 3;
	justify-self: end;
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	border: 1px solid var(--gfil-ink);
	padding: 0.5rem 0.9rem;
	color: var(--gfil-ink);
	white-space: nowrap;
}

.gfil-masthead__cta:hover {
	background: var(--gfil-ink);
	color: var(--gfil-paper);
}

.gfil-navtoggle {
	grid-column: 1;
	justify-self: start;
	display: none;
	align-items: center;
	gap: 0.5rem;
	background: none;
	border: 0;
	padding: 0.4rem 0;
	cursor: pointer;
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--gfil-ink);
}

.gfil-navtoggle span {
	width: 1.15rem;
	height: 7px;
	border-top: 1px solid currentColor;
	border-bottom: 1px solid currentColor;
	display: block;
}

.gfil-nav {
	border-top: 1px solid var(--gfil-rule);
}

.gfil-nav ul {
	display: flex;
	justify-content: center;
	gap: clamp(1.25rem, 3vw, 2.75rem);
	list-style: none;
	margin: 0;
	padding: 0.7rem 0;
	flex-wrap: wrap;
}

.gfil-nav a {
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--gfil-graphite);
	padding-bottom: 0.25rem;
	border-bottom: 1px solid transparent;
	white-space: nowrap;
}

.gfil-nav a:hover,
.gfil-nav a[aria-current="page"] {
	color: var(--gfil-ink);
	border-bottom-color: var(--gfil-brass);
}

/* Sticky compression. The wordmark shrinks, the utility row leaves. */
.gfil-masthead.is-stuck {
	position: sticky;
	top: 0;
}

.gfil-masthead.is-compact .gfil-masthead__utility { display: none; }

.gfil-masthead.is-compact .gfil-masthead__brand .gfil-shell {
	padding-block: 0.55rem;
}

.gfil-masthead.is-compact .gfil-wordmark__group { font-size: clamp(1.1rem, 2.2vw, 1.5rem); }
.gfil-masthead.is-compact .gfil-wordmark__name { display: none; }

/* Typographic furniture ---------------------------------------------------- */

.gfil-eyebrow {
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	margin: 0 0 1rem;
	display: flex;
	align-items: center;
	gap: 0.6rem;
}

.gfil-eyebrow::before {
	content: "";
	width: 1.75rem;
	height: 1px;
	background: var(--gfil-brass);
	flex: none;
}

.gfil-hero,
.gfil-pagehead,
.gfil-section {
	max-width: var(--gfil-max);
	margin-inline: auto;
	padding-inline: var(--gfil-gutter);
}

.gfil-pagehead {
	padding-block: clamp(2.5rem, 7vw, 5rem) clamp(1.75rem, 3.5vw, 3rem);
	border-bottom: 1px solid var(--gfil-ink);
	text-align: center;
	display: grid;
	justify-items: center;
}

.gfil-pagehead .gfil-eyebrow { justify-content: center; }

.gfil-pagehead .gfil-eyebrow::after {
	content: "";
	width: 1.75rem;
	height: 1px;
	background: var(--gfil-brass);
	flex: none;
}

.gfil-pagehead h1 {
	font-family: var(--gfil-display);
	font-weight: 320;
	font-size: clamp(2.25rem, 6vw, 4.25rem);
	line-height: 0.98;
	letter-spacing: -0.028em;
	margin: 0 0 1.25rem;
	max-width: 18ch;
	text-wrap: balance;
}

.gfil-pagehead p[class*="lede"] {
	max-width: 62ch;
	color: var(--gfil-graphite);
	font-family: var(--gfil-display);
	font-weight: 340;
	line-height: 1.5;
	text-wrap: pretty;
	margin: 0;
}

.gfil-section {
	padding-block: clamp(2.5rem, 6vw, 4.5rem);
	border-bottom: 1px solid var(--gfil-rule);
}

.gfil-section__title {
	font-family: var(--gfil-display);
	font-weight: 340;
	letter-spacing: -0.02em;
	line-height: 1.08;
	max-width: 20ch;
	margin: 0;
}

.gfil-section__lede,
.gfil-head__lede {
	max-width: 68ch;
	color: var(--gfil-slate);
	margin-top: 0.75rem;
	font-size: 0.9375rem;
	line-height: 1.6;
	text-wrap: pretty;
}

.gfil-head__title {
	margin: 0;
}

/* Buttons ------------------------------------------------------------------ */

.gfil-cta {
	display: flex;
	gap: 0.75rem;
	flex-wrap: wrap;
}

.gfil-cta .wp-block-button__link {
	border-radius: 0;
	font-size: 0.8125rem;
	letter-spacing: 0.01em;
	padding: 0.75rem 1.4rem;
	border: 1px solid var(--gfil-ink);
	background: var(--gfil-ink);
	color: var(--gfil-paper);
	transition: background 0.15s ease, color 0.15s ease;
}

.gfil-cta .is-style-gfil-quiet .wp-block-button__link {
	background: transparent;
	color: var(--gfil-ink);
	border-color: var(--gfil-rule-strong);
}

.gfil-cta .wp-block-button__link:hover {
	background: var(--gfil-navy);
	border-color: var(--gfil-navy);
	color: var(--gfil-paper);
}

.gfil-link {
	font-size: 0.8125rem;
	border-bottom: 1px solid var(--gfil-brass);
	text-decoration: none;
}

/* Notices ------------------------------------------------------------------ */

.gfil-notice {
	border: 1px solid var(--gfil-rule);
	border-left: 2px solid var(--gfil-brass);
	background: var(--gfil-shell);
	padding: 1rem 1.25rem;
	margin: 2rem 0 0;
}

.gfil-notice p {
	margin: 0;
	font-size: 0.8125rem;
	line-height: 1.55;
	color: var(--gfil-slate);
	max-width: 68ch;
}

.gfil-notice--inline {
	background: none;
	border: 0;
	border-top: 1px solid var(--gfil-rule);
	padding: 1rem 0 0;
}

/* Provenance chips --------------------------------------------------------- */

.gfil-chip {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	border: 1px solid var(--gfil-rule);
	padding: 0.2rem 0.5rem 0.2rem 0.2rem;
	white-space: nowrap;
}

.gfil-chip__mark {
	background: var(--gfil-graphite);
	color: var(--gfil-paper);
	padding: 0.15rem 0.3rem;
	font-size: 0.5625rem;
	letter-spacing: 0.06em;
}

.gfil-chip--reported .gfil-chip__mark {
	background: var(--gfil-paper);
	color: var(--gfil-graphite);
	box-shadow: inset 0 0 0 1px var(--gfil-rule-strong);
}

.gfil-chip--partner .gfil-chip__mark {
	background: var(--gfil-navy);
}

.gfil-chip--modelled .gfil-chip__mark {
	background: var(--gfil-paper);
	color: var(--gfil-graphite);
	background-image: var(--gfil-hatch);
	box-shadow: inset 0 0 0 1px var(--gfil-rule-strong);
}

.gfil-chip--forecast {
	border-style: dashed;
}

.gfil-chip--forecast .gfil-chip__mark {
	background: var(--gfil-paper);
	color: var(--gfil-graphite);
	box-shadow: inset 0 0 0 1px var(--gfil-graphite);
	background-image: var(--gfil-hatch);
}

.gfil-chip__note {
	color: var(--gfil-slate);
	text-transform: none;
	letter-spacing: 0;
}

/* Market pulse ------------------------------------------------------------- */

.gfil-pulse {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	border-top: 1px solid var(--gfil-ink);
	margin-top: 2rem;
}

.gfil-pulse__item {
	padding: 1.5rem 1.5rem 1.5rem 0;
	border-right: 1px solid var(--gfil-rule);
	display: grid;
	align-content: start;
	gap: 0.5rem;
}

.gfil-pulse__item:not(:first-child) {
	padding-left: 1.5rem;
}

.gfil-pulse__item:last-child {
	border-right: 0;
}

.gfil-pulse__label {
	font-family: var(--gfil-ui);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	margin: 0;
}

.gfil-pulse__value {
	font-family: var(--gfil-display);
	font-size: clamp(2rem, 4vw, 2.75rem);
	font-variant-numeric: tabular-nums lining-nums;
	line-height: 1;
	margin: 0;
	letter-spacing: -0.02em;
}

.gfil-pulse__value--empty {
	color: var(--gfil-rule-strong);
}

.gfil-pulse__value.is-up { color: var(--gfil-rising); }
.gfil-pulse__value.is-down { color: var(--gfil-cooling); }

.gfil-pulse__unit {
	font-size: 0.5em;
	color: var(--gfil-slate);
	margin-left: 0.15em;
}

.gfil-pulse__period {
	font-size: 0.75rem;
	color: var(--gfil-slate);
	margin: 0;
}

.gfil-pulse__item .gfil-chip {
	justify-self: start;
}

.gfil-pulse__item.is-awaiting {
	background: linear-gradient(var(--gfil-shell), var(--gfil-shell)) no-repeat;
	background-size: 100% 100%;
}
/* Full-bleed helper --------------------------------------------------------

   The instrument is the one element allowed to leave the grid. It spans the
   viewport while its controls and panel stay on the same measure as the rest of
   the page, so the globe gets the room and the reading line does not move.
   -------------------------------------------------------------------------- */

/* --gfil-vw is the document width excluding the scrollbar, written by the
   script on load and resize. 100vw includes the scrollbar, which is what makes
   full-bleed bands overhang and produce a horizontal scroll on desktop; the
   fallback keeps the layout correct before the script runs. */

.gfil-full {
	width: var(--gfil-vw, 100vw);
	max-width: var(--gfil-vw, 100vw);

	/* !important is load-bearing here, not laziness. WordPress's constrained
	   layout sets `margin-left: auto !important` on every direct child of a
	   group, which silently defeats the negative margin and leaves the band
	   starting at the content edge and running off the right of the page. */
	margin-left: calc(50% - var(--gfil-vw, 100vw) / 2) !important;
	margin-right: calc(50% - var(--gfil-vw, 100vw) / 2) !important;
	max-inline-size: var(--gfil-vw, 100vw);
}

/* The same rule sets a max-width on constrained children; alignfull is the
   class WordPress's own selector excludes, so carrying it keeps the two in
   agreement rather than in a specificity fight. */
.gfil-full.alignfull { max-width: var(--gfil-vw, 100vw); }

/* Registry instrument — the plate ------------------------------------------

   The instrument sits on a dark plate: a cool chart ink with a blue cast, so
   the graticule and the markers read as one material rather than as colour
   dropped onto neutral grey. Two hairline rules at the grid measure make it
   ruled paper, not texture. This is the one place the design raises its voice.
   -------------------------------------------------------------------------- */

.gfil-instrument {
	margin-top: 0;
}

.gfil-instrument--full .gfil-plate {
	padding: clamp(1.5rem, 3vw, 2.75rem) 0;
}

.gfil-instrument--full .gfil-instrument__bar,
.gfil-instrument--full .gfil-instrument__stage,
.gfil-instrument--full .gfil-instrument__foot {
	max-width: var(--gfil-max);
	margin-inline: auto;
	padding-inline: var(--gfil-gutter);
}

.gfil-plate {
	--plate: #08111C;
	--plate-2: #0E1D2E;
	--graticule: #1B3149;
	--land: #16293D;
	--land-registry: #1F3B55;
	--land-assessed: #2A5570;
	--signal: #C79A5E;
	--band-1: #1D3A4C;
	--band-2: #26586A;
	--band-3: #35808C;
	--band-4: #6FADB0;
	--band-5: #C2DCD9;
	--ink-inv: #F2F1EC;
	--ink-inv-2: #8FA1B8;
	--rule-inv: #1E3651;

	position: relative;
	background: var(--plate);
	color: var(--ink-inv);
	overflow: clip;
	padding: clamp(1.25rem, 3vw, 2rem);
	max-width: 100%;
}

.gfil-plate::before {
	content: "";
	position: absolute;
	inset: 0;
	background-image:
		linear-gradient(to right, rgba(255, 255, 255, 0.035) 1px, transparent 1px),
		linear-gradient(to bottom, rgba(255, 255, 255, 0.025) 1px, transparent 1px);
	background-size: 96px 96px;
	pointer-events: none;
}

.gfil-plate > * {
	position: relative;
	z-index: 1;
}

/* Controls ----------------------------------------------------------------- */

.gfil-instrument__bar {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1rem 1.5rem;
	flex-wrap: wrap;
	border-bottom: 1px solid var(--rule-inv);
	padding-bottom: 0.9rem;
}

.gfil-instrument__filters,
.gfil-instrument__modes {
	display: flex;
	gap: 0.35rem;
}

.gfil-pill {
	appearance: none;
	background: transparent;
	border: 1px solid var(--rule-inv);
	color: var(--ink-inv-2);
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	padding: 0.45rem 0.75rem;
	cursor: pointer;
	transition: color 0.15s ease, border-color 0.15s ease, background 0.15s ease;
}

.gfil-pill:hover {
	color: var(--ink-inv);
	border-color: var(--ink-inv-2);
}

.gfil-pill[aria-pressed="true"] {
	color: var(--plate);
	background: var(--signal);
	border-color: var(--signal);
}

.gfil-pill:focus-visible {
	outline: 2px solid var(--signal);
	outline-offset: 2px;
}

.gfil-instrument__select select {
	font-family: var(--gfil-ui);
	font-size: 0.8125rem;
	border: 1px solid var(--rule-inv);
	background: var(--plate-2);
	color: var(--ink-inv);
	padding: 0.45rem 0.6rem;
	border-radius: 0;
	max-width: 20rem;
}

/* Stage -------------------------------------------------------------------- */

.gfil-instrument__stage {
	display: grid;
	/* A fixed floor on the panel, so the record stays readable instead of being
	   squeezed by the globe as the viewport narrows. */
	grid-template-columns: minmax(0, 1.6fr) minmax(19rem, 1fr);
	gap: clamp(1.5rem, 4vw, 4rem);
	align-items: center;
	padding-block: clamp(1.5rem, 3vw, 2.5rem);
	overflow: hidden;
}

.gfil-globe {
	position: relative;
	aspect-ratio: 1 / 1;
	width: 100%;
	max-width: min(52rem, 78vh);
	margin-inline: auto;
}

.gfil-instrument--full .gfil-globe {
	max-width: min(58rem, 82vh);
}

@supports not (aspect-ratio: 1 / 1) {
	.gfil-globe { height: 0; padding-bottom: 100%; }
	.gfil-globe__svg { position: absolute; inset: 0; }
}

.gfil-globe__svg {
	width: 100%;
	height: 100%;
	display: block;
	cursor: grab;
	touch-action: pan-y;
	overflow: visible;
}

.gfil-instrument.is-dragging .gfil-globe__svg { cursor: grabbing; }

/* Flat projection.

   The globe is square, so it is capped to keep it from dominating the stage.
   The flat map is not: it is a 360 × 143 band, and capping it to the same box
   leaves a wide map rendered small. In flat mode the map therefore takes the
   full width of the stage, the record panel moves beneath it, and the height
   follows from the projection rather than from a container guess.

   The upper bound is expressed as a width — the width at which the band would
   be 72vh tall — so the map can never grow taller than the screen on an
   ultrawide display. */

.gfil-instrument[data-mode="flat"] .gfil-instrument__stage {
	grid-template-columns: minmax(0, 1fr);
	align-items: start;
}

.gfil-instrument[data-mode="flat"] .gfil-globe {
	aspect-ratio: auto;
	width: 100%;
	max-width: min(100%, calc(72vh * 360 / 141));
}

.gfil-instrument[data-mode="flat"] .gfil-globe__svg {
	cursor: default;
	touch-action: auto;
	height: auto;
}

/* Free of the sphere, the readout sits under the map instead of over the
   South Atlantic. */
.gfil-instrument[data-mode="flat"] .gfil-globe__readout {
	position: static;
	margin-top: 1.25rem;
	display: inline-block;
}

.gfil-instrument[data-mode="flat"] .gfil-instrument__panel {
	border-left: 0;
	border-top: 1px solid var(--rule-inv);
	padding-left: 0;
	padding-top: 1.5rem;
	margin-top: 1.5rem;
	min-height: 0;
}

/* The record reads as a row rather than a column once it is full width. */
.gfil-instrument[data-mode="flat"] .gfil-panel__rows {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
	column-gap: 2rem;
	border-top: 0;
}

.gfil-instrument[data-mode="flat"] .gfil-panel__links {
	flex-direction: row;
	gap: 1.5rem;
	flex-wrap: wrap;
}

.gfil-globe__svg:focus-visible {
	outline: 2px solid var(--signal);
	outline-offset: 6px;
}

/* Geometry ----------------------------------------------------------------- */

.gfil-globe__sphere {
	fill: var(--plate-2);
	stroke: var(--rule-inv);
	stroke-width: 1;
}

.gfil-globe__graticule {
	fill: none;
	stroke: var(--graticule);
	stroke-width: 1;
}

/* Countries carry coverage, never a score: the platform computes no country
   figure, so the polygon must not look like it reports one. */
.gfil-globe__country {
	fill: var(--land);
	stroke: var(--plate);
	stroke-width: 0.5;
}

.gfil-globe__country[data-coverage="registry"] { fill: var(--land-registry); }
.gfil-globe__country[data-coverage="assessed"] { fill: var(--land-assessed); }

/* Size bands. The ramp carries one published measurement — apparel market
   value — and nothing else. A country with no published value keeps the base
   land colour rather than being shaded into the scale. */
.gfil-globe__country[data-band="1"] { fill: var(--band-1); }
.gfil-globe__country[data-band="2"] { fill: var(--band-2); }
.gfil-globe__country[data-band="3"] { fill: var(--band-3); }
.gfil-globe__country[data-band="4"] { fill: var(--band-4); }
.gfil-globe__country[data-band="5"] { fill: var(--band-5); }
.gfil-globe__country[data-band]:not([data-band="none"]):hover { fill: var(--signal); }

/* Markers ------------------------------------------------------------------ */

.gfil-globe__marker { cursor: pointer; }

.gfil-globe__halo {
	fill: transparent;
	stroke: transparent;
	stroke-width: 1;
}

.gfil-globe__dot {
	fill: none;
	stroke: var(--ink-inv);
	stroke-width: 1.4;
	transition: stroke 0.15s ease, fill 0.15s ease;
}

/* Solid means observed. Hollow means in the registry and not yet assessed —
   the same distinction the chips and the ledger make, in the one place a hatch
   cannot be drawn. */
.gfil-globe__marker[data-assessed="true"] .gfil-globe__dot {
	fill: var(--signal);
	stroke: var(--plate);
	stroke-width: 1;
}

.gfil-globe__marker:hover .gfil-globe__dot,
.gfil-globe__marker.is-selected .gfil-globe__dot {
	stroke: var(--signal);
	stroke-width: 2;
}

.gfil-globe__marker.is-selected .gfil-globe__halo {
	stroke: var(--signal);
	stroke-dasharray: 2 3;
}

.gfil-globe__marker.is-dimmed { opacity: 0.18 !important; pointer-events: none; }

/* Readout — a corner annotation, the way a chart carries its own scale block */
.gfil-globe__readout {
	position: absolute;
	left: 0;
	bottom: 0;
	margin: 0;
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	line-height: 1.55;
	letter-spacing: 0.04em;
	color: var(--ink-inv-2);
	border-left: 2px solid var(--signal);
	padding-left: 0.75rem;
	pointer-events: none;
}

.gfil-globe__readout b {
	display: block;
	color: var(--signal);
	font-weight: 500;
	letter-spacing: 0.1em;
}

.gfil-globe__tooltip {
	position: absolute;
	transform: translate(12px, -50%);
	background: var(--plate-2);
	border: 1px solid var(--rule-inv);
	border-left: 2px solid var(--signal);
	padding: 0.4rem 0.6rem;
	display: flex;
	gap: 0.75rem;
	align-items: baseline;
	pointer-events: none;
	z-index: 3;
	white-space: nowrap;
}

.gfil-globe__tooltip[hidden] { display: none; }

.gfil-globe__tip-name {
	font-family: var(--gfil-ui);
	font-size: 0.8125rem;
	font-weight: 500;
	color: var(--ink-inv);
}

.gfil-globe__tip-state {
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	color: var(--signal);
}

/* Panel -------------------------------------------------------------------- */

.gfil-instrument__panel {
	display: grid;
	align-content: center;
	gap: 0.5rem;
	min-height: 16rem;
	border-left: 1px solid var(--rule-inv);
	padding-left: clamp(1.25rem, 3vw, 2.5rem);
}

.gfil-instrument__panel .gfil-eyebrow {
	color: var(--signal);
	margin-bottom: 0.5rem;
}

.gfil-instrument__panel .gfil-eyebrow::before { background: var(--signal); }

.gfil-instrument__prompt {
	font-size: 0.8125rem;
	color: var(--ink-inv-2);
	margin: 0;
	max-width: 34ch;
}

.gfil-panel__name {
	font-family: var(--gfil-display);
	font-size: clamp(1.5rem, 3vw, 2rem);
	line-height: 1.05;
	letter-spacing: -0.02em;
	margin: 0;
	color: var(--ink-inv);
}

.gfil-panel__meta {
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ink-inv-2);
	margin: 0;
}

.gfil-panel__rows {
	margin: 1rem 0 0;
	display: grid;
	gap: 0;
	border-top: 1px solid var(--rule-inv);
}

.gfil-panel__row {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	border-bottom: 1px solid var(--rule-inv);
	padding: 0.55rem 0;
	font-size: 0.8125rem;
}

.gfil-panel__row dt {
	color: var(--ink-inv-2);
	margin: 0;
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

.gfil-panel__row dd {
	margin: 0;
	font-variant-numeric: tabular-nums;
	color: var(--ink-inv);
}

.gfil-instrument__panel .gfil-owned {
	border-color: var(--signal);
	color: var(--signal);
	vertical-align: middle;
}

.gfil-instrument__panel .gfil-status.is-unassessed { color: var(--ink-inv-2); }
.gfil-instrument__panel .gfil-status.is-assessed { color: var(--signal); }

/* Foot --------------------------------------------------------------------- */

.gfil-instrument__foot {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1rem 2rem;
	flex-wrap: wrap;
	border-top: 1px solid var(--rule-inv);
	padding-top: 0.9rem;
}

.gfil-globe__hint,
.gfil-legend {
	margin: 0;
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.04em;
	color: var(--ink-inv-2);
}

.gfil-legend {
	list-style: none;
	padding: 0;
	display: flex;
	gap: 1.25rem;
	flex-wrap: wrap;
}

.gfil-legend__item {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
}

.gfil-legend__item::before {
	content: "";
	width: 9px;
	height: 9px;
	border-radius: 50%;
	border: 1.4px solid var(--ink-inv);
}

.gfil-legend__item.is-assessed::before {
	background: var(--signal);
	border-color: var(--signal);
}

/* Geometry unavailable: hide the stage, keep every figure in the ledger. */
.gfil-instrument.is-unavailable .gfil-globe { display: none; }
.gfil-instrument.is-unavailable .gfil-instrument__stage { grid-template-columns: 1fr; }

.gfil-instrument.is-unavailable .gfil-instrument__panel {
	border-left: 0;
	padding-left: 0;
	min-height: 0;
}

.gfil-instrument__coverage {
	font-size: 0.75rem;
	color: var(--gfil-slate);
	padding: 0.75rem 0;
	margin: 0;
	border-bottom: 1px solid var(--gfil-rule);
}

/* Tables ------------------------------------------------------------------- */

.gfil-tablewrap {
	overflow-x: auto;
	margin-top: 1.5rem;
	border-top: 1px solid var(--gfil-ink);
}

.gfil-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.8125rem;
}

.gfil-table caption {
	text-align: left;
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	padding: 0.75rem 0;
}

.gfil-table th,
.gfil-table td {
	text-align: left;
	padding: 0.7rem 0.9rem 0.7rem 0;
	border-bottom: 1px solid var(--gfil-rule);
	vertical-align: top;
}

.gfil-table thead th {
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	font-weight: 400;
	border-bottom-color: var(--gfil-rule-strong);
	position: sticky;
	top: 0;
	background: var(--gfil-paper);
}

.gfil-table tbody th {
	font-weight: 500;
}

.gfil-table .is-num,
.gfil-table .is-rank {
	text-align: right;
	font-variant-numeric: tabular-nums lining-nums;
	font-family: var(--gfil-data);
	padding-right: 1.25rem;
}

.gfil-table .is-rank {
	width: 4rem;
	color: var(--gfil-slate);
}

.gfil-table tbody tr:hover,
.gfil-table tbody tr.is-selected {
	background: var(--gfil-shell);
}

.gfil-table tr.is-unassessed th,
.gfil-table tr.is-unassessed td {
	color: var(--gfil-slate);
}

.gfil-table tr.is-unassessed .is-num {
	background-image: var(--gfil-hatch);
	background-size: 100% 100%;
}

.gfil-table .is-classes {
	font-size: 0.75rem;
	color: var(--gfil-slate);
}

.gfil-status {
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.gfil-status.is-assessed { color: var(--gfil-rising); }
.gfil-status.is-unassessed,
.gfil-status.is-planned { color: var(--gfil-slate); }
.gfil-status.is-in-development { color: var(--gfil-brass); }
.gfil-status.is-published { color: var(--gfil-rising); }
.gfil-status.is-not-planned { color: var(--gfil-cooling); }

.gfil-owned {
	font-family: var(--gfil-data);
	font-size: 0.5625rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	border: 1px solid var(--gfil-navy);
	color: var(--gfil-navy);
	padding: 0.05rem 0.3rem;
	white-space: nowrap;
}

.gfil-index__name { display: block; }

.gfil-index__abbr {
	display: block;
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.08em;
	color: var(--gfil-slate);
	font-weight: 400;
}

/* Index cards -------------------------------------------------------------- */

.gfil-indices {
	display: grid;
	gap: 3rem;
	margin-top: 2rem;
}

.gfil-index {
	border-top: 1px solid var(--gfil-ink);
	padding-top: 1.25rem;
}

.gfil-index__head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 1rem;
	flex-wrap: wrap;
}

.gfil-index__head h3 {
	margin: 0;
	font-family: var(--gfil-display);
	font-size: 1.5rem;
	font-weight: 420;
	letter-spacing: -0.014em;
}

.gfil-index__purpose {
	max-width: 66ch;
	margin: 0.75rem 0 0;
	color: var(--gfil-graphite);
}

.gfil-index__threshold {
	max-width: 66ch;
	font-size: 0.8125rem;
	color: var(--gfil-slate);
	background: var(--gfil-shell);
	padding: 0.75rem 1rem;
	border-left: 2px solid var(--gfil-rule-strong);
}

.gfil-index__dimnote {
	display: block;
	font-weight: 400;
	font-size: 0.75rem;
	color: var(--gfil-slate);
	max-width: 52ch;
	margin-top: 0.2rem;
}

.gfil-weight {
	position: relative;
	min-width: 6.5rem;
}

.gfil-weight__bar {
	position: absolute;
	left: 0;
	bottom: 0.55rem;
	height: 2px;
	width: calc(var(--w) * 0.55);
	max-width: 4rem;
	background: var(--gfil-brass);
}

.gfil-table--weights tfoot th,
.gfil-table--weights tfoot td {
	border-bottom: 0;
	border-top: 1px solid var(--gfil-rule-strong);
	font-family: var(--gfil-data);
	font-size: 0.75rem;
}

.gfil-notplanned-set {
	display: grid;
	gap: 1.5rem;
	margin-top: 1.5rem;
	grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));
}

.gfil-notplanned {
	border: 1px solid var(--gfil-rule);
	border-top: 2px solid var(--gfil-cooling);
	padding: 1.25rem;
}

.gfil-notplanned h4 { margin: 0 0 0.5rem; }
.gfil-notplanned p { margin: 0; font-size: 0.8125rem; color: var(--gfil-slate); }

/* Provenance legend -------------------------------------------------------- */

.gfil-method {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
	gap: 0;
	margin-top: 2rem;
	border-top: 1px solid var(--gfil-ink);
}

.gfil-method__item {
	padding: 1.25rem 1.25rem 1.25rem 0;
	border-right: 1px solid var(--gfil-rule);
	display: grid;
	gap: 0.6rem;
	align-content: start;
}

.gfil-method__item:not(:first-child) { padding-left: 1.25rem; }
.gfil-method__item:last-child { border-right: 0; }
.gfil-method__item .gfil-chip { justify-self: start; }

.gfil-method__item p {
	margin: 0;
	font-size: 0.8125rem;
	line-height: 1.5;
	color: var(--gfil-slate);
}

/* Events and research ------------------------------------------------------ */

.gfil-events,
.gfil-research {
	list-style: none;
	margin: 2rem 0 0;
	padding: 0;
	border-top: 1px solid var(--gfil-ink);
}

.gfil-events__item {
	padding: 1.5rem 0;
	border-bottom: 1px solid var(--gfil-rule);
	display: grid;
	grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
	gap: 1.5rem;
	align-items: start;
}

.gfil-events__item h3 {
	margin: 0;
	font-family: var(--gfil-display);
	font-size: 1.25rem;
	font-weight: 440;
}

.gfil-events__item h3 a { text-decoration: none; }

.gfil-events__meta {
	font-family: var(--gfil-data);
	font-size: 0.75rem;
	color: var(--gfil-slate);
	margin: 0.35rem 0 0;
}

.gfil-events__data {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1rem;
	margin: 0;
}

.gfil-events__data dt {
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	margin: 0 0 0.3rem;
}

.gfil-events__data dd {
	margin: 0;
	font-size: 0.875rem;
	font-variant-numeric: tabular-nums;
	display: flex;
	align-items: center;
	gap: 0.4rem;
	flex-wrap: wrap;
}

.gfil-research {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr));
}

.gfil-research__item {
	padding: 1.5rem 1.5rem 1.5rem 0;
	border-right: 1px solid var(--gfil-rule);
	border-bottom: 1px solid var(--gfil-rule);
}

.gfil-research__item:not(:first-child) { padding-left: 1.5rem; }

.gfil-research__item h3 {
	font-family: var(--gfil-display);
	font-size: 1.1875rem;
	font-weight: 440;
	margin: 0 0 0.5rem;
}

.gfil-research__item h3 a { text-decoration: none; }

.gfil-research__item p {
	font-size: 0.8125rem;
	color: var(--gfil-slate);
	margin: 0;
}

.gfil-research__date {
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	margin-top: 0.75rem !important;
}

/* Empty state -------------------------------------------------------------- */

.gfil-empty {
	border: 1px dashed var(--gfil-rule-strong);
	padding: clamp(1.5rem, 4vw, 2.5rem);
	margin-top: 2rem;
	background: var(--gfil-shell);
}

.gfil-empty h3 {
	margin: 0 0 0.5rem;
	font-family: var(--gfil-display);
	font-size: 1.25rem;
	font-weight: 440;
}

.gfil-empty p {
	margin: 0;
	max-width: 64ch;
	font-size: 0.875rem;
	color: var(--gfil-slate);
}

.gfil-empty p + p { margin-top: 1rem; }

/* Documents ---------------------------------------------------------------- */

.gfil-main--doc .gfil-doc {
	max-width: var(--gfil-max);
	margin-inline: auto;
	padding: clamp(2.5rem, 6vw, 4.5rem) var(--gfil-gutter);
}

.gfil-doc .gfil-head {
	border-bottom: 1px solid var(--gfil-rule);
	padding-bottom: 1.5rem;
}

.gfil-docmeta {
	display: flex;
	gap: 2rem;
	flex-wrap: wrap;
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	padding: 1rem 0;
	border-bottom: 1px solid var(--gfil-rule);
}

.gfil-docmeta a { color: var(--gfil-slate); }

.gfil-clauses {
	margin-top: 2.5rem;
	display: grid;
	gap: 2.5rem;
	max-width: 74ch;
}

.gfil-clause h2 {
	font-family: var(--gfil-display);
	font-size: 1.375rem;
	font-weight: 440;
	margin: 0 0 0.75rem;
	display: flex;
	gap: 0.9rem;
	align-items: baseline;
}

.gfil-clause__n {
	font-family: var(--gfil-data);
	font-size: 0.75rem;
	color: var(--gfil-brass);
	letter-spacing: 0.06em;
	flex: none;
}

.gfil-clause p {
	margin: 0 0 0.9rem;
	line-height: 1.62;
	color: var(--gfil-graphite);
}

.gfil-doclist {
	list-style: none;
	margin: 1.5rem 0 0;
	padding: 0;
	border-top: 1px solid var(--gfil-rule);
	columns: 2;
	column-gap: 3rem;
}

.gfil-doclist li { break-inside: avoid; }

.gfil-doclist a {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.6rem 0;
	border-bottom: 1px solid var(--gfil-rule);
	text-decoration: none;
	font-size: 0.875rem;
}

.gfil-doclist em {
	font-family: var(--gfil-data);
	font-style: normal;
	font-size: 0.625rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--gfil-slate);
}

.gfil-routing {
	list-style: none;
	margin: 0;
	padding: 0;
	border-top: 1px solid var(--gfil-ink);
	max-width: 68ch;
}

.gfil-routing li {
	padding: 0.65rem 0;
	border-bottom: 1px solid var(--gfil-rule);
	font-size: 0.875rem;
}

.gfil-routing strong {
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.08em;
	margin-right: 0.75rem;
}

.gfil-contact__address {
	font-family: var(--gfil-display);
	font-size: 1.5rem;
	margin-top: 2rem;
}

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

.gfil-footer {
	background: var(--gfil-ink);
	color: var(--gfil-shell);
	margin-top: 0;
}

.gfil-footer a { color: var(--gfil-shell); text-decoration: none; }
.gfil-footer a:hover { color: var(--gfil-paper); border-bottom: 1px solid var(--gfil-brass); }

.gfil-footer__inner {
	max-width: var(--gfil-max);
	margin: 0 auto;
	padding: clamp(3rem, 6vw, 4.5rem) var(--gfil-gutter) 2.5rem;
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 2.2fr);
	gap: clamp(2rem, 5vw, 4rem);
}

.gfil-footer__name {
	font-family: var(--gfil-display);
	font-size: 1.5rem;
	letter-spacing: -0.018em;
	margin: 0 0 0.35rem;
}

.gfil-footer__platform {
	font-size: 0.875rem;
	color: #B9B5AA;
	margin: 0 0 1rem;
	max-width: 24ch;
}

.gfil-footer__contact {
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #B9B5AA;
	margin: 0 0 0.4rem;
}

.gfil-footer__nav {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
	gap: 2rem;
}

.gfil-footer__group h2 {
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--gfil-brass);
	margin: 0 0 0.9rem;
	font-weight: 400;
}

.gfil-footer__group ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 0.5rem;
}

.gfil-footer__group a { font-size: 0.8125rem; }

.gfil-footer__legal {
	border-top: 1px solid rgba(247, 245, 241, 0.15);
}

.gfil-footnotices {
	max-width: var(--gfil-max);
	margin: 0 auto;
	padding: 2rem var(--gfil-gutter);
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: clamp(2rem, 5vw, 4rem);
}

.gfil-footnotices__block {
	max-width: 72rem;
}

.gfil-footnotices h3 {
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--gfil-brass);
	margin: 0 0 0.75rem;
	font-weight: 400;
}

.gfil-footnotices p {
	margin: 0;
	font-size: 0.75rem;
	line-height: 1.6;
	color: #A9A69D;
}

.gfil-rights {
	max-width: var(--gfil-max);
	margin: 0 auto;
	padding: 0 var(--gfil-gutter) 2.5rem;
}

.gfil-rights p {
	margin: 0 0 0.3rem;
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	color: #8D8A82;
}

/* Editorial content defaults ---------------------------------------------- */

.wp-block-code {
	background: var(--gfil-graphite);
	color: var(--gfil-shell);
	font-family: var(--gfil-data);
	font-size: 0.8125rem;
	line-height: 1.7;
	padding: 1.25rem;
	border-radius: 0;
	overflow-x: auto;
}

.gfil-postlist {
	display: grid;
	gap: 2rem;
	grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
	margin-top: 2rem;
}

.gfil-archive-head,
.gfil-entry-head {
	padding-block: clamp(2.5rem, 6vw, 4rem) 1.5rem;
	border-bottom: 1px solid var(--gfil-rule);
}

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

   Checked at 1440, 1280, 1024, 768, 430 and 390. The mobile heading scale is
   designed rather than derived: display type that works at 6.5rem does not work
   scaled down, it works redrawn.
   -------------------------------------------------------------------------- */

@media (max-width: 1280px) {
	.gfil-instrument__stage { gap: 2rem; }
	.gfil-editorial { gap: 2.5rem; }
}

@media (max-width: 1024px) {
	.gfil-hero {
		grid-template-columns: 1fr;
		row-gap: 1.5rem;
	}

	.gfil-hero .gfil-notice {
		grid-column: 1;
		grid-row: auto;
	}

	.gfil-instrument__stage {
		grid-template-columns: 1fr;
	}

	.gfil-instrument__panel {
		border-left: 0;
		border-top: 1px solid var(--rule-inv);
		padding-left: 0;
		padding-top: 1.5rem;
		min-height: 0;
	}

	.gfil-globe { max-width: min(30rem, 70vw); }
	.gfil-instrument--full .gfil-globe { max-width: min(34rem, 76vw); }

	.gfil-pulse { grid-template-columns: repeat(2, 1fr); }
	.gfil-pulse__item:nth-child(2n) { border-right: 0; }
	.gfil-pulse__item:nth-child(-n+2) { border-bottom: 1px solid var(--gfil-rule); }

	.gfil-editorial {
		grid-template-columns: 1fr;
		gap: 1.75rem;
	}

	.gfil-editorial--reverse > .gfil-plate-img { order: 0; }
	.gfil-editorial h2 { max-width: 22ch; }

	.gfil-dispersion__item,
	.gfil-indicator,
	.gfil-view {
		border-right: 0;
		padding-left: 0 !important;
		padding-right: 0;
	}

	.gfil-footer__inner { grid-template-columns: 1fr; }
	.gfil-doclist { columns: 1; }
}

@media (max-width: 900px) {
	/* The navigation leaves the rule and becomes a panel. The wordmark stays
	   centred, because that is the thing a reader uses to orient. */
	.gfil-navtoggle { display: inline-flex; }

	.gfil-masthead__cta { display: none; }

	.gfil-masthead__brand .gfil-shell {
		grid-template-columns: 1fr auto 1fr;
	}

	.gfil-nav {
		display: none;
		border-top: 1px solid var(--gfil-rule);
		background: var(--gfil-shell);
	}

	.gfil-nav.is-open { display: block; }

	.gfil-nav ul {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		padding-block: 0.5rem;
	}

	.gfil-nav li { border-bottom: 1px solid var(--gfil-rule); }
	.gfil-nav li:last-child { border-bottom: 0; }

	.gfil-nav a {
		display: block;
		padding: 0.95rem 0;
		font-size: 0.75rem;
		letter-spacing: 0.2em;
		border-bottom: 0;
	}

	.gfil-masthead__utility .gfil-shell { justify-content: space-between; }
	.gfil-masthead__date { display: none; }
}

@media (max-width: 768px) {
	.gfil-ehero__title { font-size: clamp(2.4rem, 12vw, 3.4rem); line-height: 0.98; max-width: 13ch; }
	.gfil-ehero__lede { font-size: 1.0625rem; }
	.gfil-ehero.has-image .gfil-ehero__inner { padding-block: 8rem 2.5rem; }

	.gfil-pagehead h1 { font-size: clamp(2rem, 9vw, 2.75rem); max-width: 14ch; }

	.gfil-hero__title {
		font-size: clamp(2.25rem, 11vw, 3rem);
		line-height: 1.02;
		max-width: 14ch;
	}

	.gfil-events__item { grid-template-columns: 1fr; }

	.gfil-method__item,
	.gfil-research__item {
		border-right: 0;
		padding-left: 0 !important;
		border-bottom: 1px solid var(--gfil-rule);
	}

	.gfil-footnotices { grid-template-columns: 1fr; }
	.gfil-docmeta { gap: 0.75rem 1.5rem; }

	.gfil-instrument__bar,
	.gfil-output__bar {
		flex-direction: column;
		align-items: stretch;
		gap: 0.75rem;
	}

	.gfil-instrument__select select,
	.gfil-output__search input { width: 100%; max-width: none; }

	.gfil-instrument__filters,
	.gfil-instrument__modes { flex-wrap: wrap; }

	.gfil-divider { margin-block: 2.5rem 1.5rem; }
	.gfil-divider span { letter-spacing: 0.2em; font-size: 0.625rem; }

	/* Wide tables scroll inside their own frame, with an edge shadow so the
	   affordance is visible before the first swipe. */
	.gfil-tablewrap {
		position: relative;
		-webkit-overflow-scrolling: touch;
	}

	.gfil-tablewrap::after {
		content: "";
		position: sticky;
		right: 0;
		top: 0;
		float: right;
		width: 2rem;
		height: 100%;
		pointer-events: none;
		background: linear-gradient(to right, rgba(255, 255, 255, 0), var(--gfil-paper));
	}

	.gfil-table--output th[scope="row"] {
		position: sticky;
		left: 0;
		background: var(--gfil-paper);
		z-index: 1;
	}
}

@media (max-width: 640px) {
	.gfil-globe { max-width: min(22rem, 88vw); }
	.gfil-instrument--full .gfil-globe { max-width: min(24rem, 92vw); }

	.gfil-instrument__foot {
		flex-direction: column;
		align-items: flex-start;
		gap: 0.75rem;
	}

	.gfil-legend { gap: 0.75rem 1rem; }
}

@media (max-width: 430px) {
	:root { --gfil-gutter: 1.15rem; }

	.gfil-pulse { grid-template-columns: 1fr; }

	.gfil-pulse__item {
		border-right: 0;
		border-bottom: 1px solid var(--gfil-rule);
		padding-left: 0 !important;
	}

	.gfil-wordmark__group { font-size: clamp(1.35rem, 7.4vw, 1.9rem); }
	.gfil-wordmark__name { letter-spacing: 0.22em; }

	.gfil-events__data { grid-template-columns: 1fr 1fr; }
	.gfil-table { font-size: 0.75rem; }
	.gfil-indicator__value { font-size: 1.75rem; }
	.gfil-ehero__actions { width: 100%; }
	.gfil-btn { flex: 1; text-align: center; padding-inline: 1rem; }
}

@media print {
	.gfil-header,
	.gfil-footer__nav,
	.gfil-globe { display: none; }

	.gfil-plate { background: none; color: #000; padding: 0; }

	.gfil-footer { background: none; color: #000; }
}

/* ==========================================================================
   Analytical components — outlook, dispersion, indicators, audience reads,
   the output table and the source register.

   These sit on paper and stay quiet. The plate above already spends the page's
   one allowance for contrast; a second loud surface would flatten both.
   ========================================================================== */

/* Shared table furniture --------------------------------------------------- */

.gfil-unit {
	display: block;
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	margin-top: 0.15rem;
}

.gfil-cite {
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	color: var(--gfil-slate);
	text-decoration: none;
	border-bottom: 1px solid var(--gfil-rule);
}

.gfil-cite:hover { color: var(--gfil-ink); border-bottom-color: var(--gfil-brass); }

.gfil-tablenote {
	font-size: 0.75rem;
	line-height: 1.6;
	color: var(--gfil-slate);
	max-width: 78ch;
	margin: 1rem 0 0;
	display: flex;
	gap: 0.6rem;
	align-items: flex-start;
	flex-wrap: wrap;
}

/* Forecast cells are hatched, everywhere, for the same reason as the chips. */
.gfil-table .is-forecast {
	background-image: var(--gfil-hatch);
	background-size: 100% 100%;
}

.gfil-table .is-source { white-space: nowrap; }

/* Dispersion --------------------------------------------------------------- */

.gfil-dispersion {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr));
	gap: 0;
	margin-top: 2rem;
	border-top: 1px solid var(--gfil-ink);
}

.gfil-dispersion__item {
	padding: 1.5rem 1.5rem 1.5rem 0;
	border-right: 1px solid var(--gfil-rule);
	border-bottom: 1px solid var(--gfil-rule);
}

.gfil-dispersion__item:not(:first-child) { padding-left: 1.5rem; }
.gfil-dispersion__item:last-child { border-right: 0; }

.gfil-dispersion__item h3 {
	font-family: var(--gfil-ui);
	font-size: 0.8125rem;
	font-weight: 500;
	letter-spacing: 0.01em;
	margin: 0 0 0.5rem;
}

.gfil-dispersion__range {
	font-family: var(--gfil-display);
	font-size: 1.375rem;
	font-variant-numeric: tabular-nums;
	margin: 0 0 0.75rem;
}

.gfil-dispersion__bar {
	height: 3px;
	background: var(--gfil-rule);
	margin-bottom: 0.6rem;
}

.gfil-dispersion__bar > span {
	display: block;
	height: 3px;
	width: var(--w);
	background: var(--gfil-cooling);
}

.gfil-dispersion__spread,
.gfil-dispersion__source {
	font-size: 0.75rem;
	color: var(--gfil-slate);
	margin: 0 0 0.4rem;
}

.gfil-dispersion__spread strong {
	font-family: var(--gfil-data);
	color: var(--gfil-cooling);
}

/* Consumer indicators ------------------------------------------------------ */

.gfil-indicators {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
	gap: 0;
	margin-top: 2rem;
	border-top: 1px solid var(--gfil-ink);
}

.gfil-indicator {
	padding: 1.5rem 1.5rem 1.5rem 0;
	border-right: 1px solid var(--gfil-rule);
	border-bottom: 1px solid var(--gfil-rule);
	display: grid;
	align-content: start;
	gap: 0.4rem;
}

.gfil-indicator:not(:first-child) { padding-left: 1.5rem; }

.gfil-indicator__value {
	font-family: var(--gfil-display);
	font-size: clamp(1.75rem, 3vw, 2.25rem);
	line-height: 1;
	letter-spacing: -0.02em;
	font-variant-numeric: tabular-nums;
	margin: 0;
}

.gfil-indicator__label {
	font-family: var(--gfil-ui);
	font-size: 0.8125rem;
	font-weight: 500;
	margin: 0;
}

.gfil-indicator__detail {
	font-size: 0.75rem;
	color: var(--gfil-slate);
	margin: 0;
}

.gfil-indicator__foot {
	margin: 0.5rem 0 0;
	display: flex;
	gap: 0.5rem;
	align-items: center;
	flex-wrap: wrap;
}

/* Audience reads ----------------------------------------------------------- */

.gfil-views {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));
	gap: 0;
	margin-top: 2rem;
	border-top: 1px solid var(--gfil-ink);
}

.gfil-view {
	padding: 1.75rem 1.75rem 1.75rem 0;
	border-right: 1px solid var(--gfil-rule);
	border-bottom: 1px solid var(--gfil-rule);
}

.gfil-view:not(:first-child) { padding-left: 1.75rem; }
.gfil-view:last-child { border-right: 0; }

.gfil-view__q {
	font-family: var(--gfil-display);
	font-size: 1.25rem;
	font-weight: 440;
	line-height: 1.25;
	margin: 0 0 0.75rem;
	max-width: 24ch;
}

.gfil-view__a {
	font-size: 0.875rem;
	line-height: 1.6;
	color: var(--gfil-graphite);
	margin: 0 0 1rem;
}

.gfil-view__cannot {
	font-size: 0.8125rem;
	line-height: 1.55;
	color: var(--gfil-slate);
	border-left: 2px solid var(--gfil-rule-strong);
	padding-left: 0.9rem;
	margin: 0;
}

.gfil-view__cannot strong { color: var(--gfil-graphite); }

/* Limits ------------------------------------------------------------------- */

.gfil-limits {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));
	gap: clamp(1.5rem, 4vw, 3rem);
	margin-top: 2rem;
}

.gfil-limits__col h3 {
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--gfil-rising);
	font-weight: 400;
	margin: 0 0 1rem;
	padding-bottom: 0.6rem;
	border-bottom: 1px solid var(--gfil-rule-strong);
}

.gfil-limits__col.is-negative h3 { color: var(--gfil-cooling); }

.gfil-limits__col ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 0.9rem;
}

.gfil-limits__col li {
	font-size: 0.875rem;
	line-height: 1.55;
	color: var(--gfil-graphite);
	padding-left: 1.1rem;
	position: relative;
}

.gfil-limits__col li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.62em;
	width: 0.45rem;
	height: 1px;
	background: var(--gfil-rule-strong);
}

/* Output table ------------------------------------------------------------- */

.gfil-output { margin-top: 2rem; }

.gfil-output__bar {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1rem;
	flex-wrap: wrap;
	padding-bottom: 0.9rem;
}

.gfil-output__filters {
	display: flex;
	gap: 0.5rem;
	align-items: center;
	flex-wrap: wrap;
}

.gfil-output__search input {
	font-family: var(--gfil-ui);
	font-size: 0.8125rem;
	border: 1px solid var(--gfil-rule-strong);
	background: var(--gfil-paper);
	padding: 0.45rem 0.7rem;
	border-radius: 0;
	min-width: 14rem;
}

.gfil-pill--light {
	border-color: var(--gfil-rule-strong);
	color: var(--gfil-slate);
	background: var(--gfil-paper);
}

.gfil-pill--light:hover { color: var(--gfil-ink); border-color: var(--gfil-ink); }

.gfil-pill--light.is-active,
.gfil-pill--light[aria-pressed="true"] {
	background: var(--gfil-ink);
	border-color: var(--gfil-ink);
	color: var(--gfil-paper);
}

.gfil-tablewrap--tall {
	max-height: 34rem;
	overflow: auto;
}

.gfil-table--output th.is-sortable {
	cursor: pointer;
	user-select: none;
	vertical-align: bottom;
	padding-bottom: 0.5rem;
}

.gfil-table--output th.is-sortable:hover .gfil-th__label { color: var(--gfil-ink); }

.gfil-th__label {
	display: block;
	margin-bottom: 0.35rem;
}

.gfil-th__prov .gfil-chip {
	border: 0;
	padding: 0;
	gap: 0.25rem;
}

.gfil-th__prov .gfil-chip__text { display: none; }

.gfil-table--output th[aria-sort="ascending"] .gfil-th__label::after { content: " ↑"; color: var(--gfil-brass); }
.gfil-table--output th[aria-sort="descending"] .gfil-th__label::after { content: " ↓"; color: var(--gfil-brass); }

.gfil-table--output td,
.gfil-table--output th { white-space: nowrap; }

.gfil-table--ranking .gfil-weight__bar {
	position: static;
	display: inline-block;
	vertical-align: middle;
	margin-right: 0.5rem;
	width: calc(var(--w) * 0.4);
	max-width: 3rem;
}

/* Spacing corrections ------------------------------------------------------

   Sections previously stacked their own bottom rule against the next section's
   top rule, which doubled the hairline. One rule per boundary now, and the last
   section in a page drops its rule so the footer's own edge does the work.
   -------------------------------------------------------------------------- */

.gfil-section + .gfil-section { border-top: 0; }
.gfil-section:last-of-type { border-bottom: 0; }
.gfil-pagehead + .gfil-section { padding-top: clamp(2rem, 4vw, 3rem); }

.gfil-main > .gfil-section:first-child { padding-top: clamp(2rem, 4vw, 3rem); }

.gfil-section > .gfil-tablewrap:first-child,
.gfil-section > .gfil-output:first-child { margin-top: 0; }

.gfil-section__title + .gfil-section__lede { margin-top: 0.75rem; }

/* Wide sections read better on a wider measure than body prose. */
.gfil-section--wide .gfil-section__lede,
.gfil-section--wide p { max-width: 78ch; }

@media (max-width: 1024px) {
	.gfil-dispersion__item,
	.gfil-indicator,
	.gfil-view {
		border-right: 0;
		padding-left: 0 !important;
		padding-right: 0;
	}
}

/* Instrument legend ramp and ledger ---------------------------------------- */

.gfil-legend__ramp {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
}

.gfil-legend__ramp span { margin-right: 0.25rem; }

.gfil-legend__ramp i {
	width: 1.35rem;
	height: 0.45rem;
	display: block;
}

.gfil-legend__ramp i[data-band="1"] { background: var(--band-1); }
.gfil-legend__ramp i[data-band="2"] { background: var(--band-2); }
.gfil-legend__ramp i[data-band="3"] { background: var(--band-3); }
.gfil-legend__ramp i[data-band="4"] { background: var(--band-4); }
.gfil-legend__ramp i[data-band="5"] { background: var(--band-5); }

.gfil-instrument__ledger {
	max-width: var(--gfil-max);
	margin-inline: auto;
	padding-inline: var(--gfil-gutter);
}

.gfil-instrument--full .gfil-instrument__coverage {
	max-width: var(--gfil-max);
	margin-inline: auto;
	padding-inline: var(--gfil-gutter);
	padding-block: 0.9rem;
}

.gfil-instrument__through {
	margin: 1rem 0 0;
}

.gfil-pulse__note {
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	color: var(--gfil-cooling);
	margin: 0;
}

.gfil-pulse__foot {
	margin: 0.35rem 0 0;
	display: flex;
	gap: 0.5rem;
	align-items: center;
	flex-wrap: wrap;
}

/* ==========================================================================
   Editorial layer

   The second register: arrival, argument, image. Display serif at magazine
   scale, hairline rules doing the structural work, small caps for every label.
   It carries the top of a page; the analytical surfaces carry the rest.
   ========================================================================== */

.gfil-eyebrow--centre {
	justify-content: center;
	text-align: center;
}

.gfil-eyebrow--centre::after {
	content: "";
	width: 1.75rem;
	height: 1px;
	background: var(--gfil-brass);
	flex: none;
}

/* Editorial hero ----------------------------------------------------------- */

.gfil-ehero {
	position: relative;
	background: var(--gfil-paper);
	border-bottom: 1px solid var(--gfil-ink);
	isolation: isolate;
}

.gfil-ehero__inner {
	padding-block: clamp(3rem, 9vw, 7rem);
	text-align: center;
	display: grid;
	justify-items: center;
	gap: 0;
}

.gfil-ehero__title {
	font-family: var(--gfil-display);
	font-weight: 300;
	font-size: clamp(2.6rem, 8vw, 6.5rem);
	line-height: 0.94;
	letter-spacing: -0.03em;
	margin: 0.5rem 0 1.25rem;
	max-width: 16ch;
	text-wrap: balance;
}

.gfil-ehero__lede {
	font-family: var(--gfil-display);
	font-size: clamp(1.0625rem, 1.7vw, 1.375rem);
	font-weight: 350;
	line-height: 1.5;
	color: var(--gfil-graphite);
	max-width: 58ch;
	margin: 0 0 2rem;
	text-wrap: pretty;
}

.gfil-ehero__actions {
	display: flex;
	gap: 0.75rem;
	flex-wrap: wrap;
	justify-content: center;
	margin: 0;
}

.gfil-ehero__credit {
	margin: 1.75rem 0 0;
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--gfil-slate);
}

/* With an image the hero becomes a cover: image full-bleed, type over it. */
.gfil-ehero.has-image { border-bottom: 0; }

.gfil-ehero__media {
	position: absolute;
	inset: 0;
	z-index: -1;
	overflow: hidden;
}

.gfil-ehero__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 35%;
}

.gfil-ehero.has-image::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(
		to bottom,
		rgba(8, 10, 12, 0.30) 0%,
		rgba(8, 10, 12, 0.55) 55%,
		rgba(8, 10, 12, 0.82) 100%
	);
}

.gfil-ehero.has-image .gfil-ehero__inner {
	padding-block: clamp(6rem, 20vw, 13rem) clamp(3rem, 7vw, 5rem);
	color: var(--gfil-paper);
}

.gfil-ehero.has-image .gfil-ehero__title,
.gfil-ehero.has-image .gfil-ehero__lede { color: var(--gfil-paper); }
.gfil-ehero.has-image .gfil-eyebrow { color: rgba(255, 255, 255, 0.82); }
.gfil-ehero.has-image .gfil-eyebrow::before,
.gfil-ehero.has-image .gfil-eyebrow::after { background: var(--gfil-brass); }
.gfil-ehero.has-image .gfil-ehero__credit { color: rgba(255, 255, 255, 0.62); }

.gfil-ehero.has-image .gfil-btn {
	background: var(--gfil-paper);
	border-color: var(--gfil-paper);
	color: var(--gfil-ink);
}

.gfil-ehero.has-image .gfil-btn--quiet {
	background: transparent;
	border-color: rgba(255, 255, 255, 0.5);
	color: var(--gfil-paper);
}

.gfil-ehero.has-image .gfil-btn:hover {
	background: var(--gfil-brass);
	border-color: var(--gfil-brass);
	color: var(--gfil-ink);
}

/* Buttons ------------------------------------------------------------------ */

.gfil-btn {
	display: inline-block;
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	text-decoration: none;
	padding: 0.85rem 1.6rem;
	border: 1px solid var(--gfil-ink);
	background: var(--gfil-ink);
	color: var(--gfil-paper);
	transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.gfil-btn--quiet {
	background: transparent;
	color: var(--gfil-ink);
	border-color: var(--gfil-rule-strong);
}

.gfil-btn:hover {
	background: var(--gfil-brass);
	border-color: var(--gfil-brass);
	color: var(--gfil-ink);
}

/* Divider ------------------------------------------------------------------ */

.gfil-divider {
	display: flex;
	align-items: center;
	gap: 1.25rem;
	max-width: var(--gfil-max);
	margin: clamp(2.5rem, 6vw, 4.5rem) auto clamp(1.5rem, 3vw, 2.5rem);
	padding-inline: var(--gfil-gutter);
}

.gfil-divider::before,
.gfil-divider::after {
	content: "";
	flex: 1;
	height: 1px;
	background: var(--gfil-rule-strong);
}

.gfil-divider span {
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: var(--gfil-ink);
	white-space: nowrap;
}

/* Standfirst and drop cap -------------------------------------------------- */

.gfil-standfirst {
	font-family: var(--gfil-display);
	font-size: clamp(1.125rem, 1.8vw, 1.5rem);
	line-height: 1.45;
	font-weight: 340;
	color: var(--gfil-graphite);
	max-width: 62ch;
	margin: 0 0 2rem;
	text-wrap: pretty;
}

.gfil-dropcap::first-letter {
	float: left;
	font-family: var(--gfil-display);
	font-size: 3.6em;
	line-height: 0.78;
	font-weight: 350;
	padding: 0.06em 0.12em 0 0;
	color: var(--gfil-ink);
}

/* Image plates ------------------------------------------------------------- */

.gfil-plate-img {
	margin: 0;
	position: relative;
}

.gfil-plate-img img {
	width: 100%;
	aspect-ratio: var(--ratio, 4 / 5);
	object-fit: cover;
	display: block;
}

.gfil-plate-img figcaption {
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	padding-top: 0.6rem;
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	border-top: 1px solid var(--gfil-rule);
	margin-top: 0.6rem;
}

.gfil-credit { color: var(--gfil-rule-strong); }

.gfil-plate-img.is-empty .gfil-plate-img__empty {
	aspect-ratio: var(--ratio, 4 / 5);
	border: 1px dashed var(--gfil-rule-strong);
	background-image: var(--gfil-hatch);
	display: grid;
	align-content: center;
	justify-items: start;
	gap: 0.5rem;
	padding: clamp(1rem, 3vw, 2rem);
}

.gfil-plate-img.is-empty p {
	margin: 0;
	font-size: 0.8125rem;
	color: var(--gfil-slate);
	max-width: 36ch;
}

/* Editorial two-column band ------------------------------------------------ */

.gfil-editorial {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr);
	gap: clamp(1.5rem, 5vw, 4rem);
	align-items: center;
	max-width: var(--gfil-max);
	margin-inline: auto;
	padding: clamp(2.5rem, 6vw, 4.5rem) var(--gfil-gutter);
}

.gfil-editorial--reverse > .gfil-plate-img { order: 2; }

.gfil-editorial h2 {
	font-family: var(--gfil-display);
	font-size: clamp(1.75rem, 3.4vw, 2.75rem);
	font-weight: 340;
	line-height: 1.08;
	letter-spacing: -0.02em;
	margin: 0 0 1rem;
	max-width: 18ch;
}

.gfil-editorial p { max-width: 56ch; }

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

.gfil-footer__rule {
	display: flex;
	align-items: center;
	gap: 1.5rem;
	max-width: var(--gfil-max);
	margin-inline: auto;
	padding: clamp(2rem, 5vw, 3.5rem) var(--gfil-gutter) 0;
}

.gfil-footer__rule::before,
.gfil-footer__rule::after {
	content: "";
	flex: 1;
	height: 1px;
	background: rgba(247, 245, 241, 0.22);
}

.gfil-footer__rule span {
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--gfil-brass);
	white-space: nowrap;
}

.gfil-footer__inner { padding-top: clamp(2rem, 4vw, 3rem); }

/* Panel links, targets and the ledger through-line ------------------------- */

.gfil-panel__unit {
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ink-inv-2, var(--gfil-slate));
	margin-left: 0.2rem;
}

.gfil-panel__na { color: var(--ink-inv-2, var(--gfil-slate)); }

.gfil-panel__row dd em {
	display: block;
	font-style: normal;
	font-family: var(--gfil-data);
	font-size: 0.5625rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--ink-inv-2, var(--gfil-slate));
	margin-top: 0.15rem;
	text-align: right;
}

.gfil-panel__row dd { text-align: right; }

.gfil-panel__links {
	margin: 1rem 0 0;
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

.gfil-panel__link {
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--signal, var(--gfil-brass));
	border-bottom: 1px solid transparent;
	align-self: flex-start;
}

.gfil-panel__link::after { content: " →"; }

.gfil-panel__link:hover {
	border-bottom-color: var(--signal, var(--gfil-brass));
	color: var(--signal, var(--gfil-brass));
}

.gfil-table .is-through a {
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	text-decoration: none;
	color: var(--gfil-slate);
	border-bottom: 1px solid var(--gfil-rule);
}

.gfil-table .is-through a:hover {
	color: var(--gfil-ink);
	border-bottom-color: var(--gfil-brass);
}

/* Arrival marker: the row a reader was sent to, held long enough to find. */
.gfil-table tr.is-target > * {
	background: color-mix(in srgb, var(--gfil-brass) 14%, transparent);
	box-shadow: inset 0 -1px 0 var(--gfil-brass);
}

@supports not (background: color-mix(in srgb, red 10%, transparent)) {
	.gfil-table tr.is-target > * { background: #F4EDE2; }
}

.gfil-table tr.is-target th[scope="row"] { box-shadow: inset 2px 0 0 var(--gfil-brass); }

/* The globe's land is now a control, so say so. */
.gfil-globe__country[data-band]:not([data-band="none"]) { cursor: pointer; }

/* Metric switcher and the new ranking columns ------------------------------ */

.gfil-instrument__metrics {
	display: flex;
	gap: 0.35rem;
	align-items: center;
}

.gfil-instrument__label {
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--ink-inv-2);
	margin-right: 0.15rem;
}

.gfil-globe__readout i {
	display: block;
	font-style: normal;
	color: var(--ink-inv-2);
	margin-top: 0.25rem;
}

.gfil-table .is-rising { color: var(--gfil-rising); }
.gfil-table .is-cooling { color: var(--gfil-cooling); }

.gfil-table--ranking th[scope="row"] .gfil-unit {
	text-transform: none;
	letter-spacing: 0.04em;
}

@media (max-width: 768px) {
	.gfil-instrument__metrics {
		flex-wrap: wrap;
		width: 100%;
	}

	.gfil-instrument__label { width: 100%; }
}

/* Flat markers sit on a much larger canvas, so they carry a slightly larger
   hit area and a heavier stroke to stay legible against the land. */

.gfil-globe__markers.is-flat .gfil-globe__dot { stroke-width: 1.1; }
.gfil-globe__markers.is-flat .gfil-globe__halo { r: 9; }

.gfil-instrument[data-mode="flat"] .gfil-globe__sphere { display: none; }

/* Three evidence states -----------------------------------------------------

   Published, derived, nothing. The distinction between the second and third is
   the one most often collapsed, and collapsing it is what lets a derived number
   pass for a measured one.
   -------------------------------------------------------------------------- */

.gfil-status.is-state-reported { color: var(--gfil-rising); }
.gfil-status.is-state-modelled { color: var(--gfil-brass); }
.gfil-status.is-state-none { color: var(--gfil-slate); }

.gfil-instrument__panel .gfil-status.is-state-reported { color: var(--signal); }
.gfil-instrument__panel .gfil-status.is-state-modelled { color: #9FB8C4; }
.gfil-instrument__panel .gfil-status.is-state-none { color: var(--ink-inv-2); }

.gfil-table tr[data-state="none"] th,
.gfil-table tr[data-state="none"] td { color: var(--gfil-slate); }

/* Marker: solid means measured, dashed means derived, hollow means empty. */
.gfil-globe__marker[data-state="reported"] .gfil-globe__dot {
	fill: var(--signal);
	stroke: var(--plate);
	stroke-width: 1;
}

.gfil-globe__marker[data-state="modelled"] .gfil-globe__dot {
	fill: none;
	stroke: var(--signal);
	stroke-width: 1.6;
	stroke-dasharray: 2.2 1.8;
}

.gfil-globe__marker[data-state="none"] .gfil-globe__dot {
	fill: none;
	stroke: #6E8598;
	stroke-width: 1.2;
}

.gfil-legend__item.is-reported::before {
	background: var(--signal);
	border-color: var(--signal);
}

.gfil-legend__item.is-modelled::before {
	background: none;
	border: 1.4px dashed var(--signal);
}

.gfil-legend__item.is-none::before {
	background: none;
	border-color: #6E8598;
}

/* Coverage report ---------------------------------------------------------- */

.gfil-coverage {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
	gap: 0;
	margin-top: 2rem;
	border-top: 1px solid var(--gfil-ink);
}

.gfil-coverage__state {
	padding: 1.5rem 1.5rem 1.5rem 0;
	border-right: 1px solid var(--gfil-rule);
	border-bottom: 1px solid var(--gfil-rule);
}

.gfil-coverage__state:not(:first-child) { padding-left: 1.5rem; }
.gfil-coverage__state:last-child { border-right: 0; }

.gfil-coverage__n {
	font-family: var(--gfil-display);
	font-size: clamp(2rem, 4vw, 2.75rem);
	line-height: 1;
	font-variant-numeric: tabular-nums;
	margin: 0 0 0.35rem;
}

.gfil-coverage__n span {
	font-family: var(--gfil-data);
	font-size: 0.875rem;
	color: var(--gfil-slate);
}

.gfil-coverage__state h3 {
	font-family: var(--gfil-ui);
	font-size: 0.8125rem;
	font-weight: 500;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	margin: 0 0 0.75rem;
}

.gfil-coverage__bar {
	height: 3px;
	background: var(--gfil-rule);
	margin-bottom: 0.75rem;
}

.gfil-coverage__bar > span {
	display: block;
	height: 3px;
	width: var(--w);
	background: var(--gfil-slate);
}

.gfil-coverage__state.is-reported .gfil-coverage__bar > span { background: var(--gfil-rising); }
.gfil-coverage__state.is-modelled .gfil-coverage__bar > span { background: var(--gfil-brass); }

.gfil-coverage__note {
	font-size: 0.75rem;
	line-height: 1.55;
	color: var(--gfil-slate);
	margin: 0;
	max-width: 34ch;
}

@media (max-width: 1024px) {
	.gfil-coverage__state {
		border-right: 0;
		padding-left: 0 !important;
	}
}

/* ==========================================================================
   PRODUCT LAYER (v2)

   The brief asks for a modern product site — a running application shown in a
   frame, feature rows, metric tiles — over a luxury fashion house's typography.
   Those two references pull in opposite directions: SaaS wants soft cards and
   rounded chrome, a fashion house wants hairlines and air.

   Resolved by keeping the structure of the first and the surface of the second.
   The page is organised like a product site; every surface is still ruled paper.
   Radius stays at 2px, shadow appears once (the product frame), and nothing
   glows.
   ========================================================================== */

:root {
	--gfil-surface: #FBFAF8;
	--gfil-radius: 2px;
	--gfil-lift: 0 1px 2px rgba(11, 12, 14, 0.04), 0 24px 60px -28px rgba(11, 12, 14, 0.28);
}

/* Product hero -------------------------------------------------------------- */

.gfil-phero {
	max-width: var(--gfil-max);
	margin-inline: auto;
	padding: clamp(2.5rem, 6vw, 5rem) var(--gfil-gutter) clamp(1.5rem, 3vw, 2.5rem);
	display: grid;
	justify-items: center;
	text-align: center;
}

.gfil-phero__title {
	font-family: var(--gfil-display);
	font-weight: 300;
	font-size: clamp(2.5rem, 6.4vw, 5rem);
	line-height: 0.98;
	letter-spacing: -0.03em;
	margin: 0.75rem 0 1.25rem;
	max-width: 18ch;
	text-wrap: balance;
}

.gfil-phero__lede {
	font-size: clamp(1rem, 1.5vw, 1.1875rem);
	line-height: 1.55;
	color: var(--gfil-slate);
	max-width: 62ch;
	margin: 0 0 2rem;
	text-wrap: pretty;
}

.gfil-phero__proof {
	display: flex;
	gap: clamp(1.5rem, 4vw, 3.5rem);
	flex-wrap: wrap;
	justify-content: center;
	margin: 2.5rem 0 0;
	padding-top: 1.75rem;
	border-top: 1px solid var(--gfil-rule);
	width: 100%;
}

.gfil-phero__proof div {
	display: grid;
	gap: 0.2rem;
	text-align: center;
}

.gfil-phero__proof b {
	font-family: var(--gfil-display);
	font-size: clamp(1.5rem, 2.6vw, 2.125rem);
	font-weight: 380;
	font-variant-numeric: tabular-nums;
	line-height: 1;
}

.gfil-phero__proof span {
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--gfil-slate);
}

/* The product frame --------------------------------------------------------- */

.gfil-frame {
	max-width: calc(var(--gfil-max) + 4rem);
	margin: 0 auto clamp(2rem, 5vw, 4rem);
	padding-inline: var(--gfil-gutter);
}

.gfil-frame__chrome {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	background: var(--gfil-graphite);
	border: 1px solid var(--gfil-graphite);
	border-bottom: 0;
	border-radius: var(--gfil-radius) var(--gfil-radius) 0 0;
	padding: 0.6rem 0.9rem;
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: #8FA1B8;
}

.gfil-frame__dot {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: #3A4450;
	flex: none;
}

.gfil-frame__title { margin-left: 0.6rem; color: var(--gfil-shell); }
.gfil-frame__meta { margin-left: auto; }

.gfil-frame__screen {
	border: 1px solid var(--gfil-graphite);
	border-top: 0;
	border-radius: 0 0 var(--gfil-radius) var(--gfil-radius);
	overflow: hidden;
	box-shadow: var(--gfil-lift);
}

/* Inside the frame the instrument is no longer full-bleed: the frame is the
   edge, so the band must stop at it. */
.gfil-frame .gfil-instrument--framed {
	width: auto !important;
	max-width: none;
	margin-inline: 0 !important;
}

.gfil-frame .gfil-instrument--framed .gfil-instrument__bar,
.gfil-frame .gfil-instrument--framed .gfil-instrument__stage,
.gfil-frame .gfil-instrument--framed .gfil-instrument__foot,
.gfil-frame .gfil-instrument--framed .gfil-instrument__ledger,
.gfil-frame .gfil-instrument--framed .gfil-instrument__coverage {
	max-width: none;
	padding-inline: clamp(1rem, 2.5vw, 2rem);
}

.gfil-frame .gfil-instrument__ledger { display: none; }

/* App suite ----------------------------------------------------------------- */

.gfil-apps {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr));
	gap: 1px;
	background: var(--gfil-rule);
	border: 1px solid var(--gfil-rule);
	margin-top: 2rem;
}

.gfil-app {
	background: var(--gfil-paper);
	padding: clamp(1.25rem, 2.5vw, 1.75rem);
	display: grid;
	align-content: start;
	gap: 0.55rem;
	text-decoration: none;
	color: inherit;
	transition: background 0.18s ease;
}

a.gfil-app:hover { background: var(--gfil-surface); }

a.gfil-app:hover .gfil-app__name { color: var(--gfil-brass); }

.gfil-app__kind {
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	margin: 0;
	display: flex;
	gap: 0.5rem;
	align-items: center;
	flex-wrap: wrap;
}

.gfil-app__state {
	border: 1px solid var(--gfil-rule-strong);
	padding: 0.05rem 0.35rem;
	color: var(--gfil-brass);
}

.gfil-app__name {
	font-family: var(--gfil-display);
	font-size: 1.375rem;
	font-weight: 420;
	letter-spacing: -0.014em;
	margin: 0;
	transition: color 0.18s ease;
}

.gfil-app__blurb {
	font-size: 0.8125rem;
	line-height: 1.55;
	color: var(--gfil-slate);
	margin: 0;
}

.gfil-app__metric {
	margin: 0.5rem 0 0;
	padding-top: 0.75rem;
	border-top: 1px solid var(--gfil-rule);
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--gfil-slate);
}

.gfil-app__metric b {
	font-family: var(--gfil-display);
	font-size: 1.25rem;
	font-weight: 420;
	letter-spacing: 0;
	text-transform: none;
	color: var(--gfil-ink);
	margin-right: 0.35rem;
}

/* Audience split ------------------------------------------------------------ */

.gfil-audiences {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(21rem, 1fr));
	gap: 1px;
	background: var(--gfil-rule);
	border: 1px solid var(--gfil-rule);
	margin-top: 2rem;
}

.gfil-audience {
	background: var(--gfil-paper);
	padding: clamp(1.5rem, 3vw, 2.5rem);
	display: grid;
	align-content: start;
	gap: 0.75rem;
}

.gfil-audience.is-retail { background: var(--gfil-ink); color: var(--gfil-shell); }
.gfil-audience.is-retail .gfil-eyebrow { color: var(--gfil-brass); }
.gfil-audience.is-retail h3 { color: var(--gfil-paper); }
.gfil-audience.is-retail li { color: #B9B5AA; }
.gfil-audience.is-retail .gfil-btn { background: var(--gfil-brass); border-color: var(--gfil-brass); color: var(--gfil-ink); }

.gfil-audience h3 {
	font-family: var(--gfil-display);
	font-size: clamp(1.5rem, 2.6vw, 2rem);
	font-weight: 340;
	letter-spacing: -0.02em;
	margin: 0;
}

.gfil-audience ul {
	list-style: none;
	margin: 0.5rem 0 1rem;
	padding: 0;
	display: grid;
	gap: 0.6rem;
}

.gfil-audience li {
	font-size: 0.875rem;
	line-height: 1.5;
	color: var(--gfil-slate);
	padding-left: 1.1rem;
	position: relative;
}

.gfil-audience li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.6em;
	width: 0.45rem;
	height: 1px;
	background: currentColor;
	opacity: 0.5;
}

.gfil-audience .gfil-btn { justify-self: start; }

/* ==========================================================================
   DESKS — the two control panels

   Deliberately different rooms. The Retail & Capital Desk is an instrument on
   the dark plate, read at speed. The Design & Brand Studio is a studio surface
   in ivory, read slowly. Same components, same labels, two registers.
   ========================================================================== */

.gfil-desk { --desk-accent: var(--gfil-brass); }

.gfil-desk__bar {
	border-bottom: 1px solid var(--gfil-rule);
	background: var(--gfil-paper);
}

.gfil-desk__bar .gfil-shell {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 1.5rem;
	flex-wrap: wrap;
	padding-block: clamp(1.25rem, 3vw, 2.25rem);
}

.gfil-desk__title {
	font-family: var(--gfil-display);
	font-weight: 320;
	font-size: clamp(1.75rem, 4vw, 3rem);
	line-height: 1;
	letter-spacing: -0.025em;
	margin: 0;
}

.gfil-desk__account { text-align: right; display: grid; gap: 0.15rem; }

.gfil-desk__user {
	font-family: var(--gfil-ui);
	font-size: 0.875rem;
	font-weight: 500;
	margin: 0;
}

.gfil-desk__role,
.gfil-desk__out {
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	margin: 0;
}

.gfil-desk__out { text-decoration: none; border-bottom: 1px solid var(--gfil-rule); justify-self: end; }
.gfil-desk__out:hover { color: var(--gfil-ink); border-bottom-color: var(--desk-accent); }

.gfil-desk__body { padding-block: clamp(2rem, 4vw, 3.5rem); }

.gfil-desk__lede {
	font-family: var(--gfil-display);
	font-size: clamp(1.125rem, 2vw, 1.5rem);
	line-height: 1.45;
	font-weight: 340;
	max-width: 60ch;
	margin: 0 0 2.5rem;
}

/* Retail desk: instrument register ------------------------------------------ */

.gfil-desk--retail {
	background: #08111C;
	color: #F2F1EC;
	--desk-accent: #C79A5E;
}

.gfil-desk--retail .gfil-desk__bar {
	background: #0E1D2E;
	border-bottom-color: #1E3651;
}

.gfil-desk--retail .gfil-desk__title,
.gfil-desk--retail .gfil-desk__user { color: #F2F1EC; }
.gfil-desk--retail .gfil-desk__role,
.gfil-desk--retail .gfil-desk__out { color: #8FA1B8; }
.gfil-desk--retail .gfil-eyebrow { color: var(--desk-accent); }
.gfil-desk--retail .gfil-eyebrow::before { background: var(--desk-accent); }

.gfil-desk--retail .gfil-module { border-top-color: #1E3651; }
.gfil-desk--retail .gfil-module__head h2 { color: #F2F1EC; }
.gfil-desk--retail .gfil-module__head p { color: #8FA1B8; }

.gfil-desk--retail .gfil-table th,
.gfil-desk--retail .gfil-table td { border-bottom-color: #1E3651; color: #E4E6E4; }
.gfil-desk--retail .gfil-table thead th { background: #08111C; color: #8FA1B8; border-bottom-color: #2A4665; }
.gfil-desk--retail .gfil-table tbody tr:hover { background: #0E1D2E; }
.gfil-desk--retail .gfil-tablewrap { border-top-color: #2A4665; }
.gfil-desk--retail .gfil-table caption { color: #8FA1B8; }

.gfil-desk--retail .gfil-kpi { background: #0E1D2E; border-color: #1E3651; }
.gfil-desk--retail .gfil-kpi__label { color: #8FA1B8; }
.gfil-desk--retail .gfil-kpi__value { color: #F2F1EC; }
.gfil-desk--retail .gfil-kpi__note { color: #8FA1B8; }

.gfil-desk--retail .gfil-chip { border-color: #1E3651; color: #8FA1B8; }
.gfil-desk--retail .gfil-chip__mark { background: #1E3651; color: #F2F1EC; box-shadow: none; }
.gfil-desk--retail .gfil-cite { color: #8FA1B8; border-bottom-color: #1E3651; }
.gfil-desk--retail .gfil-notice { background: #0E1D2E; border-color: #1E3651; border-left-color: var(--desk-accent); }
.gfil-desk--retail .gfil-notice p { color: #8FA1B8; }
.gfil-desk--retail .gfil-index,
.gfil-desk--retail .gfil-dispersion,
.gfil-desk--retail .gfil-indicators { border-top-color: #2A4665; }
.gfil-desk--retail .gfil-dispersion__item,
.gfil-desk--retail .gfil-indicator { border-color: #1E3651; }
.gfil-desk--retail .gfil-index__threshold { background: #0E1D2E; border-left-color: #2A4665; color: #8FA1B8; }

/* Studio desk: ivory register ----------------------------------------------- */

.gfil-desk--studio {
	background: var(--gfil-shell);
	--desk-accent: var(--gfil-brass);
}

.gfil-desk--studio .gfil-desk__bar { background: var(--gfil-paper); }
.gfil-desk--studio .gfil-module { border-top-color: var(--gfil-ink); }

/* Shared desk components ---------------------------------------------------- */

.gfil-kpis {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
	gap: 1px;
	background: var(--gfil-rule);
	border: 1px solid var(--gfil-rule);
	margin-bottom: clamp(2rem, 4vw, 3rem);
}

.gfil-desk--retail .gfil-kpis { background: #1E3651; border-color: #1E3651; }

.gfil-kpi {
	background: var(--gfil-paper);
	padding: 1.25rem;
	display: grid;
	align-content: start;
	gap: 0.4rem;
}

.gfil-kpi__label {
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	margin: 0;
}

.gfil-kpi__value {
	font-family: var(--gfil-display);
	font-size: clamp(1.5rem, 2.6vw, 2rem);
	font-weight: 380;
	line-height: 1.05;
	font-variant-numeric: tabular-nums;
	margin: 0;
}

.gfil-kpi__value span {
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	margin-left: 0.3rem;
}

.gfil-kpi__note {
	font-size: 0.75rem;
	line-height: 1.45;
	color: var(--gfil-slate);
	margin: 0;
	max-width: 32ch;
}

.gfil-kpi .gfil-chip { justify-self: start; margin-top: 0.35rem; }

.gfil-module {
	border-top: 1px solid var(--gfil-ink);
	padding-top: 1.5rem;
	margin-bottom: clamp(2.5rem, 5vw, 4rem);
}

.gfil-module__head { margin-bottom: 0.5rem; }

.gfil-module__head h2 {
	font-family: var(--gfil-display);
	font-size: clamp(1.375rem, 2.4vw, 1.875rem);
	font-weight: 360;
	letter-spacing: -0.018em;
	margin: 0 0 0.5rem;
}

.gfil-module__head p {
	font-size: 0.875rem;
	line-height: 1.55;
	color: var(--gfil-slate);
	max-width: 72ch;
	margin: 0;
}

/* City cards (studio) -------------------------------------------------------- */

.gfil-cities {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
	gap: 1px;
	background: var(--gfil-rule);
	border: 1px solid var(--gfil-rule);
	margin-top: 1.5rem;
}

.gfil-city {
	background: var(--gfil-paper);
	padding: 1.35rem;
	display: grid;
	align-content: start;
	gap: 0.5rem;
}

.gfil-city__head { display: grid; gap: 0.15rem; }

.gfil-city__head h3 {
	font-family: var(--gfil-display);
	font-size: 1.25rem;
	font-weight: 440;
	margin: 0;
}

.gfil-city__country,
.gfil-city__street {
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	margin: 0;
}

.gfil-city__rent {
	font-family: var(--gfil-display);
	font-size: 1.875rem;
	font-weight: 380;
	font-variant-numeric: tabular-nums;
	margin: 0.4rem 0 0;
	line-height: 1;
}

.gfil-city__rent span {
	display: block;
	font-family: var(--gfil-data);
	font-size: 0.5625rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	margin-top: 0.3rem;
}

.gfil-city__rows {
	margin: 0.75rem 0 0;
	display: grid;
	gap: 0;
	border-top: 1px solid var(--gfil-rule);
}

.gfil-city__rows > div {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.4rem 0;
	border-bottom: 1px solid var(--gfil-rule);
	font-size: 0.75rem;
}

.gfil-city__rows dt { color: var(--gfil-slate); margin: 0; }
.gfil-city__rows dd { margin: 0; font-variant-numeric: tabular-nums; }

.gfil-city__foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	margin-top: 0.75rem;
	flex-wrap: wrap;
}

/* Watch control -------------------------------------------------------------- */

.gfil-watch { margin: 0; }

.gfil-watch__btn {
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	background: none;
	border: 1px solid var(--gfil-rule-strong);
	color: var(--gfil-slate);
	padding: 0.3rem 0.6rem;
	cursor: pointer;
}

.gfil-watch__btn:hover { border-color: var(--gfil-ink); color: var(--gfil-ink); }

.gfil-watch__btn.is-on {
	background: var(--desk-accent, var(--gfil-brass));
	border-color: var(--desk-accent, var(--gfil-brass));
	color: var(--gfil-ink);
}

.gfil-desk--retail .gfil-watch__btn { border-color: #2A4665; color: #8FA1B8; }
.gfil-desk--retail .gfil-watch__btn:hover { border-color: var(--desk-accent); color: #F2F1EC; }
.gfil-desk--retail .gfil-watch__btn.is-on { color: #08111C; }

/* The gate ------------------------------------------------------------------- */

.gfil-gate {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: 1px;
	background: var(--gfil-rule);
	border: 1px solid var(--gfil-rule);
	margin: clamp(1.5rem, 4vw, 3rem) 0;
}

.gfil-gate__panel,
.gfil-gate__manifest {
	background: var(--gfil-paper);
	padding: clamp(1.5rem, 3.5vw, 2.75rem);
}

.gfil-gate__manifest { background: var(--gfil-shell); }

.gfil-gate__panel h2 {
	font-family: var(--gfil-display);
	font-size: clamp(1.5rem, 3vw, 2.25rem);
	font-weight: 340;
	letter-spacing: -0.02em;
	margin: 0 0 0.75rem;
}

.gfil-gate__lede,
.gfil-gate__note {
	font-size: 0.875rem;
	line-height: 1.6;
	color: var(--gfil-slate);
	max-width: 46ch;
}

.gfil-gate .login-username,
.gfil-gate .login-password { margin-bottom: 0.9rem; }

.gfil-gate label {
	display: block;
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	margin-bottom: 0.35rem;
}

.gfil-gate input[type="text"],
.gfil-gate input[type="password"] {
	width: 100%;
	font-family: var(--gfil-ui);
	font-size: 0.9375rem;
	padding: 0.7rem 0.85rem;
	border: 1px solid var(--gfil-rule-strong);
	border-radius: 0;
	background: var(--gfil-paper);
}

.gfil-gate input:focus-visible { outline: 2px solid var(--gfil-brass); outline-offset: 1px; }

.gfil-gate .login-remember label {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	text-transform: none;
	letter-spacing: 0.02em;
	font-family: var(--gfil-ui);
	font-size: 0.8125rem;
	color: var(--gfil-slate);
}

.gfil-gate .login-submit input[type="submit"] {
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	padding: 0.85rem 1.6rem;
	border: 1px solid var(--gfil-ink);
	background: var(--gfil-ink);
	color: var(--gfil-paper);
	border-radius: 0;
	cursor: pointer;
	width: 100%;
}

.gfil-gate .login-submit input[type="submit"]:hover {
	background: var(--gfil-brass);
	border-color: var(--gfil-brass);
	color: var(--gfil-ink);
}

.gfil-gate__links {
	display: flex;
	gap: 1.5rem;
	flex-wrap: wrap;
	margin: 1rem 0 0;
	font-family: var(--gfil-data);
	font-size: 0.625rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.gfil-gate__manifest h3 {
	font-family: var(--gfil-data);
	font-size: 0.6875rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--gfil-brass);
	font-weight: 400;
	margin: 0 0 1rem;
	padding-bottom: 0.6rem;
	border-bottom: 1px solid var(--gfil-rule-strong);
}

.gfil-gate__manifest ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 0.85rem;
}

.gfil-gate__manifest li {
	font-size: 0.875rem;
	line-height: 1.55;
	color: var(--gfil-graphite);
	padding-left: 1.1rem;
	position: relative;
}

.gfil-gate__manifest li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.6em;
	width: 0.45rem;
	height: 1px;
	background: var(--gfil-rule-strong);
}

.gfil-gate__foot {
	margin: 1.5rem 0 0;
	padding-top: 1rem;
	border-top: 1px solid var(--gfil-rule);
	font-size: 0.75rem;
	line-height: 1.55;
	color: var(--gfil-slate);
}

.gfil-portal-router { padding-block: clamp(1.5rem, 4vw, 3rem); }

@media (max-width: 900px) {
	.gfil-gate { grid-template-columns: 1fr; }
	.gfil-desk__bar .gfil-shell { flex-direction: column; align-items: flex-start; }
	.gfil-desk__account { text-align: left; }
	.gfil-desk__out { justify-self: start; }
}

/* ==========================================================================
   GLOBAL FASHION GROUP™ — LUXURY EDITORIAL SYSTEM (v3)

   A fashion-house register without copying any third-party brand identity:
   high-contrast editorial type, disciplined black/ivory surfaces, generous
   whitespace, cinematic media, and quiet data instrumentation.
   ========================================================================== */

:root {
	--gfil-paper: #FCFBF8;
	--gfil-shell: #F1EEE7;
	--gfil-linen: #E7E1D8;
	--gfil-rule: #D6D0C5;
	--gfil-rule-strong: #AFA69A;
	--gfil-slate: #67625D;
	--gfil-graphite: #24221F;
	--gfil-ink: #090909;
	--gfil-navy: #111822;
	--gfil-brass: #A18769;
	--gfil-display: "Bodoni Moda", Didot, "Bodoni 72", "Times New Roman", serif;
	--gfil-ui: Manrope, Helvetica, Arial, sans-serif;
	--gfil-data: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	--gfil-max: 1680px;
}

body {
	background: var(--gfil-paper);
	font-family: var(--gfil-ui);
	letter-spacing: -0.012em;
}

/* Masthead — house identity ------------------------------------------------ */
.gfil-masthead {
	background: rgba(252, 251, 248, 0.97);
	backdrop-filter: blur(14px);
	-webkit-backdrop-filter: blur(14px);
	z-index: 60;
}

.gfil-masthead__utility {
	border-bottom-color: rgba(9, 9, 9, 0.16);
	font-family: var(--gfil-ui);
	font-size: 0.58rem;
	letter-spacing: 0.2em;
	color: #5F5B55;
}

.gfil-masthead__tag {
	color: var(--gfil-ink);
	font-weight: 600;
}

.gfil-wordmark { gap: 0.22rem; }

.gfil-wordmark__group {
	font-family: var(--gfil-ui);
	font-size: clamp(1.3rem, 3.25vw, 2.5rem);
	font-weight: 600;
	letter-spacing: 0.16em;
	line-height: 1;
	padding-left: 0.16em;
}

.gfil-wordmark__name {
	font-family: var(--gfil-ui);
	font-size: 0.55rem;
	font-weight: 500;
	letter-spacing: 0.5em;
	color: #78716A;
}

.gfil-masthead__cta {
	font-family: var(--gfil-ui);
	font-size: 0.6rem;
	font-weight: 600;
	letter-spacing: 0.18em;
	padding: 0.72rem 1rem;
	border-color: var(--gfil-ink);
}

.gfil-nav { border-top-color: rgba(9, 9, 9, 0.14); }
.gfil-nav ul { padding-block: 0.82rem; }
.gfil-nav a {
	font-family: var(--gfil-ui);
	font-size: 0.64rem;
	font-weight: 600;
	letter-spacing: 0.16em;
	border: 0;
}
.gfil-nav a:hover,
.gfil-nav a[aria-current="page"] { color: var(--gfil-brass); border: 0; }

/* Shared luxury typography ------------------------------------------------- */
.gfil-lux-kicker {
	font-family: var(--gfil-ui);
	font-size: 0.62rem;
	font-weight: 600;
	line-height: 1.4;
	letter-spacing: 0.19em;
	text-transform: uppercase;
	color: var(--gfil-brass);
	margin: 0 0 1rem;
}

.gfil-lux-textlink,
.gfil-editcard a,
.gfil-private-room a,
.gfil-entitycard a {
	font-family: var(--gfil-ui);
	font-size: 0.66rem;
	font-weight: 600;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	text-decoration: none;
	border-bottom: 1px solid currentColor;
	padding-bottom: 0.16rem;
}

.gfil-lux-textlink:hover,
.gfil-editcard a:hover,
.gfil-private-room a:hover,
.gfil-entitycard a:hover { color: var(--gfil-brass); }

.gfil-btn--lux {
	background: var(--gfil-paper);
	color: var(--gfil-ink);
	border-color: var(--gfil-paper);
	font-family: var(--gfil-ui);
	font-weight: 600;
	letter-spacing: 0.18em;
	padding: 0.95rem 1.4rem;
}
.gfil-btn--lux:hover { background: var(--gfil-brass); border-color: var(--gfil-brass); color: #080808; }

/* Home — cinematic but restrained ----------------------------------------- */
.gfil-luxhome { overflow: clip; }

.gfil-luxhero {
	position: relative;
	min-height: min(82vh, 900px);
	display: grid;
	align-items: end;
	background: #0B0B0B;
	color: #F8F5EF;
	isolation: isolate;
}

.gfil-luxhero__media,
.gfil-luxhero__veil {
	position: absolute;
	inset: 0;
}

.gfil-luxhero__media { z-index: -3; }
.gfil-luxhero__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: saturate(0.72) contrast(1.04);
}

.gfil-luxhero__veil {
	z-index: -2;
	background:
		linear-gradient(90deg, rgba(4,4,4,.86) 0%, rgba(4,4,4,.55) 48%, rgba(4,4,4,.16) 100%),
		linear-gradient(0deg, rgba(4,4,4,.74) 0%, rgba(4,4,4,.08) 62%);
}

.gfil-luxhero:not(.has-image)::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -3;
	background:
		radial-gradient(circle at 76% 30%, rgba(161,135,105,.22), transparent 25%),
		linear-gradient(120deg, #111 0%, #050505 54%, #1A1816 100%);
}

.gfil-luxhero__inner {
	padding-top: clamp(6rem, 12vw, 11rem);
	padding-bottom: clamp(3.5rem, 7vw, 6.5rem);
}

.gfil-luxhero .gfil-lux-kicker { color: #D0B89D; }

.gfil-luxhero h1 {
	font-family: var(--gfil-display);
	font-size: clamp(3.6rem, 8.7vw, 8.2rem);
	font-weight: 500;
	font-style: normal;
	letter-spacing: -0.055em;
	line-height: 0.88;
	max-width: 10.5ch;
	margin: 0;
	text-wrap: balance;
}

.gfil-luxhero__lede {
	font-size: clamp(1rem, 1.5vw, 1.22rem);
	line-height: 1.62;
	max-width: 61ch;
	color: rgba(248,245,239,.8);
	margin: 2rem 0 0;
}

.gfil-luxhero__actions {
	display: flex;
	align-items: center;
	gap: 1.4rem;
	flex-wrap: wrap;
	margin-top: 2.4rem;
}
.gfil-luxhero .gfil-lux-textlink { color: #F8F5EF; }
.gfil-luxhero .gfil-lux-textlink:hover { color: #D0B89D; }

.gfil-luxstatement {
	display: grid;
	grid-template-columns: minmax(10rem, .55fr) minmax(0, 2fr);
	gap: clamp(2rem, 7vw, 8rem);
	padding-block: clamp(4rem, 9vw, 8rem);
	border-bottom: 1px solid var(--gfil-rule);
}

.gfil-luxstatement__eyebrow {
	font-family: var(--gfil-ui);
	font-size: .62rem;
	font-weight: 600;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	margin: .45rem 0 0;
}

.gfil-luxstatement__copy {
	font-family: var(--gfil-display);
	font-size: clamp(2rem, 4.4vw, 4.25rem);
	font-weight: 500;
	line-height: 1.04;
	letter-spacing: -.04em;
	max-width: 23ch;
	margin: 0;
}

.gfil-luxpulse {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	border-bottom: 1px solid var(--gfil-rule);
}

.gfil-luxstat {
	padding: clamp(2rem, 4vw, 3.4rem) clamp(1rem, 3vw, 2.4rem);
	border-right: 1px solid var(--gfil-rule);
}
.gfil-luxstat:first-child { padding-left: 0; }
.gfil-luxstat:last-child { border-right: 0; }
.gfil-luxstat__value {
	font-family: var(--gfil-display);
	font-size: clamp(2.25rem, 4vw, 4rem);
	font-weight: 500;
	letter-spacing: -.04em;
	line-height: 1;
	margin: 0 0 1rem;
}
.gfil-luxstat h3 {
	font-family: var(--gfil-ui);
	font-size: .7rem;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	margin: 0 0 .45rem;
}
.gfil-luxstat > p:last-child {
	font-size: .76rem;
	line-height: 1.5;
	color: var(--gfil-slate);
	max-width: 29ch;
	margin: 0;
}

.gfil-luxchapter {
	padding-block: clamp(4.5rem, 9vw, 9rem);
}

.gfil-luxchapter__head {
	display: grid;
	grid-template-columns: minmax(0, 1.4fr) minmax(14rem, .7fr);
	column-gap: clamp(3rem, 8vw, 10rem);
	align-items: start;
	margin-bottom: clamp(2.5rem, 5vw, 4.5rem);
}
.gfil-luxchapter__head .gfil-lux-kicker { grid-column: 1 / -1; }
.gfil-luxchapter__head h2 {
	font-family: var(--gfil-display);
	font-size: clamp(2.8rem, 6vw, 5.8rem);
	font-weight: 500;
	letter-spacing: -.05em;
	line-height: .95;
	margin: 0;
}
.gfil-luxchapter__head > p:not(.gfil-lux-kicker) {
	font-size: .98rem;
	line-height: 1.7;
	color: var(--gfil-slate);
	max-width: 50ch;
	margin: .5rem 0 0;
}

.gfil-editcards {
	display: grid;
	grid-template-columns: 1.15fr .9fr .9fr;
	border-top: 1px solid var(--gfil-ink);
	border-bottom: 1px solid var(--gfil-rule);
}
.gfil-editcard {
	padding: clamp(1.7rem, 3.2vw, 3rem);
	border-right: 1px solid var(--gfil-rule);
	min-height: 24rem;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
}
.gfil-editcard:first-child { padding-left: 0; }
.gfil-editcard:last-child { border-right: 0; }
.gfil-editcard h3 {
	font-family: var(--gfil-display);
	font-size: clamp(1.75rem, 3vw, 3rem);
	font-weight: 500;
	line-height: 1.05;
	letter-spacing: -.035em;
	margin: .8rem 0 1.2rem;
}
.gfil-editcard > p:not(.gfil-lux-kicker) {
	font-size: .86rem;
	line-height: 1.65;
	color: var(--gfil-slate);
	max-width: 43ch;
	margin: 0 0 2rem;
}
.gfil-editcard a { margin-top: auto; }

.gfil-luxatlas {
	background: #0A0A0A;
	color: #F4F0E9;
	padding-block: clamp(4.5rem, 9vw, 8rem);
}
.gfil-luxatlas__head {
	display: grid;
	grid-template-columns: minmax(0, 1.25fr) minmax(15rem, .7fr);
	gap: 2rem clamp(3rem, 8vw, 10rem);
	margin-bottom: 3rem;
}
.gfil-luxatlas__head .gfil-lux-kicker { grid-column: 1 / -1; color: #D0B89D; }
.gfil-luxatlas__head h2 {
	font-family: var(--gfil-display);
	font-size: clamp(2.6rem, 5.6vw, 5.2rem);
	font-weight: 500;
	line-height: .98;
	letter-spacing: -.045em;
	margin: 0;
	color: #F4F0E9;
}
.gfil-luxatlas__head p:not(.gfil-lux-kicker) { color: #A7A19A; line-height: 1.7; margin: .4rem 0 0; }
.gfil-luxatlas .gfil-frame { padding-inline: 0; max-width: none; margin-bottom: 0; }
.gfil-luxatlas .gfil-frame__chrome { background: #171717; border-color: #282828; }
.gfil-luxatlas .gfil-frame__screen { border-color: #282828; }

.gfil-private-rooms {
	display: grid;
	grid-template-columns: 1fr 1fr;
	min-height: 34rem;
}
.gfil-private-room {
	padding: clamp(2.5rem, 5vw, 5rem);
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: flex-end;
}
.gfil-private-room.is-retail { background: #0B0D10; color: #F3F0EA; }
.gfil-private-room.is-studio { background: #E9E2D8; color: #111; }
.gfil-private-room .gfil-lux-kicker { max-width: 33ch; }
.gfil-private-room h3 {
	font-family: var(--gfil-display);
	font-size: clamp(2.7rem, 5vw, 5.3rem);
	font-weight: 500;
	letter-spacing: -.05em;
	line-height: .94;
	margin: .6rem 0 1.2rem;
}
.gfil-private-room > p:not(.gfil-lux-kicker) { max-width: 44ch; line-height: 1.65; opacity: .74; }
.gfil-private-room a { margin-top: 2rem; color: inherit; }

/* Core commercial offerings mirror the two-room private-client palette. */
.gfil-offering-grid {
	min-height: 0;
	margin-top: clamp(2rem, 4vw, 4rem);
}
.gfil-offering-card {
	min-height: clamp(24rem, 34vw, 36rem);
	border: 0;
}
.gfil-offering-card.is-market {
	background: #0B0D10;
	color: #F3F0EA;
}
.gfil-offering-card.is-creative {
	background: #E9E2D8;
	color: #111111;
}
.gfil-offering-card.is-market .gfil-lux-kicker { color: #C49A68; }
.gfil-offering-card.is-creative .gfil-lux-kicker { color: #A97D4F; }
.gfil-offering-card > p:not(.gfil-lux-kicker) { opacity: .76; }
.gfil-offering-card a {
	display: inline-block;
	padding-bottom: .42rem;
	border-bottom: 1px solid currentColor;
	text-decoration: none;
}
.gfil-offering-card a:hover,
.gfil-offering-card a:focus-visible { opacity: .66; }

.gfil-luxmethod {
	background: #EEE9E1;
	padding-block: clamp(4.5rem, 8vw, 7rem);
}
.gfil-luxmethod h2 {
	font-family: var(--gfil-display);
	font-size: clamp(2.35rem, 5vw, 4.8rem);
	font-weight: 500;
	letter-spacing: -.045em;
	line-height: 1;
	max-width: 19ch;
	margin: 0 0 3rem;
}

/* Lens pages --------------------------------------------------------------- */
.gfil-lenshead {
	padding-top: clamp(4rem, 8vw, 8rem);
	padding-bottom: clamp(3.5rem, 7vw, 6rem);
	border-bottom: 1px solid var(--gfil-ink);
}
.gfil-lenshead h1 {
	font-family: var(--gfil-display);
	font-size: clamp(4rem, 10vw, 9rem);
	font-weight: 500;
	letter-spacing: -.06em;
	line-height: .82;
	margin: .5rem 0 1.8rem;
}
.gfil-lenshead > p:last-child {
	font-size: clamp(1rem, 1.5vw, 1.18rem);
	line-height: 1.7;
	max-width: 65ch;
	color: var(--gfil-slate);
	margin: 0;
}

.gfil-lensbody { padding-bottom: clamp(5rem, 9vw, 9rem); }
.gfil-luxsection {
	padding-block: clamp(3.5rem, 7vw, 7rem);
	border-bottom: 1px solid var(--gfil-rule);
}
.gfil-luxsection > header {
	display: grid;
	grid-template-columns: minmax(0, 1.3fr) minmax(15rem, .7fr);
	gap: 1rem clamp(3rem, 7vw, 9rem);
	align-items: start;
	margin-bottom: clamp(2rem, 4vw, 3.5rem);
}
.gfil-luxsection > header h2 {
	font-family: var(--gfil-display);
	font-size: clamp(2.2rem, 4.6vw, 4.5rem);
	font-weight: 500;
	letter-spacing: -.045em;
	line-height: 1;
	margin: 0;
}
.gfil-luxsection > header p {
	font-size: .9rem;
	line-height: 1.7;
	color: var(--gfil-slate);
	margin: .25rem 0 0;
}
.gfil-luxsection__body { min-width: 0; }

.gfil-luxnotice,
.gfil-registry-empty {
	margin: clamp(3rem, 6vw, 6rem) 0;
	padding: clamp(2rem, 4vw, 4rem);
	border: 1px solid var(--gfil-rule);
	background: #F4F0E9;
	max-width: 70rem;
}
.gfil-luxnotice h3,
.gfil-registry-empty h3 {
	font-family: var(--gfil-display);
	font-size: clamp(1.8rem, 3.5vw, 3.25rem);
	font-weight: 500;
	letter-spacing: -.035em;
	line-height: 1.05;
	margin: .5rem 0 1rem;
}
.gfil-luxnotice > p:last-child,
.gfil-registry-empty > p:last-child { color: var(--gfil-slate); line-height: 1.65; max-width: 68ch; }

.gfil-entitygrid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	border-top: 1px solid var(--gfil-ink);
}
.gfil-entitycard {
	padding: 2rem 1.7rem 2.5rem;
	border-right: 1px solid var(--gfil-rule);
	border-bottom: 1px solid var(--gfil-rule);
}
.gfil-entitycard:nth-child(3n+1) { padding-left: 0; }
.gfil-entitycard h3 {
	font-family: var(--gfil-display);
	font-size: 2rem;
	font-weight: 500;
	letter-spacing: -.035em;
	margin: .6rem 0 1rem;
}
.gfil-entitycard > p:not(.gfil-lux-kicker) { color: var(--gfil-slate); font-size: .84rem; line-height: 1.6; }
.gfil-entitycard h3 a { font: inherit; letter-spacing: inherit; text-transform: none; border: 0; }

/* Research room ------------------------------------------------------------ */
.gfil-research {
	grid-template-columns: repeat(3, 1fr);
	gap: 0;
	border-top: 1px solid var(--gfil-ink);
}
.gfil-research__item {
	padding: 2rem 1.8rem 2.5rem !important;
	border-right: 1px solid var(--gfil-rule);
	border-bottom: 1px solid var(--gfil-rule);
	min-height: 19rem;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
}
.gfil-research__item:nth-child(3n+1) { padding-left: 0 !important; }
.gfil-research__item h3 {
	font-family: var(--gfil-display);
	font-size: clamp(1.5rem, 2.4vw, 2.25rem);
	font-weight: 500;
	letter-spacing: -.03em;
	line-height: 1.06;
}
.gfil-research__date { margin-top: auto !important; }

.gfil-brief { max-width: 1240px; margin: 0 auto; padding: clamp(3rem, 7vw, 7rem) var(--gfil-gutter); }
.gfil-brief > header { max-width: 58rem; margin-bottom: 3rem; }
.gfil-brief > header h2 {
	font-family: var(--gfil-display);
	font-size: clamp(3rem, 7vw, 6.6rem);
	font-weight: 500;
	letter-spacing: -.055em;
	line-height: .92;
	margin: .6rem 0 1.7rem;
}
.gfil-brief > header > p:last-child { font-size: 1.05rem; line-height: 1.7; color: var(--gfil-slate); }
.gfil-brief__evidence { padding-top: 2rem; border-top: 1px solid var(--gfil-ink); }
.gfil-brief footer { margin-top: 4rem; }

/* Private Client gate ------------------------------------------------------ */
.gfil-gate {
	grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
	background: #0B0B0B;
	border: 0;
	gap: 0;
	min-height: 39rem;
	margin-block: clamp(2.5rem, 6vw, 6rem);
}
.gfil-gate__panel,
.gfil-gate__manifest {
	padding: clamp(2.5rem, 5vw, 5rem);
}
.gfil-gate__panel {
	background: #0B0B0B;
	color: #F4F0E9;
}
.gfil-gate__manifest { background: #EAE3D9; }
.gfil-gate__panel .gfil-eyebrow,
.gfil-gate__panel label { color: #BFA68B; }
.gfil-gate__panel h2 {
	font-family: var(--gfil-display);
	font-size: clamp(2.5rem, 5vw, 4.8rem);
	font-weight: 500;
	line-height: .96;
	letter-spacing: -.045em;
}
.gfil-gate__lede,
.gfil-gate__note { color: #AFAAA2; font-size: .9rem; }
.gfil-gate input[type="text"],
.gfil-gate input[type="password"] {
	background: transparent;
	color: #F4F0E9;
	border-color: #44403A;
	min-height: 3.15rem;
}
.gfil-gate .login-remember label { color: #AFAAA2; }
.gfil-gate .login-submit input[type="submit"] {
	background: #F4F0E9;
	border-color: #F4F0E9;
	color: #0B0B0B;
	min-height: 3.2rem;
	font-family: var(--gfil-ui);
	font-weight: 600;
}
.gfil-gate__links a { color: #F4F0E9; }
.gfil-gate__manifest h3 {
	font-family: var(--gfil-display);
	font-size: clamp(2.1rem, 4vw, 3.6rem);
	font-weight: 500;
	letter-spacing: -.04em;
	text-transform: none;
	color: #111;
	border: 0;
}
.gfil-gate__manifest li { color: #3C3833; }

/* Private Client workspaces ------------------------------------------------ */
.gfil-desk { min-height: 100vh; }

.gfil-desk__bar .gfil-shell { padding-block: clamp(1.7rem, 3vw, 2.7rem); }
.gfil-desk__title {
	font-family: var(--gfil-display);
	font-size: clamp(2.4rem, 5vw, 4.8rem);
	font-weight: 500;
	letter-spacing: -.05em;
}
.gfil-desk__account { gap: .1rem; }
.gfil-desk__org {
	font-size: .66rem;
	letter-spacing: .08em;
	text-transform: uppercase;
	margin: .25rem 0;
	opacity: .65;
}

.gfil-desknav {
	position: sticky;
	top: 0;
	z-index: 45;
	border-bottom: 1px solid var(--gfil-rule);
	background: rgba(252,251,248,.96);
	backdrop-filter: blur(14px);
}
.gfil-desknav ul {
	display: flex;
	align-items: center;
	gap: clamp(1.2rem, 2.6vw, 2.6rem);
	list-style: none;
	margin: 0;
	padding: .9rem 0;
	overflow-x: auto;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
	overscroll-behavior-inline: contain;
	scroll-snap-type: inline proximity;
}
.gfil-desknav ul::-webkit-scrollbar { display: none; }
.gfil-desknav li { scroll-snap-align: start; }
.gfil-desknav a {
	font-family: var(--gfil-ui);
	font-size: .62rem;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	text-decoration: none;
	white-space: nowrap;
	color: var(--gfil-slate);
}
.gfil-desknav a[aria-current="page"],
.gfil-desknav a:hover { color: var(--gfil-ink); }

/* v3.3.5 — distinct Private Client navigation identities.
 * Market & Capital uses a white navigation plane over the dark analytical desk.
 * Brand & Creative uses a black navigation plane over the warm editorial desk.
 * The contrast switch makes orientation immediate without changing either desk's
 * underlying content treatment. */
.gfil-desknav a {
	position: relative;
	display: inline-flex;
	align-items: center;
	min-height: 2.25rem;
	transition: color .18s ease;
}
.gfil-desknav a::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -.9rem;
	height: 2px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform .18s ease;
}
.gfil-desknav a[aria-current="page"]::after,
.gfil-desknav a:hover::after,
.gfil-desknav a:focus-visible::after { transform: scaleX(1); }
.gfil-desknav a:focus-visible { outline: 2px solid currentColor; outline-offset: 5px; }

.gfil-desk--retail .gfil-desknav {
	background: rgba(255,255,255,.985);
	border-bottom-color: #D8D8D5;
	box-shadow: 0 1px 0 rgba(0,0,0,.04);
}
.gfil-desk--retail .gfil-desknav a { color: #676C72; }
.gfil-desk--retail .gfil-desknav a[aria-current="page"] { color: #0B0D10; }
.gfil-desk--retail .gfil-desknav a:hover,
.gfil-desk--retail .gfil-desknav a:focus-visible { color: #9A7049; }

.gfil-desk--studio .gfil-desknav {
	background: rgba(5,5,5,.985);
	border-bottom-color: #252525;
	box-shadow: 0 1px 0 rgba(255,255,255,.04);
}
.gfil-desk--studio .gfil-desknav a { color: #A8A49D; }
.gfil-desk--studio .gfil-desknav a[aria-current="page"] { color: #FFFFFF; }
.gfil-desk--studio .gfil-desknav a:hover,
.gfil-desk--studio .gfil-desknav a:focus-visible { color: #D6B795; }

.gfil-desk__intro {
	display: grid;
	grid-template-columns: minmax(11rem, .45fr) minmax(0, 1.5fr);
	gap: 2rem 5rem;
	align-items: start;
	margin-bottom: 2.8rem;
	padding-bottom: 2.2rem;
	border-bottom: 1px solid currentColor;
	border-bottom-color: color-mix(in srgb, currentColor 18%, transparent);
}
.gfil-desk__intro .gfil-lux-kicker { margin-top: .35rem; }
.gfil-desk__lede {
	font-family: var(--gfil-display);
	font-size: clamp(1.55rem, 3vw, 2.8rem);
	font-weight: 500;
	letter-spacing: -.035em;
	line-height: 1.12;
	max-width: 31ch;
	margin: 0;
}

.gfil-kpis {
	grid-template-columns: repeat(4, 1fr);
	gap: 0;
	background: transparent;
	border: 1px solid var(--gfil-rule);
}
.gfil-kpi { border-right: 1px solid var(--gfil-rule); min-height: 11rem; }
.gfil-kpi:last-child { border-right: 0; }
.gfil-kpi__value { font-family: var(--gfil-display); font-weight: 500; letter-spacing: -.035em; }

.gfil-desk--retail { background: #090D12; }
.gfil-desk--retail .gfil-desk__bar { background: #0D131A; }
.gfil-desk--retail .gfil-kpis { background: transparent; border-color: #283441; }
.gfil-desk--retail .gfil-kpi { background: #0D131A; border-right-color: #283441; }
.gfil-desk--retail .gfil-module { border-top-color: #3A4652; }
.gfil-desk--retail .gfil-module__head h2 { font-family: var(--gfil-display); font-size: clamp(1.8rem, 3vw, 3rem); font-weight: 500; }
.gfil-desk--retail .gfil-module__head p { color: #8995A1; }

.gfil-desk--studio { background: #F0EAE1; }
.gfil-desk--studio .gfil-desk__bar { background: #FCFBF8; }
.gfil-desk--studio .gfil-module__head h2 { font-family: var(--gfil-display); font-size: clamp(1.8rem, 3vw, 3rem); font-weight: 500; }
.gfil-desk--studio .gfil-city { background: #FCFBF8; }

/* Make analytical surfaces more fashion-editorial without lowering density. */
.gfil-table thead th {
	font-family: var(--gfil-ui);
	font-size: .57rem;
	font-weight: 600;
	letter-spacing: .11em;
}
.gfil-table tbody th { font-weight: 600; }
.gfil-module { margin-bottom: clamp(3rem, 6vw, 6rem); }
.gfil-module__head { margin-bottom: 1.4rem; }

/* Existing generic pageheads inherit the new editorial register. */
.gfil-pagehead { padding-top: clamp(4rem, 8vw, 7rem); padding-bottom: clamp(3rem, 6vw, 5rem); }
.gfil-pagehead h1 {
	font-family: var(--gfil-display);
	font-size: clamp(3.6rem, 8vw, 7.4rem);
	font-weight: 500;
	letter-spacing: -.055em;
	line-height: .88;
}
.gfil-pagehead p[class*="lede"] { font-size: 1rem; line-height: 1.7; max-width: 68ch; }

/* Footer ------------------------------------------------------------------- */
.gfil-footer { background: #0A0A0A; color: #DAD5CD; }
.gfil-footer__rule,
.gfil-footer__inner,
.gfil-footer__legal { border-color: #2D2A27; }
.gfil-footer__name {
	font-family: var(--gfil-ui);
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
}
.gfil-footer a { color: #DAD5CD; }
.gfil-footer a:hover { color: #D0B89D; }

@media (max-width: 1100px) {
	.gfil-luxpulse { grid-template-columns: repeat(2, 1fr); }
	.gfil-luxstat:nth-child(2) { border-right: 0; }
	.gfil-luxstat:nth-child(-n+2) { border-bottom: 1px solid var(--gfil-rule); }
	.gfil-editcards { grid-template-columns: 1fr 1fr; }
	.gfil-editcard:first-child { grid-column: 1 / -1; min-height: 18rem; padding-left: 0; border-right: 0; border-bottom: 1px solid var(--gfil-rule); }
	.gfil-kpis { grid-template-columns: repeat(2, 1fr); }
	.gfil-kpi:nth-child(2) { border-right: 0; }
	.gfil-kpi:nth-child(-n+2) { border-bottom: 1px solid var(--gfil-rule); }
	.gfil-entitygrid,
	.gfil-research { grid-template-columns: repeat(2, 1fr); }
	.gfil-research__item:nth-child(3n+1), .gfil-entitycard:nth-child(3n+1) { padding-left: 1.8rem !important; }
	.gfil-research__item:nth-child(2n+1), .gfil-entitycard:nth-child(2n+1) { padding-left: 0 !important; }
}

@media (max-width: 900px) {
	.gfil-luxhero { min-height: 72vh; }
	.gfil-luxhero__veil { background: linear-gradient(0deg, rgba(4,4,4,.88), rgba(4,4,4,.28)); }
	.gfil-luxstatement,
	.gfil-luxchapter__head,
	.gfil-luxatlas__head,
	.gfil-luxsection > header,
	.gfil-desk__intro { grid-template-columns: 1fr; gap: 1.2rem; }
	.gfil-luxstatement__copy { max-width: none; }
	.gfil-private-rooms { grid-template-columns: 1fr; }
	.gfil-private-room { min-height: 28rem; }
	.gfil-offering-card { min-height: 24rem; }
	.gfil-gate { grid-template-columns: 1fr; }
	.gfil-desknav { top: 0; }
}

@media (max-width: 680px) {
	.gfil-masthead__date,
	.gfil-masthead__contact { display: none; }
	.gfil-masthead__utility .gfil-shell { justify-content: center; }
	.gfil-wordmark__group { font-size: 1rem; letter-spacing: .11em; }
	.gfil-wordmark__name { font-size: .46rem; letter-spacing: .35em; }
	.gfil-masthead__cta { display: none; }
	.gfil-luxhero h1 { font-size: clamp(3.2rem, 16vw, 5.6rem); }
	.gfil-luxhero__lede { font-size: .95rem; }
	.gfil-luxpulse { grid-template-columns: 1fr; }
	.gfil-luxstat { border-right: 0; border-bottom: 1px solid var(--gfil-rule); padding-inline: 0; }
	.gfil-luxstat:last-child { border-bottom: 0; }
	.gfil-editcards,
	.gfil-entitygrid,
	.gfil-research,
	.gfil-kpis { grid-template-columns: 1fr; }
	.gfil-editcard,
	.gfil-editcard:first-child,
	.gfil-entitycard,
	.gfil-research__item,
	.gfil-research__item:nth-child(2n+1),
	.gfil-entitycard:nth-child(2n+1) {
		grid-column: auto;
		padding: 1.8rem 0 2.4rem !important;
		border-right: 0;
		min-height: 0;
	}
	.gfil-kpi { border-right: 0; border-bottom: 1px solid var(--gfil-rule); }
	.gfil-kpi:last-child { border-bottom: 0; }
	.gfil-lenshead h1 { font-size: clamp(3.6rem, 20vw, 6.4rem); }
	.gfil-gate__panel, .gfil-gate__manifest { padding: 2rem 1.4rem; }
	.gfil-desk__bar .gfil-shell { padding-block: 1.4rem; }
	.gfil-desk__title { font-size: 2.7rem; }
	.gfil-desk__account { width: 100%; grid-template-columns: 1fr auto; align-items: center; text-align: left; }
	.gfil-desk__role, .gfil-desk__org { grid-column: 1; }
	.gfil-desk__out { grid-column: 2; grid-row: 1 / span 2; justify-self: end; }
}

/* Decision intelligence --------------------------------------------------- */
.gfil-signalgrid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border-top:1px solid var(--gfil-rule); border-left:1px solid var(--gfil-rule); }
.gfil-signalcard { padding:clamp(1.5rem,3vw,2.6rem); min-height:22rem; border-right:1px solid var(--gfil-rule); border-bottom:1px solid var(--gfil-rule); display:flex; flex-direction:column; }
.gfil-signalcard__value { font-family:var(--gfil-display); font-size:clamp(2.8rem,5vw,5rem); line-height:.9; margin:1.4rem 0 1.2rem; }
.gfil-signalcard h3 { font-size:1rem; letter-spacing:.02em; margin:0 0 1rem; }
.gfil-signalcard p { color:var(--gfil-slate); }
.gfil-signalcard__source { margin-top:auto; padding-top:1.5rem; font-size:.78rem; }
.gfil-forwardgrid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1px; background:var(--gfil-rule); border:1px solid var(--gfil-rule); }
.gfil-forwardcard { background:var(--gfil-paper); padding:clamp(1.6rem,3vw,2.8rem); min-height:18rem; display:flex; flex-direction:column; justify-content:space-between; }
.gfil-forwardcard h3 { margin:.5rem 0 0; font-family:var(--gfil-display); font-size:clamp(1.5rem,2.8vw,2.3rem); font-weight:500; }
.gfil-forwardcard__value { font-family:var(--gfil-display); font-size:clamp(2.3rem,4vw,4rem); line-height:1; margin:2rem 0; }
.gfil-decisionlab { border:1px solid var(--gfil-rule-strong); background:var(--gfil-shell); }
.gfil-decisionlab__form { display:grid; grid-template-columns:1.2fr 1.2fr auto; gap:1rem; padding:1.5rem; border-bottom:1px solid var(--gfil-rule); align-items:end; }
.gfil-decisionlab__form label { display:grid; gap:.5rem; font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; }
.gfil-decisionlab__form select { width:100%; border:1px solid var(--gfil-rule-strong); background:#fff; padding:.85rem 1rem; font:500 .9rem var(--gfil-ui); }
.gfil-decisionlab__result { display:grid; grid-template-columns:1.2fr .45fr 2fr; gap:2rem; align-items:start; padding:clamp(1.5rem,4vw,3rem); }
.gfil-decisionlab__result h3 { font-family:var(--gfil-display); font-size:clamp(2rem,4vw,4rem); font-weight:500; margin:.4rem 0; }
.gfil-decisionlab__score { text-align:center; border-left:1px solid var(--gfil-rule); border-right:1px solid var(--gfil-rule); padding:1rem; }
.gfil-decisionlab__score span { font:500 clamp(3.4rem,7vw,6.4rem)/.8 var(--gfil-display); }
.gfil-decisionlab__score small { display:block; margin-top:.7rem; color:var(--gfil-slate); }
.gfil-decisionlab dl { margin:0; }
.gfil-decisionlab dl div { display:flex; justify-content:space-between; gap:2rem; padding:.75rem 0; border-bottom:1px solid var(--gfil-rule); }
.gfil-decisionlab dt { color:var(--gfil-slate); }
.gfil-decisionlab dd { margin:0; font-family:var(--gfil-data); }
.gfil-decisionlab__note { padding:1rem 1.5rem; border-top:1px solid var(--gfil-rule); margin:0; color:var(--gfil-slate); font-size:.82rem; }
@media (max-width:1100px){ .gfil-signalgrid{grid-template-columns:repeat(2,1fr)} .gfil-forwardgrid{grid-template-columns:repeat(2,1fr)} .gfil-decisionlab__result{grid-template-columns:1fr .5fr} .gfil-decisionlab__result dl{grid-column:1/-1} }
@media (max-width:720px){ .gfil-signalgrid,.gfil-forwardgrid{grid-template-columns:1fr} .gfil-decisionlab__form{grid-template-columns:1fr} .gfil-decisionlab__result{grid-template-columns:1fr} .gfil-decisionlab__score{border:0;border-top:1px solid var(--gfil-rule);border-bottom:1px solid var(--gfil-rule)} }


/* ========================================================================== 
   LAYOUT & VIEWPORT REFINEMENT (v3.2)

   Wide product pages own the canvas. Reading measure is created by .gfil-shell,
   not by WordPress's default constrained post-content wrapper. This prevents
   full-bleed editorial bands from being clipped inside an 820px parent.
   ========================================================================== */

:root {
	--gfil-max: 1880px;
	--gfil-gutter: clamp(1rem, 2.35vw, 2.75rem);
}

/* Wide templates ---------------------------------------------------------- */
.gfil-main--wide,
body.home .gfil-main {
	width: 100%;
	max-width: none !important;
	margin: 0 !important;
	padding: 0 !important;
}

.gfil-main--wide > .wp-block-post-content,
body.home .gfil-main > .wp-block-post-content,
.gfil-main--wide .wp-block-post-content,
body.home .gfil-main .wp-block-post-content {
	width: 100% !important;
	max-width: none !important;
	margin-inline: 0 !important;
	padding-inline: 0 !important;
}

.gfil-main--wide .wp-block-pattern,
body.home .gfil-main .wp-block-pattern,
.gfil-main--wide .wp-block-html,
body.home .gfil-main .wp-block-html {
	width: 100% !important;
	max-width: none !important;
	margin-inline: 0 !important;
}

/* The homepage itself must be allowed to escape any legacy constrained block
   left in a database from an earlier theme version. html/body already clip the
   horizontal axis, so clipping this local wrapper only clips the design. */
.gfil-luxhome {
	width: var(--gfil-vw, 100vw);
	max-width: var(--gfil-vw, 100vw);
	margin-left: calc(50% - var(--gfil-vw, 100vw) / 2) !important;
	margin-right: calc(50% - var(--gfil-vw, 100vw) / 2) !important;
	overflow: visible;
}

.gfil-shell {
	max-width: var(--gfil-max);
}

/* Masthead alignment ------------------------------------------------------ */
.gfil-masthead__brand .gfil-shell {
	padding-block: clamp(.95rem, 1.6vw, 1.45rem);
}

.gfil-wordmark__group {
	font-size: clamp(1.15rem, 2.4vw, 2rem);
	line-height: 1.14;
	padding-top: .08em;
}

.gfil-wordmark__name { line-height: 1.3; }
.gfil-masthead.is-compact .gfil-wordmark__group { line-height: 1.12; }

/* Home hero --------------------------------------------------------------- */
.gfil-luxhero {
	width: 100%;
	max-width: none;
	min-height: clamp(640px, 78svh, 900px);
}

.gfil-luxhero__inner {
	width: 100%;
	padding-top: clamp(5rem, 9vw, 8.5rem);
	padding-bottom: clamp(3.5rem, 6vw, 5.5rem);
}

.gfil-luxhero h1 {
	font-size: clamp(3.7rem, 7.4vw, 7.7rem);
	line-height: .9;
	max-width: 11.8ch;
	letter-spacing: -.05em;
	overflow-wrap: normal;
	word-break: normal;
}

.gfil-luxhero__lede { max-width: 68ch; }

/* Maximize editorial and product sections while retaining intentional gutters. */
.gfil-luxstatement,
.gfil-luxpulse,
.gfil-luxchapter,
.gfil-lenshead,
.gfil-lensbody,
.gfil-desk__bar .gfil-shell,
.gfil-desknav .gfil-shell,
.gfil-desk > .gfil-shell {
	width: 100%;
}

/* Full-width interactive atlas ------------------------------------------- */
.gfil-luxatlas {
	width: 100%;
	max-width: none;
	padding-block: clamp(3.5rem, 6vw, 6rem);
}

.gfil-luxatlas > .gfil-shell {
	width: 100%;
	max-width: none;
	padding-inline: clamp(.75rem, 1.6vw, 2rem);
}

.gfil-luxatlas__head {
	max-width: var(--gfil-max);
	margin-inline: auto;
	padding-inline: calc(var(--gfil-gutter) - clamp(.75rem, 1.6vw, 2rem));
}

.gfil-luxatlas .gfil-frame {
	width: 100%;
	max-width: none;
	padding-inline: 0;
}

.gfil-luxatlas .gfil-frame__screen,
.gfil-luxatlas .gfil-instrument--framed,
.gfil-luxatlas .gfil-plate {
	width: 100%;
	max-width: none;
}

.gfil-luxatlas .gfil-frame .gfil-instrument--framed .gfil-instrument__bar,
.gfil-luxatlas .gfil-frame .gfil-instrument--framed .gfil-instrument__stage,
.gfil-luxatlas .gfil-frame .gfil-instrument--framed .gfil-instrument__foot,
.gfil-luxatlas .gfil-frame .gfil-instrument--framed .gfil-instrument__coverage {
	max-width: none;
	width: 100%;
	padding-inline: clamp(.9rem, 1.8vw, 2rem);
}

/* In map mode the projection uses every available horizontal pixel. */
.gfil-instrument[data-mode="flat"] .gfil-globe {
	width: 100%;
	max-width: 100%;
	margin-inline: 0;
}

.gfil-instrument[data-mode="flat"] .gfil-globe__svg {
	width: 100%;
	max-width: none;
}

.gfil-instrument[data-mode="flat"] .gfil-instrument__panel {
	width: 100%;
}

/* Wide analytical pages --------------------------------------------------- */
.gfil-pagehead,
.gfil-section,
.gfil-phero,
.gfil-frame,
.gfil-output,
.gfil-portal-router {
	width: 100%;
}

@media (min-width: 1440px) {
	.gfil-luxchapter__head,
	.gfil-luxatlas__head { column-gap: clamp(4rem, 7vw, 9rem); }
	.gfil-luxchapter__head { grid-template-columns: minmax(0, 1.65fr) minmax(18rem, .65fr); }
	.gfil-luxatlas__head { grid-template-columns: minmax(0, 1.55fr) minmax(20rem, .6fr); }
}

@media (max-width: 900px) {
	:root { --gfil-gutter: clamp(1rem, 4vw, 1.75rem); }

	.gfil-luxhero {
		min-height: min(760px, 82svh);
		align-items: end;
	}

	.gfil-luxhero__inner {
		padding-top: clamp(4.5rem, 14vw, 7rem);
		padding-bottom: clamp(2.8rem, 8vw, 4.2rem);
	}

	.gfil-luxhero h1 {
		font-size: clamp(3rem, 12.5vw, 5.4rem);
		line-height: .92;
		max-width: 10.5ch;
	}

	.gfil-luxatlas > .gfil-shell { padding-inline: 0; }
	.gfil-luxatlas__head { padding-inline: var(--gfil-gutter); }
	.gfil-luxatlas .gfil-frame__chrome { margin-inline: var(--gfil-gutter); }
	.gfil-luxatlas .gfil-frame__screen { border-left: 0; border-right: 0; border-radius: 0; }
}

@media (max-width: 680px) {
	:root { --gfil-gutter: 1rem; }

	.gfil-masthead__brand .gfil-shell { padding-block: .8rem; }
	.gfil-wordmark__group { font-size: clamp(.92rem, 4.8vw, 1.15rem); letter-spacing: .09em; }
	.gfil-wordmark__name { font-size: .42rem; letter-spacing: .28em; }

	.gfil-luxhero {
		min-height: min(700px, 78svh);
	}

	.gfil-luxhero h1 {
		font-size: clamp(2.75rem, 13.2vw, 4.45rem);
		line-height: .93;
		max-width: 10ch;
		letter-spacing: -.045em;
	}

	.gfil-luxhero__lede {
		font-size: .93rem;
		line-height: 1.55;
		max-width: 38ch;
		margin-top: 1.4rem;
	}

	.gfil-luxhero__actions { gap: 1rem; margin-top: 1.7rem; }
	.gfil-luxhero__actions .gfil-btn { flex: 0 0 auto; width: auto; }

	.gfil-luxstatement,
	.gfil-luxchapter { padding-block: 3.4rem; }

	.gfil-luxstatement__copy { font-size: clamp(1.85rem, 9vw, 2.8rem); }
	.gfil-luxchapter__head h2,
	.gfil-luxatlas__head h2 { font-size: clamp(2.35rem, 11vw, 3.55rem); }

	/* Globe is the default on mobile and desktop; the flat map remains available as an explicit toggle. */
	.gfil-globe,
	.gfil-instrument--full .gfil-globe {
		width: 100%;
		max-width: min(100%, 34rem);
	}

	.gfil-instrument__stage { padding-block: 1rem; gap: 1rem; }
	.gfil-plate { padding-inline: .85rem; }
	.gfil-frame .gfil-instrument--framed .gfil-instrument__bar,
	.gfil-frame .gfil-instrument--framed .gfil-instrument__stage,
	.gfil-frame .gfil-instrument--framed .gfil-instrument__foot,
	.gfil-frame .gfil-instrument--framed .gfil-instrument__coverage { padding-inline: .85rem; }

	.gfil-instrument__filters,
	.gfil-instrument__metrics,
	.gfil-instrument__modes {
		display: flex;
		overflow-x: auto;
		flex-wrap: nowrap;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}
	.gfil-instrument__filters::-webkit-scrollbar,
	.gfil-instrument__metrics::-webkit-scrollbar,
	.gfil-instrument__modes::-webkit-scrollbar { display: none; }
	.gfil-pill { flex: 0 0 auto; }

	.gfil-pagehead { padding-top: 3rem; padding-bottom: 2.5rem; }
	.gfil-pagehead h1 { font-size: clamp(2.65rem, 13vw, 4.1rem); line-height: .94; max-width: 12ch; }
	.gfil-lenshead h1 { font-size: clamp(3rem, 15vw, 4.8rem); line-height: .92; }
}

/* v3.3 — research intelligence + private research workspace --------------- */

/* The masthead now carries the positioning statement, not a product subbrand. */
.gfil-wordmark__name {
	font-size: clamp(.47rem, .72vw, .62rem);
	letter-spacing: .26em;
	white-space: nowrap;
}

.gfil-countrybook { min-width: 74rem; }
.gfil-countrybook small { color: var(--gfil-slate); font-weight: 400; }

.gfil-rolegrid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	border-top: 1px solid var(--gfil-rule);
	border-left: 1px solid var(--gfil-rule);
}

.gfil-rolecard {
	min-width: 0;
	padding: clamp(1.5rem, 2.8vw, 2.75rem);
	border-right: 1px solid var(--gfil-rule);
	border-bottom: 1px solid var(--gfil-rule);
	background: var(--gfil-paper);
}

.gfil-rolecard h3 {
	font-family: var(--gfil-display);
	font-weight: 420;
	font-size: clamp(1.45rem, 2vw, 2.15rem);
	line-height: 1.02;
	letter-spacing: -.025em;
	margin: .9rem 0 1rem;
}

.gfil-rolecard > p:not(.gfil-lux-kicker) {
	color: var(--gfil-slate);
	line-height: 1.65;
}

.gfil-rolecard .gfil-textlink {
	display: inline-block;
	margin-top: 1.4rem;
}

.gfgpc-notebook {
	border-top: 1px solid var(--gfil-rule);
}

.gfgpc-notebook__actions {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1.5rem;
	padding: 1.1rem 0 1.6rem;
}

.gfgpc-notebook__actions p {
	max-width: 62rem;
	margin: 0;
	color: var(--gfil-slate);
}

.gfgpc-notebook__form {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem;
	padding: clamp(1.25rem, 2.4vw, 2rem);
	border: 1px solid var(--gfil-rule);
	background: var(--gfil-paper-2, #f6f5f1);
}

.gfgpc-notebook__form label {
	display: grid;
	gap: .5rem;
	font-family: var(--gfil-data);
	font-size: .68rem;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.gfgpc-notebook__form .is-wide { grid-column: 1 / -1; }

.gfgpc-notebook__form input,
.gfgpc-notebook__form textarea {
	width: 100%;
	border: 1px solid var(--gfil-rule);
	border-radius: 0;
	background: #fff;
	color: var(--gfil-ink);
	font: 400 .92rem/1.55 var(--gfil-ui);
	letter-spacing: 0;
	text-transform: none;
	padding: .85rem .9rem;
}

.gfgpc-notebook__form textarea { resize: vertical; }
.gfgpc-notebook__form input:focus,
.gfgpc-notebook__form textarea:focus { outline: 1px solid var(--gfil-ink); outline-offset: 2px; }

.gfgpc-notebook__empty {
	padding: 2rem 0;
	color: var(--gfil-slate);
}

.gfgpc-notebook__list {
	display: grid;
	margin-top: 1.5rem;
	border-top: 1px solid var(--gfil-rule);
}

.gfgpc-note {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 2rem;
	padding: 1.5rem 0;
	border-bottom: 1px solid var(--gfil-rule);
}

.gfgpc-note__meta {
	font-family: var(--gfil-data);
	font-size: .65rem;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--gfil-slate);
	margin: 0 0 .55rem;
}

.gfgpc-note h3 {
	font-family: var(--gfil-display);
	font-weight: 450;
	font-size: 1.45rem;
	margin: 0 0 .6rem;
}

.gfgpc-note p:last-child { max-width: 72rem; line-height: 1.65; }

.gfgpc-note__delete {
	appearance: none;
	border: 0;
	border-bottom: 1px solid currentColor;
	background: transparent;
	color: var(--gfil-slate);
	font: 500 .65rem var(--gfil-data);
	letter-spacing: .08em;
	text-transform: uppercase;
	padding: .2rem 0;
	cursor: pointer;
}

/* Map remains the opening projection at every breakpoint. The controls stay
   horizontally scrollable on phones rather than forcing a mode change. */
@media (max-width: 980px) {
	.gfil-rolegrid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 680px) {
	.gfil-wordmark__name { font-size: .38rem; letter-spacing: .19em; }
	.gfil-rolegrid { grid-template-columns: 1fr; }
	.gfgpc-notebook__actions { align-items: flex-start; flex-direction: column; }
	.gfgpc-notebook__form { grid-template-columns: 1fr; padding: 1rem; }
	.gfgpc-notebook__form .is-wide { grid-column: auto; }
	.gfgpc-note { grid-template-columns: 1fr; gap: .75rem; }
	.gfil-instrument[data-mode="flat"] .gfil-globe { max-width: 100%; }
	.gfil-instrument[data-mode="flat"] .gfil-panel__rows { grid-template-columns: 1fr; }
}

.gfgpc-market-export {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem;
	padding: clamp(1.2rem, 2vw, 1.75rem) 0;
	border-top: 1px solid var(--gfil-rule);
	border-bottom: 1px solid var(--gfil-rule);
}

.gfgpc-market-export > div:first-child {
	display: grid;
	gap: .35rem;
}

.gfgpc-market-export strong {
	font-family: var(--gfil-display);
	font-size: clamp(1.25rem, 1.8vw, 1.7rem);
	font-weight: 450;
	letter-spacing: -.02em;
}

.gfgpc-market-export span {
	color: var(--gfil-slate);
	line-height: 1.55;
}

.gfgpc-market-export__links {
	display: flex;
	gap: .65rem;
	flex-wrap: wrap;
	justify-content: flex-end;
}

@media (max-width: 680px) {
	.gfgpc-market-export { align-items: flex-start; flex-direction: column; }
	.gfgpc-market-export__links { justify-content: flex-start; width: 100%; }
	.gfgpc-market-export__links .gfil-btn { flex: 1 1 auto; text-align: center; }
}

/* v3.3.0 — August 17 research-cut coverage strip -------------------------- */
.gfil-statstrip {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	border-top: 1px solid var(--gfil-rule);
	border-left: 1px solid var(--gfil-rule);
	background: var(--gfil-paper);
}

.gfil-statstrip__item {
	min-width: 0;
	display: grid;
	align-content: space-between;
	gap: 1.25rem;
	min-height: 9.5rem;
	padding: clamp(1.25rem, 2.4vw, 2.15rem);
	border-right: 1px solid var(--gfil-rule);
	border-bottom: 1px solid var(--gfil-rule);
}

.gfil-statstrip__item strong {
	font-family: var(--gfil-display);
	font-size: clamp(2.35rem, 5vw, 4.75rem);
	font-weight: 420;
	line-height: .88;
	letter-spacing: -.045em;
}

.gfil-statstrip__item span {
	max-width: 18rem;
	font-family: var(--gfil-data);
	font-size: .68rem;
	line-height: 1.45;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--gfil-slate);
}

@media (max-width: 880px) {
	.gfil-statstrip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 520px) {
	.gfil-statstrip { grid-template-columns: 1fr; }
	.gfil-statstrip__item { min-height: 7.5rem; }
}


/* 3.3.2 — product-led footer navigation -------------------------------- */
.gfil-footer__nav {
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: clamp(1.5rem, 3vw, 3rem);
}

@media (max-width: 900px) {
	.gfil-footer__nav { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 560px) {
	.gfil-footer__nav { grid-template-columns: 1fr 1fr; gap: 1.5rem 1rem; }
	.gfil-footer__group a { font-size: 0.78rem; line-height: 1.45; }
}

@media (max-width: 390px) {
	.gfil-footer__nav { grid-template-columns: 1fr; }
}

/* 3.3.3 — sign-in + subscriptions ----------------------------------------- */
.gfil-signin-chooser {
	padding-top: clamp(2.5rem, 5vw, 5rem);
	padding-bottom: clamp(3rem, 6vw, 6rem);
}

.gfil-signin-chooser > .gfil-eyebrow,
.gfil-signin-chooser > h2,
.gfil-signin-chooser > p {
	max-width: 76rem;
}

.gfil-signin-chooser > h2 {
	font-family: var(--gfil-display);
	font-size: clamp(2.8rem, 6vw, 5.8rem);
	font-weight: 500;
	letter-spacing: -.05em;
	line-height: .98;
	margin: .5rem 0 1.25rem;
}

.gfil-signin-chooser > p:not(.gfil-eyebrow) {
	max-width: 52rem;
	color: var(--gfil-slate);
	font-size: clamp(1rem, 1.5vw, 1.15rem);
	line-height: 1.7;
	margin-bottom: 2.25rem;
}

.gfil-signin-rooms {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	border: 1px solid var(--gfil-ink);
}

.gfil-signin-room {
	min-height: 29rem;
	padding: clamp(2rem, 4.5vw, 4.5rem);
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: flex-end;
}

.gfil-signin-room.is-retail {
	background: #0B0D10;
	color: #F4F0E9;
}

.gfil-signin-room.is-studio {
	background: #E9E2D8;
	color: #111;
}

.gfil-signin-room h3 {
	font-family: var(--gfil-display);
	font-size: clamp(2.8rem, 5vw, 5.2rem);
	font-weight: 500;
	letter-spacing: -.05em;
	line-height: .94;
	margin: .55rem 0 1.1rem;
}

.gfil-signin-room > p:not(.gfil-lux-kicker) {
	max-width: 42ch;
	font-size: 1rem;
	line-height: 1.7;
	opacity: .74;
}

.gfil-signin-room__link {
	margin-top: 2rem;
	color: inherit;
	font-size: .78rem;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	text-decoration: none;
	border-bottom: 1px solid currentColor;
	padding-bottom: .35rem;
}

.gfil-signin-room__link:hover { opacity: .62; }

.gfil-pagehead--subscriptions {
	padding-bottom: clamp(4rem, 7vw, 7rem);
}

.gfil-subscriptions {
	width: 100%;
}

.gfil-subscriptions__intro {
	display: grid;
	grid-template-columns: minmax(0, 1.2fr) minmax(18rem, .65fr);
	gap: 2rem clamp(3rem, 8vw, 9rem);
	padding-top: clamp(3.5rem, 7vw, 7rem);
	padding-bottom: clamp(3rem, 6vw, 6rem);
	border-top: 1px solid var(--gfil-rule);
}

.gfil-subscriptions__intro .gfil-lux-kicker { grid-column: 1 / -1; }

.gfil-subscriptions__intro h2,
.gfil-pricing__head h2,
.gfil-subscription-features__head h2,
.gfil-subscription-roles h2,
.gfil-subscription-close h2 {
	font-family: var(--gfil-display);
	font-weight: 500;
	letter-spacing: -.05em;
	line-height: .96;
	margin: 0;
}

.gfil-subscriptions__intro h2 {
	font-size: clamp(3rem, 6vw, 5.8rem);
	max-width: 12ch;
}

.gfil-subscriptions__intro > p:not(.gfil-lux-kicker) {
	color: var(--gfil-slate);
	font-size: clamp(1rem, 1.45vw, 1.16rem);
	line-height: 1.75;
	margin: .4rem 0 0;
}

.gfil-benefit-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	border-top: 1px solid var(--gfil-ink);
	border-bottom: 1px solid var(--gfil-ink);
	padding-inline: 0;
	margin-bottom: clamp(4rem, 8vw, 8rem);
}

.gfil-benefit-grid article {
	padding: clamp(1.75rem, 3vw, 3rem);
	border-right: 1px solid var(--gfil-rule);
}

.gfil-benefit-grid article:last-child { border-right: 0; }

.gfil-benefit-grid h3,
.gfil-subscription-features h3,
.gfil-subscription-roles h3 {
	font-family: var(--gfil-display);
	font-size: clamp(1.55rem, 2.3vw, 2.2rem);
	font-weight: 500;
	letter-spacing: -.03em;
	line-height: 1.05;
	margin: 0 0 1rem;
}

.gfil-benefit-grid p,
.gfil-subscription-features p,
.gfil-subscription-roles p {
	color: var(--gfil-slate);
	line-height: 1.68;
	margin: 0;
}

.gfil-pricing {
	background: #0C0D0F;
	color: #F3F0EA;
	padding-block: clamp(4rem, 8vw, 8rem);
}

.gfil-pricing__head {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(18rem, .7fr);
	gap: 2rem clamp(3rem, 8vw, 9rem);
	margin-bottom: clamp(2.5rem, 5vw, 4.5rem);
}

.gfil-pricing__head .gfil-lux-kicker { grid-column: 1 / -1; color: #D0B89D; }

.gfil-pricing__head h2 {
	font-size: clamp(3rem, 6vw, 5.6rem);
	max-width: 12ch;
}

.gfil-pricing__head > p:not(.gfil-lux-kicker) {
	color: #A9A49C;
	line-height: 1.72;
	margin: .25rem 0 0;
}

.gfil-pricing__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	border: 1px solid #33363A;
}

.gfil-price-card {
	padding: clamp(2rem, 3.4vw, 3.5rem);
	border-right: 1px solid #33363A;
	display: flex;
	flex-direction: column;
	min-height: 42rem;
}

.gfil-price-card:last-child { border-right: 0; }
.gfil-price-card.is-featured { background: #F2EEE7; color: #111; }
.gfil-price-card.is-featured .gfil-lux-kicker { color: #8F6745; }

.gfil-price-card h3 {
	font-family: var(--gfil-display);
	font-size: clamp(2.5rem, 4vw, 4rem);
	font-weight: 500;
	letter-spacing: -.045em;
	line-height: 1;
	margin: .6rem 0 2rem;
}

.gfil-price-card__price {
	display: flex;
	align-items: baseline;
	gap: .65rem;
	margin-bottom: .4rem;
}

.gfil-price-card__price strong {
	font-family: var(--gfil-display);
	font-size: clamp(2.6rem, 4vw, 4.2rem);
	font-weight: 500;
	letter-spacing: -.045em;
	line-height: 1;
}

.gfil-price-card__price span,
.gfil-price-card__annual {
	font-size: .76rem;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.gfil-price-card__annual { opacity: .58; margin: 0 0 1.7rem; }

.gfil-price-card__lede {
	line-height: 1.7;
	opacity: .72;
	min-height: 7rem;
}

.gfil-price-card ul {
	list-style: none;
	padding: 0;
	margin: 1rem 0 2.5rem;
	border-top: 1px solid currentColor;
	border-color: rgba(255,255,255,.18);
}

.gfil-price-card.is-featured ul { border-color: rgba(17,17,17,.18); }

.gfil-price-card li {
	padding: .82rem 0;
	border-bottom: 1px solid rgba(255,255,255,.12);
	font-size: .93rem;
	line-height: 1.45;
}

.gfil-price-card.is-featured li { border-color: rgba(17,17,17,.12); }
.gfil-price-card .gfil-btn { margin-top: auto; align-self: flex-start; }
.gfil-price-card:not(.is-featured) .gfil-btn--quiet { color: #F3F0EA; border-color: #F3F0EA; }

.gfil-subscription-features {
	padding-top: clamp(5rem, 9vw, 9rem);
	padding-bottom: clamp(4rem, 8vw, 8rem);
}

.gfil-subscription-features__head {
	display: grid;
	grid-template-columns: minmax(0, .55fr) minmax(0, 1.45fr);
	gap: 2rem 4rem;
	align-items: end;
	margin-bottom: clamp(3rem, 6vw, 5rem);
}

.gfil-subscription-features__head h2 {
	font-size: clamp(3rem, 6vw, 5.7rem);
	max-width: 13ch;
}

.gfil-subscription-features__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	border-top: 1px solid var(--gfil-ink);
}

.gfil-subscription-features__grid article {
	padding: clamp(1.7rem, 3vw, 3rem) clamp(1.25rem, 2.6vw, 2.5rem);
	border-right: 1px solid var(--gfil-rule);
	border-bottom: 1px solid var(--gfil-rule);
}

.gfil-subscription-features__grid article:nth-child(3n) { border-right: 0; }

.gfil-subscription-roles {
	background: #E9E2D8;
	padding-block: clamp(4.5rem, 8vw, 8rem);
}

.gfil-subscription-roles h2 {
	font-size: clamp(3rem, 6vw, 5.7rem);
	max-width: 12ch;
	margin-top: .6rem;
}

.gfil-subscription-roles__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 0;
	margin-top: clamp(3rem, 6vw, 5rem);
	border-top: 1px solid #111;
	border-bottom: 1px solid #111;
}

.gfil-subscription-roles__grid article {
	padding: clamp(1.8rem, 3vw, 3rem);
	border-right: 1px solid rgba(17,17,17,.2);
}

.gfil-subscription-roles__grid article:last-child { border-right: 0; }
.gfil-subscription-roles p { color: rgba(17,17,17,.68); }

.gfil-subscription-close {
	padding-top: clamp(5rem, 9vw, 9rem);
	padding-bottom: clamp(5rem, 9vw, 9rem);
	text-align: center;
}

.gfil-subscription-close .gfil-lux-kicker { justify-content: center; }
.gfil-subscription-close h2 { font-size: clamp(3.2rem, 7vw, 6.7rem); }
.gfil-subscription-close > p:not(.gfil-lux-kicker) { color: var(--gfil-slate); margin: 1.4rem auto 2rem; max-width: 46rem; }

@media (max-width: 1100px) {
	.gfil-benefit-grid,
	.gfil-subscription-roles__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.gfil-benefit-grid article:nth-child(2),
	.gfil-subscription-roles__grid article:nth-child(2) { border-right: 0; }
	.gfil-benefit-grid article:nth-child(-n+2),
	.gfil-subscription-roles__grid article:nth-child(-n+2) { border-bottom: 1px solid var(--gfil-rule); }
	.gfil-subscription-roles__grid article:nth-child(-n+2) { border-bottom-color: rgba(17,17,17,.2); }
}

@media (max-width: 900px) {
	.gfil-signin-rooms,
	.gfil-pricing__grid { grid-template-columns: 1fr; }
	.gfil-signin-room { min-height: 24rem; }
	.gfil-price-card { border-right: 0; border-bottom: 1px solid #33363A; min-height: 0; }
	.gfil-price-card:last-child { border-bottom: 0; }
	.gfil-price-card__lede { min-height: 0; }
	.gfil-subscriptions__intro,
	.gfil-pricing__head,
	.gfil-subscription-features__head { grid-template-columns: 1fr; gap: 1.5rem; }
	.gfil-subscriptions__intro .gfil-lux-kicker,
	.gfil-pricing__head .gfil-lux-kicker { grid-column: auto; }
	.gfil-subscription-features__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.gfil-subscription-features__grid article:nth-child(3n) { border-right: 1px solid var(--gfil-rule); }
	.gfil-subscription-features__grid article:nth-child(2n) { border-right: 0; }
}

@media (max-width: 620px) {
	.gfil-benefit-grid,
	.gfil-subscription-features__grid,
	.gfil-subscription-roles__grid { grid-template-columns: 1fr; }
	.gfil-benefit-grid article,
	.gfil-subscription-features__grid article,
	.gfil-subscription-roles__grid article {
		border-right: 0 !important;
		border-bottom: 1px solid var(--gfil-rule);
	}
	.gfil-subscription-roles__grid article { border-bottom-color: rgba(17,17,17,.2); }
	.gfil-benefit-grid article:last-child,
	.gfil-subscription-features__grid article:last-child,
	.gfil-subscription-roles__grid article:last-child { border-bottom: 0; }
	.gfil-signin-room { padding: 2rem 1.25rem; min-height: 21rem; }
	.gfil-signin-room h3 { font-size: clamp(2.7rem, 13vw, 4rem); }
	.gfil-pricing { padding-inline: 0; }
	.gfil-price-card { padding: 2rem 1.25rem; }
	.gfil-price-card__price { flex-wrap: wrap; }
}

/* v3.3.4 — globe-first registry + Private Client atlas --------------------- */
.gfil-instrument--contained {
	width: 100%;
	max-width: 100%;
	margin-inline: 0 !important;
}

.gfil-instrument--portal {
	border: 1px solid var(--gfil-rule);
	margin-top: 1.25rem;
}

.gfil-instrument--portal .gfil-plate {
	padding: clamp(1rem, 2vw, 1.5rem);
}

.gfil-instrument--portal .gfil-instrument__stage {
	grid-template-columns: minmax(0, 1.45fr) minmax(17rem, .7fr);
	gap: clamp(1rem, 2.5vw, 2.5rem);
}

.gfil-instrument--portal .gfil-globe {
	max-width: min(44rem, 68vh);
}

.gfil-desk--retail .gfil-instrument--portal {
	border-color: #1E3651;
}

.gfil-desk--retail .gfil-instrument--portal .gfil-plate {
	background: #07111C;
}

@media (max-width: 900px) {
	.gfil-instrument--portal .gfil-instrument__stage {
		grid-template-columns: 1fr;
	}

	.gfil-instrument--portal .gfil-instrument__panel {
		border-left: 0;
		border-top: 1px solid var(--rule-inv);
		padding-left: 0;
		padding-top: 1.25rem;
		min-height: 0;
	}

	.gfil-instrument--portal .gfil-globe {
		max-width: min(100%, 32rem);
	}
}


/* ========================================================================
   v3.3.6 — Private Client readability system

   Portal content inherits many shared public components. The commercial desk
   lives on a dark analytical surface, while those shared components were
   originally authored against the public white canvas. Scope the semantic
   colour tokens to each desk body so every reused component — views, signal
   cards, forward cards, notices, tables, forms, citations and research blocks
   — receives the correct contrast without duplicating its markup.
   ======================================================================== */

/* Market & Capital: high-contrast analytical reading palette. */
.gfil-desk--retail .gfil-desk__body {
	--gfil-paper: #0D131A;
	--gfil-shell: #111820;
	--gfil-linen: #151E27;
	--gfil-rule: #3A4652;
	--gfil-rule-strong: #67717B;
	--gfil-slate: #B7C0CA;
	--gfil-graphite: #D8DEE5;
	--gfil-ink: #F7F5F1;
	color: #D8DEE5;
}

.gfil-desk--retail .gfil-desk__body .gfil-desk__lede,
.gfil-desk--retail .gfil-desk__body h2,
.gfil-desk--retail .gfil-desk__body h3,
.gfil-desk--retail .gfil-desk__body h4,
.gfil-desk--retail .gfil-desk__body strong,
.gfil-desk--retail .gfil-desk__body .gfil-view__q,
.gfil-desk--retail .gfil-desk__body .gfil-signalcard__value,
.gfil-desk--retail .gfil-desk__body .gfil-forwardcard__value,
.gfil-desk--retail .gfil-desk__body .gfil-forwardcard h3,
.gfil-desk--retail .gfil-desk__body .gfil-decisionlab__result h3 {
	color: #F7F5F1;
}

.gfil-desk--retail .gfil-desk__body p,
.gfil-desk--retail .gfil-desk__body li,
.gfil-desk--retail .gfil-desk__body dt,
.gfil-desk--retail .gfil-desk__body dd,
.gfil-desk--retail .gfil-desk__body .gfil-view__a,
.gfil-desk--retail .gfil-desk__body .gfil-view__cannot,
.gfil-desk--retail .gfil-desk__body .gfil-indicator__detail,
.gfil-desk--retail .gfil-desk__body .gfil-signalcard p,
.gfil-desk--retail .gfil-desk__body .gfil-decisionlab__note {
	color: #B7C0CA;
}

.gfil-desk--retail .gfil-desk__body .gfil-view__cannot strong,
.gfil-desk--retail .gfil-desk__body .gfil-indicator__label,
.gfil-desk--retail .gfil-desk__body .gfil-decisionlab dt,
.gfil-desk--retail .gfil-desk__body .gfil-decisionlab dd {
	color: #D8DEE5;
}

.gfil-desk--retail .gfil-desk__body a:not(.gfil-btn):not(.gfil-watch__btn):not(.gfil-panel__link) {
	color: #D6B795;
	text-decoration-color: rgba(214,183,149,.55);
}
.gfil-desk--retail .gfil-desk__body a:not(.gfil-btn):not(.gfil-watch__btn):not(.gfil-panel__link):hover,
.gfil-desk--retail .gfil-desk__body a:not(.gfil-btn):not(.gfil-watch__btn):not(.gfil-panel__link):focus-visible {
	color: #F1D5B5;
	text-decoration-color: currentColor;
}

.gfil-desk--retail .gfil-desk__body .gfil-view,
.gfil-desk--retail .gfil-desk__body .gfil-views,
.gfil-desk--retail .gfil-desk__body .gfil-indicator,
.gfil-desk--retail .gfil-desk__body .gfil-dispersion__item,
.gfil-desk--retail .gfil-desk__body .gfil-signalcard,
.gfil-desk--retail .gfil-desk__body .gfil-forwardgrid,
.gfil-desk--retail .gfil-desk__body .gfil-forwardcard,
.gfil-desk--retail .gfil-desk__body .gfil-decisionlab {
	border-color: #3A4652;
}

.gfil-desk--retail .gfil-desk__body .gfil-forwardcard,
.gfil-desk--retail .gfil-desk__body .gfil-decisionlab,
.gfil-desk--retail .gfil-desk__body .gfil-city,
.gfil-desk--retail .gfil-desk__body .gfil-card {
	background: #0D131A;
}

/* Keep form controls intentionally light so values remain immediately legible. */
.gfil-desk--retail .gfil-desk__body input,
.gfil-desk--retail .gfil-desk__body select,
.gfil-desk--retail .gfil-desk__body textarea {
	background: #FFFFFF;
	color: #111317;
	border-color: #7F8994;
}
.gfil-desk--retail .gfil-desk__body input::placeholder,
.gfil-desk--retail .gfil-desk__body textarea::placeholder { color: #626971; opacity: 1; }

/* Brand & Creative: warmer but still AA-friendly editorial reading palette. */
.gfil-desk--studio .gfil-desk__body {
	--gfil-paper: #FCFBF8;
	--gfil-shell: #F0EAE1;
	--gfil-linen: #E8E0D5;
	--gfil-rule: #C8C1B8;
	--gfil-rule-strong: #9E968C;
	--gfil-slate: #57524C;
	--gfil-graphite: #2B2723;
	--gfil-ink: #111111;
	color: #2B2723;
}
.gfil-desk--studio .gfil-desk__body p,
.gfil-desk--studio .gfil-desk__body li,
.gfil-desk--studio .gfil-desk__body dt,
.gfil-desk--studio .gfil-desk__body dd,
.gfil-desk--studio .gfil-desk__body .gfil-view__a,
.gfil-desk--studio .gfil-desk__body .gfil-view__cannot,
.gfil-desk--studio .gfil-desk__body .gfil-indicator__detail,
.gfil-desk--studio .gfil-desk__body .gfil-signalcard p,
.gfil-desk--studio .gfil-desk__body .gfil-decisionlab__note { color: #57524C; }
.gfil-desk--studio .gfil-desk__body h2,
.gfil-desk--studio .gfil-desk__body h3,
.gfil-desk--studio .gfil-desk__body h4,
.gfil-desk--studio .gfil-desk__body strong,
.gfil-desk--studio .gfil-desk__body .gfil-view__q { color: #111111; }

/* Comfortable reading measure and minimum type sizing across both workspaces. */
.gfil-desk__body .gfil-module__head p,
.gfil-desk__body .gfil-view__a,
.gfil-desk__body .gfil-view__cannot,
.gfil-desk__body .gfil-notice p,
.gfil-desk__body .gfil-signalcard p,
.gfil-desk__body .gfil-forwardcard p,
.gfil-desk__body .gfil-decisionlab__note {
	font-size: clamp(.92rem, 1.15vw, 1rem);
	line-height: 1.68;
}
.gfil-desk__body .gfil-view__q {
	font-size: clamp(1.65rem, 2.6vw, 2.35rem);
	line-height: 1.16;
	max-width: 28ch;
}
.gfil-desk__body .gfil-view { padding-block: clamp(2rem, 4vw, 3.2rem); }
.gfil-desk__body .gfil-view__a { max-width: 62ch; }
.gfil-desk__body .gfil-view__cannot { max-width: 66ch; }

/* Mobile portal readability: avoid tiny secondary text and cramped prose. */
@media (max-width: 680px) {
	.gfil-desk__body { padding-block: 1.75rem 3rem; }
	.gfil-desk__lede { font-size: clamp(1.45rem, 7vw, 2.05rem); line-height: 1.18; }
	.gfil-desk__body .gfil-module__head p,
	.gfil-desk__body .gfil-view__a,
	.gfil-desk__body .gfil-view__cannot,
	.gfil-desk__body .gfil-notice p,
	.gfil-desk__body .gfil-signalcard p,
	.gfil-desk__body .gfil-forwardcard p,
	.gfil-desk__body .gfil-decisionlab__note {
		font-size: 1rem;
		line-height: 1.7;
	}
	.gfil-desk__body .gfil-view__q { font-size: clamp(1.75rem, 8vw, 2.35rem); }
	.gfil-desk__body .gfil-eyebrow,
	.gfil-desk__body .gfil-lux-kicker,
	.gfil-desk__body .gfil-kpi__label,
	.gfil-desk__body .gfil-kpi__note,
	.gfil-desk__body .gfil-cite,
	.gfil-desk__body .gfil-chip { font-size: .72rem; }
	.gfil-desk__body .gfil-table th,
	.gfil-desk__body .gfil-table td { font-size: .8rem; line-height: 1.45; }
}

/* ========================================================================
   v3.3.7 — Private Client preview + Request Demo
   ======================================================================== */

.gfil-portal-preview {
	background: #f3f0ea;
	padding-block: clamp(4.5rem, 8vw, 8rem);
	border-block: 1px solid rgba(17, 17, 17, .14);
}

.gfil-portal-preview__head {
	display: grid;
	grid-template-columns: minmax(0, 1.2fr) minmax(18rem, .8fr);
	gap: clamp(2rem, 6vw, 7rem);
	align-items: end;
	margin-bottom: clamp(2.5rem, 5vw, 5rem);
}

.gfil-portal-preview__head h2,
.gfil-demo-workspaces__head h2,
.gfil-demo-formwrap h2 {
	margin: .25rem 0 0;
	font-family: var(--wp--preset--font-family--display, serif);
	font-size: clamp(3rem, 6.2vw, 7.2rem);
	font-weight: 400;
	line-height: .92;
	letter-spacing: -.045em;
}

.gfil-portal-preview__head > div:last-child {
	max-width: 38rem;
	justify-self: end;
}

.gfil-portal-preview__head > div:last-child > p {
	font-size: clamp(1rem, 1.35vw, 1.2rem);
	line-height: 1.65;
	margin: 0 0 1.5rem;
}

.gfil-portal-preview__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(1rem, 2.2vw, 2.25rem);
}

.gfil-portal-shot {
	min-width: 0;
	border: 1px solid rgba(17,17,17,.2);
	box-shadow: 0 24px 65px rgba(0,0,0,.09);
	overflow: hidden;
	background: #fff;
}

.gfil-portal-shot__chrome {
	height: 2.25rem;
	display: flex;
	align-items: center;
	gap: .35rem;
	padding-inline: .8rem;
	background: #e7e2da;
	border-bottom: 1px solid rgba(17,17,17,.14);
}

.gfil-portal-shot__chrome span {
	width: .48rem;
	height: .48rem;
	border: 1px solid currentColor;
	border-radius: 100%;
	opacity: .45;
}

.gfil-portal-shot__chrome strong {
	margin-left: .55rem;
	font-size: .62rem;
	font-weight: 500;
	letter-spacing: .15em;
	text-transform: uppercase;
	opacity: .6;
}

.gfil-portal-shot__nav {
	display: flex;
	gap: clamp(.8rem, 2vw, 1.65rem);
	overflow: hidden;
	padding: .85rem 1rem;
	font-size: .56rem;
	letter-spacing: .16em;
	text-transform: uppercase;
	white-space: nowrap;
	border-bottom: 1px solid currentColor;
}

.gfil-portal-shot__nav span { opacity: .55; }
.gfil-portal-shot__nav .is-active { opacity: 1; color: #b68a55; }

.gfil-portal-shot__body {
	padding: clamp(1.2rem, 2.8vw, 2.4rem);
}

.gfil-portal-shot__intro {
	display: grid;
	grid-template-columns: 1fr minmax(12rem, .9fr);
	gap: .4rem 1.5rem;
	align-items: end;
}

.gfil-portal-shot__intro .gfil-lux-kicker { grid-column: 1 / -1; }
.gfil-portal-shot__intro h3 {
	font-family: var(--wp--preset--font-family--display, serif);
	font-size: clamp(2rem, 4vw, 4.3rem);
	font-weight: 400;
	line-height: .96;
	letter-spacing: -.035em;
	margin: .25rem 0 0;
}
.gfil-portal-shot__intro > p:last-child {
	font-size: clamp(.78rem, 1.1vw, .98rem);
	line-height: 1.5;
	margin: 0;
	opacity: .72;
}

.gfil-portal-shot__instrument {
	min-height: clamp(13rem, 26vw, 21rem);
	margin-top: clamp(1.35rem, 3vw, 2.6rem);
	border: 1px solid currentColor;
	position: relative;
	overflow: hidden;
	display: grid;
	place-items: center;
	background-image: linear-gradient(rgba(128,128,128,.08) 1px, transparent 1px), linear-gradient(90deg, rgba(128,128,128,.08) 1px, transparent 1px);
	background-size: 3rem 3rem;
}

.gfil-portal-shot__globe {
	width: min(52%, 15rem);
	aspect-ratio: 1;
	border: 1px solid currentColor;
	border-radius: 50%;
	position: relative;
	opacity: .78;
	background: radial-gradient(circle at 35% 30%, rgba(182,138,85,.28), transparent 30%), radial-gradient(circle at 62% 62%, rgba(182,138,85,.18), transparent 28%);
}
.gfil-portal-shot__globe::before,
.gfil-portal-shot__globe::after,
.gfil-portal-shot__globe i {
	content: "";
	position: absolute;
	inset: 12% 0;
	border: 1px solid currentColor;
	border-radius: 50%;
	opacity: .32;
}
.gfil-portal-shot__globe::after { inset: 0 27%; }
.gfil-portal-shot__globe i:nth-child(1) { inset: 27% 0; }
.gfil-portal-shot__globe i:nth-child(2) { inset: 0 42%; }
.gfil-portal-shot__globe i:nth-child(3) { display: none; }

.gfil-portal-shot__signal {
	position: absolute;
	left: 1rem;
	right: 1rem;
	bottom: .85rem;
	height: 2.5rem;
	display: flex;
	align-items: end;
	gap: .4rem;
}
.gfil-portal-shot__signal span { flex: 1; border-top: 1px solid currentColor; opacity: .25; }
.gfil-portal-shot__signal span:nth-child(2) { height: 45%; }
.gfil-portal-shot__signal span:nth-child(3) { height: 70%; }
.gfil-portal-shot__signal span:nth-child(4) { height: 58%; }
.gfil-portal-shot__signal span:nth-child(5) { height: 88%; }

.gfil-portal-shot__metrics {
	display: grid;
	grid-template-columns: repeat(3, minmax(0,1fr));
	border-top: 1px solid currentColor;
	margin-top: 1.1rem;
}
.gfil-portal-shot__metrics > div { padding: .8rem .7rem .1rem 0; }
.gfil-portal-shot__metrics > div + div { padding-left: .7rem; border-left: 1px solid currentColor; }
.gfil-portal-shot__metrics span,
.gfil-portal-shot__metrics strong { display: block; }
.gfil-portal-shot__metrics span { font-size: .55rem; letter-spacing: .13em; text-transform: uppercase; opacity: .55; }
.gfil-portal-shot__metrics strong { margin-top: .4rem; font-size: .72rem; letter-spacing: .12em; font-weight: 500; }

.gfil-portal-shot.is-retail {
	background: #0a0e12;
	color: #f4f1eb;
	border-color: #0a0e12;
}
.gfil-portal-shot.is-retail .gfil-portal-shot__chrome {
	background: #fff;
	color: #111;
}
.gfil-portal-shot.is-retail .gfil-portal-shot__nav {
	background: #fff;
	color: #111;
	border-color: #d6d0c7;
}
.gfil-portal-shot.is-studio {
	background: #f2ede5;
	color: #101010;
}
.gfil-portal-shot.is-studio .gfil-portal-shot__chrome {
	background: #080808;
	color: #f6f3ed;
}
.gfil-portal-shot.is-studio .gfil-portal-shot__nav {
	background: #080808;
	color: #f6f3ed;
	border-color: #2a2a2a;
}

.gfil-demo-page { overflow: clip; }
.gfil-demo-hero {
	padding-block: clamp(4rem, 9vw, 9rem) clamp(3rem, 7vw, 6rem);
	max-width: 110rem;
}
.gfil-demo-hero h1 {
	max-width: 13ch;
	font-family: var(--wp--preset--font-family--display, serif);
	font-size: clamp(4rem, 9vw, 10rem);
	font-weight: 400;
	line-height: .86;
	letter-spacing: -.055em;
	margin: .35rem 0 2rem;
}
.gfil-demo-hero > p:last-child {
	max-width: 54rem;
	font-size: clamp(1.1rem, 1.6vw, 1.45rem);
	line-height: 1.6;
}

.gfil-demo-benefits {
	display: grid;
	grid-template-columns: repeat(3,minmax(0,1fr));
	border-top: 1px solid #111;
	border-bottom: 1px solid #111;
}
.gfil-demo-benefits article { padding: clamp(1.5rem,3.5vw,3.2rem) clamp(1.2rem,2.5vw,2.5rem) clamp(2.25rem,4vw,4rem) 0; }
.gfil-demo-benefits article + article { border-left: 1px solid #111; padding-left: clamp(1.2rem,2.5vw,2.5rem); }
.gfil-demo-benefits h2 { font-size: clamp(1.35rem,2vw,2rem); font-weight: 500; margin: 0 0 .8rem; }
.gfil-demo-benefits p { line-height: 1.65; margin: 0; }

.gfil-demo-workspaces {
	background: #0a0e12;
	color: #f4f1eb;
	padding-block: clamp(4.5rem,8vw,8rem);
}
.gfil-demo-workspaces__head { margin-bottom: clamp(2rem,5vw,4.5rem); }
.gfil-demo-workspaces .gfil-portal-shot.is-studio { box-shadow: none; }
.gfil-demo-workspaces .gfil-portal-shot.is-retail { border-color: #353b40; box-shadow: none; }

.gfil-demo-formwrap {
	display: grid;
	grid-template-columns: minmax(15rem,.7fr) minmax(0,1.3fr);
	gap: clamp(2rem,7vw,8rem);
	padding-block: clamp(4.5rem,9vw,9rem);
	align-items: start;
}
.gfil-demo-formwrap > div:first-child { position: sticky; top: 2rem; }
.gfil-demo-formwrap > div:first-child > p:last-child { max-width: 34rem; line-height: 1.65; }

.gfgpc-demo-form { width: 100%; }
.gfgpc-demo-form__grid {
	display: grid;
	grid-template-columns: repeat(2,minmax(0,1fr));
	gap: 1.2rem 1.5rem;
}
.gfgpc-demo-form label { display: block; }
.gfgpc-demo-form label > span {
	display: block;
	font-size: .67rem;
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
	margin-bottom: .55rem;
}
.gfgpc-demo-form input,
.gfgpc-demo-form select,
.gfgpc-demo-form textarea {
	box-sizing: border-box;
	width: 100%;
	border: 1px solid #bbb4aa;
	border-radius: 0;
	background: #fff;
	color: #111;
	padding: .9rem 1rem;
	font: inherit;
	font-size: .95rem;
	line-height: 1.4;
}
.gfgpc-demo-form textarea { resize: vertical; min-height: 9rem; }
.gfgpc-demo-form input:focus,
.gfgpc-demo-form select:focus,
.gfgpc-demo-form textarea:focus { outline: 2px solid #b68a55; outline-offset: 2px; }
.gfgpc-demo-form .is-wide { grid-column: 1 / -1; }
.gfgpc-demo-form__submit {
	display: flex;
	align-items: center;
	gap: 1.25rem;
	margin-top: .35rem;
}
.gfgpc-demo-form__submit p { max-width: 34rem; margin: 0; font-size: .78rem; line-height: 1.45; color: #666; }
.gfgpc-demo-hp { position: absolute !important; left: -9999px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
.gfgpc-demo-errors,
.gfgpc-demo-success {
	border-top: 2px solid #111;
	border-bottom: 1px solid #bbb4aa;
	padding: 1.2rem 0;
	margin-bottom: 1.5rem;
}
.gfgpc-demo-errors ul { margin: .65rem 0 0; padding-left: 1.15rem; }
.gfgpc-demo-success h3 { font-family: var(--wp--preset--font-family--display, serif); font-size: clamp(2rem,4vw,4rem); font-weight: 400; line-height: 1; margin: .3rem 0 1rem; }

@media (max-width: 900px) {
	.gfil-portal-preview__head,
	.gfil-demo-formwrap { grid-template-columns: 1fr; }
	.gfil-portal-preview__head > div:last-child { justify-self: start; }
	.gfil-portal-preview__grid { grid-template-columns: 1fr; }
	.gfil-demo-benefits { grid-template-columns: 1fr; }
	.gfil-demo-benefits article + article { border-left: 0; border-top: 1px solid #111; padding-left: 0; }
	.gfil-demo-formwrap > div:first-child { position: static; }
}

@media (max-width: 640px) {
	.gfil-portal-preview,
	.gfil-demo-workspaces { padding-block: 3.5rem; }
	.gfil-portal-preview__head h2,
	.gfil-demo-workspaces__head h2,
	.gfil-demo-formwrap h2 { font-size: clamp(2.7rem,14vw,4.4rem); }
	.gfil-demo-hero h1 { font-size: clamp(3.55rem,17vw,6rem); }
	.gfil-portal-shot__intro { grid-template-columns: 1fr; }
	.gfil-portal-shot__intro > p:last-child { margin-top: .65rem; }
	.gfil-portal-shot__instrument { min-height: 14rem; }
	.gfil-portal-shot__metrics { grid-template-columns: 1fr; }
	.gfil-portal-shot__metrics > div + div { border-left: 0; border-top: 1px solid currentColor; padding-left: 0; }
	.gfil-portal-shot__metrics > div { padding: .75rem 0; }
	.gfgpc-demo-form__grid { grid-template-columns: 1fr; }
	.gfgpc-demo-form .is-wide { grid-column: auto; }
	.gfgpc-demo-form__submit { display: block; }
	.gfgpc-demo-form__submit p { margin-top: 1rem; }
}

/* Event intelligence — v3.3.8 -------------------------------------------- */
.gfil-events-intro {
	margin: 0 0 1.35rem;
	max-width: 72rem;
	padding: 1rem 1.15rem;
	border-left: 2px solid var(--gfil-accent, #b58a57);
	background: color-mix(in srgb, var(--gfil-paper, #f7f4ee) 88%, transparent);
}

.gfil-events-intro p {
	margin: 0;
	font-size: .82rem;
	line-height: 1.65;
	color: var(--gfil-slate);
}

.gfil-events__identity { min-width: 0; }

.gfil-events__tags {
	display: flex;
	align-items: center;
	gap: .45rem;
	flex-wrap: wrap;
	margin: 0 0 .7rem;
}

.gfil-events__state,
.gfil-events__type {
	display: inline-flex;
	align-items: center;
	min-height: 1.55rem;
	padding: .2rem .5rem;
	border: 1px solid var(--gfil-rule);
	font-family: var(--gfil-data);
	font-size: .58rem;
	letter-spacing: .105em;
	line-height: 1;
	text-transform: uppercase;
}

.gfil-events__item.is-upcoming .gfil-events__state {
	background: var(--gfil-ink);
	border-color: var(--gfil-ink);
	color: var(--gfil-paper);
}

.gfil-events__type { color: var(--gfil-slate); }

.gfil-events__venue {
	margin: .25rem 0 0;
	font-size: .8rem;
	line-height: 1.45;
	color: var(--gfil-slate);
}

.gfil-events__source {
	display: flex;
	align-items: center;
	gap: .55rem;
	flex-wrap: wrap;
	margin: .8rem 0 0;
	font-family: var(--gfil-data);
	font-size: .66rem;
	letter-spacing: .035em;
}

.gfil-events__source a {
	text-decoration-thickness: 1px;
	text-underline-offset: .22em;
}

.gfil-events__data {
	grid-template-columns: repeat(2, minmax(0, 1fr));
	row-gap: 1.25rem;
}

@media (min-width: 1440px) {
	.gfil-events__item {
		grid-template-columns: minmax(20rem, 1.15fr) minmax(0, 2fr);
		gap: clamp(2rem, 4vw, 5rem);
	}

	.gfil-events__data {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

@media (max-width: 760px) {
	.gfil-events__item {
		grid-template-columns: 1fr;
		gap: 1.35rem;
		padding: 1.35rem 0;
	}

	.gfil-events__data {
		grid-template-columns: 1fr 1fr;
		gap: 1rem .8rem;
	}

	.gfil-events__item h3 { font-size: 1.45rem; }
}

@media (max-width: 430px) {
	.gfil-events__data { grid-template-columns: 1fr; }
}

/* Event + Private Client legal notices — v3.3.9 -------------------------- */
.gfil-events__legal {
	margin-top: clamp(1.5rem, 3vw, 2.5rem);
}
.gfil-events__legal .gfil-notice--inline {
	margin-top: 0;
	padding-top: 1rem;
}
.gfil-events__legal .gfil-notice p {
	max-width: 92ch;
	font-size: clamp(.84rem, 1vw, .92rem);
	line-height: 1.6;
}

.gfil-desk__legal {
	margin-top: clamp(2.5rem, 5vw, 4.5rem);
}
.gfil-desk__legal .gfil-notice--inline {
	margin-top: 0;
	background: transparent;
	border: 0;
	border-top: 1px solid var(--gfil-rule);
	padding: 1rem 0 0;
}
.gfil-desk__legal .gfil-notice--inline p {
	max-width: 92ch;
}
.gfil-desk--retail .gfil-desk__legal .gfil-notice--inline {
	background: transparent;
	border-color: #3A4652;
}
.gfil-desk--studio .gfil-desk__legal .gfil-notice--inline {
	background: transparent;
	border-color: #C8C1B8;
}

/* ========================================================================
   v3.4.0 — Luxury editorial media system
   Curated Pexels imagery with documented source provenance.
   ======================================================================== */

.gfil-luxhero.has-image .gfil-luxhero__media img {
	filter: saturate(.68) contrast(1.08) brightness(.84);
	transform: scale(1.002);
}

.gfil-luxhero.has-image .gfil-luxhero__veil {
	background:
		linear-gradient(90deg, rgba(3,3,3,.88) 0%, rgba(3,3,3,.68) 38%, rgba(3,3,3,.26) 68%, rgba(3,3,3,.08) 100%),
		linear-gradient(0deg, rgba(3,3,3,.78) 0%, rgba(3,3,3,.08) 66%);
}

.gfil-fashion-film {
	background: #070707;
	color: #f5f1ea;
	padding-block: clamp(4rem, 8vw, 8rem);
	border-block: 1px solid #202020;
}

.gfil-fashion-film__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.55fr) minmax(18rem, .65fr);
	gap: clamp(2rem, 6vw, 7rem);
	align-items: center;
}

.gfil-fashion-film__media {
	position: relative;
	min-width: 0;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	background: #111;
	border: 1px solid #282828;
}

.gfil-fashion-film__media video {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: grayscale(1) contrast(1.1) brightness(.82);
	background: #111;
}

.gfil-fashion-film__media::after {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	background: linear-gradient(180deg, rgba(0,0,0,.05), rgba(0,0,0,.26));
	transition: opacity .3s ease;
}

.gfil-fashion-film__media.is-playing::after { opacity: 0; }

.gfil-fashion-film__play {
	position: absolute;
	left: clamp(1rem, 3vw, 2.25rem);
	bottom: clamp(1rem, 3vw, 2.25rem);
	z-index: 2;
	display: inline-flex;
	align-items: center;
	gap: .75rem;
	padding: .8rem 1rem;
	border: 1px solid rgba(255,255,255,.62);
	border-radius: 0;
	background: rgba(5,5,5,.62);
	backdrop-filter: blur(8px);
	color: #fff;
	font-family: var(--gfil-ui);
	font-size: .66rem;
	font-weight: 600;
	letter-spacing: .16em;
	text-transform: uppercase;
	cursor: pointer;
}

.gfil-fashion-film__play:hover,
.gfil-fashion-film__play:focus-visible {
	background: #f5f1ea;
	color: #080808;
	outline: none;
}

.gfil-fashion-film__playmark {
	width: 0;
	height: 0;
	border-top: .3rem solid transparent;
	border-bottom: .3rem solid transparent;
	border-left: .45rem solid currentColor;
}

.gfil-fashion-film__media.is-playing .gfil-fashion-film__play { opacity: 0; pointer-events: none; }

.gfil-fashion-film__copy .gfil-lux-kicker { color: #c9a77f; }
.gfil-fashion-film__copy h2 {
	font-family: var(--gfil-display);
	font-size: clamp(2.7rem, 5vw, 5.4rem);
	font-weight: 500;
	line-height: .94;
	letter-spacing: -.05em;
	margin: .75rem 0 1.5rem;
	color: #f5f1ea;
}
.gfil-fashion-film__copy > p:not(.gfil-lux-kicker):not(.gfil-fashion-film__credit) {
	font-size: .96rem;
	line-height: 1.72;
	color: #aaa39a;
	max-width: 45ch;
}
.gfil-fashion-film__copy .gfil-lux-textlink { color: #f5f1ea; }
.gfil-fashion-film__credit {
	margin-top: 2.5rem;
	font-size: .62rem;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: #77716a;
}
.gfil-fashion-film__credit a { color: inherit; text-decoration: none; }
.gfil-fashion-film__credit a:hover { color: #c9a77f; }

.gfil-fashion-edit {
	display: grid;
	grid-template-columns: .85fr 1.3fr .85fr;
	gap: clamp(.65rem, 1.25vw, 1.25rem);
	padding-block: clamp(3.5rem, 7vw, 7rem);
}
.gfil-fashion-edit__item {
	display: block;
	color: inherit;
	text-decoration: none;
	min-width: 0;
}
.gfil-fashion-edit__item figure {
	position: relative;
	margin: 0;
	aspect-ratio: 4 / 5;
	overflow: hidden;
	background: #111;
}
.gfil-fashion-edit__item:nth-child(2) figure { aspect-ratio: 5 / 6; }
.gfil-fashion-edit__item img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: saturate(.78) contrast(1.02);
	transition: transform .7s cubic-bezier(.2,.7,.2,1), filter .45s ease;
}
.gfil-fashion-edit__item:nth-child(1) img { object-position: 50% 40%; }
.gfil-fashion-edit__item:nth-child(2) img { object-position: center; }
.gfil-fashion-edit__item:nth-child(3) img { object-position: 50% 45%; }
.gfil-fashion-edit__item figure::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 48%, rgba(0,0,0,.7) 100%);
}
.gfil-fashion-edit__item figcaption {
	position: absolute;
	z-index: 2;
	left: clamp(1rem, 2.4vw, 2rem);
	right: clamp(1rem, 2.4vw, 2rem);
	bottom: clamp(1rem, 2.4vw, 2rem);
	color: #fff;
}
.gfil-fashion-edit__item figcaption span,
.gfil-fashion-edit__item figcaption strong { display: block; }
.gfil-fashion-edit__item figcaption span {
	font-family: var(--gfil-ui);
	font-size: .58rem;
	font-weight: 600;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: #d5bb9a;
}
.gfil-fashion-edit__item figcaption strong {
	max-width: 12ch;
	margin-top: .55rem;
	font-family: var(--gfil-display);
	font-size: clamp(1.7rem, 3vw, 3.6rem);
	font-weight: 500;
	line-height: .95;
	letter-spacing: -.035em;
}
.gfil-fashion-edit__item:hover img { transform: scale(1.025); filter: saturate(.9) contrast(1.04); }

.gfil-lensvisual {
	padding-top: clamp(2rem, 4vw, 4rem);
	padding-bottom: clamp(2rem, 5vw, 5rem);
}
.gfil-lensvisual figure {
	position: relative;
	margin: 0;
	aspect-ratio: 21 / 8;
	overflow: hidden;
	background: #111;
}
.gfil-lensvisual img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: saturate(.72) contrast(1.02);
}
.gfil-lensvisual figcaption {
	position: absolute;
	right: .9rem;
	bottom: .75rem;
	padding: .3rem .45rem;
	background: rgba(0,0,0,.52);
	color: rgba(255,255,255,.76);
	font-family: var(--gfil-ui);
	font-size: .52rem;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.gfil-plate-img:not(.is-empty) {
	background: #111;
}
.gfil-plate-img:not(.is-empty) img {
	filter: saturate(.76) contrast(1.025);
}

@media (max-width: 900px) {
	.gfil-fashion-film__grid { grid-template-columns: 1fr; }
	.gfil-fashion-film__copy { max-width: 42rem; }
	.gfil-fashion-edit { grid-template-columns: 1fr 1fr; }
	.gfil-fashion-edit__item:nth-child(2) { grid-row: span 2; }
	.gfil-fashion-edit__item figure,
	.gfil-fashion-edit__item:nth-child(2) figure { aspect-ratio: 4 / 5; }
	.gfil-lensvisual figure { aspect-ratio: 16 / 8; }
}

@media (max-width: 640px) {
	.gfil-luxhero.has-image .gfil-luxhero__media img { object-position: 58% center; }
	.gfil-fashion-film { padding-block: 3.25rem; }
	.gfil-fashion-film__grid { gap: 2.5rem; }
	.gfil-fashion-film__copy h2 { font-size: clamp(2.65rem, 14vw, 4.4rem); }
	.gfil-fashion-edit {
		grid-template-columns: 1fr;
		padding-block: 2.75rem;
	}
	.gfil-fashion-edit__item:nth-child(2) { grid-row: auto; }
	.gfil-fashion-edit__item figure,
	.gfil-fashion-edit__item:nth-child(2) figure { aspect-ratio: 4 / 5; }
	.gfil-fashion-edit__item figcaption strong { font-size: clamp(2rem, 10vw, 3.25rem); }
	.gfil-lensvisual { padding-inline: 0; padding-top: 0; }
	.gfil-lensvisual figure { aspect-ratio: 4 / 3; }
	.gfil-lensvisual figcaption { right: .55rem; bottom: .5rem; }
}

@media (prefers-reduced-motion: reduce) {
	.gfil-fashion-edit__item img { transition: none; }
}

/* v3.4.4 — Global Fashion Group supplied masthead wordmark ---------------- */
.gfil-wordmark {
	position: relative;
	gap: .42rem;
}

.gfil-wordmark__art {
	position: relative;
	display: block;
	width: clamp(8rem, 10.5vw, 10.75rem);
	line-height: 0;
}

.gfil-wordmark__image {
	display: block;
	width: 100%;
	height: auto;
	object-fit: contain;
	mix-blend-mode: multiply;
}

.gfil-wordmark__tm {
	position: absolute;
	right: -.72rem;
	bottom: .2rem;
	font-family: var(--gfil-ui);
	font-size: .46rem;
	font-weight: 600;
	line-height: 1;
	letter-spacing: .04em;
	color: var(--gfil-ink);
}

.gfil-wordmark__name {
	font-size: clamp(.46rem, .66vw, .58rem);
	letter-spacing: .28em;
	line-height: 1.25;
	padding-left: .28em;
}

.gfil-masthead.is-compact .gfil-wordmark__art {
	width: 6.4rem;
}

.gfil-masthead.is-compact .gfil-wordmark__tm {
	right: -.58rem;
	bottom: .12rem;
	font-size: .38rem;
}

@media (max-width: 900px) {
	.gfil-wordmark__art { width: 8.25rem; }
	.gfil-wordmark__tm { right: -.62rem; font-size: .4rem; }
}

@media (max-width: 680px) {
	.gfil-masthead__brand .gfil-shell { padding-block: .72rem; }
	.gfil-wordmark { gap: .3rem; }
	.gfil-wordmark__art { width: 7rem; }
	.gfil-wordmark__tm { right: -.52rem; bottom: .1rem; font-size: .34rem; }
	.gfil-wordmark__name { font-size: .42rem; letter-spacing: .24em; }
}

/* ========================================================================
   v3.4.5 — Market & Capital light-first appearance
   Light is the product default. Clients may switch to the existing dark
   analytical register from a persistent secondary tab in the workspace nav.
   ======================================================================== */

/* Navigation layout: links remain horizontally scrollable while appearance
   controls stay visible at the right edge of the workspace bar. */
.gfil-desknav .gfil-shell {
	display: flex;
	align-items: center;
	gap: clamp(.8rem, 1.6vw, 1.4rem);
}
.gfil-desknav ul {
	flex: 1 1 auto;
	min-width: 0;
}

.gfil-appearance {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	gap: .18rem;
	padding-left: clamp(.6rem, 1.4vw, 1.1rem);
	border-left: 1px solid #D8D8D5;
	white-space: nowrap;
}
.gfil-appearance__label {
	font-family: var(--gfil-data);
	font-size: .54rem;
	font-weight: 500;
	letter-spacing: .13em;
	text-transform: uppercase;
	color: #8A8D90;
	margin-right: .2rem;
}
.gfil-appearance__tab {
	appearance: none;
	border: 1px solid transparent;
	background: transparent;
	color: #777B80;
	font-family: var(--gfil-ui);
	font-size: .58rem;
	font-weight: 600;
	letter-spacing: .1em;
	line-height: 1;
	text-transform: uppercase;
	padding: .55rem .65rem;
	cursor: pointer;
	transition: background .18s ease, color .18s ease, border-color .18s ease;
}
.gfil-appearance__tab:hover,
.gfil-appearance__tab:focus-visible {
	color: #111317;
	border-color: #C8C8C4;
	outline: none;
}
.gfil-appearance__tab.is-active,
.gfil-appearance__tab[aria-pressed="true"] {
	background: #111317;
	border-color: #111317;
	color: #FFFFFF;
}

/* Default / no-JS state: light. The early head bootstrap only adds the dark
   attribute when an explicit dark preference is stored. */
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail {
	background: #F5F5F2;
	color: #26292D;
	color-scheme: light;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__bar {
	background: #FFFFFF;
	border-bottom-color: #D8D8D4;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__title,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__user {
	color: #111317;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__role,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__org,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__out {
	color: #696D72;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__out {
	border-bottom-color: #B9B9B5;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__out:hover,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__out:focus-visible {
	color: #9A7049;
	border-bottom-color: #9A7049;
}

/* The Market & Capital nav remains white in both modes by design. */
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desknav,
html[data-gfil-retail-theme="dark"] .gfil-desk--retail .gfil-desknav {
	background: rgba(255,255,255,.985);
	border-bottom-color: #D8D8D5;
	box-shadow: 0 1px 0 rgba(0,0,0,.04);
	color-scheme: light;
}

html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body {
	--gfil-paper: #FFFFFF;
	--gfil-shell: #F5F5F2;
	--gfil-linen: #EEEDE8;
	--gfil-rule: #D7D6D1;
	--gfil-rule-strong: #AAA9A3;
	--gfil-slate: #656A70;
	--gfil-graphite: #2E3237;
	--gfil-ink: #111317;
	color: #2E3237;
}

html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-desk__lede,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body h2,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body h3,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body h4,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body strong,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-view__q,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-signalcard__value,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-forwardcard__value,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-forwardcard h3,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-decisionlab__result h3 {
	color: #111317;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body p,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body li,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body dt,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body dd,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-view__a,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-view__cannot,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-indicator__detail,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-signalcard p,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-decisionlab__note {
	color: #656A70;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-view__cannot strong,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-indicator__label,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-decisionlab dt,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-decisionlab dd {
	color: #2E3237;
}

html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-module {
	border-top-color: #CFCFC9;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-module__head h2 { color: #111317; }
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-module__head p { color: #656A70; }

html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-kpis {
	background: transparent;
	border-color: #D7D6D1;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-kpi {
	background: #FFFFFF;
	border-color: #D7D6D1;
	border-right-color: #D7D6D1;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-kpi__label,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-kpi__note { color: #656A70; }
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-kpi__value { color: #111317; }

html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-table th,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-table td {
	border-bottom-color: #DDDCD7;
	color: #2E3237;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-table thead th {
	background: #EFEEE9;
	color: #5F646A;
	border-bottom-color: #C9C8C2;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-table tbody tr:hover { background: #F0EEE8; }
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-tablewrap { border-top-color: #C9C8C2; }
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-table caption { color: #656A70; }

html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-chip {
	border-color: #C9C8C2;
	color: #656A70;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-chip__mark {
	background: #EEEDE8;
	color: #2E3237;
	box-shadow: none;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-cite {
	color: #656A70;
	border-bottom-color: #C9C8C2;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-notice {
	background: #FFFFFF;
	border-color: #D7D6D1;
	border-left-color: var(--desk-accent);
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-notice p { color: #656A70; }
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-index,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-dispersion,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-indicators { border-top-color: #C9C8C2; }
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-dispersion__item,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-indicator { border-color: #D7D6D1; }
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-index__threshold {
	background: #FFFFFF;
	border-left-color: #C9C8C2;
	color: #656A70;
}

html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-view,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-views,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-indicator,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-dispersion__item,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-signalcard,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-forwardgrid,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-forwardcard,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-decisionlab {
	border-color: #D7D6D1;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-forwardcard,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-decisionlab,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-city,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-card,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body .gfil-signalcard {
	background: #FFFFFF;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body a:not(.gfil-btn):not(.gfil-watch__btn):not(.gfil-panel__link) {
	color: #805B39;
	text-decoration-color: rgba(128,91,57,.45);
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body a:not(.gfil-btn):not(.gfil-watch__btn):not(.gfil-panel__link):hover,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body a:not(.gfil-btn):not(.gfil-watch__btn):not(.gfil-panel__link):focus-visible {
	color: #5C3E25;
	text-decoration-color: currentColor;
}

html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-watch__btn {
	border-color: #AAA9A3;
	color: #656A70;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-watch__btn:hover {
	border-color: var(--desk-accent);
	color: #111317;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-watch__btn.is-on {
	color: #111317;
}

html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body input,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body select,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body textarea {
	background: #FFFFFF;
	color: #111317;
	border-color: #AAA9A3;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body input::placeholder,
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__body textarea::placeholder {
	color: #777B80;
	opacity: 1;
}

/* The globe remains a dark analytical instrument in light mode, giving the
   spatial model a strong focal plane while the research pages stay light. */
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-instrument--portal {
	border-color: #D7D6D1;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-instrument--portal .gfil-plate {
	background: #07111C;
}
html:not([data-gfil-retail-theme="dark"]) .gfil-desk--retail .gfil-desk__legal .gfil-notice--inline {
	border-color: #D7D6D1;
}

/* Dark remains the secondary tab and intentionally restores the original
   Market & Capital analytical palette. */
html[data-gfil-retail-theme="dark"] .gfil-desk--retail {
	color-scheme: dark;
}
html[data-gfil-retail-theme="dark"] .gfil-appearance__tab[data-gfil-theme="dark"] {
	background: #111317;
	border-color: #111317;
	color: #FFFFFF;
}
html[data-gfil-retail-theme="dark"] .gfil-appearance__tab[data-gfil-theme="light"] {
	background: transparent;
	border-color: transparent;
	color: #777B80;
}

/* Homepage/demo preview now mirrors the light-first Market & Capital product. */
.gfil-portal-shot.is-retail {
	background: #F5F5F2;
	color: #111317;
	border-color: #D7D6D1;
}
.gfil-portal-shot.is-retail .gfil-portal-shot__chrome,
.gfil-portal-shot.is-retail .gfil-portal-shot__nav {
	background: #FFFFFF;
	color: #111317;
}
.gfil-portal-shot.is-retail .gfil-portal-shot__nav { border-color: #D7D6D1; }

@media (max-width: 980px) {
	.gfil-desknav .gfil-shell { gap: .55rem; }
	.gfil-appearance { padding-left: .55rem; }
	.gfil-appearance__label { display: none; }
	.gfil-appearance__tab { padding: .5rem .52rem; font-size: .54rem; }
}

@media (max-width: 620px) {
	.gfil-desknav .gfil-shell { padding-inline: .75rem; }
	.gfil-appearance { gap: .1rem; }
	.gfil-appearance__tab { padding: .5rem .46rem; letter-spacing: .07em; }
}


/* ========================================================================
   v3.4.6 — Global Fashion Intelligence & Research positioning
   Keep the supplied stacked wordmark unchanged while allowing the longer
   institutional position statement to remain elegant and readable.
   ======================================================================== */
.gfil-wordmark__name {
	font-size: clamp(.42rem, .60vw, .54rem);
	letter-spacing: .18em;
	line-height: 1.35;
	padding-left: .18em;
	width: max-content;
	max-width: min(72vw, 24rem);
	text-wrap: balance;
}
@media (max-width: 680px) {
	.gfil-wordmark__name {
		font-size: .37rem;
		letter-spacing: .14em;
		line-height: 1.45;
		max-width: 78vw;
	}
}

/* ========================================================================== 
   RESEARCH TYPOGRAPHY SAFETY (v3.4.8)
   Research titles and evidence metrics are deliberately restrained so long
   report names and multi-character values remain inside their editorial grid.
   ========================================================================== */

/* Research CPT owns its title inside the brief. The dedicated single template
   removes the generic WordPress title/excerpt duplicate and keeps one canonical
   editorial heading per research page. */
.gfil-main--research {
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
	overflow-x: clip;
}

.gfil-brief {
	box-sizing: border-box;
	width: min(100%, 1240px);
}

.gfil-brief > header {
	width: min(100%, 54rem);
	max-width: 54rem;
	margin-bottom: clamp(2rem, 4vw, 3rem);
}

.gfil-brief > header h2 {
	font-size: clamp(2.7rem, 5.2vw, 5.25rem);
	line-height: .98;
	letter-spacing: -.045em;
	max-width: 12ch;
	margin: .7rem 0 1.4rem;
	text-wrap: balance;
	overflow-wrap: normal;
	word-break: normal;
}

.gfil-brief > header > p:last-child {
	max-width: 66ch;
	font-size: clamp(.98rem, 1.35vw, 1.12rem);
	line-height: 1.65;
}

/* Evidence cards: prevent values such as €365–373bn or +10–15% from crossing
   column boundaries while preserving the high-fashion display treatment. */
.gfil-brief .gfil-signalgrid {
	grid-template-columns: repeat(4, minmax(0, 1fr));
}

.gfil-brief .gfil-signalcard {
	min-width: 0;
	padding: clamp(1.25rem, 2.35vw, 2.25rem);
	min-height: 22rem;
	overflow: hidden;
}

.gfil-brief .gfil-signalcard__value {
	max-width: 100%;
	font-size: clamp(2.25rem, 3.35vw, 3.9rem);
	line-height: .94;
	letter-spacing: -.055em;
	margin: 1.15rem 0 1rem;
	white-space: normal;
	overflow-wrap: anywhere;
	word-break: normal;
	font-variant-numeric: lining-nums tabular-nums;
}

.gfil-brief .gfil-signalcard h3 {
	font-size: clamp(.93rem, 1.05vw, 1.04rem);
	line-height: 1.22;
	max-width: 19ch;
	overflow-wrap: anywhere;
}

.gfil-brief .gfil-signalcard > p:not(.gfil-lux-kicker):not(.gfil-signalcard__value) {
	font-size: clamp(.86rem, .95vw, .98rem);
	line-height: 1.5;
	overflow-wrap: anywhere;
}

.gfil-brief .gfil-lux-kicker {
	max-width: 100%;
	line-height: 1.45;
	overflow-wrap: anywhere;
}

@media (max-width: 1100px) {
	.gfil-brief .gfil-signalgrid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	.gfil-brief .gfil-signalcard__value {
		font-size: clamp(2.5rem, 6vw, 4rem);
	}
}

@media (max-width: 720px) {
	.gfil-brief {
		padding: clamp(2.25rem, 8vw, 4rem) var(--gfil-gutter);
	}
	.gfil-brief > header h2 {
		font-size: clamp(2.45rem, 13vw, 4rem);
		line-height: 1;
		max-width: 10.5ch;
	}
	.gfil-brief .gfil-signalgrid {
		grid-template-columns: 1fr;
	}
	.gfil-brief .gfil-signalcard {
		min-height: 0;
		padding: 1.6rem 1.25rem 1.9rem;
	}
	.gfil-brief .gfil-signalcard__value {
		font-size: clamp(2.7rem, 15vw, 4.5rem);
		max-width: 9ch;
	}
}
