/* WALSAY Standard — one stylesheet, one token layer.
   Design language taken from the live walsay.com site and pushed further:
   sharp corners, hairline rules, numbered sections, deep navy bands against
   paper, brand red used only as an accent, monospaced micro labels.
   Change a value in :root and it propagates everywhere. */

:root {
	/* colour */
	--c-accent: #e2001a;
	--c-accent-dark: #b00014;
	--c-accent-soft: #fdeced;
	--c-ink: #12161c;
	--c-ink-2: #1b2027;
	--c-navy: #122b3d;
	--c-copy: #4a555e;
	--c-muted: #78838d;
	--c-line: #e2e6ea;
	--c-line-strong: #c9d1d7;
	/* One milky ground everywhere; the deeper beige band tone read as grey
	   next to it. Cards go pure white so they still lift off the cream. */
	--c-milk: #fbf8f2;
	--c-paper: #fbf8f2;
	--c-surface: #ffffff;
	--c-teal: #0f766e;
	--c-eco: #16a34a;

	/* type */
	--font: "Inter", "Helvetica Neue", Helvetica, Arial, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
	--font-heading: var(--font);
	--mono: "SFMono-Regular", "JetBrains Mono", "Roboto Mono", Consolas, monospace;
	/* Every size below is a fluid base multiplied by one scale factor, so the
	   Customizer changes the whole type ladder without duplicating a single
	   clamp() literal. Keep the bases here and never inline them elsewhere. */
	--type-scale: 1;
	--t-display: calc(clamp(34px, 4.6vw, 60px) * var(--type-scale));
	--t-h2: calc(clamp(24px, 2.9vw, 38px) * var(--type-scale));
	--t-h3: calc(clamp(18px, 1.5vw, 22px) * var(--type-scale));
	--t-lead: calc(clamp(16px, 1.15vw, 18.5px) * var(--type-scale));
	--t-body: calc(16px * var(--type-scale));
	--t-small: calc(13.5px * var(--type-scale));
	--t-micro: calc(11px * var(--type-scale));

	/* rhythm */
	--shell: 1320px;
	--shell-wide: 1520px;
	--gutter-scale: 1;
	--band-scale: 1;
	--gap-scale: 1;
	--space-scale: 1;
	--gutter: calc(clamp(20px, 3.2vw, 56px) * var(--gutter-scale));
	--s-1: calc(6px * var(--space-scale));
	--s-2: calc(12px * var(--space-scale));
	--s-3: calc(18px * var(--space-scale));
	--s-4: calc(26px * var(--space-scale));
	--s-5: calc(38px * var(--space-scale));
	--s-6: calc(56px * var(--space-scale));
	--s-7: calc(80px * var(--space-scale));
	--s-8: calc(112px * var(--space-scale));
	--band: calc(clamp(58px, 6.6vw, 92px) * var(--band-scale));
	--grid-gap: calc(clamp(16px, 1.6vw, 26px) * var(--gap-scale));
	/* Shared box for the two alternating photo bands. Both the intro and the
	   about image take this exact height, so they read as one size rather than
	   each stretching to whatever its text column happens to be. */
	--media-h: clamp(340px, 41vw, 594px);

	/* effects */
	--radius: 0.75rem;
	--radius-sm: calc(var(--radius) * 0.66);
	--radius-full: 999px;
	--shadow-1: 0 1px 2px rgba(18, 22, 28, 0.05);
	--shadow-2: 0 26px 50px -34px rgba(18, 22, 28, 0.5);
	--shadow-3: 0 40px 80px -50px rgba(18, 43, 61, 0.6);
	--ease: cubic-bezier(0.22, 0.61, 0.36, 1);
}

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

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
}

body {
	margin: 0;
	background: var(--c-milk);
	color: var(--c-ink);
	font-family: var(--font);
	font-size: var(--t-body);
	line-height: var(--body-leading);
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

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

h1,
h2,
h3,
h4,
h5,
h6 {
	margin: 0 0 0.5em;
	font-family: var(--font-heading);
	font-weight: 700;
	line-height: 1.14;
	letter-spacing: -0.02em;
	color: var(--c-ink);
}

p {
	margin: 0 0 1em;
}

a {
	color: inherit;
	text-decoration: none;
	transition: color 0.18s var(--ease);
}

:focus-visible {
	outline: 2px solid var(--c-accent);
	outline-offset: 3px;
}

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

hr {
	border: 0;
	border-top: 1px solid var(--c-line);
	margin: var(--s-6) 0;
}

table {
	border-collapse: collapse;
	width: 100%;
	font-size: var(--t-small);
}

th,
td {
	border: 1px solid var(--c-line);
	padding: 11px 14px;
	text-align: left;
}

th {
	background: var(--c-paper);
	font-weight: 600;
}

::selection {
	background: var(--c-accent);
	color: #fff;
}

/* ---------- primitives ---------- */

.walsay-shell {
	width: 100%;
	max-width: var(--shell);
	margin-inline: auto;
	padding-inline: var(--gutter);
}

body.walsay-w-full .walsay-shell {
	max-width: none;
}

body.walsay-w-wide .walsay-shell {
	max-width: var(--shell-wide);
}

body.walsay-w-boxed .walsay-shell {
	max-width: var(--shell);
}

.walsay-skip {
	position: absolute;
	left: -9999px;
	background: var(--c-ink);
	color: #fff;
	padding: 10px 16px;
	z-index: 200;
}

.walsay-skip:focus {
	left: var(--s-3);
	top: var(--s-3);
}

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

.walsay-eyebrow {
	margin: 0 0 var(--s-2);
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--c-accent);
	font-weight: 600;
}

.walsay-eyebrow--light {
	color: rgba(255, 255, 255, 0.66);
}

.walsay-h2 {
	margin: 0;
	font-size: var(--t-h2);
	max-width: 26ch;
}

.walsay-h3 {
	margin: 0;
	font-size: var(--t-h3);
}

.walsay-lead {
	margin: 0 0 var(--s-4);
	font-size: var(--t-lead);
	line-height: 1.72;
	color: var(--c-copy);
	max-width: 62ch;
}

.walsay-icon {
	flex: none;
}

.walsay-icon--inline {
	margin-inline-start: 8px;
	vertical-align: -2px;
}

.walsay-chip {
	display: inline-block;
	padding: 3px 8px;
	margin: 0 5px 5px 0;
	border: 1px solid var(--c-line);
	background: var(--c-paper);
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--c-copy);
}

.walsay-chip--dark {
	background: rgba(255, 255, 255, 0.06);
	border-color: rgba(255, 255, 255, 0.16);
	color: rgba(255, 255, 255, 0.72);
}

.walsay-tag {
	display: inline-block;
	margin-inline-start: 8px;
	padding: 2px 8px;
	border: 1px solid var(--c-line);
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--c-muted);
}

.walsay-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 14px 24px;
	border: 1px solid var(--c-ink);
	background: var(--c-ink);
	color: #fff;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 0.01em;
	cursor: pointer;
	transition: background 0.18s var(--ease), border-color 0.18s var(--ease), color 0.18s var(--ease), transform 0.18s var(--ease);
}

.walsay-btn:hover {
	transform: translateY(-1px);
}

.walsay-btn--primary {
	background: var(--c-accent);
	border-color: var(--c-accent);
}

.walsay-btn--primary:hover {
	background: var(--c-accent-dark);
	border-color: var(--c-accent-dark);
	color: #fff;
}

.walsay-btn--ghost {
	background: transparent;
	color: var(--c-ink);
}

.walsay-btn--ghost:hover {
	background: var(--c-ink);
	color: #fff;
}

.walsay-btn--light {
	background: #fff;
	border-color: #fff;
	color: var(--c-ink);
}

.walsay-btn--light:hover {
	background: var(--c-accent);
	border-color: var(--c-accent);
	color: #fff;
}

.walsay-btn--outline-light {
	background: transparent;
	border-color: rgba(255, 255, 255, 0.34);
	color: #fff;
}

.walsay-btn--outline-light:hover {
	background: rgba(255, 255, 255, 0.12);
	color: #fff;
}

.walsay-btn--block {
	display: flex;
	width: 100%;
	margin-bottom: var(--s-2);
}

.walsay-band {
	padding-block: var(--band);
	border-bottom: 1px solid var(--c-line);
}

.walsay-band--ink {
	background: var(--c-ink);
	color: rgba(255, 255, 255, 0.74);
	border-bottom-color: transparent;
}

.walsay-band--ink .walsay-h2,
.walsay-band--ink .walsay-step__title {
	color: #fff;
}

.walsay-band--paper {
	background: var(--c-paper);
}

.walsay-thead {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: end;
	gap: var(--s-4);
	padding-bottom: var(--s-4);
	margin-bottom: var(--s-6);
	border-bottom: 1px solid var(--c-line-strong);
}

.walsay-thead--dark {
	border-bottom-color: rgba(255, 255, 255, 0.16);
}

.walsay-thead__link {
	display: inline-flex;
	align-items: center;
	font-size: var(--t-small);
	font-weight: 600;
	color: var(--c-accent);
	white-space: nowrap;
	border-bottom: 1px solid currentColor;
	padding-bottom: 2px;
}

.walsay-thead__link:hover {
	color: var(--c-accent-dark);
}

/* ---------- header ---------- */

.walsay-utility {
	background: var(--c-ink);
	color: rgba(255, 255, 255, 0.62);
	font-size: 12.5px;
	border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.walsay-utility__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--s-4);
	min-height: 40px;
	flex-wrap: nowrap;
}

@media (max-width: 1500px) {
	.walsay-utility__item--addr {
		display: none;
	}
}

.walsay-utility__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 22px;
	margin: 0;
}

.walsay-utility__item {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	font-family: var(--mono);
	letter-spacing: 0.02em;
}

.walsay-utility__item .walsay-icon {
	color: var(--c-accent);
}

.walsay-utility__item--addr {
	color: rgba(255, 255, 255, 0.42);
}

.walsay-utility__right {
	display: flex;
	align-items: center;
	gap: var(--s-3);
}

.walsay-utility__hint {
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.4);
}

.walsay-utility__menu {
	display: flex;
	gap: var(--s-3);
	margin: 0;
	padding: 0;
	list-style: none;
}

.walsay-langswitch {
	display: flex;
	align-items: center;
	gap: 2px;
	margin: 0;
	padding: 0;
	list-style: none;
	border: 1px solid rgba(255, 255, 255, 0.16);
}

.walsay-langswitch li {
	margin: 0;
}

.walsay-langswitch a,
.walsay-langswitch span {
	display: block;
	padding: 4px 11px;
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.6);
	white-space: nowrap;
}

.walsay-langswitch a:hover {
	background: rgba(255, 255, 255, 0.1);
	color: #fff;
}

.walsay-langswitch [aria-current] {
	background: var(--c-accent);
	color: #fff;
}

.walsay-headerbar {
	position: sticky;
	top: 0;
	z-index: 60;
	background: rgba(255, 255, 255, 0.96);
	border-bottom: 1px solid var(--c-line);
}

.walsay-headerbar.is-stuck {
	box-shadow: var(--shadow-2);
}

.walsay-headerbar__inner {
	display: flex;
	align-items: center;
	gap: var(--s-4);
	min-height: 86px;
}

.walsay-brand {
	display: flex;
	align-items: center;
	gap: var(--s-2);
	min-width: 0;
	flex: 0 1 auto;
}

.walsay-brand .custom-logo {
	display: block;
	max-height: 52px;
	width: auto;
}

.walsay-brand__mark img {
	max-height: 46px;
	width: auto;
}

.walsay-brand__text {
	display: flex;
	flex-direction: column;
	line-height: 1.16;
	min-width: 0;
}

.walsay-brand__text a {
	font-size: 16.5px;
	font-weight: 700;
	letter-spacing: 0.01em;
}

.walsay-brand__text a:hover {
	color: var(--c-accent);
}

.walsay-brand__text small {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-family: var(--mono);
	font-size: 9.5px;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	color: var(--c-muted);
}

.walsay-nav {
	margin-inline-start: auto;
	min-width: 0;
}

.walsay-menu {
	display: flex;
	align-items: center;
	gap: 2px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.walsay-menu > li {
	position: relative;
}

.walsay-menu a {
	display: block;
	padding: 11px 13px;
	font-size: 14.5px;
	font-weight: 500;
	color: var(--c-ink);
	white-space: nowrap;
}

.walsay-menu > li > a {
	position: relative;
}

.walsay-menu > li > a::after {
	content: "";
	position: absolute;
	left: 13px;
	right: 13px;
	bottom: 5px;
	height: 2px;
	background: var(--c-accent);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 0.22s var(--ease);
}

/* The sweep marks where the pointer is. The current page is carried by the
   text colour alone, so a visited item does not sit underlined all the time. */
.walsay-menu > li:hover > a::after,
.walsay-menu > li:focus-within > a::after {
	transform: scaleX(1);
}

.walsay-menu > li.current-menu-item > a,
.walsay-menu > li.current_page_parent > a,
.walsay-menu > li.current-menu-ancestor > a {
	color: var(--c-accent);
}

/* dropdown; a top-level item with four or more children becomes a wide panel */

.walsay-menu .sub-menu {
	position: absolute;
	top: 100%;
	left: 0;
	min-width: 268px;
	margin: 0;
	padding: var(--s-2) 0;
	list-style: none;
	background: var(--c-surface);
	border: 1px solid var(--c-line);
	box-shadow: var(--shadow-2);
	display: none;
	z-index: 70;
}

.walsay-menu > li:hover > .sub-menu,
.walsay-menu > li:focus-within > .sub-menu,
.walsay-menu > li:hover > .walsay-subwrap > .sub-menu,
.walsay-menu > li:focus-within > .walsay-subwrap > .sub-menu {
	display: block;
	animation: walsay-drop 0.2s var(--ease);
}

@keyframes walsay-drop {
	from {
		opacity: 0;
		transform: translateY(8px);
	}

	to {
		opacity: 1;
		transform: none;
	}
}

.walsay-menu .sub-menu a {
	padding: 9px 20px;
	font-size: 14px;
	color: var(--c-copy);
	white-space: normal;
}

.walsay-menu .sub-menu a:hover {
	background: var(--c-paper);
	color: var(--c-accent);
}

.walsay-headerbar__actions {
	flex: none;
}

.walsay-consult {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-inline-start: clamp(18px, 2.4vw, 40px);
	padding: 9px 14px;
	border: 1px solid var(--c-line-strong);
	font-size: 13px;
	font-weight: 600;
	white-space: nowrap;
}

.walsay-consult .walsay-icon {
	color: var(--c-accent);
}

.walsay-consult:hover {
	background: var(--c-ink);
	border-color: var(--c-ink);
	color: #fff;
}

.walsay-portal__btn--cta {
	background: var(--c-accent);
	border-color: var(--c-accent);
	color: #fff;
}

.walsay-portal__btn--cta:hover {
	background: var(--c-accent-dark);
	border-color: var(--c-accent-dark);
	color: #fff;
}

.walsay-navtoggle {
	display: none;
	align-items: center;
	gap: 10px;
	margin-inline-start: auto;
	padding: 10px 13px;
	background: none;
	border: 1px solid var(--c-line-strong);
	font: inherit;
	font-size: 13px;
	font-weight: 600;
	color: var(--c-ink);
	cursor: pointer;
}

.walsay-navtoggle__bars,
.walsay-navtoggle__bars::before,
.walsay-navtoggle__bars::after {
	display: block;
	width: 18px;
	height: 2px;
	background: currentColor;
	position: relative;
	content: "";
}

.walsay-navtoggle__bars::before {
	position: absolute;
	top: -6px;
}

.walsay-navtoggle__bars::after {
	position: absolute;
	top: 6px;
}

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

.walsay-hero {
	position: relative;
	background: var(--c-navy);
	color: #fff;
	overflow: hidden;
}

.walsay-hero__media {
	position: absolute;
	inset: 0;
}

.walsay-hero__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 58%;
}

.walsay-hero__scrim {
	position: absolute;
	inset: 0;
	/* Flat dark base first, so the bright anechoic foam never lifts under the
	   right-hand panel; the gradients then shape the left text column. */
	background:
		linear-gradient(96deg, rgba(7, 17, 25, 0.99) 0%, rgba(7, 17, 25, 0.94) 44%, rgba(7, 17, 25, 0.8) 74%, rgba(7, 17, 25, 0.7) 100%),
		linear-gradient(180deg, rgba(7, 17, 25, 0.6) 0%, rgba(7, 17, 25, 0.25) 40%, rgba(7, 17, 25, 0.55) 100%),
		rgba(7, 17, 25, 0.55);
}

.walsay-hero__inner {
	position: relative;
	z-index: 2;
	display: grid;
	grid-template-columns: minmax(0, 1.35fr) minmax(280px, 0.65fr);
	gap: clamp(28px, 5vw, 72px);
	align-items: center;
	padding-block: clamp(64px, 10vw, 132px);
	min-height: clamp(520px, 68vh, 720px);
}

.walsay-hero__title {
	margin: 0 0 var(--s-4);
	color: #fff;
	font-size: var(--t-display);
	line-height: 1.06;
	letter-spacing: -0.03em;
	max-width: 17ch;
}

.walsay-hero__text {
	margin: 0 0 var(--s-5);
	color: rgba(255, 255, 255, 0.8);
	font-size: var(--t-lead);
	max-width: 52ch;
}

.walsay-hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--s-2);
	margin: 0;
}

.walsay-hero__panel {
	padding: var(--s-5) var(--s-4);
	background: rgba(9, 22, 32, 0.62);
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-top: 2px solid var(--c-accent);
}

.walsay-hero__panel-title {
	margin: 0 0 var(--s-3);
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.55);
}

.walsay-hero__panel-note {
	margin: var(--s-3) 0 0;
	font-size: var(--t-small);
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.62);
}

.walsay-marks {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.walsay-marks li {
	padding: 5px 10px;
	border: 1px solid var(--c-line-strong);
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.1em;
	color: var(--c-copy);
	background: var(--c-surface);
}

.walsay-marks--panel li {
	border-color: rgba(255, 255, 255, 0.22);
	background: transparent;
	color: rgba(255, 255, 255, 0.78);
}

.walsay-hero__foot {
	position: relative;
	z-index: 2;
	border-top: 1px solid rgba(255, 255, 255, 0.14);
	background: rgba(9, 22, 32, 0.5);
}

.walsay-hero__foot-inner {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.walsay-hero__entry {
	display: flex;
	align-items: center;
	gap: var(--s-3);
	padding: var(--s-4) var(--s-4) var(--s-4) 0;
	border-right: 1px solid rgba(255, 255, 255, 0.12);
	color: #fff;
	transition: background 0.2s var(--ease);
}

.walsay-hero__entry:last-child {
	border-right: 0;
	padding-right: 0;
}

.walsay-hero__entry:not(:first-child) {
	padding-left: var(--s-4);
}

.walsay-hero__entry:hover {
	background: rgba(226, 0, 26, 0.12);
}

.walsay-hero__entry-icon {
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	border: 1px solid rgba(255, 255, 255, 0.2);
	color: var(--c-accent);
	flex: none;
}

.walsay-hero__entry-body {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.walsay-hero__entry-no {
	font-family: var(--mono);
	font-size: 10px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.5);
}

.walsay-hero__entry-title {
	font-size: 15.5px;
	font-weight: 600;
}

.walsay-hero__entry-arrow {
	margin-inline-start: auto;
	color: rgba(255, 255, 255, 0.5);
	transition: transform 0.2s var(--ease), color 0.2s var(--ease);
}

.walsay-hero__entry:hover .walsay-hero__entry-arrow {
	color: var(--c-accent);
	transform: translateX(4px);
}

/* ---------- trust strip ---------- */

.walsay-trust {
	background: var(--c-ink-2);
	color: rgba(255, 255, 255, 0.7);
	padding-block: var(--s-4);
}

.walsay-trust .walsay-marks li {
	background: transparent;
	border-color: rgba(255, 255, 255, 0.16);
	color: rgba(255, 255, 255, 0.62);
}

/* ---------- intro ---------- */

.walsay-intro {
	padding-block: var(--band);
	border-bottom: 1px solid var(--c-line);
}

.walsay-intro__grid {
	display: grid;
	grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
	gap: clamp(28px, 5vw, 72px);
	align-items: stretch;
}

.walsay-intro__media {
	position: relative;
	height: var(--media-h);
}

/* The photograph fills whatever height the text column asks for, so the band
   ends where the copy ends instead of leaving a hole under the image. */
.walsay-intro__media img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: saturate(0.92);
}

.walsay-intro__badge {
	position: absolute;
	right: calc(-1 * var(--s-3));
	bottom: var(--s-4);
	display: flex;
	align-items: center;
	gap: 10px;
	max-width: 268px;
	padding: var(--s-3);
	background: var(--c-surface);
	border: 1px solid var(--c-line);
	border-left: 2px solid var(--c-accent);
	box-shadow: var(--shadow-2);
	font-family: var(--mono);
	font-size: 10.5px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	line-height: 1.5;
}

.walsay-intro__badge .walsay-icon {
	color: var(--c-accent);
}

.walsay-checklist {
	margin: var(--s-5) 0;
	padding: 0;
	list-style: none;
	border-top: 1px solid var(--c-line);
}

.walsay-checklist__item {
	display: grid;
	grid-template-columns: 34px auto 1fr;
	align-items: start;
	gap: var(--s-3);
	padding: var(--s-3) 0;
	border-bottom: 1px solid var(--c-line);
}

.walsay-checklist__icon {
	display: grid;
	place-items: center;
	width: 34px;
	height: 34px;
	border: 1px solid var(--c-line-strong);
	color: var(--c-accent);
}

.walsay-checklist__no {
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.1em;
	color: var(--c-muted);
	padding-top: 9px;
}

.walsay-checklist__body {
	display: flex;
	flex-direction: column;
}

.walsay-checklist__body strong {
	font-size: 15.5px;
}

.walsay-checklist__body span {
	font-size: var(--t-small);
	color: var(--c-copy);
	line-height: 1.62;
}

/* ---------- capabilities ---------- */

.walsay-capabilities {
	background: var(--c-paper);
}

.walsay-capabilities__list {
	display: grid;
	gap: var(--s-6);
}

.walsay-group {
	display: grid;
	grid-template-columns: minmax(0, 0.82fr) minmax(0, 1.18fr);
	gap: clamp(20px, 3vw, 44px);
	align-items: start;
}

/* One row per group: marker, titles, thumbnail — then a compact item strip.
   Pairing a large image with a short card grid left a hole on either side. */
.walsay-group__head {
	display: grid;
	grid-template-columns: 46px minmax(0, 1fr) 260px;
	align-items: center;
	gap: var(--s-4);
	padding-bottom: var(--s-3);
	border-bottom: 1px solid var(--c-line);
}

.walsay-group__icon {
	display: grid;
	place-items: center;
	width: 46px;
	height: 46px;
	background: var(--c-ink);
	color: #fff;
}

.walsay-group__titles {
	grid-column: 2;
}

.walsay-group__eyebrow {
	margin: 0 0 4px;
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.16em;
	color: var(--c-accent);
}

.walsay-group__name {
	margin: 0 0 var(--s-2);
	font-size: var(--t-h3);
}

.walsay-group__name a {
	border-bottom: 1px solid transparent;
}

.walsay-group__name a:hover {
	color: var(--c-accent);
	border-bottom-color: currentColor;
}

.walsay-group__note {
	margin: 0;
	font-size: var(--t-small);
	color: var(--c-copy);
	max-width: 44ch;
}

.walsay-group__media {
	grid-column: 3;
	overflow: hidden;
	border: 1px solid var(--c-line);
}

.walsay-group__media img {
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	filter: saturate(0.9) contrast(1.02);
	transition: transform 0.5s var(--ease);
}

.walsay-group:hover .walsay-group__media img {
	transform: scale(1.03);
}

.walsay-group__items {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 1px;
	background: var(--c-line);
	border: 1px solid var(--c-line);
	border-top: 0;
	margin: 0;
	padding: 0;
	list-style: none;
}

.walsay-item {
	position: relative;
	background: var(--c-surface);
	margin: 0;
	transition: background 0.18s var(--ease);
}

.walsay-item:hover {
	background: var(--c-surface);
}

.walsay-item__link {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: var(--s-4);
	height: 100%;
}

.walsay-item__title {
	font-size: 15.5px;
	font-weight: 700;
	letter-spacing: -0.01em;
	padding-right: 26px;
}

.walsay-item:hover .walsay-item__title {
	color: var(--c-accent);
}

.walsay-item__text {
	font-size: var(--t-small);
	line-height: 1.62;
	color: var(--c-copy);
}

.walsay-item__tags {
	margin-top: var(--s-2);
	padding-top: 0;
}

.walsay-item__go {
	position: absolute;
	right: var(--s-3);
	top: var(--s-4);
	color: var(--c-line-strong);
	transition: transform 0.2s var(--ease), color 0.2s var(--ease);
}

.walsay-item:hover .walsay-item__go {
	color: var(--c-accent);
	transform: translateX(3px);
}

/* ---------- path ---------- */

.walsay-path__list {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: clamp(16px, 2vw, 32px);
	margin: 0;
	padding: 0;
	list-style: none;
	counter-reset: step;
}

.walsay-step {
	position: relative;
	padding-top: var(--s-5);
	border-top: 1px solid var(--c-line-strong);
}

.walsay-step__rail {
	position: absolute;
	top: -1px;
	left: 0;
	width: 0;
	height: 2px;
	background: var(--c-accent);
	transition: width 0.45s var(--ease);
}

.walsay-step:hover .walsay-step__rail {
	width: 100%;
}

.walsay-step__icon {
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	border: 1px solid var(--c-line-strong);
	color: var(--c-accent);
	margin-bottom: var(--s-3);
}

.walsay-step__no {
	position: absolute;
	top: var(--s-4);
	right: 0;
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.1em;
	color: var(--c-muted);
}

.walsay-step__title {
	font-size: 16.5px;
	margin-bottom: 6px;
}

.walsay-step__text {
	font-size: var(--t-small);
	color: var(--c-copy);
	line-height: 1.62;
	margin: 0;
}

/* ---------- industries ---------- */

.walsay-industries {
	padding-block: var(--s-7);
	border-bottom: 1px solid var(--c-line);
}

.walsay-industries__head {
	margin-bottom: var(--s-4);
}

.walsay-industries__list {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 1px;
	background: var(--c-line);
	border: 1px solid var(--c-line);
	margin: 0;
	padding: 0;
	list-style: none;
}

.walsay-industry {
	display: flex;
	gap: var(--s-3);
	padding: var(--s-4);
	background: var(--c-surface);
	transition: background 0.18s var(--ease);
}

.walsay-industry:hover {
	background: var(--c-paper);
}

.walsay-industry__icon {
	display: grid;
	place-items: center;
	width: 38px;
	height: 38px;
	flex: none;
	background: var(--c-ink);
	color: #fff;
}

.walsay-industry:hover .walsay-industry__icon {
	background: var(--c-accent);
}

.walsay-industry__body {
	display: flex;
	flex-direction: column;
	gap: 3px;
}

.walsay-industry__body strong {
	font-size: 15px;
}

.walsay-industry__body span {
	font-size: var(--t-small);
	color: var(--c-copy);
	line-height: 1.6;
}

/* ---------- labs ---------- */

.walsay-labs__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--grid-gap);
}

.walsay-labcard {
	background: var(--c-ink-2);
	border: 1px solid rgba(255, 255, 255, 0.1);
	display: flex;
	flex-direction: column;
	transition: border-color 0.2s var(--ease), transform 0.2s var(--ease);
}

.walsay-labcard:hover {
	border-color: rgba(255, 255, 255, 0.26);
	transform: translateY(-3px);
}

.walsay-labcard__media {
	position: relative;
	overflow: hidden;
}

.walsay-labcard__media img {
	width: 100%;
	aspect-ratio: 16 / 10;
	object-fit: cover;
	filter: grayscale(0.34) brightness(0.82);
	transition: filter 0.35s var(--ease), transform 0.5s var(--ease);
}

.walsay-labcard:hover .walsay-labcard__media img {
	filter: grayscale(0) brightness(0.96);
	transform: scale(1.04);
}

.walsay-labcard__icon {
	position: absolute;
	left: var(--s-3);
	bottom: var(--s-3);
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	background: rgba(18, 22, 28, 0.86);
	border: 1px solid rgba(255, 255, 255, 0.2);
	color: #fff;
}

.walsay-labcard__body {
	padding: var(--s-4);
	display: flex;
	flex-direction: column;
	flex: 1;
}

.walsay-labcard__eyebrow {
	margin: 0 0 6px;
	font-family: var(--mono);
	font-size: 10px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--c-accent);
}

.walsay-labcard__title {
	margin: 0 0 var(--s-2);
	font-size: 17px;
}

.walsay-labcard__title a {
	color: #fff;
}

.walsay-labcard__title a:hover {
	color: var(--c-accent);
}

.walsay-labcard__text {
	margin: 0 0 var(--s-3);
	font-size: var(--t-small);
	line-height: 1.64;
	color: rgba(255, 255, 255, 0.62);
	flex: 1;
}

/* ---------- faq ---------- */

.walsay-faq {
	background: var(--c-paper);
}

.walsay-faq__grid {
	display: grid;
	grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
	gap: clamp(28px, 5vw, 64px);
	align-items: start;
}

.walsay-accordion {
	border-top: 1px solid var(--c-line-strong);
}

.walsay-accordion__item {
	border-bottom: 1px solid var(--c-line-strong);
}

.walsay-accordion__summary {
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	gap: var(--s-3);
	padding: var(--s-3) 34px var(--s-3) 0;
	font-size: 16px;
	font-weight: 600;
	cursor: pointer;
	list-style: none;
	position: relative;
}

.walsay-accordion__summary::-webkit-details-marker {
	display: none;
}

.walsay-accordion__summary::after {
	content: "+";
	position: absolute;
	right: 4px;
	font-family: var(--mono);
	font-size: 18px;
	color: var(--c-accent);
}

.walsay-accordion__item[open] .walsay-accordion__summary::after {
	content: "–";
}

.walsay-accordion__no {
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.1em;
	color: var(--c-muted);
}

.walsay-accordion__body {
	padding: 0 0 var(--s-4) calc(var(--t-micro) * 3.2);
	color: var(--c-copy);
	font-size: var(--t-small);
	line-height: 1.72;
	max-width: 66ch;
}

/* ---------- insights ---------- */

.walsay-insights__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--grid-gap);
}

.walsay-postcard {
	border: 1px solid var(--c-line);
	background: var(--c-surface);
	display: flex;
	flex-direction: column;
	transition: border-color 0.2s var(--ease), box-shadow 0.2s var(--ease);
}

.walsay-postcard:hover {
	border-color: var(--c-ink);
	box-shadow: var(--shadow-2);
}

.walsay-postcard__media {
	display: block;
	overflow: hidden;
	border-bottom: 1px solid var(--c-line);
}

.walsay-postcard__media img {
	width: 100%;
	aspect-ratio: 16 / 10;
	object-fit: cover;
}

.walsay-postcard__media--empty {
	display: grid;
	place-items: center;
	aspect-ratio: 16 / 10;
	background: var(--c-paper);
	color: var(--c-line-strong);
}

.walsay-postcard__body {
	padding: var(--s-4);
	display: flex;
	flex-direction: column;
	flex: 1;
}

.walsay-postcard__meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 4px;
	margin: 0 0 var(--s-2);
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--c-muted);
}

.walsay-postcard__title {
	margin: 0 0 var(--s-2);
	font-size: 17px;
}

.walsay-postcard__title a {
	color: var(--c-ink);
}

.walsay-postcard__title a:hover {
	color: var(--c-accent);
}

.walsay-postcard__text {
	margin: 0 0 var(--s-3);
	font-size: var(--t-small);
	color: var(--c-copy);
	flex: 1;
}

.walsay-postcard__link {
	align-self: flex-start;
	font-size: var(--t-small);
	font-weight: 600;
	color: var(--c-accent);
}

/* ---------- cta ---------- */

.walsay-cta {
	position: relative;
	overflow: hidden;
	color: #fff;
	background: var(--c-navy);
}

.walsay-cta__media {
	position: absolute;
	inset: 0;
}

.walsay-cta__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: 0.34;
}

.walsay-cta__scrim {
	position: absolute;
	inset: 0;
	background: linear-gradient(100deg, rgba(11, 27, 40, 0.96) 0%, rgba(11, 27, 40, 0.82) 58%, rgba(11, 27, 40, 0.5) 100%);
}

.walsay-cta__inner {
	position: relative;
	z-index: 2;
	display: grid;
	grid-template-columns: minmax(0, 1.25fr) minmax(0, 0.75fr);
	gap: clamp(24px, 4vw, 56px);
	align-items: center;
	padding-block: clamp(48px, 7vw, 88px);
}

.walsay-cta__title {
	margin: 0 0 var(--s-2);
	color: #fff;
	font-size: var(--t-h2);
	max-width: 22ch;
}

.walsay-cta__text {
	margin: 0;
	color: rgba(255, 255, 255, 0.74);
	max-width: 54ch;
	font-size: var(--t-lead);
}

.walsay-cta__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--s-2);
	margin: 0 0 var(--s-4);
}

.walsay-cta__contact {
	margin: 0;
	padding: var(--s-3) 0 0;
	list-style: none;
	border-top: 1px solid rgba(255, 255, 255, 0.16);
	font-size: var(--t-small);
}

.walsay-cta__contact li {
	display: flex;
	align-items: center;
	gap: 9px;
	padding: 5px 0;
	color: rgba(255, 255, 255, 0.7);
}

.walsay-cta__contact .walsay-icon {
	color: var(--c-accent);
}

.walsay-cta__contact a {
	color: rgba(255, 255, 255, 0.86);
}

.walsay-cta__contact a:hover {
	color: #fff;
}

.walsay-front__editable {
	background: var(--c-surface);
}

/* ---------- page header ---------- */

.walsay-pagehead {
	position: relative;
	padding: clamp(36px, 5vw, 68px) 0 clamp(30px, 4vw, 48px);
	background: var(--c-ink);
	color: rgba(255, 255, 255, 0.72);
	overflow: hidden;
}

.walsay-pagehead::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 2px;
	background: linear-gradient(90deg, var(--c-accent) 0, var(--c-accent) 96px, rgba(255, 255, 255, 0.12) 96px);
}

.walsay-pagehead__title {
	margin: 0;
	color: #fff;
	font-size: clamp(28px, 4vw, 48px);
	max-width: 24ch;
}

.walsay-pagehead__text {
	margin: var(--s-3) 0 0;
	max-width: 68ch;
	font-size: var(--t-lead);
	color: rgba(255, 255, 255, 0.68);
}

.walsay-breadcrumb ol {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin: 0 0 var(--s-3);
	padding: 0;
	list-style: none;
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.42);
}

.walsay-breadcrumb a {
	color: rgba(255, 255, 255, 0.56);
}

.walsay-breadcrumb a:hover {
	color: #fff;
}

.walsay-breadcrumb__sep {
	color: rgba(255, 255, 255, 0.24);
}

/* ---------- archive, single, page ---------- */

.walsay-archive {
	padding-block: var(--band);
}

.walsay-archive .walsay-band {
	padding: 0;
	border: 0;
	background: none;
}

.walsay-grid {
	display: grid;
	gap: var(--grid-gap);
}

.walsay-grid--three {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.walsay-card {
	display: flex;
	flex-direction: column;
	background: var(--c-surface);
	border: 1px solid var(--c-line);
	transition: border-color 0.2s var(--ease), transform 0.2s var(--ease), box-shadow 0.2s var(--ease);
}

.walsay-card:hover {
	border-color: var(--c-ink);
	transform: translateY(-3px);
	box-shadow: var(--shadow-2);
}

.walsay-card__media {
	overflow: hidden;
	border-bottom: 1px solid var(--c-line);
}

.walsay-card__media-img {
	width: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
}

.walsay-card__body {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding: var(--s-4);
}

.walsay-card__title {
	margin: 0 0 8px;
	font-size: 17px;
}

.walsay-card__text {
	margin: 0 0 var(--s-3);
	color: var(--c-copy);
	font-size: var(--t-small);
	flex: 1;
}

.walsay-card__link {
	align-self: flex-start;
	font-size: var(--t-small);
	font-weight: 600;
	color: var(--c-accent);
}

.walsay-single {
	display: grid;
	grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr);
	gap: clamp(28px, 5vw, 64px);
	padding-block: var(--band);
}

.walsay-page {
	padding-block: var(--band);
}

.walsay-single__media {
	margin: 0 0 var(--s-5);
	border: 1px solid var(--c-line);
}

.walsay-single__media img {
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

.walsay-single__meta {
	margin-top: var(--s-5);
	padding-top: var(--s-3);
	border-top: 1px solid var(--c-line);
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--c-muted);
}

.walsay-single__tags {
	margin-top: var(--s-4);
}

.walsay-aside-card {
	padding: var(--s-4);
	border: 1px solid var(--c-line);
	margin-bottom: var(--grid-gap);
}

.walsay-aside-card--accent {
	background: var(--c-paper);
	border-color: var(--c-line-strong);
	border-top: 2px solid var(--c-accent);
}

.walsay-aside-card__title {
	margin: 0 0 var(--s-3);
	font-size: 12px;
	font-family: var(--mono);
	letter-spacing: 0.14em;
	text-transform: uppercase;
	font-weight: 600;
}

.walsay-aside-list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.walsay-aside-list li {
	padding: 9px 0;
	border-bottom: 1px solid var(--c-line);
	font-size: var(--t-small);
}

.walsay-aside-list li:last-child {
	border-bottom: 0;
}

/* ---------- entry content ---------- */

.walsay-entry {
	max-width: 74ch;
}

.walsay-entry > *:last-child {
	margin-bottom: 0;
}

.walsay-entry h2 {
	margin-top: 1.6em;
	font-size: clamp(22px, 2.4vw, 28px);
}

.walsay-entry h3 {
	margin-top: 1.4em;
	font-size: clamp(18px, 1.8vw, 21px);
}

.walsay-entry h4 {
	margin-top: 1.2em;
	font-size: 17px;
}

.walsay-entry a {
	color: var(--c-accent);
	background-image: linear-gradient(currentColor, currentColor);
	background-repeat: no-repeat;
	background-size: 100% 1px;
	background-position: 0 100%;
}

.walsay-entry a:hover {
	color: var(--c-accent-dark);
}

.walsay-entry ul,
.walsay-entry ol {
	color: var(--c-copy);
}

.walsay-entry li + li {
	margin-top: 0.35em;
}

.walsay-entry blockquote {
	margin: 1.6em 0;
	padding: 4px 0 4px 20px;
	border-left: 2px solid var(--c-accent);
	color: var(--c-copy);
	font-size: var(--t-lead);
}

.walsay-entry .wp-block-columns {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: var(--grid-gap);
}

.walsay-entry .wp-block-column > *:last-child {
	margin-bottom: 0;
}

.walsay-entry .alignwide {
	max-width: none;
}

.walsay-entry .alignleft {
	float: left;
	margin: 0.35em 1.4em 1em 0;
}

.walsay-entry .alignright {
	float: right;
	margin: 0.35em 0 1em 1.4em;
}

.walsay-entry .aligncenter {
	margin-inline: auto;
	margin-block: 1.6em;
}

.walsay-entry .wp-block-button__link {
	display: inline-block;
	padding: 14px 24px;
	background: var(--c-accent);
	color: #fff;
	font-size: 14px;
	font-weight: 600;
}

.walsay-entry .wp-block-button__link:hover {
	background: var(--c-accent-dark);
	color: #fff;
}

.walsay-pagination {
	margin-top: var(--s-6);
}

.walsay-pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.walsay-pagination .page-numbers {
	display: inline-block;
	padding: 9px 15px;
	border: 1px solid var(--c-line);
	font-size: var(--t-small);
}

.walsay-pagination .current {
	background: var(--c-ink);
	border-color: var(--c-ink);
	color: #fff;
}

.walsay-pagination .page-numbers:not(.current):hover {
	border-color: var(--c-ink);
}

/* ---------- comments ---------- */

.walsay-comments {
	margin-top: var(--s-6);
	padding-top: var(--s-5);
	border-top: 1px solid var(--c-line);
}

.walsay-comments__title {
	font-size: 18px;
}

.walsay-comment-list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.walsay-comment-list .comment {
	padding: var(--s-3) 0;
	border-bottom: 1px solid var(--c-line);
}

.walsay-comment-list .children {
	margin-left: var(--s-5);
	padding: 0;
	list-style: none;
}

.walsay-comment__author {
	font-size: 15px;
	font-weight: 600;
}

.walsay-comment__time {
	font-family: var(--mono);
	font-size: var(--t-micro);
	color: var(--c-muted);
}

.walsay-comment__body {
	margin-top: 6px;
	font-size: var(--t-small);
	color: var(--c-copy);
}

.walsay-respond {
	margin-top: var(--s-5);
}

.walsay-respond textarea,
.walsay-respond input[type="text"],
.walsay-respond input[type="email"],
.walsay-respond input[type="url"] {
	width: 100%;
	padding: 12px 14px;
	font: inherit;
	font-size: 15px;
	border: 1px solid var(--c-line-strong);
	margin-bottom: var(--s-3);
}

.walsay-respond label {
	display: block;
	font-size: var(--t-small);
	font-weight: 600;
	margin-bottom: 6px;
}

/* ---------- forms ---------- */

.walsay-formpage {
	display: grid;
	grid-template-columns: minmax(0, 1.55fr) minmax(280px, 1fr);
	gap: clamp(28px, 5vw, 64px);
	padding-block: var(--band);
}

.walsay-form__heading {
	font-size: 19px;
	padding-bottom: var(--s-2);
	border-bottom: 2px solid var(--c-ink);
}

.walsay-form__intro {
	color: var(--c-muted);
	font-size: var(--t-small);
}

.walsay-form__notice {
	padding: var(--s-3);
	border: 1px solid var(--c-line);
	font-size: var(--t-small);
}

.walsay-form__notice--success {
	border-color: var(--c-eco);
	border-left-width: 2px;
	background: #f0fdf4;
	color: #14532d;
}

.walsay-form__notice--error {
	border-color: var(--c-accent);
	border-left-width: 2px;
	background: var(--c-accent-soft);
	color: var(--c-accent-dark);
}

.walsay-form__grid {
	display: grid;
	grid-template-columns: repeat(6, minmax(0, 1fr));
	gap: var(--grid-gap);
}

.walsay-field {
	display: flex;
	flex-direction: column;
	gap: 6px;
	grid-column: span 3;
}

.walsay-field--full {
	grid-column: 1 / -1;
}

.walsay-field--third {
	grid-column: span 2;
}

.walsay-field label {
	font-size: var(--t-small);
	font-weight: 600;
}

.walsay-field__req {
	color: var(--c-accent);
}

.walsay-field input,
.walsay-field textarea,
.walsay-field select {
	width: 100%;
	padding: 12px 14px;
	font: inherit;
	font-size: 15px;
	color: var(--c-ink);
	background: var(--c-surface);
	border: 1px solid var(--c-line-strong);
	transition: border-color 0.18s var(--ease), box-shadow 0.18s var(--ease);
}

.walsay-field input:focus,
.walsay-field textarea:focus,
.walsay-field select:focus {
	outline: 0;
	border-color: var(--c-accent);
	box-shadow: inset 0 -2px 0 var(--c-accent);
}

.walsay-field__hint {
	font-size: 12px;
	color: var(--c-muted);
}

.walsay-form__trap {
	position: absolute;
	left: -9999px;
	margin: 0;
}

.walsay-form__privacy {
	margin: var(--s-4) 0 var(--s-3);
	font-size: 12.5px;
	color: var(--c-muted);
	max-width: 66ch;
}

.walsay-form__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--s-3);
	margin: 0;
}

.walsay-form__alt {
	font-size: var(--t-small);
	color: var(--c-muted);
}

.walsay-formaside__block {
	padding: var(--s-4);
	border: 1px solid var(--c-line);
	margin-bottom: var(--grid-gap);
}

.walsay-formaside__block--contact {
	background: var(--c-paper);
	border-top: 2px solid var(--c-accent);
}

.walsay-formaside__company {
	font-weight: 600;
	font-size: 15px;
}

.walsay-formaside .walsay-checklist__item {
	grid-template-columns: 1fr;
	gap: 2px;
}

.walsay-formaside .walsay-checklist__icon,
.walsay-formaside .walsay-checklist__no {
	display: none;
}

.walsay-contactlist {
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: var(--t-small);
}

.walsay-contactlist li {
	padding: 8px 0;
	border-bottom: 1px solid var(--c-line);
}

.walsay-contactlist li:last-child {
	border-bottom: 0;
}

.walsay-contactlist__address {
	color: var(--c-copy);
	line-height: 1.6;
}

.walsay-contactcards {
	padding-bottom: var(--band);
}

/* ---------- search ---------- */

.walsay-searchform {
	margin: 0 0 var(--s-6);
	max-width: 560px;
}

.walsay-searchform__label {
	display: block;
	font-size: var(--t-small);
	font-weight: 600;
	margin-bottom: 8px;
}

.walsay-searchform__row {
	display: flex;
	gap: 8px;
}

.walsay-searchform__input {
	flex: 1;
	padding: 12px 14px;
	font: inherit;
	font-size: 15px;
	border: 1px solid var(--c-line-strong);
}

.walsay-empty {
	color: var(--c-muted);
}

/* ---------- footer ---------- */

.walsay-site-footer {
	background: var(--c-ink);
	color: rgba(255, 255, 255, 0.66);
	font-size: var(--t-small);
}

.walsay-site-footer__band {
	padding: clamp(46px, 5vw, 70px) 0 var(--s-6);
}

.walsay-site-footer__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(0, 2fr);
	gap: clamp(28px, 4.4vw, 64px);
}

.walsay-footer-title {
	margin: 0 0 4px;
	color: #fff;
	font-size: 17px;
	font-weight: 700;
}

.walsay-footer-eyebrow {
	margin: 0 0 var(--s-3);
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--c-accent);
}

.walsay-footer-text {
	max-width: 44ch;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.6);
}

.walsay-footer-list {
	margin: var(--s-4) 0 0;
	padding: 0;
	list-style: none;
}

.walsay-footer-list li {
	display: flex;
	align-items: flex-start;
	gap: 9px;
	padding: 6px 0;
	border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.walsay-footer-list .walsay-icon {
	color: var(--c-accent);
	margin-top: 3px;
}

.walsay-site-footer a {
	color: rgba(255, 255, 255, 0.8);
}

.walsay-site-footer a:hover {
	color: var(--c-accent);
}

.walsay-site-footer__links {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--grid-gap);
}

.walsay-footer-menu,
.walsay-footer-col ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.walsay-footer-col__title,
.walsay-footer-menu > li > a {
	display: block;
	margin-bottom: var(--s-3);
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: #fff;
	font-weight: 600;
}

.walsay-footer-menu > li {
	margin-bottom: var(--s-5);
}

.walsay-footer-menu .sub-menu {
	margin: 0;
	padding: 0;
	list-style: none;
}

.walsay-footer-menu .sub-menu a,
.walsay-footer-col li {
	padding: 6px 0;
	color: rgba(255, 255, 255, 0.6);
}

.walsay-site-footer__legal {
	border-top: 1px solid rgba(255, 255, 255, 0.08);
	padding: var(--s-4) 0;
	font-size: 12.5px;
}

.walsay-site-footer__legal-inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: var(--s-2) var(--s-4);
	text-align: center;
}

.walsay-site-footer__legal p {
	margin: 0;
}

.walsay-footer-en {
	color: rgba(255, 255, 255, 0.34);
	font-family: var(--mono);
	font-size: 11px;
	letter-spacing: 0.06em;
}

/* Registered address on the copyright line: same row, visually secondary. */
.walsay-footer-addr {
	display: inline-block;
	margin-inline-start: 10px;
	padding-inline-start: 10px;
	border-left: 1px solid rgba(255, 255, 255, 0.14);
	color: rgba(255, 255, 255, 0.44);
}

.walsay-site-footer__filings a {
	margin-inline-end: var(--s-3);
	color: rgba(255, 255, 255, 0.5);
}

/* ---------- responsive ---------- */

@media (max-width: 1200px) {
	.walsay-hero__inner {
		grid-template-columns: minmax(0, 1fr);
	}

	.walsay-hero__panel {
		max-width: 460px;
	}

	.walsay-group {
		grid-template-columns: minmax(0, 1fr);
	}

	.walsay-group__head {
		grid-template-columns: 46px minmax(0, 1fr);
	}

	.walsay-group__media {
		display: none;
	}

	.walsay-group__items {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* Keep the bar from colliding with the call-to-action on mid-width screens. */
@media (max-width: 1340px) {
	.walsay-menu a {
		padding: 11px 9px;
		font-size: 13.5px;
	}

	.walsay-headerbar__actions .walsay-btn {
		padding: 12px 16px;
		font-size: 13px;
	}

	.walsay-brand__text small {
		display: none;
	}
}

@media (max-width: 1120px) {
	.walsay-menu a {
		padding: 11px 7px;
		font-size: 13px;
	}

	.walsay-headerbar__inner {
		gap: var(--s-2);
	}
}

@media (max-width: 980px) {
	.walsay-labs__grid,
	.walsay-insights__grid,
	.walsay-grid--three {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.walsay-path__list,
	.walsay-industries__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.walsay-intro__grid,
	.walsay-single,
	.walsay-formpage,
	.walsay-faq__grid,
	.walsay-site-footer__grid,
	.walsay-cta__inner {
		grid-template-columns: minmax(0, 1fr);
	}

	.walsay-intro__media {
		order: -1;
	}

	.walsay-intro__badge {
		right: var(--s-3);
	}

	.walsay-site-footer__links {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.walsay-hero__foot-inner {
		grid-template-columns: minmax(0, 1fr);
	}

	.walsay-hero__entry {
		border-right: 0;
		border-bottom: 1px solid rgba(255, 255, 255, 0.12);
		padding-left: 0 !important;
	}

	.walsay-hero__entry:last-child {
		border-bottom: 0;
	}
}

@media (max-width: 860px) {
	.walsay-navtoggle {
		display: inline-flex;
	}

	.walsay-nav {
		position: absolute;
		inset-inline: 0;
		top: 100%;
		background: var(--c-surface);
		border-bottom: 1px solid var(--c-line);
		max-height: 0;
		overflow: hidden;
		transition: max-height 0.26s var(--ease);
		margin: 0;
	}

	.walsay-nav.is-open {
		max-height: 76vh;
		overflow-y: auto;
	}

	.walsay-menu {
		flex-direction: column;
		align-items: stretch;
		padding: var(--s-2) 0 var(--s-4);
	}

	.walsay-menu > li > a::after {
		display: none;
	}

	.walsay-menu .sub-menu,
		.walsay-menu li.is-open > .sub-menu {
		display: block;
	}

	.walsay-menu a {
		padding: 12px var(--gutter);
		font-size: 15px;
	}

	.walsay-headerbar__inner {
		position: relative;
		flex-wrap: wrap;
		min-height: 72px;
		padding-block: var(--s-2);
	}

	.walsay-headerbar__actions {
		display: none;
	}

	.walsay-utility__item--addr,
	.walsay-utility__hint {
		display: none;
	}

	.walsay-group__items {
		grid-template-columns: minmax(0, 1fr);
	}

	.walsay-group__head {
		grid-template-columns: 40px minmax(0, 1fr);
		gap: var(--s-3);
	}
}

@media (max-width: 620px) {
	:root {
		--band: 52px;
	}

	.walsay-labs__grid,
	.walsay-insights__grid,
	.walsay-grid--three,
	.walsay-path__list,
	.walsay-industries__list {
		grid-template-columns: minmax(0, 1fr);
	}

	.walsay-thead {
		grid-template-columns: minmax(0, 1fr);
	}

	.walsay-form__grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.walsay-field,
	.walsay-field--third {
		grid-column: auto;
	}

	.walsay-hero__inner {
		padding-block: var(--s-7) var(--s-6);
		min-height: 0;
	}

	.walsay-hero__actions .walsay-btn,
	.walsay-cta__actions .walsay-btn {
		flex: 1 1 100%;
	}

	.walsay-site-footer__links {
		grid-template-columns: minmax(0, 1fr);
	}

	.walsay-utility__inner {
		flex-direction: column;
		align-items: flex-start;
		gap: 4px;
		padding-block: var(--s-2);
		flex-wrap: wrap;
	}

	.walsay-utility__meta {
		gap: 4px 14px;
		font-size: 11.5px;
		width: 100%;
	}

	.walsay-utility__right {
		width: 100%;
		flex-wrap: wrap;
		gap: var(--s-2);
	}

	.walsay-portal {
		flex-wrap: wrap;
		gap: 6px;
	}

	.walsay-portal__btn {
		padding: 4px 9px;
		font-size: 11.5px;
	}

}

/* Nothing may push the page wider than the viewport. */
body {
	overflow-x: clip;
}

img,
video {
	max-width: 100%;
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
	}
}

@media print {
	.walsay-utility,
	.walsay-headerbar,
	.walsay-cta,
	.walsay-site-footer__links {
		display: none;
	}
}

/* ---------- motion layer ---------- */

.walsay-motion .will-reveal {
	opacity: 0;
	transform: translateY(22px);
	transition: opacity 0.6s var(--ease), transform 0.6s var(--ease);
	will-change: opacity, transform;
}

.walsay-motion .will-reveal.is-in {
	opacity: 1;
	transform: none;
}

.walsay-motion .walsay-hero__media img,
.walsay-slider__slide img {
	transition: transform 9s linear;
}

.walsay-progress {
	position: fixed;
	inset-inline: 0;
	top: 0;
	height: 2px;
	z-index: 90;
	pointer-events: none;
}

.walsay-progress__bar {
	height: 100%;
	background: var(--c-accent);
	transform: scaleX(0);
	transform-origin: left;
}

/* ---------- hero slider ---------- */

.walsay-slider,
.walsay-hero__scrim,
.walsay-hero__inner,
.walsay-hero__foot {
	position: relative;
	z-index: 2;
}

.walsay-slider {
	position: absolute;
	inset: 0;
	z-index: 0;
	overflow: hidden;
}

.walsay-slider__viewport {
	position: absolute;
	inset: 0;
}

.walsay-slider__slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity 1.1s var(--ease);
}

.walsay-slider__slide.is-active {
	opacity: 1;
}

.walsay-slider__slide img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 58%;
	transform: scale(1);
	/* The anechoic chamber shots are almost white; darken the frame itself so
	   the headline and the scheme panel sit on a genuinely dark ground. */
	filter: brightness(0.4) saturate(0.72) contrast(1.05);
}

.walsay-slider__slide.is-active img {
	transform: scale(1.06);
}

.walsay-slider__caption {
	position: absolute;
	left: var(--gutter);
	bottom: calc(var(--s-6) + 56px);
	padding: 5px 10px;
	background: rgba(9, 22, 32, 0.66);
	border-left: 2px solid var(--c-accent);
	font-family: var(--mono);
	font-size: 10.5px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.82);
}

.walsay-slider__ui {
	position: absolute;
	right: var(--gutter);
	bottom: var(--s-4);
	z-index: 4;
	display: flex;
	align-items: center;
	gap: var(--s-2);
}

.walsay-slider__arrow {
	display: grid;
	place-items: center;
	width: 38px;
	height: 38px;
	background: transparent;
	border: 1px solid rgba(255, 255, 255, 0.32);
	color: #fff;
	cursor: pointer;
	transition: background 0.18s var(--ease), border-color 0.18s var(--ease);
}

.walsay-slider__arrow:hover {
	background: var(--c-accent);
	border-color: var(--c-accent);
}

.walsay-icon--flip {
	transform: rotate(180deg);
}

.walsay-slider__dots {
	display: flex;
	align-items: center;
	gap: 6px;
}

.walsay-slider__dot {
	width: 26px;
	height: 2px;
	padding: 0;
	background: rgba(255, 255, 255, 0.32);
	border: 0;
	cursor: pointer;
	transition: background 0.2s var(--ease);
}

.walsay-slider__dot.is-active {
	background: var(--c-accent);
}

/* ---------- portal login group ---------- */

.walsay-portal {
	display: flex;
	align-items: center;
	gap: 10px;
	white-space: nowrap;
}

.walsay-portal__label {
	font-family: var(--mono);
	font-size: 10.5px;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.48);
	white-space: nowrap;
}

.walsay-portal__buttons {
	display: flex;
	gap: 4px;
	flex: none;
}

.walsay-portal__btn {
	padding: 5px 12px;
	border: 1px solid rgba(255, 255, 255, 0.24);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.02em;
	color: rgba(255, 255, 255, 0.86);
	white-space: nowrap;
	transition: background 0.18s var(--ease), border-color 0.18s var(--ease), color 0.18s var(--ease);
}

.walsay-portal__btn:hover {
	background: #fff;
	border-color: #fff;
	color: var(--c-ink);
}

.walsay-portal__btn--accent {
	background: var(--c-accent);
	border-color: var(--c-accent);
	color: #fff;
}

.walsay-portal__btn--accent:hover {
	background: var(--c-accent-dark);
	border-color: var(--c-accent-dark);
	color: #fff;
}

/* ---------- mega panel with media ---------- */

.walsay-subwrap {
	position: absolute;
	top: 100%;
	left: 0;
	display: none;
	grid-template-columns: minmax(0, 1fr) 240px;
	min-width: min(660px, 90vw);
	background: var(--c-surface);
	border: 1px solid var(--c-line);
	box-shadow: var(--shadow-2);
	z-index: 70;
}

.walsay-menu > li:hover > .walsay-subwrap,
.walsay-menu > li:focus-within > .walsay-subwrap {
	display: grid;
	animation: walsay-drop 0.2s var(--ease);
}

.walsay-subwrap > .sub-menu {
	position: static;
	display: block;
	border: 0;
	box-shadow: none;
	padding: var(--s-2) 0;
	min-width: 0;
	animation: none;
}

.walsay-mega__promo {
	display: block;
	position: relative;
	overflow: hidden;
	background: var(--c-ink);
	color: #fff;
}

.walsay-mega__promo img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: 0.42;
}

.walsay-mega__promo-body {
	position: relative;
	z-index: 2;
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: var(--s-4);
	min-height: 100%;
}

.walsay-mega__promo-eyebrow {
	font-family: var(--mono);
	font-size: 10px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--c-accent);
}

.walsay-mega__promo-text {
	font-size: 12.5px;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.78);
}

.walsay-mega__promo a {
	margin-top: auto;
	font-size: 12.5px;
	font-weight: 600;
	color: #fff;
}

.walsay-mega__promo a:hover {
	color: var(--c-accent);
}

/* ---------- accreditation marquee ---------- */

.walsay-marquee {
	position: relative;
	overflow: hidden;
	padding-block: var(--s-3);
	border-block: 1px solid rgba(255, 255, 255, 0.1);
	/* One group measures 4086px, so this holds the ticker near 49px per second.
	   Re-measure after the mark list changes or the speed drifts with the width. */
	--marquee-duration: 84s;
}

.walsay-marquee__track {
	display: flex;
	width: max-content;
	animation: walsay-marquee var(--marquee-duration) linear infinite;
}

/* Each item carries its own trailing gap rather than the row using `gap`, so
   one group is exactly half the track and translateX(-50%) loops seamlessly. */
.walsay-marquee__group {
	display: flex;
	flex: none;
}

.walsay-marquee:hover .walsay-marquee__track {
	animation-play-state: paused;
}

.walsay-marquee__track span {
	margin-inline-end: var(--s-5);
	font-family: var(--mono);
	font-size: 13px;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.42);
	white-space: nowrap;
}

@keyframes walsay-marquee {
	from {
		transform: translateX(0);
	}

	to {
		transform: translateX(-50%);
	}
}

/* ---------- card icon ---------- */

.walsay-card__icon {
	display: grid;
	place-items: center;
	width: 42px;
	height: 42px;
	margin-bottom: var(--s-3);
	background: var(--c-ink);
	color: #fff;
}

.walsay-card:hover .walsay-card__icon {
	background: var(--c-accent);
}

/* ---------- about band ---------- */

.walsay-about {
	padding-block: var(--band);
	background: var(--c-paper);
	border-bottom: 1px solid var(--c-line);
}

/* Mirror of the intro band: same rail ratio and gap, photograph on the right,
   so the two stacked bands alternate instead of repeating themselves. */
.walsay-about__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.08fr) minmax(0, 0.92fr);
	gap: clamp(28px, 5vw, 72px);
	align-items: stretch;
}

.walsay-about__media {
	position: relative;
	order: 2;
	overflow: hidden;
	height: var(--media-h);
}

.walsay-about__media img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.walsay-about__stats {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1px;
	margin-top: var(--s-5);
	background: var(--c-line);
	border: 1px solid var(--c-line);
}

.walsay-about__stat {
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: var(--s-3);
	background: var(--c-surface);
}

.walsay-about__stat b {
	font-size: 26px;
	line-height: 1;
	font-variant-numeric: tabular-nums;
}

.walsay-about__stat span {
	font-family: var(--mono);
	font-size: 10.5px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--c-muted);
}

@media (max-width: 980px) {
	.walsay-about__grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.walsay-slider__caption {
		display: none;
	}
}

@media (max-width: 860px) {
	.walsay-subwrap {
		position: static;
		display: none;
		grid-template-columns: minmax(0, 1fr);
		border: 0;
		border-left: 2px solid var(--c-line);
		box-shadow: none;
		opacity: 1;
		visibility: visible;
		transform: none;
		margin-left: 24px;
		min-width: 0;
		background: transparent;
	}

	.walsay-menu li.is-open > .walsay-subwrap {
		display: block;
	}

	.walsay-mega__promo {
		display: none;
	}

	.walsay-portal__label {
		display: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	.walsay-marquee__track {
		animation: none;
	}

	.walsay-slider__slide,
	.walsay-slider__slide img {
		transition: none;
	}

	.walsay-slider__slide.is-active img {
		transform: none;
	}
}

/* ---------- band tone map ----------
   One place decides what every full-width section sits on, so the page reads
   as a single rhythm instead of per-section choices:
   dark (hero + trust) → light → tint → light → tint → light → dark (labs)
   → light → tint → light → dark (cta) → dark (footer).
   Tint changes carry a hairline; tone changes to dark do not. */

.walsay-band {
	border-bottom: 0;
}

.walsay-hero,
.walsay-trust,
.walsay-cta,
.walsay-site-footer,
.walsay-band--ink,
.walsay-pagehead {
	background: var(--c-ink);
}

.walsay-hero {
	background: var(--c-navy);
}

.walsay-intro,
.walsay-capabilities,
.walsay-industries,
.walsay-markets,
.walsay-insights,
.walsay-archive,
.walsay-single,
.walsay-page,
.walsay-formpage,
.walsay-front__editable {
	background: var(--c-milk);
}

.walsay-about,
.walsay-path,
.walsay-faq,
.walsay-contactcards {
	background: var(--c-paper);
	border-bottom: 1px solid var(--c-line);
}

/* Sections that sit on the dark band must not inherit light borders. */
.walsay-trust,
.walsay-band--ink {
	border-bottom: 0;
}

.walsay-labs.walsay-band--ink {
	background: var(--c-ink);
}

/* The hero and the strip under it are one dark unit. */
.walsay-hero__foot {
	border-top-color: rgba(255, 255, 255, 0.1);
}

.walsay-trust {
	padding-block: var(--s-5);
}

.walsay-intro {
	border-top: 0;
}

/* ============================================================
   Refinement layer — the pass that decides how the site reads.
   Language-aware typography, one spacing discipline, and the
   detail work (rules, indices, hover states) on each component.
   ============================================================ */

:root {
	--rule: 1px solid var(--c-line);
	--rule-strong: 1px solid var(--c-line-strong);
	--head-track: -0.015em;
	--body-lh: 1.7;
	--body-leading: 1.68;
}

/* Chinese needs open tracking and a taller leading; Latin can stay tight. */
body.walsay-lang-zh {
	--head-track: 0.01em;
	--body-lh: 1.85;
}

body.walsay-lang-en {
	--head-track: -0.02em;
	--body-lh: 1.68;
}

body {
	line-height: var(--body-lh);
	font-variant-numeric: tabular-nums;
}

h1,
h2,
h3,
h4 {
	letter-spacing: var(--head-track);
	line-height: 1.22;
}

body.walsay-lang-en h1,
body.walsay-lang-en h2,
body.walsay-lang-en h3 {
	line-height: 1.12;
}

.walsay-hero__title {
	line-height: 1.16;
}

body.walsay-lang-en .walsay-hero__title {
	line-height: 1.04;
}

.walsay-lead,
.walsay-hero__text,
.walsay-pagehead__text {
	max-width: 46em;
}

/* ---------- section headers: numbered, ruled, one shape everywhere ---------- */

.walsay-thead {
	counter-reset: none;
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: var(--s-5);
	align-items: end;
	padding-bottom: var(--s-4);
	margin-bottom: var(--s-6);
	border-bottom: 0;
}

.walsay-thead::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 1px;
	background: var(--c-line-strong);
}

.walsay-thead::before {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 64px;
	height: 2px;
	background: var(--c-accent);
}

.walsay-thead__link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 9px 16px;
	border: var(--rule-strong);
	font-size: 13px;
	font-weight: 600;
	color: var(--c-ink);
	transition: background 0.18s var(--ease), border-color 0.18s var(--ease), color 0.18s var(--ease);
}

.walsay-thead__link:hover {
	background: var(--c-ink);
	border-color: var(--c-ink);
	color: #fff;
}

.walsay-band--ink .walsay-thead__link {
	border-color: rgba(255, 255, 255, 0.28);
	color: #fff;
}

.walsay-band--ink .walsay-thead__link:hover {
	background: #fff;
	color: var(--c-ink);
}

/* ---------- capability items ---------- */

.walsay-item__link {
	padding: var(--s-4) var(--s-4) var(--s-4);
	gap: 8px;
}

.walsay-item::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 0;
	height: 2px;
	background: var(--c-accent);
	transition: width 0.32s var(--ease);
	z-index: 2;
}

.walsay-item:hover::before {
	width: 100%;
}

.walsay-item__title {
	font-size: 15.5px;
	letter-spacing: 0;
}

.walsay-group__head {
	padding-bottom: var(--s-4);
	margin-bottom: 0;
}

.walsay-group__name {
	font-size: 19px;
}

.walsay-group__items {
	border-top: var(--rule);
}

/* ---------- path steps ---------- */

.walsay-step {
	padding-top: var(--s-5);
}

.walsay-step__icon {
	position: relative;
	transition: background 0.22s var(--ease), color 0.22s var(--ease), border-color 0.22s var(--ease);
}

.walsay-step:hover .walsay-step__icon {
	background: var(--c-accent);
	border-color: var(--c-accent);
	color: #fff;
}

.walsay-step__title {
	font-size: 16.5px;
	letter-spacing: 0;
}

/* ---------- lab cards on the dark band ---------- */

.walsay-labcard {
	position: relative;
	overflow: hidden;
}

.walsay-labcard::after {
	content: "";
	position: absolute;
	inset: 0;
	border: 1px solid transparent;
	transition: border-color 0.22s var(--ease);
	pointer-events: none;
}

.walsay-labcard:hover::after {
	border-color: rgba(226, 0, 26, 0.6);
}

.walsay-labcard__title {
	font-size: 17.5px;
	letter-spacing: 0;
}

.walsay-labcard__media img {
	filter: grayscale(0.5) brightness(0.68) contrast(1.06);
}

.walsay-labcard:hover .walsay-labcard__media img {
	filter: grayscale(0) brightness(0.92);
}

/* ---------- accordion ---------- */

.walsay-accordion__summary {
	font-size: 16.5px;
	letter-spacing: 0;
	transition: color 0.18s var(--ease);
}

.walsay-accordion__summary:hover {
	color: var(--c-accent);
}

.walsay-accordion__body {
	padding-left: 0;
	font-size: 15px;
	line-height: 1.85;
}

/* ---------- insight cards ---------- */

.walsay-postcard__title {
	letter-spacing: 0;
}

.walsay-postcard__media img {
	transition: transform 0.5s var(--ease);
}

.walsay-postcard:hover .walsay-postcard__media img {
	transform: scale(1.04);
}

/* ---------- page head ---------- */

.walsay-pagehead {
	padding: clamp(44px, 6vw, 84px) 0 clamp(36px, 5vw, 64px);
}

.walsay-pagehead__title {
	letter-spacing: var(--head-track);
}

.walsay-pagehead::after {
	background: linear-gradient(90deg, var(--c-accent) 0, var(--c-accent) 120px, rgba(255, 255, 255, 0.12) 120px);
}

/* ---------- archive listing chrome ---------- */

/* Equal-width cells rather than a wrapping pill row, so a long list of
   jurisdictions lines up into columns instead of a ragged run of chips. */
.walsay-filterbar {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(148px, 1fr));
	gap: 8px;
	padding-bottom: var(--s-4);
	margin-bottom: var(--s-6);
	border-bottom: var(--rule-strong);
}

.walsay-filterbar__label {
	grid-column: 1 / -1;
	margin: 0 0 2px;
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--c-muted);
}

.walsay-filterbar a {
	display: block;
	padding: 10px 12px;
	border: var(--rule-strong);
	border-radius: var(--radius-sm);
	font-size: 13.5px;
	font-weight: 600;
	text-align: center;
	color: var(--c-copy);
	transition: background 0.18s var(--ease), border-color 0.18s var(--ease), color 0.18s var(--ease);
}

.walsay-filterbar a:hover,
.walsay-filterbar a.is-current {
	background: var(--c-ink);
	border-color: var(--c-ink);
	color: #fff;
}

/* ---------- single article ---------- */

.walsay-single__aside {
	position: sticky;
	top: 110px;
	align-self: start;
}

.walsay-single__main .walsay-entry {
	font-size: 16.5px;
}

/* ---------- forms ---------- */

.walsay-form__heading {
	display: flex;
	align-items: baseline;
	gap: 10px;
	font-size: 19px;
	letter-spacing: 0;
	padding-bottom: var(--s-3);
}

.walsay-form__heading::before {
	content: "";
	width: 22px;
	height: 2px;
	background: var(--c-accent);
	flex: none;
}

.walsay-field label {
	font-family: var(--mono);
	font-size: 11px;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--c-copy);
}

.walsay-field input,
.walsay-field textarea,
.walsay-field select {
	padding: 13px 14px;
	border-color: var(--c-line-strong);
}

.walsay-field input:hover,
.walsay-field textarea:hover,
.walsay-field select:hover {
	border-color: var(--c-ink);
}

/* ---------- footer ---------- */

.walsay-footer-col__title,
.walsay-footer-menu > li > a {
	padding-bottom: var(--s-2);
	border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

/* ---------- small screens: keep the same discipline ---------- */

@media (max-width: 980px) {
	.walsay-single__aside {
		position: static;
	}

	.walsay-thead {
		grid-template-columns: minmax(0, 1fr);
		gap: var(--s-3);
	}
}

@media (max-width: 620px) {
	.walsay-item__link {
		padding: var(--s-3);
	}

	.walsay-step__no {
		position: static;
		display: block;
		margin-bottom: 4px;
	}
}

/* ============================================================
   Precision layer — the last 5 percent.
   Label typography follows the language actually on screen, the
   thin bands are rebuilt as dense indices, and every marker on
   the page shares one shape.
   ============================================================ */

/* Chinese never belongs in a monospace face: the fixed advance plus tracking
   stretches each glyph apart. Latin technical labels keep the mono look. */
body.walsay-lang-zh :is(
	.walsay-eyebrow,
	.walsay-about__stat span,
	.walsay-filterbar__label,
	.walsay-intro__badge,
	.walsay-footer-col__title,
	.walsay-footer-menu > li > a,
	.walsay-hero__panel-title
) {
	font-family: var(--font);
	letter-spacing: 0.14em;
	text-transform: none;
	font-weight: 600;
}

body.walsay-lang-zh .walsay-intro__badge {
	letter-spacing: 0.06em;
	font-weight: 500;
}

.walsay-chip--cjk,
.walsay-tag--cjk {
	font-family: var(--font);
	letter-spacing: 0.02em;
	text-transform: none;
	font-size: 12px;
	padding: 3px 9px;
}

/* Headlines break evenly instead of stranding one character on its own line. */
.walsay-h2,
.walsay-h3,
.walsay-hero__title,
.walsay-pagehead__title,
.walsay-cta__title {
	text-wrap: balance;
	word-break: normal;
}

/* Short card titles are the ones that strand a glyph, and Chinese may break
   anywhere unless told to keep lines even. */
.walsay-item__title,
.walsay-card__title,
.walsay-postcard__title,
.walsay-labcard__title,
.walsay-step__title,
.walsay-mcard__name {
	text-wrap: balance;
	word-break: keep-all;
	line-break: strict;
}

/* Chinese headings may break between any two glyphs, which can cut a word in
   half. Strict line breaking pushes the break onto the punctuation instead. */
body.walsay-lang-zh :is(.walsay-h2, .walsay-h3, .walsay-hero__title, .walsay-pagehead__title) {
	line-break: strict;
	word-break: normal;
}

/* The about heading is the one two-column title short enough to hold one line
   at desktop width, which reads better than splitting a word in half. */
@media (min-width: 1121px) {
	.walsay-about .walsay-h2 {
		font-size: 36px;
		max-width: none;
	}
}

/* ---------- one marker shape: dark chip carrying a light glyph ---------- */

.walsay-checklist__icon {
	background: var(--c-ink);
	border-color: var(--c-ink);
	color: #fff;
}

.walsay-step__icon {
	width: 44px;
	height: 44px;
	background: var(--c-ink);
	border-color: var(--c-ink);
	color: #fff;
}

.walsay-step:hover .walsay-step__icon {
	background: var(--c-accent);
	border-color: var(--c-accent);
}

.walsay-step__no {
	position: static;
	display: block;
	margin: 0 0 var(--s-3);
	font-size: 11px;
	color: var(--c-accent);
	letter-spacing: 0.18em;
}

/* ---------- industries: numbered index, not four loose boxes ---------- */

.walsay-industries__head {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: end;
	gap: var(--s-4);
	padding-bottom: var(--s-3);
	margin-bottom: 0;
	border-bottom: var(--rule-strong);
}

.walsay-industries__list {
	border-top: 0;
}

.walsay-industry {
	position: relative;
	display: grid;
	grid-template-columns: 44px minmax(0, 1fr);
	grid-template-rows: auto auto;
	column-gap: var(--s-3);
	padding: var(--s-5) var(--s-4) var(--s-4);
	overflow: hidden;
}

.walsay-industry::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 0;
	height: 2px;
	background: var(--c-accent);
	transition: width 0.32s var(--ease);
}

.walsay-industry:hover::before {
	width: 100%;
}

.walsay-industry__no {
	grid-column: 1;
	grid-row: 1;
	justify-self: start;
	margin-bottom: var(--s-3);
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.18em;
	color: var(--c-accent);
}

.walsay-industry__icon {
	grid-column: 1;
	grid-row: 2;
	width: 44px;
	height: 44px;
}

.walsay-industry__body {
	grid-column: 2;
	grid-row: 2;
	gap: 6px;
}

.walsay-industry__body strong {
	font-size: 16.5px;
}

/* ---------- markets: zoned matrix of jurisdictions ----------
   Grouped by continent and laid out as equal cells, so twenty-four
   jurisdictions read as a reference table instead of a long list. */

.walsay-mzone + .walsay-mzone {
	margin-top: var(--s-5);
}

.walsay-mzone__label {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0 0 var(--s-3);
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.16em;
	text-transform: uppercase;
	font-weight: 600;
	color: var(--c-muted);
}

.walsay-mzone__label::after {
	content: "";
	flex: 1;
	height: 1px;
	background: var(--c-line);
}

.walsay-mzone__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(238px, 1fr));
	/* --mzone-cols comes from the provider; auto-fill stays as the fallback. */
	overflow: hidden;
	border-top: 1px solid var(--c-line);
	border-left: 1px solid var(--c-line);
	border-radius: var(--radius);
	overflow: hidden;
}

@media (min-width: 1121px) {
	.walsay-mzone__grid {
		grid-template-columns: repeat( var( --mzone-cols, 5 ), minmax( 0, 1fr ) );
	}
}

.walsay-mcard {
	display: flex;
	flex-direction: column;
	gap: 10px;
	padding: var(--s-4);
	background: var(--c-surface);
	border-right: 1px solid var(--c-line);
	border-bottom: 1px solid var(--c-line);
	color: inherit;
	transition: background 0.18s var(--ease);
}

.walsay-mcard:hover {
	background: var(--c-paper);
}

.walsay-mcard__head {
	display: flex;
	align-items: center;
	gap: 10px;
}

.walsay-mcard__flag {
	width: 24px;
	height: 16px;
	flex: none;
	object-fit: cover;
	border: 1px solid var(--c-line-strong);
	border-radius: 2px;
	background: #fff;
}

.walsay-mcard__mark-icon {
	display: grid;
	place-items: center;
	width: 26px;
	height: 26px;
	flex: none;
	background: var(--c-ink);
	border-radius: var(--radius-sm);
	color: #fff;
}

.walsay-mcard__name {
	font-size: 16px;
	font-weight: 700;
	letter-spacing: 0;
}

.walsay-mcard:hover .walsay-mcard__name {
	color: var(--c-accent);
}

.walsay-mcard__marks {
	display: flex;
	flex-direction: column;
	gap: 5px;
}

.walsay-mcard__mark {
	position: relative;
	padding-left: 13px;
	font-size: var(--t-small);
	line-height: 1.5;
	color: var(--c-copy);
}

.walsay-mcard__mark::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.62em;
	width: 6px;
	height: 1px;
	background: var(--c-accent);
}

/* ---------- closing band: two columns that actually line up ---------- */

@media (min-width: 981px) {
	.walsay-cta__inner {
		align-items: center;
		grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
	}
}

.walsay-cta .walsay-eyebrow--light {
	color: var(--c-accent);
}

.walsay-cta__side {
	display: flex;
	flex-direction: column;
	gap: var(--s-4);
}

.walsay-cta__actions {
	margin: 0;
}

.walsay-cta__contact {
	padding-top: var(--s-4);
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 2px var(--s-4);
}

.walsay-cta__contact li {
	padding: 6px 0;
}

/* ---------- laboratory band: one tone across every photograph ---------- */

.walsay-labcard__media img {
	filter: grayscale(0.62) brightness(0.82) contrast(1.06);
}

.walsay-labcard__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(18, 43, 61, 0.18) 0%, rgba(18, 43, 61, 0.46) 100%);
	transition: opacity 0.35s var(--ease);
}

.walsay-labcard:hover .walsay-labcard__media::after {
	opacity: 0.35;
}

.walsay-labcard:hover .walsay-labcard__media img {
	filter: grayscale(0.1) brightness(0.98) contrast(1.02);
}

.walsay-labcard__icon {
	z-index: 2;
}

/* ---------- narrow screens ---------- */

@media (max-width: 980px) {
	.walsay-mzone__grid {
		grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
	}

	.walsay-industry {
		padding-top: var(--s-4);
	}

	.walsay-industries__head {
		grid-template-columns: minmax(0, 1fr);
		align-items: start;
		gap: var(--s-3);
	}

	.walsay-industries__head .walsay-thead__link {
		justify-self: start;
	}
}

@media (max-width: 780px) {
	.walsay-cta__contact {
		grid-template-columns: minmax(0, 1fr);
	}
}

@media (max-width: 620px) {
	.walsay-intro__media {
		min-height: 300px;
	}
}

/* ============================================================
   Radius layer — one corner language across the site.
   Full-bleed bands stay square on purpose: rounding a section
   that runs edge to edge only shows as a gap at the viewport.
   ============================================================ */

/* Cards, panels and every framed block. */
:is(
	.walsay-hero__panel,
	.walsay-intro__badge,
	.walsay-card,
	.walsay-postcard,
	.walsay-labcard,
	.walsay-aside-card,
	.walsay-aside-list,
	.walsay-formaside__block,
	.walsay-form__notice,
	.walsay-respond,
	.walsay-comments,
	.walsay-subwrap,
	.walsay-mega__promo,
	.walsay-contactcards,
	.walsay-single__media
) {
	border-radius: var(--radius);
}

/* Image frames clip their own corners so the photograph follows the radius. */
:is(
	.walsay-group__media,
	.walsay-about__media,
	.walsay-labcard__media,
	.walsay-postcard__media,
	.walsay-card__media,
	.walsay-single__media,
	.walsay-mega__promo
) {
	overflow: hidden;
	border-radius: var(--radius);
}

/* The intro frame carries a badge that deliberately overhangs the photograph,
   so it gets the radius on the image itself rather than clipping the box. */
.walsay-intro__media,
.walsay-intro__media img {
	border-radius: var(--radius);
}

/* Segmented grids: one radius on the wrapper. The 1px cell dividers keep
   their square corners and are simply clipped at the outer edge. */
:is(
	.walsay-group__items,
	.walsay-industries__list,
	.walsay-about__stats
) {
	overflow: hidden;
	border-radius: var(--radius);
}

/* Marker chips: the small squares that carry an icon. */
:is(
	.walsay-group__icon,
	.walsay-step__icon,
	.walsay-industry__icon,
	.walsay-labcard__icon,
	.walsay-card__icon,
	.walsay-checklist__icon,
	.walsay-hero__entry-icon,
	.walsay-mcard__mark-icon
) {
	border-radius: var(--radius-sm);
}

/* Controls: buttons, fields, chips, toggles. */
:is(
	.walsay-btn,
	.walsay-thead__link,
	.walsay-consult,
	.walsay-portal__btn,
	.walsay-navtoggle,
	.walsay-slider__arrow,
	.walsay-slider__caption,
	.walsay-langswitch,
	.walsay-langswitch button,
	.walsay-chip,
	.walsay-tag,
	.walsay-marks li,
	.walsay-filterbar,
	.walsay-filterbar a,
	.walsay-pagination a,
	.walsay-pagination span,
	.walsay-field input,
	.walsay-field select,
	.walsay-field textarea,
	.walsay-respond input,
	.walsay-respond textarea,
	.walsay-searchform__input
) {
	border-radius: var(--radius-sm);
}

/* Thin bars read as stadium shapes rather than rounded rectangles. */
:is(
	.walsay-slider__dot,
	.walsay-progress__bar,
	.walsay-step__rail,
	.walsay-item::before,
	.walsay-industry::before,
	.walsay-thead::before
) {
	border-radius: var(--radius-full);
}

/* ---------- front-end edit affordance ----------
   Only rendered for users who can edit the viewed post, so it never appears
   for a visitor and needs no styling on any public surface. */

.walsay-editlink {
	display: inline-flex;
	align-items: center;
	padding: 4px 10px;
	border: 1px dashed rgba(255, 255, 255, 0.34);
	border-radius: var(--radius-sm);
	font-size: 12px;
	letter-spacing: 0.02em;
	color: rgba(255, 255, 255, 0.72);
}

.walsay-editlink:hover {
	border-style: solid;
	border-color: var(--c-accent);
	color: #fff;
}

/* ============================================================
   Lookup desk — the inquiry page front door.
   The tabs are a real radio group rather than a scripted widget,
   so the page works the same with JavaScript turned off.
   ============================================================ */

.walsay-lookup {
	padding: clamp(22px, 2.4vw, 34px);
	margin-bottom: var(--s-6);
	background: var(--c-surface);
	border: 1px solid var(--c-line);
	border-radius: var(--radius);
}

.walsay-lookup__title {
	margin: 0 0 var(--s-4);
	font-size: var(--t-h3);
	letter-spacing: 0;
}

.walsay-lookup__tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 0;
	margin: 0 0 var(--s-4);
	padding: 0;
	border: 0;
}

.walsay-lookup__radio {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
}

.walsay-lookup__tab {
	padding: 10px 18px;
	border: 1px solid var(--c-line-strong);
	margin-inline-start: -1px;
	background: var(--c-paper);
	color: var(--c-copy);
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
	transition: background 0.18s var(--ease), color 0.18s var(--ease);
}

.walsay-lookup__tab:first-of-type {
	margin-inline-start: 0;
	border-start-start-radius: var(--radius-sm);
	border-end-start-radius: var(--radius-sm);
}

.walsay-lookup__tab:last-of-type {
	border-start-end-radius: var(--radius-sm);
	border-end-end-radius: var(--radius-sm);
}

.walsay-lookup__radio:checked + .walsay-lookup__tab {
	background: var(--c-ink);
	border-color: var(--c-ink);
	color: #fff;
}

/* Keyboard focus stays visible even though the input itself is parked. */
.walsay-lookup__radio:focus-visible + .walsay-lookup__tab {
	outline: 2px solid var(--c-accent);
	outline-offset: 2px;
}

.walsay-lookup__row {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto auto;
	align-items: center;
	gap: var(--s-2);
}

.walsay-lookup__label {
	font-family: var(--mono);
	font-size: var(--t-micro);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--c-muted);
}

.walsay-lookup__input {
	min-width: 0;
	padding: 12px 14px;
	background: var(--c-surface);
	border: 1px solid var(--c-line-strong);
	border-radius: var(--radius-sm);
	color: var(--c-ink);
	font-family: inherit;
	font-size: 15px;
}

.walsay-lookup__input:focus {
	border-color: var(--c-accent);
	outline: none;
}

.walsay-lookup__go,
.walsay-lookup__reset {
	white-space: nowrap;
}

.walsay-lookup__notice {
	margin: var(--s-4) 0 0;
	padding: var(--s-3);
	background: var(--c-paper);
	border-left: 2px solid var(--c-accent);
	border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
	font-size: var(--t-small);
	line-height: 1.7;
	color: var(--c-copy);
}

.walsay-lookup__notice--warn {
	border-left-color: var(--c-accent-dark);
}

.walsay-lookup__notes {
	margin: var(--s-4) 0 0;
	padding: var(--s-4) 0 0;
	border-top: 1px solid var(--c-line);
	list-style: none;
	counter-reset: note;
	columns: 2;
	column-gap: var(--s-5);
}

.walsay-lookup__notes li {
	break-inside: avoid;
	position: relative;
	padding: 5px 0 5px 26px;
	font-size: var(--t-small);
	line-height: 1.65;
	color: var(--c-muted);
}

.walsay-lookup__notes li::before {
	counter-increment: note;
	content: counter(note);
	position: absolute;
	left: 0;
	top: 5px;
	font-family: var(--mono);
	font-size: 10.5px;
	color: var(--c-accent);
}

@media (max-width: 980px) {
	.walsay-lookup__row {
		grid-template-columns: minmax(0, 1fr) auto;
	}

	.walsay-lookup__label {
		grid-column: 1 / -1;
	}

	.walsay-lookup__notes {
		columns: 1;
	}
}

@media (max-width: 620px) {
	.walsay-lookup__row {
		grid-template-columns: minmax(0, 1fr);
	}

	.walsay-lookup__go,
	.walsay-lookup__reset {
		width: 100%;
	}
}

/* ---------- back to top ----------
   An anchor first, a scripted widget second: with JavaScript off it stays
   visible and still jumps, so the control is never a dead button. */

.walsay-totop {
	position: fixed;
	right: clamp(14px, 2vw, 30px);
	bottom: clamp(14px, 3vw, 42px);
	z-index: 60;
	display: grid;
	place-items: center;
	gap: 1px;
	width: 52px;
	padding: 9px 0;
	background: var(--c-ink);
	border: 1px solid var(--c-ink);
	border-radius: var(--radius-sm);
	color: #fff;
	opacity: 0;
	visibility: hidden;
	transform: translateY(10px);
	transition: opacity 0.28s var(--ease), transform 0.28s var(--ease), background 0.18s var(--ease), border-color 0.18s var(--ease);
}

/* No script means no class to reveal it, so show it unconditionally. */
html:not(.walsay-totop-js) .walsay-totop {
	opacity: 1;
	visibility: visible;
	transform: none;
}

.walsay-totop.is-visible {
	opacity: 1;
	visibility: visible;
	transform: none;
}

.walsay-totop:hover {
	background: var(--c-accent);
	border-color: var(--c-accent);
}

.walsay-totop:focus-visible {
	outline: 2px solid var(--c-accent);
	outline-offset: 3px;
}

.walsay-icon--up {
	transform: rotate(-90deg);
}

.walsay-totop__text {
	font-family: var(--mono);
	font-size: 9px;
	letter-spacing: 0.1em;
	line-height: 1;
	color: rgba(255, 255, 255, 0.66);
}

@media (max-width: 620px) {
	.walsay-totop {
		width: 44px;
	}

	.walsay-totop__text {
		display: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	.walsay-totop {
		transition: none;
	}
}

/* ---------- knowledge panel: many jurisdictions, still one balanced box ----------
   The region list grew from six groups to eleven jurisdictions. A single
   column made that panel three times as tall as its neighbours, so a long
   list flows into a second column instead of stretching downward. */
.walsay-menu .sub-menu:has(> li:nth-child(7)) {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: var(--s-4);
}

.walsay-subwrap:has(.sub-menu > li:nth-child(7)) {
	min-width: min(760px, 92vw);
}
