/*
 * White Lotus Crafts
 * Editorial layout system. The rhythm is deliberately uneven: wide bleeds next
 * to narrow reading columns, uneven grids, offset images, oversized numerals.
 */

/* ---------------------------------------------------------------------------
   Tokens
   ------------------------------------------------------------------------ */

:root {
	/* Gold, from the mark. Two stops plus a foil gradient for display type. */
	--wl-gold: #c9a227;
	--wl-gold-deep: #866c11;
	--wl-gold-soft: #e8d9a8;
	--wl-gold-wash: #f6efdc;
	--wl-gold-lift: #e6c455;
	--wl-foil: linear-gradient(96deg, #8f7213 0%, #c9a227 22%, #f0dc9a 42%, #c9a227 60%, #9c7c16 78%, #d9b437 100%);

	/* Iron mud black, the ground of a Naga shawl. */
	--wl-ink: #171310;
	--wl-ink-soft: #48413a;
	--wl-ink-faint: #7c7468;

	/* Undyed eri silk, the cream every Northeast loom starts from. */
	--wl-paper: #faf6ec;
	--wl-sand: #f0e7d6;
	--wl-line: #e2d7c2;
	--wl-eri: #efe7d6;

	/* The dye pots of the region, at the strength the cloth actually carries.
	   A Mizo puanchei is not a muted textile: it is white and black with
	   brilliant red, green and yellow. A Naga shawl is black with a hard red
	   band. Toning these down into a tasteful cream is exactly how a craft
	   site ends up looking like an accountancy firm, so they are kept loud. */
	--wl-lac: #d3341c;
	--wl-lac-deep: #a2200d;
	--wl-lac-lift: #ef5a3c;
	--wl-rum: #1c46a0;
	--wl-rum-lift: #2e63cf;
	--wl-rum-deep: #10254f;
	--wl-turmeric: #f4b70b;
	--wl-turmeric-deep: #c98f00;
	--wl-bamboo: #217a4b;
	--wl-bamboo-deep: #175c37;
	--wl-rose: #cf3a6e;

	/* Added from the reference photographs. The turquoise is the blue that runs
	   through Majuli mask painting, Monpa monastery murals and the glass beads
	   in a Naga necklace, where it is nearly always set against coral red. The
	   ochre is the orange of a Bodo border. The cane is the colour of split
	   bamboo before it is dyed at all. */
	--wl-turquoise: #1b9aaa;
	--wl-turquoise-deep: #14757f;
	--wl-turquoise-lift: #35bccc;
	--wl-ochre: #d9741f;
	--wl-ochre-deep: #a8560f;
	--wl-cane: #c9a97a;
	--wl-cane-soft: #e2cfae;
	--wl-valley: #4f9a3d;

	/* Kept as the names the rest of the stylesheet already uses. Grounds that
	   carry light text point at the deep stops. */
	--wl-indigo: var(--wl-rum-deep);
	--wl-indigo-lift: var(--wl-rum);
	--wl-indigo-deep: #0a1836;
	--wl-madder: var(--wl-lac);

	--wl-serif: Fraunces, "Iowan Old Style", "Palatino Linotype", Georgia, serif;
	--wl-sans: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	--wl-quote: "Cormorant Garamond", Georgia, serif;

	--wl-max: 1180px;
	--wl-narrow: 720px;
	--wl-gutter: clamp(1.25rem, 4vw, 4rem);

	--wl-radius: 2px;
	--wl-shadow: 0 24px 60px -32px rgba(23, 21, 15, .35);
	--wl-shadow-sm: 0 10px 30px -20px rgba(23, 21, 15, .5);

	--wl-step: clamp(3.5rem, 8vw, 7.5rem);
	--wl-step-sm: clamp(2.25rem, 5vw, 4rem);
	--wl-step-lg: clamp(5rem, 12vw, 11rem);
}

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

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

html { scroll-behavior: smooth; }

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

body {
	margin: 0;
	background: var(--wl-paper);
	color: var(--wl-ink);
	font-family: var(--wl-sans);
	font-size: 1.0625rem;
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
}

/* Woven linen ground. Warp and weft at slightly different weights and periods,
   so it reads as cloth rather than as graph paper. */
body::before {
	content: "";
	position: fixed;
	inset: 0;
	pointer-events: none;
	z-index: 0;
	opacity: .55;
	background-image:
		repeating-linear-gradient(90deg, rgba(143, 114, 19, .045) 0 1px, transparent 1px 4px),
		repeating-linear-gradient(0deg, rgba(143, 114, 19, .028) 0 1px, transparent 1px 5px),
		repeating-linear-gradient(90deg, rgba(23, 21, 15, .022) 0 1px, transparent 1px 17px);
}

.wlc-main { position: relative; z-index: 1; }

img, svg, video { max-width: 100%; height: auto; display: block; }

a { color: var(--wl-gold-deep); text-underline-offset: .18em; text-decoration-thickness: 1px; }
a:hover { color: var(--wl-ink); }

h1, h2, h3, h4 {
	font-family: var(--wl-serif);
	font-weight: 500;
	line-height: 1.1;
	margin: 0 0 .5em;
	letter-spacing: -.012em;
}

p { margin: 0 0 1.15em; }
p:last-child { margin-bottom: 0; }

ul, ol { margin: 0 0 1.15em; padding-left: 1.2em; }

hr { border: 0; border-top: 1px solid var(--wl-line); margin: var(--wl-step) 0; }

::selection { background: var(--wl-gold-soft); color: var(--wl-ink); }

:focus-visible {
	outline: 2px solid var(--wl-gold-deep);
	outline-offset: 3px;
	border-radius: 2px;
}

.screen-reader-text {
	border: 0;
	clip-path: inset(50%);
	height: 1px;
	overflow: hidden;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

.wlc-skip {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 999;
	background: var(--wl-ink);
	color: var(--wl-paper);
	padding: .8rem 1.2rem;
}
.wlc-skip:focus { left: .5rem; top: .5rem; }

/* ---------------------------------------------------------------------------
   Shared type
   ------------------------------------------------------------------------ */

.wlc-h1 { font-size: clamp(2.4rem, 1.4rem + 3.6vw, 4.2rem); }
.wlc-h2 { font-size: clamp(1.85rem, 1.2rem + 2.1vw, 3rem); margin-bottom: .45em; }

.wlc-kicker {
	font-family: var(--wl-sans);
	font-size: .74rem;
	font-weight: 600;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--wl-gold-deep);
	margin: 0 0 1rem;
	display: flex;
	align-items: center;
	gap: .7rem;
}
.wlc-kicker::before {
	content: "";
	width: 2rem;
	height: 1px;
	background: currentColor;
	flex: none;
}
.wlc-kicker a { color: inherit; text-decoration: none; }

.wlc-lede {
	font-size: clamp(1.1rem, 1rem + .5vw, 1.4rem);
	line-height: 1.55;
	color: var(--wl-ink-soft);
}

.wlc-prose { font-size: 1.0625rem; }
.wlc-prose > :first-child { margin-top: 0; }
.wlc-prose h2 { font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2.1rem); margin-top: 2em; }
.wlc-prose h3 { font-size: 1.35rem; margin-top: 1.8em; }
.wlc-prose ul, .wlc-prose ol { padding-left: 1.35em; }
.wlc-prose li { margin-bottom: .4em; }
.wlc-prose blockquote {
	margin: 2rem 0;
	padding: .2rem 0 .2rem 1.5rem;
	border-left: 2px solid var(--wl-gold);
	font-family: var(--wl-quote);
	font-size: 1.4rem;
	line-height: 1.4;
	color: var(--wl-ink-soft);
}
.wlc-prose img { margin: 2rem 0; }
.wlc-prose figcaption {
	font-size: .82rem;
	color: var(--wl-ink-faint);
	margin-top: .6rem;
	font-style: italic;
}

.wlc-prose--dropcap > p:first-of-type::first-letter {
	font-family: var(--wl-serif);
	float: left;
	font-size: 4.2em;
	line-height: .78;
	padding: .06em .1em 0 0;
	color: var(--wl-gold-deep);
	font-weight: 400;
}

.wlc-arrow-link {
	display: inline-flex;
	align-items: center;
	gap: .55rem;
	font-family: var(--wl-sans);
	font-size: .82rem;
	font-weight: 600;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--wl-ink);
	text-decoration: none;
	border-bottom: 1px solid var(--wl-gold);
	padding-bottom: .3rem;
	transition: gap .18s ease, color .18s ease;
}
.wlc-arrow-link::after { content: "\2192"; font-size: 1.05em; line-height: 1; }
.wlc-arrow-link:hover { gap: .95rem; color: var(--wl-gold-deep); }

.wlc-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .6rem;
	font-family: var(--wl-sans);
	font-size: .82rem;
	font-weight: 600;
	letter-spacing: .09em;
	text-transform: uppercase;
	padding: .95rem 1.7rem;
	border: 1px solid transparent;
	border-radius: var(--wl-radius);
	text-decoration: none;
	cursor: pointer;
	transition: background .18s ease, color .18s ease, border-color .18s ease, transform .18s ease;
}
.wlc-btn--lg { padding: 1.15rem 2.2rem; font-size: .86rem; }

.wlc-btn--gold { background: var(--wl-gold); color: #221c05; border-color: var(--wl-gold); }
.wlc-btn--gold:hover { background: var(--wl-gold-deep); border-color: var(--wl-gold-deep); color: #fff; transform: translateY(-1px); }

.wlc-btn--ink { background: var(--wl-ink); color: var(--wl-paper); border-color: var(--wl-ink); }
.wlc-btn--ink:hover { background: transparent; color: var(--wl-ink); transform: translateY(-1px); }

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

.wlc-motif { width: 100%; height: 100%; display: block; }

.wlc-rule { color: var(--wl-gold); height: 12px; margin: var(--wl-step-sm) 0; }
.wlc-rule svg { width: 100%; height: 12px; }

/* ---------------------------------------------------------------------------
   Header
   ------------------------------------------------------------------------ */

.wlc-announce {
	background: var(--wl-indigo);
	color: #eae4d6;
	font-size: .82rem;
	letter-spacing: .02em;
}
.wlc-announce__inner {
	max-width: var(--wl-max);
	margin: 0 auto;
	padding: .55rem var(--wl-gutter);
	text-align: center;
}
.wlc-announce a { color: var(--wl-gold-soft); }

.wlc-header {
	position: sticky;
	top: 0;
	z-index: 60;
	background: rgba(251, 248, 242, .92);
	backdrop-filter: saturate(160%) blur(10px);
	border-bottom: 1px solid var(--wl-line);
	transition: box-shadow .2s ease;
}
.wlc-header.is-stuck { box-shadow: 0 10px 30px -24px rgba(23, 21, 15, .55); }

.wlc-header__inner {
	max-width: var(--wl-max);
	margin: 0 auto;
	padding: .7rem var(--wl-gutter);
	display: flex;
	align-items: center;
	gap: clamp(1rem, 3vw, 2.5rem);
}

.wlc-brand { flex: none; text-decoration: none; display: block; }
/* The supplied mark is a square stacked lockup, mark over wordmark over
   tagline, so it needs roughly half again the height a horizontal lockup would
   to stay legible. Stepped rather than fluid, so the header bar lands on a
   known height at every breakpoint. If a horizontal lockup is supplied later,
   52px flat is plenty and the two overrides below can go. */
.wlc-brand__logo {
	width: auto;
	height: 52px;
	object-fit: contain;
}

@media (min-width: 768px) {
	.wlc-brand__logo { height: 62px; }
}

@media (min-width: 1200px) {
	.wlc-brand__logo { height: 72px; }
}

.wlc-header__actions {
	margin-left: auto;
	display: flex;
	align-items: center;
	gap: 1rem;
}

.wlc-nav { margin-left: auto; }

.wlc-nav__list {
	display: flex;
	align-items: center;
	gap: clamp(.9rem, 1.9vw, 2rem);
	list-style: none;
	margin: 0;
	padding: 0;
}

.wlc-nav__item { position: relative; }

.wlc-nav__link {
	display: inline-block;
	font-size: .89rem;
	font-weight: 500;
	letter-spacing: .015em;
	color: var(--wl-ink);
	text-decoration: none;
	padding: .55rem 0;
	position: relative;
}
.wlc-nav__link span { position: relative; }
.wlc-nav__link span::after {
	content: "";
	position: absolute;
	left: 0;
	right: 100%;
	bottom: -.28rem;
	height: 1px;
	background: var(--wl-gold);
	transition: right .24s ease;
}
.wlc-nav__link:hover span::after,
.current-menu-item > .wlc-nav__link span::after,
.current-menu-ancestor > .wlc-nav__link span::after { right: 0; }

.wlc-nav__toggle {
	display: none;
	background: none;
	border: 0;
	color: inherit;
	padding: .4rem;
	cursor: pointer;
}
.wlc-nav__toggle svg { width: 10px; height: 6px; }

.wlc-nav__item--parent > .wlc-nav__link { padding-right: 1rem; }
.wlc-nav__item--parent > .wlc-nav__link::after {
	content: "";
	position: absolute;
	right: 0;
	top: 50%;
	width: 5px;
	height: 5px;
	border-right: 1.4px solid currentColor;
	border-bottom: 1.4px solid currentColor;
	transform: translateY(-70%) rotate(45deg);
	opacity: .55;
}

.wlc-nav__sub {
	position: absolute;
	top: calc(100% + .5rem);
	left: -1.2rem;
	min-width: 20rem;
	background: var(--wl-paper);
	border: 1px solid var(--wl-line);
	box-shadow: var(--wl-shadow);
	list-style: none;
	margin: 0;
	padding: .7rem 0;
	opacity: 0;
	visibility: hidden;
	transform: translateY(-6px);
	transition: opacity .18s ease, transform .18s ease, visibility .18s;
	z-index: 20;
	max-height: 70vh;
	overflow-y: auto;
}
.wlc-nav__item--parent:hover > .wlc-nav__sub,
.wlc-nav__item--parent:focus-within > .wlc-nav__sub,
.wlc-nav__item--parent.is-open > .wlc-nav__sub {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}
.wlc-nav__sub .wlc-nav__link {
	display: block;
	padding: .5rem 1.4rem;
	font-size: .87rem;
}
.wlc-nav__sub .wlc-nav__link:hover { background: var(--wl-sand); }
.wlc-nav__sub .wlc-nav__link span::after { display: none; }

.wlc-nav__foot { display: none; }

.wlc-burger {
	display: none;
	align-items: center;
	gap: .6rem;
	background: none;
	border: 0;
	cursor: pointer;
	font-family: var(--wl-sans);
	font-size: .74rem;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--wl-ink);
	padding: .5rem 0;
}
.wlc-burger__bars { display: block; width: 22px; }
.wlc-burger__bars i {
	display: block;
	height: 1.5px;
	background: currentColor;
	margin: 5px 0;
	transition: transform .22s ease, opacity .22s ease;
}
.wlc-burger[aria-expanded="true"] .wlc-burger__bars i:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
.wlc-burger[aria-expanded="true"] .wlc-burger__bars i:nth-child(2) { opacity: 0; }
.wlc-burger[aria-expanded="true"] .wlc-burger__bars i:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

@media (max-width: 1023px) {
	.wlc-header__cta { display: none; }
	.wlc-burger { display: inline-flex; }

	.wlc-nav {
		position: fixed;
		inset: 0;
		top: var(--wl-header-h, 76px);
		background: var(--wl-paper);
		padding: 1.5rem var(--wl-gutter) 4rem;
		overflow-y: auto;
		transform: translateY(-8px);
		opacity: 0;
		visibility: hidden;
		transition: opacity .22s ease, transform .22s ease, visibility .22s;
		z-index: 55;
	}
	body.wlc-nav-open .wlc-nav { opacity: 1; visibility: visible; transform: none; }
	body.wlc-nav-open { overflow: hidden; }

	.wlc-nav__list { flex-direction: column; align-items: stretch; gap: 0; }
	.wlc-nav__item { border-bottom: 1px solid var(--wl-line); }
	.wlc-nav__link {
		font-family: var(--wl-serif);
		font-size: 1.5rem;
		padding: .85rem 0;
	}
	.wlc-nav__item--parent > .wlc-nav__link::after { display: none; }

	.wlc-nav__toggle {
		display: block;
		position: absolute;
		right: 0;
		top: .9rem;
		transition: transform .2s ease;
	}
	.wlc-nav__toggle svg { width: 14px; height: 9px; }
	.wlc-nav__item.is-open > .wlc-nav__toggle { transform: rotate(180deg); }

	.wlc-nav__sub {
		position: static;
		border: 0;
		box-shadow: none;
		background: none;
		min-width: 0;
		padding: 0 0 .8rem .9rem;
		display: none;
		opacity: 1;
		visibility: visible;
		transform: none;
		max-height: none;
	}
	.wlc-nav__item.is-open > .wlc-nav__sub { display: block; }
	.wlc-nav__sub .wlc-nav__link { font-family: var(--wl-sans); font-size: .95rem; padding: .4rem 0; }
	.wlc-nav__sub .wlc-nav__link:hover { background: none; color: var(--wl-gold-deep); }

	.wlc-nav__foot { display: block; margin-top: 2rem; }
	.wlc-nav__foot .wlc-btn { width: 100%; }
}

/* ---------------------------------------------------------------------------
   Section scaffolding
   ------------------------------------------------------------------------ */

.wlc-section { padding: var(--wl-step) 0; }
.wlc-section--sand { background: var(--wl-sand); }

.wlc-section__inner,
.wlc-opening__inner,
.wlc-pillars__inner,
.wlc-process__inner,
.wlc-region-teaser__inner,
.wlc-wordband__inner,
.wlc-partners__inner,
.wlc-impact__inner,
.wlc-insights__inner,
.wlc-cta__inner,
.wlc-list__inner,
.wlc-faq__inner,
.wlc-hub__inner,
.wlc-crafts__inner,
.wlc-projects__inner,
.wlc-related__inner,
.wlc-archive__inner,
.wlc-team__inner,
.wlc-lotus__inner,
.wlc-beliefs__inner,
.wlc-vision__inner,
.wlc-groups__inner,
.wlc-model__inner,
.wlc-partner-list__inner,
.wlc-contact__inner,
.wlc-gallery__inner,
.wlc-craft-facts__inner,
.wlc-outcome__inner,
.wlc-filters__inner,
.wlc-404__inner,
.wlc-profile__inner,
.wlc-hero__inner,
.wlc-home-hero__inner,
.wlc-quote__inner {
	max-width: var(--wl-max);
	margin: 0 auto;
	padding-left: var(--wl-gutter);
	padding-right: var(--wl-gutter);
}

.wlc-section__inner--narrow { max-width: var(--wl-narrow); }

/* ---------------------------------------------------------------------------
   Figures
   ------------------------------------------------------------------------ */

.wlc-figure { margin: 0; }
.wlc-figure__img {
	width: 100%;
	height: auto;
	display: block;
	border-radius: var(--wl-radius);
}
.wlc-figure__caption {
	font-size: .8rem;
	line-height: 1.45;
	color: var(--wl-ink-faint);
	margin-top: .75rem;
	max-width: 34ch;
	font-style: italic;
}

/* An arch mask, a quiet nod to the petal shape in the mark. */
.wlc-figure--arch .wlc-figure__img {
	border-radius: 50vw 50vw var(--wl-radius) var(--wl-radius);
}

.wlc-figure--bleed .wlc-figure__img { border-radius: 0; }

/* ---------------------------------------------------------------------------
   Homepage hero, uneven split with the photograph running off the right edge
   ------------------------------------------------------------------------ */

.wlc-home-hero {
	position: relative;
	padding: clamp(3.5rem, 8vw, 7.5rem) 0 clamp(3.5rem, 7vw, 6rem);
	overflow: hidden;
	isolation: isolate;
}
.wlc-home-hero::after {
	content: "";
	position: absolute;
	inset: auto 0 0 0;
	height: 1px;
	background: var(--wl-line);
}

/* The woven ground. Sits behind everything, fades out towards the reading
   column so the type never fights the cloth. */
.wlc-home-hero__weave {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	z-index: -2;
	pointer-events: none;
	/* Full strength cloth on the right, falling away sharply under the reading
	   column so the headline never has to fight the weave. */
	-webkit-mask-image: radial-gradient(88% 82% at 84% 46%, #000 14%, rgba(0, 0, 0, .78) 40%, rgba(0, 0, 0, .16) 66%, transparent 80%);
	mask-image: radial-gradient(88% 82% at 84% 46%, #000 14%, rgba(0, 0, 0, .78) 40%, rgba(0, 0, 0, .16) 66%, transparent 80%);
}

/* A soft cream scrim keeps the type crisp where the cloth runs behind it. */
.wlc-home-hero--noimg::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
	background: linear-gradient(100deg,
		var(--wl-paper) 0%,
		var(--wl-paper) 26%,
		rgba(250, 246, 236, .8) 42%,
		rgba(250, 246, 236, 0) 62%);
}

.wlc-home-hero__eyebrow {
	display: flex;
	align-items: center;
	gap: .85rem;
	font-size: .7rem;
	font-weight: 600;
	letter-spacing: .22em;
	text-transform: uppercase;
	color: var(--wl-gold-deep);
	margin: 0 0 1.8rem;
}
.wlc-home-hero__eyebrow .wlc-motif { width: 15px; height: 15px; flex: none; opacity: .85; }

.wlc-home-hero__inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: clamp(2.5rem, 5vw, 4rem);
	align-items: center;
}

@media (min-width: 900px) {
	.wlc-home-hero__inner {
		grid-template-columns: 1.05fr 1fr;
		padding-right: 0;
	}
	.wlc-home-hero__media { margin-right: calc(var(--wl-gutter) * -1); }
}

/* Foil gold on the one line that carries the brand. Falls back to deep gold
   wherever background-clip: text is unsupported. */
.wlc-home-hero__title {
	font-size: clamp(2.8rem, 1.2rem + 5.8vw, 5.8rem);
	line-height: .96;
	letter-spacing: -.026em;
	margin-bottom: .4em;
	max-width: 14ch;
	color: var(--wl-gold-deep);
}

@supports (-webkit-background-clip: text) or (background-clip: text) {
	.wlc-home-hero__title {
		background: var(--wl-foil);
		background-size: 220% 100%;
		-webkit-background-clip: text;
		background-clip: text;
		color: transparent;
		animation: wlc-sheen 9s ease-in-out infinite;
	}
}

@keyframes wlc-sheen {
	0%, 100% { background-position: 0% 50%; }
	50%      { background-position: 100% 50%; }
}

@media (prefers-reduced-motion: reduce) {
	.wlc-home-hero__title { animation: none; }
}

.wlc-home-hero__intro {
	font-size: clamp(1.05rem, .98rem + .45vw, 1.3rem);
	line-height: 1.55;
	color: var(--wl-ink-soft);
	max-width: 48ch;
	margin-bottom: 2.2rem;
}

.wlc-home-hero__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1.6rem 2rem;
}

.wlc-home-hero__media { position: relative; }
.wlc-home-hero__figure { margin: 0; }
.wlc-home-hero__img {
	width: 100%;
	aspect-ratio: 4 / 3.2;
	object-fit: cover;
	border-radius: 50vw 0 0 50vw;
}
.wlc-home-hero__caption {
	font-size: .78rem;
	color: var(--wl-ink-faint);
	font-style: italic;
	margin-top: .8rem;
	padding-right: var(--wl-gutter);
}

.wlc-home-hero__inset {
	position: absolute;
	left: -2.5rem;
	bottom: 2.5rem;
	width: clamp(110px, 15vw, 190px);
	border: 6px solid var(--wl-paper);
	box-shadow: var(--wl-shadow-sm);
	border-radius: var(--wl-radius);
	overflow: hidden;
}
.wlc-home-hero__inset img { aspect-ratio: 1; object-fit: cover; }

@media (max-width: 899px) {
	.wlc-home-hero__img { border-radius: var(--wl-radius); aspect-ratio: 4 / 3; }
	.wlc-home-hero__inset { left: auto; right: 1rem; bottom: -1.5rem; }
}

.wlc-home-hero__mark {
	opacity: .12;
	max-width: 460px;
	margin-left: auto;
}

.wlc-home-hero--noimg .wlc-home-hero__title { max-width: 18ch; }

/* ---------------------------------------------------------------------------
   Inner page heroes
   ------------------------------------------------------------------------ */

.wlc-hero { position: relative; }

.wlc-hero--plain,
.wlc-hero--editorial { padding: clamp(2.5rem, 5vw, 4.5rem) 0 clamp(2rem, 4vw, 3.5rem); }

.wlc-hero__inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: clamp(2rem, 4vw, 3.5rem);
	align-items: end;
}

@media (min-width: 900px) {
	.wlc-hero--editorial .wlc-hero__inner { grid-template-columns: 1.15fr .85fr; }
	.wlc-hero--editorial .wlc-hero__media { transform: translateY(clamp(1rem, 3vw, 3rem)); }
}

.wlc-hero__title {
	font-size: clamp(2.3rem, 1.3rem + 3.9vw, 4.4rem);
	line-height: 1.02;
	letter-spacing: -.02em;
	max-width: 17ch;
	margin-bottom: .35em;
}

.wlc-hero__intro {
	font-size: clamp(1.05rem, .98rem + .4vw, 1.3rem);
	line-height: 1.55;
	color: var(--wl-ink-soft);
	max-width: 52ch;
	margin: 0;
}

/* Immersive, full bleed photograph with the heading laid over its lower left. */
.wlc-hero--immersive {
	min-height: clamp(420px, 62vh, 680px);
	display: flex;
	align-items: flex-end;
	padding: clamp(3rem, 8vw, 7rem) 0 clamp(2rem, 4vw, 3.5rem);
	color: #fff;
}
.wlc-hero--immersive .wlc-hero__bleed {
	position: absolute;
	inset: 0;
	overflow: hidden;
	background: var(--wl-indigo-deep);
}
.wlc-hero--immersive .wlc-hero__img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.wlc-hero--immersive .wlc-hero__bleed::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, rgba(15, 13, 8, .82) 0%, rgba(15, 13, 8, .38) 45%, rgba(15, 13, 8, .1) 100%);
}
.wlc-hero--immersive .wlc-hero__inner { position: relative; z-index: 2; width: 100%; }
.wlc-hero--immersive .wlc-hero__title { color: #fff; max-width: 14ch; }
.wlc-hero--immersive .wlc-hero__intro { color: rgba(255, 255, 255, .86); }
.wlc-hero--immersive .wlc-kicker { color: var(--wl-gold-soft); }
.wlc-hero--immersive .wlc-crumbs,
.wlc-hero--immersive .wlc-crumbs a { color: rgba(255, 255, 255, .72); }
.wlc-hero__caption {
	position: relative;
	z-index: 2;
	max-width: var(--wl-max);
	margin: .9rem auto 0;
	padding: 0 var(--wl-gutter);
	font-size: .78rem;
	font-style: italic;
	color: var(--wl-ink-faint);
}

.wlc-crumbs { margin: 0 0 1.4rem; font-size: .78rem; color: var(--wl-ink-faint); }
.wlc-crumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.wlc-crumbs li::after { content: "/"; margin-left: .5rem; opacity: .5; }
.wlc-crumbs li:last-child::after { display: none; }
.wlc-crumbs a { color: inherit; text-decoration: none; }
.wlc-crumbs a:hover { color: var(--wl-gold-deep); }

/* ---------------------------------------------------------------------------
   Opening, a deliberately narrow reading column after a wide hero
   ------------------------------------------------------------------------ */

.wlc-opening { padding: var(--wl-step) 0; }
.wlc-opening--tight { padding: var(--wl-step-sm) 0; }

.wlc-opening__inner { max-width: 800px; }

.wlc-opening__heading {
	font-size: clamp(1.9rem, 1.3rem + 2.2vw, 3.1rem);
	line-height: 1.08;
	max-width: 18ch;
	margin-bottom: 1.1em;
}
.wlc-opening__heading::after {
	content: "";
	display: block;
	width: 3.5rem;
	height: 2px;
	background: var(--wl-gold);
	margin-top: .7em;
}

/* ---------------------------------------------------------------------------
   Pull quote on a coloured field, offset rather than centred
   ------------------------------------------------------------------------ */

.wlc-quote { padding: var(--wl-step-sm) 0; }
.wlc-quote--sand { background: var(--wl-sand); }
.wlc-quote--gold { background: var(--wl-gold-wash); }
.wlc-quote--indigo { background: var(--wl-indigo); color: #f3eee2; }

.wlc-quote__inner {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: clamp(1rem, 3vw, 2.5rem);
	align-items: start;
	padding-top: clamp(2rem, 5vw, 4rem);
	padding-bottom: clamp(2rem, 5vw, 4rem);
}

.wlc-quote__mark {
	font-family: var(--wl-quote);
	font-size: clamp(4rem, 9vw, 8rem);
	line-height: .7;
	color: var(--wl-gold);
	opacity: .7;
}
.wlc-quote--indigo .wlc-quote__mark { color: var(--wl-gold-soft); }

.wlc-quote blockquote { margin: 0; }
.wlc-quote blockquote p {
	font-family: var(--wl-quote);
	font-size: clamp(1.6rem, 1.1rem + 2.5vw, 3.2rem);
	line-height: 1.16;
	font-weight: 500;
	max-width: 22ch;
	margin: 0;
	letter-spacing: -.01em;
}
.wlc-quote cite {
	display: block;
	margin-top: 1.2rem;
	font-family: var(--wl-sans);
	font-size: .8rem;
	font-style: normal;
	letter-spacing: .12em;
	text-transform: uppercase;
	opacity: .7;
}

/* ---------------------------------------------------------------------------
   Pillars, an uneven grid rather than four identical cards
   ------------------------------------------------------------------------ */

.wlc-pillars { padding: var(--wl-step) 0; }
.wlc-pillars__head { margin-bottom: clamp(2rem, 4vw, 3.5rem); max-width: 34ch; }

.wlc-pillars__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr));
	gap: 1px;
	background: var(--wl-line);
	border-top: 1px solid var(--wl-line);
	border-bottom: 1px solid var(--wl-line);
}

/* Each pillar is a fabric swatch card: a real weave structure sits behind the
   text, faint at rest and lifting on hover. */
.wlc-pillar {
	position: relative;
	background: var(--wl-paper);
	padding: clamp(1.75rem, 3vw, 2.6rem) clamp(1.4rem, 2.4vw, 2rem) clamp(2.4rem, 4vw, 3.2rem);
	text-decoration: none;
	color: inherit;
	display: block;
	transition: background .25s ease;
	overflow: hidden;
	isolation: isolate;
}
a.wlc-pillar:hover { background: var(--wl-gold-wash); }

.wlc-swatch {
	position: absolute;
	inset: 0;
	z-index: -1;
	display: block;
	color: var(--wl-gold-deep);
	opacity: .07;
	transition: opacity .35s ease, transform .6s cubic-bezier(.2, .7, .3, 1);
	transform: scale(1);
	-webkit-mask-image: linear-gradient(200deg, #000 0%, rgba(0, 0, 0, .35) 55%, transparent 88%);
	mask-image: linear-gradient(200deg, #000 0%, rgba(0, 0, 0, .35) 55%, transparent 88%);
}
a.wlc-pillar:hover .wlc-swatch,
a.wlc-pillar:focus-visible .wlc-swatch {
	opacity: .17;
	transform: scale(1.06);
}

/* A different dye note per pillar, so the four read as a set of samples. */
.wlc-pillar--plain   .wlc-swatch { color: var(--wl-gold-deep); }
.wlc-pillar--twill   .wlc-swatch { color: var(--wl-indigo-lift); }
.wlc-pillar--basket  .wlc-swatch { color: var(--wl-madder); }
.wlc-pillar--diamond .wlc-swatch { color: var(--wl-eri); }

.wlc-pillar--twill   .wlc-pillar__icon { color: var(--wl-indigo-lift); }
.wlc-pillar--basket  .wlc-pillar__icon { color: var(--wl-madder); }
.wlc-pillar--diamond .wlc-pillar__icon { color: var(--wl-eri); }

@media (prefers-reduced-motion: reduce) {
	.wlc-swatch { transition: opacity .2s ease; }
	a.wlc-pillar:hover .wlc-swatch { transform: none; }
}

/* The first card runs taller, so the row is never a flat set of four boxes. */
@media (min-width: 900px) {
	.wlc-pillar:nth-child(odd) { padding-top: clamp(2.6rem, 4.4vw, 4rem); }
}

.wlc-pillar__icon {
	display: block;
	width: 42px;
	height: 42px;
	color: var(--wl-gold-deep);
	margin-bottom: 1.6rem;
}
.wlc-pillar__media { margin: -1rem -1rem 1.5rem; }
.wlc-pillar__media img { aspect-ratio: 4 / 3; object-fit: cover; width: 100%; }

.wlc-pillar__num {
	position: absolute;
	top: 1.2rem;
	right: 1.2rem;
	font-family: var(--wl-serif);
	font-size: 2.6rem;
	line-height: 1;
	color: var(--wl-gold);
	opacity: .22;
}

.wlc-pillar__title { font-size: 1.4rem; margin-bottom: .5rem; }
.wlc-pillar__text { font-size: .93rem; color: var(--wl-ink-soft); margin: 0; }

a.wlc-pillar::after {
	content: "\2192";
	position: absolute;
	left: clamp(1.4rem, 2.4vw, 2rem);
	bottom: 1.2rem;
	color: var(--wl-gold-deep);
	opacity: 0;
	transform: translateX(-6px);
	transition: opacity .2s ease, transform .2s ease;
}
a.wlc-pillar:hover::after { opacity: 1; transform: none; }

/* ---------------------------------------------------------------------------
   Process, a dark band with oversized numerals
   ------------------------------------------------------------------------ */

/* The dark band. Warp threads run down it, so the eight stages read as work
   passing along a loom rather than as eight boxes. */
.wlc-process {
	background: var(--wl-indigo);
	color: #ece6d9;
	padding: var(--wl-step) 0;
	position: relative;
	overflow: hidden;
}
.wlc-process::before {
	content: "";
	position: absolute;
	inset: 0;
	opacity: .5;
	background-image:
		repeating-linear-gradient(90deg, rgba(232, 217, 168, .09) 0 1px, transparent 1px 9px),
		repeating-linear-gradient(90deg, rgba(201, 162, 39, .16) 0 1px, transparent 1px 76px);
}
.wlc-process::after {
	content: "";
	position: absolute;
	inset: auto 0 0 0;
	height: 3px;
	background: var(--wl-foil);
	opacity: .55;
}

.wlc-process__inner { position: relative; }

.wlc-process__head {
	display: grid;
	gap: 1rem;
	margin-bottom: clamp(2rem, 4vw, 3.2rem);
}
@media (min-width: 900px) {
	.wlc-process__head { grid-template-columns: .9fr 1.1fr; align-items: end; }
}
.wlc-process__head .wlc-h2 { color: #fff; margin: 0; }
.wlc-process__note { color: rgba(236, 230, 217, .78); margin: 0; max-width: 52ch; }

.wlc-process__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr));
	gap: 1px;
	background: rgba(232, 217, 168, .18);
}

.wlc-process__step {
	background: var(--wl-indigo);
	padding: 2.3rem 1.3rem 2rem;
	position: relative;
	transition: background .25s ease;
}
.wlc-process__step:hover { background: var(--wl-indigo-lift); }

/* The heddle mark each stage hangs from. */
.wlc-process__step::before {
	content: "";
	position: absolute;
	top: 0;
	left: 1.3rem;
	width: 26px;
	height: 3px;
	background: var(--wl-gold);
	opacity: .8;
}

.wlc-process__num {
	display: block;
	font-family: var(--wl-serif);
	font-size: 1.05rem;
	color: var(--wl-gold-soft);
	letter-spacing: .1em;
	margin-bottom: .9rem;
}
.wlc-process__title { font-size: 1.18rem; color: #fff; margin-bottom: .45rem; }
.wlc-process__text { font-size: .87rem; color: rgba(236, 230, 217, .72); margin: 0; }

.wlc-process__link { margin: clamp(2rem, 4vw, 3rem) 0 0; }
.wlc-process .wlc-arrow-link { color: #fff; border-color: var(--wl-gold-soft); }
.wlc-process .wlc-arrow-link:hover { color: var(--wl-gold-soft); }

/* ---------------------------------------------------------------------------
   Region teaser, 58/42 with the photograph bleeding off the right edge
   ------------------------------------------------------------------------ */

.wlc-region-teaser { padding: var(--wl-step) 0; overflow: hidden; }

.wlc-region-teaser__inner {
	display: grid;
	gap: clamp(2rem, 4vw, 3.5rem);
	align-items: center;
}
@media (min-width: 900px) {
	.wlc-region-teaser__inner { grid-template-columns: .82fr 1.18fr; }
	.wlc-region-teaser__media { margin-right: calc(var(--wl-gutter) * -1 - 4vw); }
	.wlc-region-teaser__media .wlc-figure__img { aspect-ratio: 16 / 10; object-fit: cover; }
}

.wlc-region-teaser__body { color: var(--wl-ink-soft); max-width: 46ch; }

/* ---------------------------------------------------------------------------
   Word band
   ------------------------------------------------------------------------ */

.wlc-wordband {
	padding: var(--wl-step-sm) 0;
	background: var(--wl-sand);
	border-top: 1px solid var(--wl-line);
	border-bottom: 1px solid var(--wl-line);
}
.wlc-wordband__words {
	font-family: var(--wl-serif);
	font-size: clamp(1.15rem, .95rem + 1.1vw, 1.9rem);
	line-height: 1.5;
	color: var(--wl-ink-soft);
	margin: 0;
	max-width: 62ch;
}
.wlc-wordband__word { white-space: nowrap; }
.wlc-wordband__dot { color: var(--wl-gold); margin: 0 .55em; }

/* ---------------------------------------------------------------------------
   Partners
   ------------------------------------------------------------------------ */

.wlc-partners { padding: var(--wl-step) 0; text-align: center; }
.wlc-partners__heading { margin-bottom: clamp(1.6rem, 3vw, 2.6rem); }

.wlc-partners__logos {
	list-style: none;
	margin: 0 0 2rem;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: clamp(2rem, 6vw, 5rem);
}
.wlc-partners__logo img {
	max-height: 74px;
	width: auto;
	filter: grayscale(1);
	opacity: .68;
	transition: filter .2s ease, opacity .2s ease;
}
.wlc-partners__logo a:hover img { filter: none; opacity: 1; }
.wlc-partners__name {
	font-family: var(--wl-serif);
	font-size: 1.4rem;
	color: var(--wl-ink-soft);
	letter-spacing: .04em;
}

.wlc-partners__caption {
	max-width: 68ch;
	margin: 0 auto;
	font-size: .95rem;
	color: var(--wl-ink-soft);
}
.wlc-partners__link { margin-top: 1.8rem; }

/* ---------------------------------------------------------------------------
   Impact band
   ------------------------------------------------------------------------ */

.wlc-impact {
	background: var(--wl-gold-wash);
	padding: var(--wl-step) 0;
	border-top: 1px solid var(--wl-gold-soft);
	border-bottom: 1px solid var(--wl-gold-soft);
}
.wlc-impact__heading { margin-bottom: clamp(1.6rem, 3vw, 2.6rem); }

.wlc-impact__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr));
	gap: clamp(1.6rem, 3vw, 2.6rem);
}
.wlc-impact__item { border-top: 2px solid var(--wl-gold); padding-top: 1.1rem; }
.wlc-impact__value {
	display: block;
	font-family: var(--wl-serif);
	font-size: clamp(2.4rem, 1.6rem + 2.6vw, 4rem);
	line-height: 1;
	color: var(--wl-ink);
	letter-spacing: -.02em;
}
.wlc-impact__label {
	display: block;
	margin-top: .6rem;
	font-size: .92rem;
	font-weight: 600;
}
.wlc-impact__note { display: block; font-size: .8rem; color: var(--wl-ink-faint); }

/* ---------------------------------------------------------------------------
   Numbered lists, replacing bullet grids
   ------------------------------------------------------------------------ */

.wlc-list { padding: var(--wl-step) 0; }
.wlc-list__heading { max-width: 22ch; }
.wlc-list__intro { max-width: 60ch; color: var(--wl-ink-soft); margin-bottom: 2rem; }

.wlc-list__items {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(var(--wlc-cols, 2), minmax(0, 1fr));
	gap: 0 clamp(2rem, 5vw, 4.5rem);
}
@media (max-width: 719px) {
	.wlc-list__items { grid-template-columns: minmax(0, 1fr); }
}

.wlc-list__item {
	display: grid;
	grid-template-columns: 2.9rem minmax(0, 1fr);
	gap: .8rem;
	align-items: baseline;
	padding: .85rem 0;
	border-bottom: 1px solid var(--wl-line);
	margin: 0;
}
.wlc-list__num {
	font-family: var(--wl-serif);
	font-size: .92rem;
	color: var(--wl-gold-deep);
	letter-spacing: .05em;
}
.wlc-list__label { font-size: 1rem; }

.wlc-list--plain .wlc-list__num { opacity: 0; }
.wlc-list--plain .wlc-list__item { grid-template-columns: 1.4rem minmax(0, 1fr); }
.wlc-list--plain .wlc-list__num::before {
	content: "";
	display: block;
	width: 7px;
	height: 7px;
	background: var(--wl-gold);
	transform: rotate(45deg);
	opacity: 1;
}
.wlc-list--plain .wlc-list__num { opacity: 1; font-size: 0; }

.wlc-list--outcomes .wlc-list__label { font-family: var(--wl-serif); font-size: 1.12rem; }

/* ---------------------------------------------------------------------------
   Feature rows, alternating and uneven
   ------------------------------------------------------------------------ */

.wlc-feature { padding: var(--wl-step-sm) 0; }

.wlc-feature__inner {
	max-width: var(--wl-max);
	margin: 0 auto;
	padding: 0 var(--wl-gutter);
	display: grid;
	gap: clamp(1.8rem, 4vw, 3.5rem);
	align-items: center;
}

@media (min-width: 900px) {
	.wlc-feature--left .wlc-feature__inner { grid-template-columns: 1.1fr .9fr; }
	.wlc-feature--right .wlc-feature__inner { grid-template-columns: .9fr 1.1fr; }
	.wlc-feature--right .wlc-feature__text { order: 2; }
	.wlc-feature--right .wlc-feature__media { order: 1; }

	.wlc-feature--noimg .wlc-feature__inner { grid-template-columns: minmax(0, 760px); }
	.wlc-feature--noimg.wlc-feature--right .wlc-feature__inner { justify-content: end; }
}

.wlc-feature__num {
	display: block;
	font-family: var(--wl-serif);
	font-size: .95rem;
	letter-spacing: .16em;
	color: var(--wl-gold-deep);
	margin-bottom: .9rem;
}
.wlc-feature__text .wlc-h2 { max-width: 20ch; }
.wlc-feature__text .wlc-prose { max-width: 58ch; color: var(--wl-ink-soft); }

.wlc-feature__media .wlc-figure__img { aspect-ratio: 4 / 3; object-fit: cover; }

/* ---------------------------------------------------------------------------
   Insights and cards
   ------------------------------------------------------------------------ */

.wlc-insights { padding: var(--wl-step) 0; }

.wlc-insights__head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: clamp(1.8rem, 3vw, 2.8rem);
	padding-bottom: 1rem;
	border-bottom: 1px solid var(--wl-line);
}
.wlc-insights__head .wlc-h2 { margin: 0; }

.wlc-insights__grid,
.wlc-archive__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 290px), 1fr));
	gap: clamp(1.8rem, 3vw, 2.8rem);
}

.wlc-post-card { margin: 0; }
.wlc-post-card__link { text-decoration: none; color: inherit; display: block; }
.wlc-post-card__media { overflow: hidden; margin-bottom: 1.1rem; }
.wlc-post-card__media img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	transition: transform .5s ease;
}
.wlc-post-card__link:hover .wlc-post-card__media img { transform: scale(1.035); }

.wlc-post-card__title {
	font-size: 1.35rem;
	line-height: 1.2;
	margin-bottom: .5rem;
}
.wlc-post-card__link:hover .wlc-post-card__title { color: var(--wl-gold-deep); }
.wlc-post-card__text { font-size: .92rem; color: var(--wl-ink-soft); margin: 0; }

.wlc-post-card--wide { grid-column: 1 / -1; }
@media (min-width: 900px) {
	.wlc-post-card--wide .wlc-post-card__link {
		display: grid;
		grid-template-columns: 1.25fr 1fr;
		gap: clamp(1.6rem, 3vw, 3rem);
		align-items: center;
	}
	.wlc-post-card--wide .wlc-post-card__media { margin-bottom: 0; }
	.wlc-post-card--wide .wlc-post-card__media img { aspect-ratio: 16 / 10; }
	.wlc-post-card--wide .wlc-post-card__title { font-size: clamp(1.6rem, 1.2rem + 1.2vw, 2.4rem); }
	.wlc-post-card--wide .wlc-post-card__text { font-size: 1.02rem; }
}

.wlc-meta {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem 1rem;
	font-size: .74rem;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--wl-ink-faint);
	margin-bottom: .8rem;
}
.wlc-meta__cat { color: var(--wl-gold-deep); font-weight: 600; text-decoration: none; }

/* ---------------------------------------------------------------------------
   Service cards
   ------------------------------------------------------------------------ */

.wlc-hub__pillar { padding: var(--wl-step-sm) 0; }
.wlc-hub__pillar:nth-child(even) { background: var(--wl-sand); }

.wlc-hub__head {
	display: grid;
	gap: .4rem 1.6rem;
	margin-bottom: clamp(1.6rem, 3vw, 2.6rem);
	grid-template-columns: auto minmax(0, 1fr);
	align-items: baseline;
}
.wlc-hub__num {
	font-family: var(--wl-serif);
	font-size: clamp(1.6rem, 1.2rem + 1.4vw, 2.6rem);
	color: var(--wl-gold);
	line-height: 1;
}
.wlc-hub__title { font-size: clamp(1.7rem, 1.2rem + 1.8vw, 2.6rem); margin: 0; }
.wlc-hub__title a { color: inherit; text-decoration: none; }
.wlc-hub__title a:hover { color: var(--wl-gold-deep); }
.wlc-hub__note {
	grid-column: 2;
	margin: .3rem 0 0;
	color: var(--wl-ink-soft);
	max-width: 58ch;
}

.wlc-hub__grid,
.wlc-related__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), 1fr));
	gap: 1px;
	background: var(--wl-line);
	border: 1px solid var(--wl-line);
}

.wlc-service-card {
	position: relative;
	background: var(--wl-paper);
	padding: 1.8rem 1.5rem 2.6rem;
	text-decoration: none;
	color: inherit;
	display: flex;
	flex-direction: column;
	transition: background .2s ease;
}
.wlc-hub__pillar:nth-child(even) .wlc-service-card { background: #fbf7ee; }
.wlc-service-card:hover { background: var(--wl-gold-wash); }

.wlc-service-card__num {
	position: absolute;
	top: 1.1rem;
	right: 1.2rem;
	font-family: var(--wl-serif);
	font-size: 1.9rem;
	line-height: 1;
	color: var(--wl-gold);
	opacity: .28;
}
.wlc-service-card__icon {
	display: block;
	width: 34px;
	height: 34px;
	color: var(--wl-gold-deep);
	margin-bottom: 1.2rem;
}
.wlc-service-card__title { font-size: 1.22rem; line-height: 1.22; margin-bottom: .5rem; max-width: 20ch; }
.wlc-service-card__text { font-size: .9rem; color: var(--wl-ink-soft); margin: 0 0 1.2rem; }
.wlc-service-card__more {
	margin-top: auto;
	font-size: .74rem;
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--wl-gold-deep);
	display: inline-flex;
	align-items: center;
	gap: .45rem;
}
.wlc-service-card__more::after { content: "\2192"; transition: transform .2s ease; }
.wlc-service-card:hover .wlc-service-card__more::after { transform: translateX(4px); }

.wlc-related { padding: var(--wl-step) 0; }

/* ---------------------------------------------------------------------------
   Outcome strip
   ------------------------------------------------------------------------ */

.wlc-outcome { padding: var(--wl-step-sm) 0; }
.wlc-outcome__inner { max-width: 900px; }
.wlc-outcome__text {
	font-family: var(--wl-serif);
	font-size: clamp(1.4rem, 1.1rem + 1.6vw, 2.3rem);
	line-height: 1.24;
	margin: 0;
	max-width: 26ch;
}

/* ---------------------------------------------------------------------------
   Craft and project cards
   ------------------------------------------------------------------------ */

.wlc-crafts, .wlc-projects { padding: var(--wl-step) 0; }

.wlc-crafts__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
	gap: clamp(1.5rem, 2.6vw, 2.4rem);
}

.wlc-craft-card { text-decoration: none; color: inherit; display: block; }
.wlc-craft-card__media { overflow: hidden; margin-bottom: .9rem; background: var(--wl-sand); }
.wlc-craft-card__media img { width: 100%; aspect-ratio: 1; object-fit: cover; transition: transform .5s ease; }
.wlc-craft-card:hover .wlc-craft-card__media img { transform: scale(1.04); }
.wlc-craft-card__placeholder {
	display: grid;
	place-items: center;
	aspect-ratio: 1;
	color: var(--wl-gold);
	opacity: .5;
	padding: 28%;
}
.wlc-craft-card__title { font-size: 1.18rem; margin-bottom: .25rem; }
.wlc-craft-card__region {
	font-size: .74rem;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--wl-gold-deep);
	margin-bottom: .5rem;
}
.wlc-craft-card__text { font-size: .88rem; color: var(--wl-ink-soft); margin: 0; }

.wlc-projects__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
	gap: clamp(1.6rem, 3vw, 2.6rem);
}
.wlc-project-card { text-decoration: none; color: inherit; display: block; }
.wlc-project-card__media { overflow: hidden; margin-bottom: 1rem; }
.wlc-project-card__media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.wlc-project-card__title { font-size: 1.3rem; margin-bottom: .35rem; }
.wlc-project-card__meta {
	font-size: .74rem;
	letter-spacing: .09em;
	text-transform: uppercase;
	color: var(--wl-ink-faint);
	margin-bottom: .6rem;
}
.wlc-project-card__text { font-size: .9rem; color: var(--wl-ink-soft); margin: 0; }

/* ---------------------------------------------------------------------------
   Facts table
   ------------------------------------------------------------------------ */

.wlc-craft-facts { padding: var(--wl-step-sm) 0; border-bottom: 1px solid var(--wl-line); }

.wlc-facts {
	margin: 0;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 190px), 1fr));
	gap: 1.6rem clamp(1.5rem, 3vw, 3rem);
}
.wlc-facts__item { margin: 0; }
.wlc-facts dt {
	font-size: .72rem;
	letter-spacing: .13em;
	text-transform: uppercase;
	color: var(--wl-ink-faint);
	margin-bottom: .35rem;
}
.wlc-facts dd { margin: 0; font-family: var(--wl-serif); font-size: 1.12rem; line-height: 1.3; }

/* ---------------------------------------------------------------------------
   Gallery, deliberately irregular
   ------------------------------------------------------------------------ */

.wlc-gallery { padding: var(--wl-step-sm) 0; }
.wlc-gallery__inner {
	display: grid;
	grid-template-columns: repeat(6, 1fr);
	gap: clamp(.8rem, 1.6vw, 1.4rem);
}
.wlc-gallery__item { margin: 0; grid-column: span 3; }
.wlc-gallery__item img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4 / 3; }
.wlc-gallery__item--0 { grid-column: span 4; }
.wlc-gallery__item--1 { grid-column: span 2; }
.wlc-gallery__item--1 img { aspect-ratio: 3 / 4; }
.wlc-gallery__item--2 { grid-column: span 2; }
.wlc-gallery__item--3 { grid-column: span 4; }
.wlc-gallery__item--4 { grid-column: span 3; }

@media (max-width: 719px) {
	.wlc-gallery__inner { grid-template-columns: repeat(2, 1fr); }
	.wlc-gallery__item,
	.wlc-gallery__item--0,
	.wlc-gallery__item--1,
	.wlc-gallery__item--2,
	.wlc-gallery__item--3,
	.wlc-gallery__item--4 { grid-column: span 2; }
	.wlc-gallery__item--1 img { aspect-ratio: 4 / 3; }
}

/* ---------------------------------------------------------------------------
   Purpose page, the lotus layers
   ------------------------------------------------------------------------ */

.wlc-lotus { padding: var(--wl-step) 0; position: relative; overflow: hidden; }
.wlc-lotus__head { max-width: 40ch; margin-bottom: clamp(2rem, 4vw, 3.5rem); }
.wlc-lotus__intro { color: var(--wl-ink-soft); font-size: 1.1rem; }

.wlc-lotus__layers { position: relative; display: grid; gap: 1px; background: var(--wl-line); }
@media (min-width: 900px) {
	.wlc-lotus__layers { grid-template-columns: repeat(3, 1fr); }
}

.wlc-lotus__layer {
	background: var(--wl-paper);
	padding: clamp(1.8rem, 3vw, 2.8rem) clamp(1.4rem, 2.4vw, 2.2rem);
	position: relative;
}
.wlc-lotus__layer--roots { background: #f6f2e8; }
.wlc-lotus__layer--stem { background: #f9f5ec; }
.wlc-lotus__layer--bloom { background: var(--wl-gold-wash); }

.wlc-lotus__num {
	font-family: var(--wl-serif);
	font-size: 3.4rem;
	line-height: 1;
	color: var(--wl-gold);
	opacity: .3;
	display: block;
	margin-bottom: .3rem;
}
.wlc-lotus__title { font-size: 1.6rem; margin-bottom: .5rem; }
.wlc-lotus__text { font-size: .96rem; color: var(--wl-ink-soft); margin: 0; }

.wlc-lotus__mark {
	position: absolute;
	right: -3rem;
	bottom: -4rem;
	width: clamp(140px, 20vw, 260px);
	max-width: 40vw;
	opacity: .1;
	pointer-events: none;
}
@media (max-width: 719px) {
	.wlc-lotus__mark { display: none; }
}

/* ---------------------------------------------------------------------------
   Beliefs
   ------------------------------------------------------------------------ */

.wlc-beliefs { padding: var(--wl-step) 0; background: var(--wl-sand); }
.wlc-beliefs__list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
	gap: clamp(1.6rem, 3vw, 2.6rem);
	margin-top: clamp(1.6rem, 3vw, 2.6rem);
}
.wlc-belief { border-top: 2px solid var(--wl-gold); padding-top: 1.1rem; }
.wlc-belief__num {
	font-family: var(--wl-serif);
	font-size: .85rem;
	letter-spacing: .14em;
	color: var(--wl-gold-deep);
	display: block;
	margin-bottom: .7rem;
}
.wlc-belief__title { font-size: 1.28rem; margin-bottom: .45rem; }
.wlc-belief__text { font-size: .94rem; color: var(--wl-ink-soft); margin: 0; }

/* ---------------------------------------------------------------------------
   Vision statement
   ------------------------------------------------------------------------ */

.wlc-vision { padding: var(--wl-step) 0; }
.wlc-vision__inner { max-width: 960px; }
.wlc-vision__statement {
	font-family: var(--wl-serif);
	font-size: clamp(1.5rem, 1.1rem + 2vw, 2.8rem);
	line-height: 1.2;
	letter-spacing: -.012em;
	margin: 0;
}

/* ---------------------------------------------------------------------------
   Who we work with
   ------------------------------------------------------------------------ */

.wlc-groups { padding: var(--wl-step) 0; }
.wlc-group { padding: clamp(1.8rem, 3vw, 2.6rem) 0; border-top: 1px solid var(--wl-line); }
.wlc-group:last-child { border-bottom: 1px solid var(--wl-line); }

@media (min-width: 900px) {
	.wlc-group {
		display: grid;
		grid-template-columns: .8fr 1.2fr;
		gap: clamp(2rem, 4vw, 4rem);
		align-items: start;
	}
	.wlc-group--img { grid-template-columns: .7fr 1fr .6fr; }
}

.wlc-group__head { display: flex; align-items: baseline; gap: 1rem; }
.wlc-group__num {
	font-family: var(--wl-serif);
	font-size: 1rem;
	letter-spacing: .12em;
	color: var(--wl-gold);
}
.wlc-group__title { font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2.1rem); margin: 0; }

.wlc-group__items {
	list-style: none;
	margin: 1rem 0 0;
	padding: 0;
	columns: 2;
	column-gap: 2.5rem;
}
@media (max-width: 719px) { .wlc-group__items { columns: 1; } }
.wlc-group__items li {
	break-inside: avoid;
	padding: .4rem 0 .4rem 1.1rem;
	position: relative;
	font-size: .95rem;
	color: var(--wl-ink-soft);
}
.wlc-group__items li::before {
	content: "";
	position: absolute;
	left: 0;
	top: .95em;
	width: 6px;
	height: 6px;
	background: var(--wl-gold);
	transform: rotate(45deg);
}
.wlc-group__media img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; }

/* ---------------------------------------------------------------------------
   Partnerships
   ------------------------------------------------------------------------ */

.wlc-partner-list { padding: var(--wl-step) 0; }
.wlc-partner { padding: clamp(2rem, 4vw, 3.5rem) 0; border-top: 1px solid var(--wl-line); }

@media (min-width: 900px) {
	.wlc-partner { display: grid; grid-template-columns: .42fr 1fr; gap: clamp(2rem, 4vw, 4rem); align-items: start; }
	.wlc-partner--flip .wlc-partner__mark { order: 2; }
	.wlc-partner--flip { grid-template-columns: 1fr .42fr; }
}

.wlc-partner__mark {
	background: var(--wl-sand);
	display: grid;
	place-items: center;
	padding: 2.5rem 1.5rem;
	min-height: 160px;
}
.wlc-partner__mark img { max-height: 100px; width: auto; }
.wlc-partner__initials { font-family: var(--wl-serif); font-size: 1.8rem; color: var(--wl-ink-soft); text-align: center; }

.wlc-partner__title { font-size: clamp(1.5rem, 1.2rem + 1.3vw, 2.2rem); }
.wlc-partner__points {
	list-style: none;
	margin: 1.4rem 0 0;
	padding: 0;
	columns: 2;
	column-gap: 2.5rem;
}
@media (max-width: 719px) { .wlc-partner__points { columns: 1; } }
.wlc-partner__points li {
	break-inside: avoid;
	font-size: .9rem;
	color: var(--wl-ink-soft);
	padding: .32rem 0 .32rem 1.05rem;
	position: relative;
}
.wlc-partner__points li::before {
	content: "";
	position: absolute;
	left: 0;
	top: .9em;
	width: 5px;
	height: 5px;
	background: var(--wl-gold);
	transform: rotate(45deg);
}

.wlc-model { padding: var(--wl-step) 0; background: var(--wl-indigo); color: #ece6d9; }
.wlc-model .wlc-h2 { color: #fff; }
.wlc-model__chain {
	list-style: none;
	margin: 2rem 0 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 160px), 1fr));
	gap: 1px;
	background: rgba(232, 217, 168, .2);
}
.wlc-model__link { background: var(--wl-indigo); padding: 1.3rem 1.1rem; }
.wlc-model__num {
	display: block;
	font-family: var(--wl-serif);
	font-size: .85rem;
	letter-spacing: .12em;
	color: var(--wl-gold-soft);
	margin-bottom: .6rem;
}
.wlc-model__label { font-family: var(--wl-serif); font-size: 1.1rem; color: #fff; line-height: 1.25; display: block; }
.wlc-model__body { margin-top: 2rem; max-width: 62ch; color: rgba(236, 230, 217, .8); }

/* ---------------------------------------------------------------------------
   Team
   ------------------------------------------------------------------------ */

.wlc-team { padding: var(--wl-step) 0; }
.wlc-team__intro { max-width: 60ch; color: var(--wl-ink-soft); margin-bottom: 2.4rem; }
.wlc-team__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
	gap: clamp(1.6rem, 3vw, 2.6rem);
}
.wlc-person__media { margin-bottom: 1rem; background: var(--wl-sand); }
.wlc-person__media img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.wlc-person__name { font-size: 1.2rem; margin-bottom: .15rem; }
.wlc-person__role {
	font-size: .74rem;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--wl-gold-deep);
	margin-bottom: .6rem;
}
.wlc-person__bio { font-size: .9rem; color: var(--wl-ink-soft); margin: 0; }

.wlc-profile { padding: var(--wl-step) 0; }
.wlc-profile__inner { display: grid; gap: clamp(2rem, 4vw, 3.5rem); }
@media (min-width: 900px) { .wlc-profile__inner { grid-template-columns: .55fr 1fr; align-items: start; } }
.wlc-profile__img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.wlc-profile__name { font-size: clamp(2rem, 1.4rem + 2.2vw, 3.2rem); margin-bottom: .2em; }
.wlc-profile__role { font-size: .8rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wl-gold-deep); }
.wlc-profile__where { font-size: .9rem; color: var(--wl-ink-faint); }
.wlc-profile__bio { font-size: 1.12rem; color: var(--wl-ink-soft); }

/* ---------------------------------------------------------------------------
   Post
   ------------------------------------------------------------------------ */

.wlc-post__head { padding: clamp(2.5rem, 5vw, 4rem) 0 clamp(1.5rem, 3vw, 2.5rem); }
.wlc-post__head-inner {
	max-width: 820px;
	margin: 0 auto;
	padding: 0 var(--wl-gutter);
}
.wlc-post__title { font-size: clamp(2.1rem, 1.3rem + 3.2vw, 3.8rem); line-height: 1.04; max-width: 20ch; }
.wlc-post__standfirst { font-size: clamp(1.1rem, 1rem + .5vw, 1.35rem); color: var(--wl-ink-soft); max-width: 54ch; }
.wlc-post__byline { font-size: .78rem; letter-spacing: .12em; text-transform: uppercase; color: var(--wl-ink-faint); }

.wlc-post__media { margin: 0 0 clamp(2rem, 4vw, 3.5rem); }
.wlc-post__media .wlc-figure__img { width: 100%; max-height: 70vh; object-fit: cover; }
.wlc-post__media .wlc-figure__caption {
	max-width: 820px;
	margin: .8rem auto 0;
	padding: 0 var(--wl-gutter);
}

.wlc-post__body {
	max-width: 760px;
	margin: 0 auto;
	padding: 0 var(--wl-gutter) var(--wl-step);
}
.wlc-post__body .wlc-prose { font-size: 1.13rem; line-height: 1.72; }

/* ---------------------------------------------------------------------------
   Contact
   ------------------------------------------------------------------------ */

.wlc-contact { padding: var(--wl-step-sm) 0 var(--wl-step); }
.wlc-contact__inner { display: grid; gap: clamp(2.5rem, 5vw, 4.5rem); align-items: start; }
@media (min-width: 900px) { .wlc-contact__inner { grid-template-columns: 1.25fr .75fr; } }

.wlc-contact__intro { color: var(--wl-ink-soft); max-width: 54ch; margin-bottom: 2rem; }

.wlc-contact__card {
	background: var(--wl-sand);
	padding: clamp(1.6rem, 3vw, 2.4rem);
	border-top: 3px solid var(--wl-gold);
}
.wlc-contact__card-title { font-size: 1.15rem; margin-bottom: 1rem; }
.wlc-contact__address { font-style: normal; display: grid; gap: .15rem; margin-bottom: 1.4rem; font-size: .95rem; }

.wlc-contact__details { list-style: none; margin: 0; padding: 0; display: grid; gap: .8rem; }
.wlc-contact__details li { display: grid; gap: .1rem; font-size: .95rem; }
.wlc-contact__details span {
	font-size: .7rem;
	letter-spacing: .13em;
	text-transform: uppercase;
	color: var(--wl-ink-faint);
}
.wlc-contact__pending { margin-top: 1.2rem; font-size: .82rem; color: var(--wl-madder); }
.wlc-contact__note { margin-top: 1.6rem; font-size: .94rem; color: var(--wl-ink-soft); }

.wlc-map { line-height: 0; }
.wlc-map iframe { width: 100%; height: clamp(300px, 45vh, 460px); border: 0; display: block; }

.wlc-social { list-style: none; display: flex; gap: .9rem; margin: 1.6rem 0 0; padding: 0; }
.wlc-social a {
	display: grid;
	place-items: center;
	width: 38px;
	height: 38px;
	border: 1px solid currentColor;
	border-radius: 50%;
	color: inherit;
	opacity: .7;
	transition: opacity .18s ease, background .18s ease, color .18s ease;
}
.wlc-social a:hover { opacity: 1; background: var(--wl-gold); color: #221c05; border-color: var(--wl-gold); }
.wlc-social svg { width: 16px; height: 16px; }
.wlc-social--dark a { color: var(--wl-ink-soft); }

/* ---------------------------------------------------------------------------
   Filters, archive, pagination
   ------------------------------------------------------------------------ */

.wlc-filters { border-bottom: 1px solid var(--wl-line); }
.wlc-filters__inner {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem 1.6rem;
	padding-top: 1rem;
	padding-bottom: 1rem;
}
.wlc-filter {
	font-size: .78rem;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--wl-ink-faint);
	text-decoration: none;
	padding: .35rem 0;
	border-bottom: 2px solid transparent;
}
.wlc-filter:hover { color: var(--wl-ink); }
.wlc-filter.is-active { color: var(--wl-ink); border-bottom-color: var(--wl-gold); }

.wlc-archive { padding: var(--wl-step) 0; }
.wlc-archive__head { margin-bottom: clamp(2rem, 4vw, 3rem); }
.wlc-archive__search { margin-top: 1.5rem; max-width: 460px; }

.wlc-pagination { margin-top: clamp(2.5rem, 5vw, 4rem); }
.wlc-pagination ul { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem; margin: 0; padding: 0; }
.wlc-pagination a,
.wlc-pagination span {
	display: grid;
	place-items: center;
	min-width: 2.6rem;
	height: 2.6rem;
	padding: 0 .7rem;
	border: 1px solid var(--wl-line);
	font-size: .85rem;
	text-decoration: none;
	color: var(--wl-ink);
}
.wlc-pagination a:hover { background: var(--wl-sand); }
.wlc-pagination .current { background: var(--wl-ink); color: var(--wl-paper); border-color: var(--wl-ink); }

.wlc-results { list-style: none; margin: 0; padding: 0; }
.wlc-result { border-top: 1px solid var(--wl-line); }
.wlc-result:last-child { border-bottom: 1px solid var(--wl-line); }
.wlc-result a { display: block; padding: 1.6rem 0; text-decoration: none; color: inherit; }
.wlc-result a:hover { background: var(--wl-sand); padding-left: 1rem; padding-right: 1rem; }
.wlc-result__type {
	font-size: .7rem;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--wl-gold-deep);
}
.wlc-result__title { font-size: 1.5rem; margin: .3rem 0 .35rem; }
.wlc-result__text { font-size: .93rem; color: var(--wl-ink-soft); margin: 0; }

/* ---------------------------------------------------------------------------
   FAQ
   ------------------------------------------------------------------------ */

.wlc-faq { padding: var(--wl-step) 0; }
.wlc-faq__inner { max-width: 860px; }
.wlc-faq__items { margin-top: 1.6rem; }
.wlc-faq__item { border-top: 1px solid var(--wl-line); }
.wlc-faq__item:last-child { border-bottom: 1px solid var(--wl-line); }
.wlc-faq__item summary {
	list-style: none;
	cursor: pointer;
	padding: 1.2rem 2.5rem 1.2rem 0;
	font-family: var(--wl-serif);
	font-size: 1.2rem;
	position: relative;
}
.wlc-faq__item summary::-webkit-details-marker { display: none; }
.wlc-faq__item summary::after {
	content: "";
	position: absolute;
	right: .4rem;
	top: 1.6rem;
	width: 11px;
	height: 11px;
	border-right: 1.6px solid var(--wl-gold-deep);
	border-bottom: 1.6px solid var(--wl-gold-deep);
	transform: rotate(45deg);
	transition: transform .2s ease;
}
.wlc-faq__item[open] summary::after { transform: rotate(-135deg); top: 1.9rem; }
.wlc-faq__item .wlc-prose { padding: 0 2.5rem 1.5rem 0; color: var(--wl-ink-soft); max-width: 62ch; }

/* ---------------------------------------------------------------------------
   Call to action band
   ------------------------------------------------------------------------ */

.wlc-cta {
	background: var(--wl-gold);
	color: #221c05;
	padding: clamp(2.5rem, 5vw, 4.5rem) 0;
	position: relative;
	overflow: hidden;
}
.wlc-cta::before {
	content: "";
	position: absolute;
	inset: 0;
	opacity: .13;
	background-image: repeating-linear-gradient(45deg, #fff 0 1px, transparent 1px 12px);
}

.wlc-cta__inner {
	position: relative;
	display: grid;
	gap: clamp(1.5rem, 3vw, 3rem);
	align-items: center;
}
@media (min-width: 860px) { .wlc-cta__inner { grid-template-columns: 1fr auto; } }

.wlc-cta__title {
	font-size: clamp(1.6rem, 1.2rem + 1.9vw, 2.7rem);
	line-height: 1.14;
	margin-bottom: .4em;
	max-width: 22ch;
	color: #221c05;
}
.wlc-cta__text p, .wlc-cta__text { color: rgba(34, 28, 5, .82); }
.wlc-cta__text p { max-width: 58ch; margin: 0; font-size: 1rem; }

/* ---------------------------------------------------------------------------
   404
   ------------------------------------------------------------------------ */

.wlc-404 { padding: var(--wl-step-lg) 0; }
.wlc-404__inner { max-width: 760px; }
.wlc-404__title { font-size: clamp(2.2rem, 1.4rem + 3vw, 3.6rem); }
.wlc-404__links { list-style: none; margin: 2rem 0; padding: 0; display: grid; gap: .1rem; }
.wlc-404__links a {
	display: block;
	padding: .9rem 0;
	border-bottom: 1px solid var(--wl-line);
	font-family: var(--wl-serif);
	font-size: 1.3rem;
	text-decoration: none;
	color: var(--wl-ink);
}
.wlc-404__links a:hover { color: var(--wl-gold-deep); padding-left: .6rem; }
.wlc-404__search { max-width: 460px; }

/* ---------------------------------------------------------------------------
   Search form
   ------------------------------------------------------------------------ */

.wlc-search { display: flex; flex-wrap: wrap; gap: .5rem; }
.wlc-search__input {
	flex: 1 1 12rem;
	min-width: 0;
	padding: .85rem 1rem;
	border: 1px solid var(--wl-line);
	background: #fff;
	font: inherit;
	font-size: .95rem;
	border-radius: var(--wl-radius);
}
.wlc-search__input:focus { border-color: var(--wl-gold); outline: none; }
.wlc-search__submit {
	padding: .85rem 1.3rem;
	border: 1px solid var(--wl-ink);
	background: var(--wl-ink);
	color: var(--wl-paper);
	font-family: var(--wl-sans);
	font-size: .78rem;
	font-weight: 600;
	letter-spacing: .1em;
	text-transform: uppercase;
	cursor: pointer;
	border-radius: var(--wl-radius);
}
.wlc-search__submit:hover { background: var(--wl-gold-deep); border-color: var(--wl-gold-deep); }

.wlc-form-fallback {
	background: var(--wl-sand);
	padding: 1.6rem;
	border-left: 3px solid var(--wl-madder);
}

.wlc-page-links { margin-top: 2rem; font-size: .9rem; }
.wlc-page-links a { margin: 0 .3rem; }

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

.wlc-footer {
	background: var(--wl-ink);
	color: #cdc6b6;
	padding: var(--wl-step) 0 2rem;
	font-size: .93rem;
	position: relative;
	z-index: 1;
}
.wlc-footer::before {
	content: "";
	display: block;
	height: 3px;
	background: linear-gradient(90deg, var(--wl-gold-deep), var(--wl-gold), var(--wl-gold-soft), var(--wl-gold));
	position: absolute;
	inset: 0 0 auto 0;
}

.wlc-footer__top {
	max-width: var(--wl-max);
	margin: 0 auto;
	padding: 0 var(--wl-gutter);
	display: grid;
	gap: clamp(2.5rem, 5vw, 4rem);
}
@media (min-width: 900px) { .wlc-footer__top { grid-template-columns: .9fr 2.1fr; } }

.wlc-footer__logo { height: 106px; width: auto; margin-bottom: 1.4rem; }
.wlc-footer__strapline {
	font-family: var(--wl-serif);
	font-size: 1.18rem;
	color: var(--wl-gold-soft);
	line-height: 1.3;
	max-width: 20ch;
}
.wlc-footer__intro { font-size: .88rem; color: #9a9284; max-width: 44ch; }

.wlc-footer__cols {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 170px), 1fr));
	gap: clamp(1.8rem, 3vw, 2.6rem);
}
.wlc-footer__title {
	font-family: var(--wl-sans);
	font-size: .7rem;
	font-weight: 700;
	letter-spacing: .17em;
	text-transform: uppercase;
	color: var(--wl-gold);
	margin-bottom: 1rem;
}
.wlc-footer__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem; }
.wlc-footer__list a { color: #cdc6b6; text-decoration: none; font-size: .9rem; }
.wlc-footer__list a:hover { color: #fff; }

.wlc-footer__address { font-style: normal; display: grid; gap: .1rem; margin-bottom: 1rem; font-size: .88rem; color: #9a9284; }
.wlc-footer__col--contact a { color: #cdc6b6; text-decoration: none; }
.wlc-footer__col--contact a:hover { color: var(--wl-gold-soft); }
.wlc-footer .wlc-social a { color: #8d8677; border-color: #3a352a; }
.wlc-footer .wlc-social a:hover { color: #221c05; }

.wlc-footer__widgets {
	max-width: var(--wl-max);
	margin: 3rem auto 0;
	padding: 0 var(--wl-gutter);
}

.wlc-footer__legal {
	max-width: var(--wl-max);
	margin: clamp(2.5rem, 5vw, 4rem) auto 0;
	padding: 1.6rem var(--wl-gutter) 0;
	border-top: 1px solid #2c2820;
	display: flex;
	flex-wrap: wrap;
	gap: .8rem 2rem;
	align-items: center;
	justify-content: space-between;
	font-size: .78rem;
	color: #8d8677;
}
.wlc-footer__legal p { margin: 0; }
.wlc-footer__gstin { margin-left: 1rem; opacity: .7; }
.wlc-footer__legal-list { list-style: none; display: flex; gap: 1.4rem; margin: 0; padding: 0; }
.wlc-footer__legal-list a { color: #8d8677; text-decoration: none; }
.wlc-footer__legal-list a:hover { color: var(--wl-gold-soft); }

/* ---------------------------------------------------------------------------
   Craft ornament
   Border motifs taken from the geometric bands inside the logo petals, plus the
   refinements that give the page more range than gold on cream.
   ------------------------------------------------------------------------ */

/* Turquoise, the blue of a painted mask and a strung bead, set against coral
   red the way the reference photographs always set it. Used for the section
   that carries the writing, so the page picks up a fifth ground. */
.wlc-insights {
	background: var(--wl-turquoise-deep);
	color: #eefbfd;
	position: relative;
}
.wlc-insights .wlc-h2 { color: #fff; }
.wlc-insights .wlc-arrow-link { color: #fff; border-color: var(--wl-turmeric); }
.wlc-insights .wlc-arrow-link:hover { color: var(--wl-turmeric); }
.wlc-insights__head { border-bottom-color: rgba(255, 255, 255, .28); }
.wlc-insights .wlc-post-card__title { color: #fff; }
.wlc-insights .wlc-post-card__link:hover .wlc-post-card__title { color: var(--wl-turmeric); }
.wlc-insights .wlc-post-card__text { color: rgba(238, 251, 253, .88); }
.wlc-insights .wlc-meta { color: rgba(238, 251, 253, .86); }
/* Turmeric on turquoise only reaches 3:1, which is under the floor for a label
   this small, so the category runs white and turmeric is kept for hover. */
.wlc-insights .wlc-meta__cat { color: #fff; }
.wlc-insights .wlc-meta__cat:hover { color: var(--wl-turmeric); }
.wlc-insights::before {
	content: "";
	position: absolute;
	inset: 0 0 auto 0;
	height: 5px;
	background: repeating-linear-gradient(90deg,
		var(--wl-lac) 0 20px,
		var(--wl-turmeric) 20px 28px,
		var(--wl-eri) 28px 34px);
}

/* Ochre, the orange of a Bodo border, carries the partner strip. */
.wlc-partners {
	background: var(--wl-cane-soft);
}

/* Motif bands. Full strength, on a dyed ground, at a scale you can actually
   read the geometry at. A whisper of gold at 35 per cent was decoration; this
   is a woven border. */
.wlc-band {
	color: var(--wl-lac);
	background: var(--wl-sand);
	line-height: 0;
	overflow: hidden;
	padding: .55rem 0;
	border-top: 3px solid var(--wl-ink);
	border-bottom: 3px solid var(--wl-ink);
}
.wlc-band svg { display: block; }
.wlc-band--edge { color: var(--wl-lac); }
.wlc-band--gold { color: var(--wl-gold-deep); background: var(--wl-gold-wash); }
.wlc-band--dark { color: var(--wl-turmeric); background: var(--wl-ink); border-color: var(--wl-lac); }

/* Selvedge: the finished edge of a cloth, used to close a coloured band. */
.wlc-selvedge {
	height: 4px;
	background: var(--wl-foil);
	opacity: .8;
}

/* The banded edge of a shawl. Stripes of different widths in the dyes of the
   region, read as a rhythm rather than as one repeated tile. */
.wlc-stripes {
	display: flex;
	flex-direction: column;
	width: 100%;
}
.wlc-stripes span { display: block; width: 100%; }

/* A whole shawl: red ground with fine black pinstripes, and one wide cream
   median band carrying a row of motifs through the middle of it. */
.wlc-shawl {
	width: 100%;
	overflow: hidden;
	border-top: 2px solid var(--wl-ink);
	border-bottom: 2px solid var(--wl-ink);
}
.wlc-shawl__ground {
	height: 26px;
	background:
		repeating-linear-gradient(0deg,
			var(--wl-ink) 0 2px,
			transparent 2px 9px),
		var(--ground, var(--wl-lac));
}
.wlc-shawl__median {
	background: var(--wl-eri);
	color: var(--wl-ink);
	line-height: 0;
	border-top: 2px solid var(--wl-ink);
	border-bottom: 2px solid var(--wl-ink);
}
.wlc-shawl__median svg { display: block; }

/* Split cane basketry: an open hexagonal mesh, laid over a section rather than
   filling it, the way the woven cane figures are built from air as much as
   from cane. */
.wlc-cane {
	position: relative;
	isolation: isolate;
}
.wlc-cane::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
	background-image: var(--wlc-cane-image);
	background-size: 44px 76px;
	opacity: .5;
}

/* Pillars are colour blocked, one dye per card, the way a shawl is banded.
   Four saturated panels side by side is the single loudest thing on the page
   and the point at which it stops reading as a corporate brochure. */
.wlc-pillars__grid { gap: 0; background: none; border: 0; }

.wlc-pillar {
	background: var(--wl-gold);
	color: #241d05;
	padding: clamp(2rem, 3.4vw, 3rem) clamp(1.4rem, 2.4vw, 2rem) clamp(2.6rem, 4vw, 3.4rem);
}
.wlc-pillar--twill   { background: var(--wl-rum);    color: #fff; }
.wlc-pillar--basket  { background: var(--wl-lac);    color: #fff; }
.wlc-pillar--diamond { background: var(--wl-bamboo); color: #fff; }

/* Hover deepens the dye rather than lightening it. Truer to how a dye bath
   behaves, and it keeps text contrast climbing instead of falling away. */
a.wlc-pillar:hover,
a.wlc-pillar:focus-visible          { background: var(--wl-turmeric); color: #241d05; }
a.wlc-pillar--twill:hover,
a.wlc-pillar--twill:focus-visible   { background: var(--wl-rum-deep); color: #fff; }
a.wlc-pillar--basket:hover,
a.wlc-pillar--basket:focus-visible  { background: var(--wl-lac-deep); color: #fff; }
a.wlc-pillar--diamond:hover,
a.wlc-pillar--diamond:focus-visible { background: var(--wl-bamboo-deep); color: #fff; }

/* Hierarchy comes from size and weight, not from dropping opacity, which
   would quietly push the body text under the contrast floor. */
.wlc-pillar__title { color: inherit; }
.wlc-pillar__text  { color: inherit; opacity: 1; }

/* The swatch is the cloth structure itself, worked in the panel colour. */
.wlc-pillar .wlc-swatch { color: currentColor; opacity: .22; }
a.wlc-pillar:hover .wlc-swatch,
a.wlc-pillar:focus-visible .wlc-swatch { opacity: .34; }

.wlc-pillar__icon { color: currentColor; opacity: .95; }

.wlc-pillar__num {
	color: currentColor;
	opacity: .38;
	font-size: 3.4rem;
	top: .8rem;
	right: 1.1rem;
}

a.wlc-pillar::after { color: currentColor; }

/* Each panel is separated by a hard cream selvedge rather than a hairline. */
.wlc-pillar + .wlc-pillar { box-shadow: inset 3px 0 0 var(--wl-paper); }
@media (max-width: 899px) {
	.wlc-pillar + .wlc-pillar { box-shadow: inset 0 3px 0 var(--wl-paper); }
}

/* Pull quote. A full strength dyed band, the way a red weft band cuts across a
   Naga shawl. Set big, so the line carries the section on its own. */
.wlc-quote__inner { position: relative; }
.wlc-quote blockquote p {
	max-width: 19ch;
	font-size: clamp(1.9rem, 1.1rem + 3.2vw, 4rem);
	line-height: 1.08;
}

.wlc-quote--indigo { background: var(--wl-indigo); }
.wlc-quote--indigo blockquote p,
.wlc-quote--indigo cite { color: #f6f1e4; }

.wlc-quote--lac { background: var(--wl-lac); color: #fff; }
.wlc-quote--lac blockquote p,
.wlc-quote--lac cite { color: #fff; }
.wlc-quote--lac .wlc-quote__mark { color: #ffdf8a; opacity: 1; }

.wlc-quote--gold {
	background: var(--wl-gold);
	color: #241d05;
}
.wlc-quote--gold blockquote p,
.wlc-quote--gold cite { color: #241d05; }
.wlc-quote--gold .wlc-quote__mark { color: var(--wl-lac); opacity: 1; }

.wlc-quote--sand {
	background: var(--wl-sand);
	background-image: repeating-linear-gradient(90deg, rgba(134, 108, 17, .05) 0 1px, transparent 1px 6px);
}

/* A dyed band carries a woven edge top and bottom. */
.wlc-quote--lac::before,
.wlc-quote--indigo::before,
.wlc-quote--gold::before {
	content: "";
	position: absolute;
	inset: 0 0 auto 0;
	height: 6px;
	background: repeating-linear-gradient(90deg,
		var(--wl-turmeric) 0 14px,
		transparent 14px 28px);
	opacity: .9;
}
.wlc-quote { position: relative; overflow: hidden; }

/* Opening section: give the drop cap a proper ornamental weight. */
.wlc-prose--dropcap > p:first-of-type::first-letter {
	font-size: 4.6em;
	color: var(--wl-gold-deep);
	padding: .04em .12em 0 0;
}

/* Section headings get a small motif rule rather than a plain line. */
.wlc-opening__heading::after {
	width: 4.5rem;
	height: 3px;
	background: var(--wl-foil);
	opacity: .85;
}

/* Call to action. A woven ground and a foil selvedge on both edges, so the
   closing band is the richest thing on the page. */
.wlc-cta::before {
	opacity: .18;
	background-image:
		repeating-linear-gradient(90deg, rgba(255, 255, 255, .5) 0 1px, transparent 1px 8px),
		repeating-linear-gradient(0deg, rgba(34, 28, 5, .18) 0 1px, transparent 1px 8px);
}
.wlc-cta::after {
	content: "";
	position: absolute;
	inset: 0 0 auto 0;
	height: 3px;
	background: linear-gradient(90deg, rgba(34, 28, 5, .35), rgba(34, 28, 5, .05));
}

/* Word band. Turmeric ground, craft names set large in ink. The brightest
   horizontal band on the page, and the one that names what is actually woven. */
.wlc-wordband {
	background: var(--wl-turmeric);
	border-top: 0;
	border-bottom: 0;
	position: relative;
	padding: clamp(2.5rem, 5vw, 4rem) 0;
}
.wlc-wordband::before,
.wlc-wordband::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	height: 7px;
	background: repeating-linear-gradient(90deg,
		var(--wl-lac) 0 18px,
		var(--wl-ink) 18px 24px,
		transparent 24px 42px);
}
.wlc-wordband::before { top: 0; }
.wlc-wordband::after  { bottom: 0; }

.wlc-wordband__words {
	max-width: 70ch;
	color: #241d05;
	font-weight: 500;
	font-size: clamp(1.25rem, .95rem + 1.4vw, 2.1rem);
}
.wlc-wordband__dot {
	color: var(--wl-lac-deep);
	margin: 0 .45em;
	font-size: 1em;
	vertical-align: .04em;
}
.wlc-wordband .wlc-h2 { color: #241d05; }

/* Service cards pick up a faint weave too, so the hub is not a plain grid. */
.wlc-service-card {
	isolation: isolate;
	overflow: hidden;
}
.wlc-service-card::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	opacity: 0;
	transition: opacity .3s ease;
	background-image:
		repeating-linear-gradient(90deg, rgba(143, 114, 19, .5) 0 1px, transparent 1px 7px),
		repeating-linear-gradient(0deg, rgba(143, 114, 19, .3) 0 1px, transparent 1px 7px);
}
.wlc-service-card:hover::before { opacity: .1; }

/* Impact band, lifted out of flat cream. */
.wlc-impact {
	background:
		linear-gradient(var(--wl-gold-wash), var(--wl-gold-wash)),
		repeating-linear-gradient(90deg, rgba(143, 114, 19, .06) 0 1px, transparent 1px 6px);
	border-top: 3px solid transparent;
	border-image: var(--wl-foil) 1;
}

/* Partner strip sits on sand, so it separates from the sections either side. */
.wlc-partners {
	background: var(--wl-sand);
	border-top: 1px solid var(--wl-line);
	border-bottom: 1px solid var(--wl-line);
}

/* Footer: warp threads and a foil selvedge already at the top. */
.wlc-footer::after {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	opacity: .5;
	background-image: repeating-linear-gradient(90deg, rgba(232, 217, 168, .05) 0 1px, transparent 1px 11px);
}
.wlc-footer > * { position: relative; z-index: 1; }

/* ---------------------------------------------------------------------------
   Reveal on scroll
   ------------------------------------------------------------------------ */

[data-reveal] {
	opacity: 0;
	transform: translateY(14px);
	transition: opacity .6s cubic-bezier(.2, .7, .3, 1), transform .6s cubic-bezier(.2, .7, .3, 1);
}
[data-reveal].is-in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
	[data-reveal] { opacity: 1; transform: none; }
}

/* ---------------------------------------------------------------------------
   Print
   ------------------------------------------------------------------------ */

@media print {
	.wlc-header, .wlc-footer, .wlc-cta, .wlc-burger, .wlc-nav { display: none !important; }
	body::before { display: none; }
	body { background: #fff; color: #000; font-size: 11pt; }
	a { color: #000; text-decoration: underline; }
}
