/*
 * City Agentic Finance Lab — site styles.
 * Colours, type sizes, spacing and motion come from the design tokens (assets/css/tokens.css, generated by
 * brand/scripts/tokens.py; every pair contrast-checked in brand/tokens/contrast.md). Rules use the semantic
 * tokens only, so the light theme, the dark theme and the Navy or Ink bands (.lab-on-dark, footer, menu) all follow.
 * Orange is never text on light backgrounds: it is a fill (primary buttons, with Ink text) or an accent graphic.
 * Layout uses logical properties so right-to-left pages (Phase 3) need no separate stylesheet.
 */

:root {
	--lab-gutter: clamp(1rem, 4vw, 3rem);
	--lab-wide: 75rem;
	--lab-content: 46rem;
	--lab-header-h: 4.5rem;
	--lab-header-offset: var(--lab-header-h); /* the whole sticky header: one bar, or the bar and the tabs (two-row) */
	--lab-radius: 4px;
	--lab-radius-card: 8px;
	--lab-section: clamp(4rem, 9vw, 8rem);
	--lab-ease: var(--lab-motion-ease);
}

/* The hidden attribute always wins over a display set below (buttons that wait for the script, a map facade once the map has loaded). */
[hidden]:not([hidden="until-found"]) { display: none !important; }

/* ---------- base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-padding-top: calc(var(--lab-header-offset) + 1rem); -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { font-feature-settings: "cv05" 1, "cv08" 1; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; }
img, svg, video { max-inline-size: 100%; block-size: auto; }
:where(h1, h2, h3, h4) { text-wrap: balance; }
:where(p, li, dd) { text-wrap: pretty; }
a { text-underline-offset: 0.18em; text-decoration-thickness: 1px; }
a:hover { text-decoration-thickness: 2px; }
::selection { background: var(--lab-selection-bg); color: var(--lab-text); }
table, .lab-tabular { font-variant-numeric: tabular-nums; }
.lab-visually-hidden { position: absolute !important; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* Focus: deep teal in light, Orange in dark and in bands (the focus token), 2 px with 2 px offset; never hidden by the sticky header. */
:focus-visible { outline: 2px solid var(--lab-focus); outline-offset: 2px; border-radius: 2px; }

/* Skip link (added by WordPress for block themes) */
.skip-link.screen-reader-text:focus {
	inset-block-start: .5rem; inset-inline-start: .5rem; z-index: 1000; clip-path: none; inline-size: auto; block-size: auto;
	padding: .75rem 1rem; background: var(--lab-heading); color: var(--lab-bg); font-weight: 600; border-radius: var(--lab-radius); text-decoration: underline;
}

/* ---------- layout ---------- */
.lab-container { inline-size: min(100% - 2 * var(--lab-gutter), var(--lab-wide)); margin-inline: auto; }
.lab-section { padding-block: var(--lab-section); }
.lab-section--paper { background: var(--lab-surface); --lab-card-bg: var(--lab-card-on-surface); } /* cards still stand out on the surface in dark */
/* Two sections on the same background in a row share one gap. */
.lab-section:not(.lab-section--paper, .lab-section--night, .lab-route) + .lab-section:not(.lab-section--paper, .lab-section--night, .lab-route),
.lab-section--paper + .lab-section--paper { padding-block-start: 0; }
.lab-section--night { background: var(--lab-bg); color: var(--lab-text); } /* tokens switch through .lab-on-dark */
.lab-eyebrow { font-size: var(--wp--preset--font-size--xs); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--lab-eyebrow); margin: 0 0 .75rem; }
.lab-lead { font-size: var(--wp--preset--font-size--lg); line-height: 1.5; color: var(--lab-text); max-inline-size: 40em; }
.lab-muted { color: var(--lab-text-muted); }

/* ---------- buttons ---------- */
.lab-button, .wp-element-button, .wp-block-button__link {
	display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
	min-block-size: 2.75rem; padding: .625rem 1.25rem; border-radius: var(--lab-radius); border: 1.5px solid transparent;
	font-weight: 600; font-size: var(--wp--preset--font-size--sm); line-height: 1.2; text-decoration: none; cursor: pointer;
	transition: background-color .15s var(--lab-ease), border-color .15s var(--lab-ease), color .15s var(--lab-ease);
	max-inline-size: 100%; overflow-wrap: anywhere; /* a long email address in a button wraps on a phone (Arabic labels are wider) */
}
/* Primary: Orange with Ink text in every theme. Secondary: Navy in light, outlined in dark and in bands. */
.lab-button--primary { background: var(--lab-btn-primary-bg); color: var(--lab-btn-primary-text); }
.lab-button--primary:hover { background: var(--lab-btn-primary-hover-bg); color: var(--lab-btn-primary-hover-text); text-decoration: none; }
.lab-button--secondary { background: var(--lab-btn-secondary-bg); color: var(--lab-btn-secondary-text); border-color: var(--lab-btn-secondary-border); }
.lab-button--secondary:hover { background: var(--lab-btn-secondary-hover-bg); color: var(--lab-btn-secondary-text); text-decoration: none; }
.lab-button--large { min-block-size: 3.25rem; padding-inline: 1.5rem; font-size: var(--wp--preset--font-size--md); }
.lab-link-arrow { font-weight: 600; text-decoration: none; display: inline-flex; align-items: center; gap: .375rem; }
.lab-link-arrow .lab-icon { inline-size: 1.125em; block-size: 1.125em; transition: transform .15s var(--lab-ease); }
.lab-link-arrow:hover .lab-icon { transform: translateX(3px); }
.lab-prose a.lab-link-arrow::after { content: "\2192" / ""; transition: transform .15s var(--lab-ease); }
.lab-prose a.lab-link-arrow:hover::after { transform: translateX(3px); }
/* Arrows point the way the text reads: mirrored in right-to-left text (the Arabic summary page). */
.lab-icon--directional:dir(rtl), .lab-prose a.lab-link-arrow:dir(rtl)::after { transform: scaleX(-1); }
.lab-link-arrow:hover .lab-icon--directional:dir(rtl), .lab-prose a.lab-link-arrow:hover:dir(rtl)::after { transform: translateX(-3px) scaleX(-1); }
.lab-icon { inline-size: 1.25rem; block-size: 1.25rem; flex: none; }
.lab-icon--theme { inline-size: 2rem; block-size: 2rem; color: var(--lab-accent-2); }

/* ---------- header ---------- */
.lab-header-part { display: contents; } /* lets the header stick to the page, not to its wrapper */
.wp-site-blocks > .lab-main, .wp-site-blocks > .lab-footer-part { margin-block-start: 0; } /* no block gap between header, page and footer */
/* Utility area (R-09): language switcher and theme button, at the far end of the header and at the top of the
   full-screen menu. The switcher is text only, with a neutral globe (C-02). */
.lab-utility { display: flex; align-items: center; gap: 1.25rem; flex: none; font-size: var(--wp--preset--font-size--xs); }
.lab-langs { display: flex; align-items: center; gap: .375rem; color: var(--lab-text-muted); }
.lab-langs__icon { inline-size: 1.125rem; block-size: 1.125rem; }
.lab-langs__list { display: flex; flex-wrap: wrap; align-items: center; margin: 0; padding: 0; list-style: none; }
.lab-langs__list li + li::before { content: "·" / ""; margin-inline: .4rem; color: var(--lab-text-muted); }
.lab-langs a { display: inline-flex; align-items: center; min-block-size: 2.75rem; color: var(--lab-text); font-weight: 600; text-decoration: none; }
.lab-langs a:hover, .lab-langs a[aria-current] { color: var(--lab-heading); text-decoration: underline; text-underline-offset: .2em; }
/* "Work with us" (Director decision C-17): a filled brand-teal button at the far end of the header, on every page; below
   the desktop width it stays in the bar, next to the menu button. Light: #187A78 with white text (5.1:1), hover #126362
   (7.0:1). Dark: #88C5C3 with Ink text (8.6:1), hover #A9D6D4 (10.6:1). */
.lab-header__work { --lab-work-bg: #187A78; --lab-work-text: #FFFFFF; --lab-work-hover: #126362;
	flex: none; min-block-size: 2.75rem; padding: .5rem 1.125rem; border: 0; background: var(--lab-work-bg); color: var(--lab-work-text); font-size: var(--wp--preset--font-size--xs); white-space: nowrap; }
.lab-header__work:hover, .lab-header__work[aria-current="page"] { background: var(--lab-work-hover); color: var(--lab-work-text); }
.lab-header__work:focus-visible { outline: 3px solid var(--lab-focus); outline-offset: 3px; }
[data-theme="dark"] .lab-header__work { --lab-work-bg: #88C5C3; --lab-work-text: #1A1940; --lab-work-hover: #A9D6D4; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .lab-header__work { --lab-work-bg: #88C5C3; --lab-work-text: #1A1940; --lab-work-hover: #A9D6D4; } }
/* On a phone a longer label (Spanish "Colaborar con nosotros") wraps onto two lines rather than pushing the menu button off the screen. */
@media (max-width: 479px) { .lab-header__work { padding-inline: .75rem; white-space: normal; text-align: center; line-height: 1.15; max-inline-size: 8.5rem; } }
.lab-menu__work { inline-size: min(100% - 2 * var(--lab-gutter), 90rem); margin: 1rem auto 0; }
.lab-menu__work .lab-header__work { font-size: var(--wp--preset--font-size--sm); }
.lab-utility--bar .lab-theme-toggle { min-inline-size: 2.75rem; min-block-size: 2.75rem; justify-content: center; }
.lab-utility--bar .lab-theme-toggle__label { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.lab-utility--menu { inline-size: min(100% - 2 * var(--lab-gutter), 90rem); margin: 0 auto; padding-block: .75rem 1.25rem; flex-wrap: wrap; gap: .75rem 1.5rem; border-block-end: 1px solid var(--lab-border); font-size: var(--wp--preset--font-size--sm); }
.lab-header { position: sticky; inset-block-start: 0; z-index: 100; background: var(--lab-header-bg); -webkit-backdrop-filter: saturate(1.4) blur(10px); backdrop-filter: saturate(1.4) blur(10px); border-block-end: 1px solid var(--lab-border); }
.admin-bar .lab-header { inset-block-start: var(--wp-admin--admin-bar--height, 0px); }
/* Condensing (R-02): once the page scrolls, the logo eases a little smaller and the header gains a soft edge. Only
   transforms and shadows change, so nothing below it moves (no layout shift). */
.lab-header { transition: box-shadow .2s var(--lab-ease), background-color .2s var(--lab-ease); }
.lab-header__brand img { transform-origin: left center; transition: transform .2s var(--lab-ease); }
[dir="rtl"] .lab-header__brand img { transform-origin: right center; }
.lab-header--scrolled { box-shadow: var(--lab-shadow-header); }
.lab-header--scrolled .lab-header__brand img { transform: scale(.88); }
.lab-header__bar {
	inline-size: min(100% - 2 * var(--lab-gutter), 90rem); margin-inline: auto; min-block-size: var(--lab-header-h);
	display: flex; align-items: center; gap: clamp(1rem, 2.5vw, 2rem);
}
.lab-header__brand { display: inline-flex; flex: none; margin-inline-end: auto; border-radius: 2px; }
.lab-header__brand img { display: block; block-size: 2.75rem; inline-size: auto; }
/* N-58: on desktop the logo without the university line, 72 px tall (about 294 px wide, so "CITY AGENTIC FINANCE
   LAB" stays readable); below 1280 px the compact logo. */
@media (min-width: 1280px) { :root { --lab-header-h: 5.75rem; } .lab-header__brand img { block-size: 4.5rem; } }
@media (max-width: 479px) { .lab-header__brand img { block-size: 2.5rem; } .lab-header__bar { gap: .5rem; } }
/* The narrowest phones (WCAG reflow at 320px, every language): the menu button shows its icon only (the word stays for
   screen readers), and the logo and the "Work with us" button narrow, so the bar never scrolls sideways. */
@media (max-width: 399px) {
	.lab-header__bar [data-lab-menu-open] > span { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
	.lab-header__brand img { block-size: 1.75rem; }
	.lab-header__work { max-inline-size: 7rem; padding-inline: .5rem; }
}
.lab-nav { flex: 1 1 auto; min-inline-size: 0; display: flex; justify-content: flex-end; }
.lab-nav__list, .lab-anchors__list { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem clamp(.875rem, 1.45vw, 1.5rem); margin: 0; padding: 0; list-style: none; }
.lab-nav a, .lab-anchors a {
	display: inline-flex; align-items: center; min-block-size: 2.75rem; color: var(--lab-text); font-weight: 600;
	font-size: var(--wp--preset--font-size--sm); text-decoration: none; white-space: nowrap; position: relative;
}
.lab-nav a { font-size: var(--wp--preset--font-size--xs); letter-spacing: .005em; }
/* Two-row header (N-17): the eight tabs on their own row, spread across the width. */
.lab-header__tabs { border-block-start: 1px solid var(--lab-border); }
.lab-header__tabs .lab-nav { inline-size: min(100% - 2 * var(--lab-gutter), 90rem); margin-inline: auto; }
.lab-header__tabs .lab-nav__list { inline-size: 100%; justify-content: space-between; column-gap: 1.25rem; }
.lab-header--one-row .lab-nav__list { column-gap: clamp(.875rem, 1.2vw, 1.375rem); }
.lab-header--one-row .lab-header__bar { inline-size: min(100% - 2 * var(--lab-gutter), 120rem); } /* the whole width, so the one line has every chance to fit */
@media (min-width: 1280px) {
	:root:has(.lab-header--two-row:not(.lab-header--collapsed)) { --lab-header-offset: calc(var(--lab-header-h) + 2.75rem + 1px); }
}
.lab-nav a::after, .lab-anchors a::after {
	content: ""; position: absolute; inset-inline: 0; inset-block-end: .5rem; block-size: 2px; background: var(--lab-accent-2);
	transform: scaleX(0); transform-origin: left; transition: transform .2s var(--lab-ease);
}
.lab-nav a:hover::after, .lab-nav a[aria-current="page"]::after, .lab-anchors a:hover::after { transform: scaleX(1); }
.lab-nav a[aria-current="page"] { color: var(--lab-heading); }
[dir="rtl"] .lab-nav a::after, [dir="rtl"] .lab-anchors a::after { transform-origin: right; }
.lab-header__actions { display: flex; align-items: center; gap: clamp(.75rem, 1.5vw, 1.5rem); flex: none; }
.lab-menu-button {
	display: none; align-items: center; gap: .5rem; min-block-size: 2.75rem; min-inline-size: 2.75rem; padding: .5rem .75rem;
	background: transparent; border: 1.5px solid var(--lab-border); border-radius: var(--lab-radius); color: var(--lab-heading);
	font: inherit; font-size: var(--wp--preset--font-size--sm); font-weight: 600; cursor: pointer;
}
.lab-menu-button:hover { border-color: var(--lab-heading); }

/* Theme choice (R-29): one button cycling System, Light, Dark; the icon shows the current state. */
.lab-theme-toggle { display: inline-flex; align-items: center; gap: .375rem; min-block-size: 2.25rem; padding: 0; border: 0; background: none; color: var(--lab-text); font: inherit; font-weight: 600; cursor: pointer; }
.lab-theme-toggle:hover .lab-theme-toggle__label { text-decoration: underline; text-underline-offset: .18em; }
.lab-theme-toggle__icon { display: none; inline-size: 1.125rem; block-size: 1.125rem; }
.lab-theme-toggle:not([data-state]) .lab-theme-toggle__icon--system, .lab-theme-toggle[data-state="system"] .lab-theme-toggle__icon--system,
.lab-theme-toggle[data-state="light"] .lab-theme-toggle__icon--light, .lab-theme-toggle[data-state="dark"] .lab-theme-toggle__icon--dark { display: block; }
.lab-theme-toggle--menu { min-block-size: 2.75rem; font-size: var(--wp--preset--font-size--md); }
.lab-theme-toggle--menu .lab-theme-toggle__icon { inline-size: 1.375rem; block-size: 1.375rem; }
.lab-theme-toggle--bar { min-block-size: 2.75rem; }

/* The header logo follows the theme (both versions are in the page; the hidden one is not shown to anyone). */
.lab-logo-dark { display: none; }
[data-theme="dark"] .lab-logo-light { display: none; }
[data-theme="dark"] .lab-logo-dark { display: contents; }
@media (prefers-color-scheme: dark) {
	:root:not([data-theme="light"]) .lab-logo-light { display: none; }
	:root:not([data-theme="light"]) .lab-logo-dark { display: contents; }
}

/* Below the desktop width the tabs and the utility area move into the full-screen menu; labels are never shortened (R-09).
   Two-row: desktop from 1280 px. One-row: from 1440 px. */
@media (max-width: 1279px) {
	.lab-header--two-row .lab-header__tabs, .lab-header--two-row .lab-utility--bar { display: none; }
	.lab-header--two-row .lab-menu-button { display: inline-flex; }
}
@media (max-width: 1439px) {
	.lab-header--one-row .lab-nav, .lab-header--one-row .lab-utility--bar { display: none; }
	.lab-header--one-row .lab-menu-button { display: inline-flex; }
}
/* Safety net: if the tabs ever wrap at desktop widths (a longer language), use the menu instead. */
.lab-header--collapsed .lab-nav, .lab-header--collapsed .lab-header__tabs, .lab-header--collapsed .lab-utility--bar { display: none; }
.lab-header--collapsed .lab-menu-button { display: inline-flex; }
@media (max-width: 479px) {
	.lab-menu-button span { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); }
}

/* Founding page: anchors instead of a menu; on small screens they scroll sideways under the bar. */
.lab-header--founding .lab-header__bar { flex-wrap: wrap; }
@media (max-width: 899px) {
	.lab-header--founding .lab-anchors { order: 3; inline-size: 100%; overflow-x: auto; margin-block-start: -.25rem; scrollbar-width: none; }
	.lab-header--founding .lab-anchors__list { flex-wrap: nowrap; }
}

/* Full-screen menu (native <dialog>: focus stays inside, Escape closes it). */
.lab-menu {
	position: fixed; inset: 0; inline-size: 100%; block-size: 100%; max-inline-size: none; max-block-size: none; margin: 0; padding: 0; border: 0;
	background: var(--lab-bg); color: var(--lab-heading); overflow-y: auto;
}
.lab-menu::backdrop { background: var(--lab-overlay); }
.lab-menu[open] { display: flex; flex-direction: column; }
.lab-menu__bar { inline-size: min(100% - 2 * var(--lab-gutter), 90rem); margin-inline: auto; min-block-size: var(--lab-header-h); display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.lab-menu__bar .lab-header__brand img { filter: none; }
.lab-menu .lab-menu-button { display: inline-flex; }
.lab-menu__nav { inline-size: min(100% - 2 * var(--lab-gutter), 90rem); margin-inline: auto; padding-block: clamp(1.5rem, 5vh, 3rem); }
.lab-menu__list { list-style: none; margin: 0; padding: 0; }
.lab-menu__list a {
	display: flex; align-items: center; min-block-size: 3.25rem; color: var(--lab-heading); text-decoration: none;
	font-size: clamp(1.5rem, 1.1rem + 2vw, 2.25rem); font-weight: 700; letter-spacing: -.015em; border-block-end: 1px solid var(--lab-border);
}
.lab-menu__list a:hover, .lab-menu__list a[aria-current="page"] { color: var(--lab-link); }
html.lab-menu-open { overflow: hidden; }

/* ---------- footer ---------- */
.lab-footer { background: var(--lab-bg); color: var(--lab-text); font-size: var(--wp--preset--font-size--sm); margin-block-start: 0; border-block-start: 1px solid var(--lab-border); }
.lab-footer a { color: var(--lab-heading); text-decoration-color: var(--lab-border-strong); }
.lab-footer a:hover { color: var(--lab-link); }
.lab-footer__inner {
	inline-size: min(100% - 2 * var(--lab-gutter), var(--lab-wide)); margin-inline: auto; padding-block: clamp(3rem, 7vw, 5rem) 2.5rem;
	display: grid; gap: 2.5rem; grid-template-columns: 1fr;
}
@media (min-width: 768px) { .lab-footer__inner { grid-template-columns: 1fr 1fr; } .lab-footer__brand { grid-column: 1 / -1; } }
@media (min-width: 1024px) { .lab-footer__inner { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1.3fr) minmax(0, 1fr); column-gap: clamp(2.5rem, 4vw, 4rem); } .lab-footer__brand { grid-column: auto; } }
.lab-footer__logo { display: block; block-size: 5.5rem; inline-size: auto; max-inline-size: 100%; object-fit: contain; object-position: left center; }
[dir="rtl"] .lab-footer__logo { object-position: right center; }
@media (max-width: 479px) { .lab-footer__logo { block-size: auto; inline-size: min(100%, 18rem); } }
.lab-endorsed { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; }
.lab-endorsed__line { flex-basis: 100%; margin: .25rem 0 0; color: var(--lab-text); }
.lab-endorsed__rule { inline-size: 1px; align-self: stretch; background: currentColor; opacity: .5; }
.lab-endorsed__university { block-size: 2.5rem; inline-size: auto; }
.lab-footer__mission { margin: 1.25rem 0 0; max-inline-size: 32em; color: var(--lab-text); }
.lab-footer__links, .lab-footer__legal, .lab-footer__social { list-style: none; margin: 0; padding: 0; }
.lab-footer__links { columns: 12rem 2; column-gap: 2rem; } /* one column when there is no room for two */
.lab-footer__links li { break-inside: avoid; }
.lab-footer__links a { display: inline-flex; min-block-size: 2.25rem; align-items: center; text-decoration: none; font-weight: 600; }
.lab-footer__links a:hover { text-decoration: underline; }
.lab-footer__heading { font-size: var(--wp--preset--font-size--xs); letter-spacing: .08em; text-transform: uppercase; color: var(--lab-text-muted); margin: 0 0 1rem; font-weight: 600; }
.lab-footer__contact p { margin: 0 0 .75rem; }
.lab-footer__email { overflow-wrap: anywhere; }
.lab-footer__address { font-style: normal; line-height: 1.6; }
.lab-footer__social { display: flex; gap: .5rem; margin-block-start: 1.25rem; }
.lab-footer__social a { display: inline-grid; place-items: center; inline-size: 2.75rem; block-size: 2.75rem; border: 1px solid var(--lab-border-strong); border-radius: var(--lab-radius); }
.lab-footer__social a:hover { border-color: var(--lab-accent-2); }
.lab-footer__newsletter { grid-column: 1 / -1; max-inline-size: 36rem; }
.lab-footer__newsletter .lab-form__small { margin-block-start: .75rem; }
.lab-footer__base {
	inline-size: min(100% - 2 * var(--lab-gutter), var(--lab-wide)); margin-inline: auto; padding-block: 1.75rem 2.5rem;
	border-block-start: 1px solid var(--lab-border); display: grid; gap: 1rem; font-size: var(--wp--preset--font-size--xs);
}
.lab-footer__legal { display: flex; flex-wrap: wrap; gap: .25rem 1.5rem; }
.lab-footer__legal a { display: inline-flex; min-block-size: 1.75rem; align-items: center; }
.lab-footer__copyright, .lab-footer__disclaimer { margin: 0; color: var(--lab-text-muted); max-inline-size: 60em; }

/* ---------- cards, panels, tags ---------- */
.lab-card { background: var(--lab-card-bg); border: 1px solid var(--lab-border); border-radius: var(--lab-radius-card); padding: clamp(1.25rem, 2.5vw, 2rem); }
.lab-card--link { position: relative; transition: border-color .2s var(--lab-ease), transform .2s var(--lab-ease); }
.lab-card--link:hover { border-color: var(--lab-accent-2); transform: translateY(-3px); }
.lab-card--link a::after { content: ""; position: absolute; inset: 0; }
.lab-panel { background: var(--lab-surface-2); color: var(--lab-text); border-radius: var(--lab-radius-card); padding: clamp(1.25rem, 2.5vw, 2rem); }
.lab-panel a { color: var(--lab-heading); text-decoration: underline; }
.lab-tag { display: inline-flex; align-items: center; min-block-size: 1.75rem; padding: .125rem .625rem; border-radius: 4px; background: var(--lab-tag-bg); color: var(--lab-tag-text); font-size: var(--wp--preset--font-size--xs); font-weight: 600; }
.lab-badge { display: inline-flex; align-items: center; padding: .125rem .5rem; border-radius: var(--lab-radius); background: var(--lab-card-bg); box-shadow: inset 0 0 0 1px var(--lab-border-strong); color: var(--lab-warning-text); font-size: var(--wp--preset--font-size--xs); font-weight: 700; }
/* In bands the badge is an Orange fill with Ink text (Orange is never text on light). */
:where(.lab-on-dark) .lab-badge { background: var(--lab-btn-primary-bg); box-shadow: none; color: var(--lab-btn-primary-text); }
.lab-grid { display: grid; gap: clamp(1rem, 2vw, 1.5rem); grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); }

/* ---------- forms (3:1 boundaries in Slate, §5.7) ---------- */
.lab-field { display: grid; gap: .375rem; margin-block-end: 1.25rem; }
.lab-field label, .lab-field legend { font-weight: 600; color: var(--lab-heading); font-size: var(--wp--preset--font-size--sm); }
.lab-field input[type="text"], .lab-field input[type="email"], .lab-field input[type="url"], .lab-field input[type="password"], .lab-field input[type="tel"], .lab-field input[type="number"], .lab-field input[type="date"], .lab-field input[type="search"], .lab-field select, .lab-field textarea {
	inline-size: 100%; min-block-size: 3rem; padding: .625rem .875rem; border: 1px solid var(--lab-border-strong); border-radius: var(--lab-radius);
	background: var(--lab-control-bg); color: var(--lab-text); font: inherit;
}
.lab-field textarea { min-block-size: 9rem; resize: vertical; }
.lab-field input:focus-visible, .lab-field select:focus-visible, .lab-field textarea:focus-visible { outline: 2px solid var(--lab-focus); outline-offset: 2px; border-color: var(--lab-focus); }
.lab-field .lab-hint { color: var(--lab-text-muted); font-size: var(--wp--preset--font-size--xs); margin: 0; }
/* As specific as the control rule above, and after it, so the error border always shows. */
.lab-field.lab-field--error input:not([type="checkbox"]):not([type="radio"]), .lab-field.lab-field--error select, .lab-field.lab-field--error textarea { border-color: var(--lab-error); border-width: 2px; }
/* File inputs: the control look, with the button on the theme's secondary style. */
.lab-field input[type="file"] { inline-size: 100%; padding: .5rem; border: 1px dashed var(--lab-border-strong); border-radius: var(--lab-radius); background: var(--lab-control-bg); color: var(--lab-text); font: inherit; font-size: var(--wp--preset--font-size--sm); }
.lab-field input[type="file"]::file-selector-button { margin-inline-end: .75rem; padding: .5rem .875rem; border: 1px solid var(--lab-btn-secondary-border); border-radius: var(--lab-radius); background: var(--lab-btn-secondary-bg); color: var(--lab-btn-secondary-text); font: inherit; font-weight: 600; cursor: pointer; }
.lab-field input[type="file"]::file-selector-button:hover { background: var(--lab-btn-secondary-hover-bg); }
.lab-field.lab-field--error input[type="file"] { border: 2px solid var(--lab-error); }
/* Browser autofill keeps the theme's control colours (R-29 test 6). */
.lab-field input:-webkit-autofill, .lab-field input:-webkit-autofill:hover, .lab-field input:-webkit-autofill:focus, .lab-field textarea:-webkit-autofill, .lab-field select:-webkit-autofill {
	-webkit-text-fill-color: var(--lab-text); caret-color: var(--lab-text); -webkit-box-shadow: 0 0 0 100vmax var(--lab-control-bg) inset; box-shadow: 0 0 0 100vmax var(--lab-control-bg) inset; transition: background-color 600000s 0s;
}
.lab-field input:autofill { -webkit-text-fill-color: var(--lab-text); box-shadow: 0 0 0 100vmax var(--lab-control-bg) inset; }
.lab-error { display: flex; gap: .375rem; align-items: flex-start; color: var(--lab-error); font-weight: 600; font-size: var(--wp--preset--font-size--sm); margin: 0; }
.lab-check { display: flex; gap: .75rem; align-items: flex-start; }
.lab-check input { inline-size: 1.25rem; block-size: 1.25rem; margin-block-start: .2rem; accent-color: var(--lab-link); flex: none; }

/* ---------- motif (hero art; animation only when motion is welcome) ---------- */
.lab-motif { position: absolute; inset: 0; overflow: hidden; pointer-events: none;
	-webkit-mask-image: linear-gradient(to right, transparent 0, transparent 30%, #000 70%); mask-image: linear-gradient(to right, transparent 0, transparent 30%, #000 70%); }
[dir="rtl"] .lab-motif { -webkit-mask-image: linear-gradient(to left, transparent 0, transparent 30%, #000 70%); mask-image: linear-gradient(to left, transparent 0, transparent 30%, #000 70%); }
.lab-motif svg { position: absolute; inset-block: 0; inset-inline-end: 0; block-size: 100%; inline-size: auto; }
@media (prefers-reduced-motion: no-preference) {
	.lab-motif-path { stroke-dashoffset: var(--len); animation: lab-draw 2.4s var(--lab-ease) var(--delay, 0s) forwards; }
	.lab-motif-node { opacity: 0; animation: lab-appear .5s ease calc(var(--delay, 0s) + 2.2s) forwards; }
}
@keyframes lab-draw { to { stroke-dashoffset: 0; } }
@keyframes lab-appear { to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}

/* ---------- the agent in motion (Director decision C-18, 13 October 2026; R-02; refined 14 October 2026, I-11) ----------
   Dark headers are a subtle Ink-to-Navy gradient carrying one infinity loop as a thin line (the logo's own loop,
   brand/scripts/motif_loop.py) and the orange "agent" dot with one short tail; no arrow. The loop stands whole in its
   own column: from the end of the text to the header's right edge (where "Work with us" ends), centred on the text
   block, never cropped and never behind the text. It is shown from 1024 px; below that there is no room beside the text.
   Home: the loop draws in (1.2 s), then the dot travels it (14 s a lap) with its tail, with a pause button
   (WCAG 2.2.2), resting off-screen and in a hidden tab. Other headers, and Home without the script: the loop draws
   in, the dot makes one lap from the section's own point and fades out, all within 5 s, so the header settles into a
   still loop (never a dot that seems stuck). Under reduced motion: the loop alone, still. */
.lab-hero.lab-hero--dark { background: linear-gradient(135deg, var(--lab-brand-ink) 0%, var(--lab-brand-navy) 100%); }
.lab-loop-box {
	--lab-loop-text: min(100% - 2 * var(--lab-gutter), var(--lab-wide));
	--lab-loop-frame: min(100% - 2 * var(--lab-gutter), 90rem);
	position: absolute; z-index: -1; display: flex; align-items: center; justify-content: center; pointer-events: none;
	inset-block: clamp(4.5rem, 11vw, 9rem) clamp(4rem, 9vw, 7.5rem); /* the hero's own padding: centred on the text block */
	inset-inline-start: calc((100% - var(--lab-loop-text)) / 2 + .58 * var(--lab-loop-text) + clamp(2rem, 4vw, 4rem));
	inset-inline-end: calc((100% - var(--lab-loop-frame)) / 2);
}
.lab-loop { display: block; inline-size: 100%; max-inline-size: 100%; block-size: auto; max-block-size: 100%; overflow: visible; }
[dir="rtl"] .lab-loop { transform: scaleX(-1); }
.lab-loop__line { fill: none; stroke: var(--lab-brand-teal); stroke-opacity: .42; stroke-width: 2.4; }
.lab-loop__dot, .lab-loop__trail { fill: none; stroke: var(--lab-logo-orange); stroke-linecap: round; opacity: 0; }
.lab-loop__dot { stroke-width: 16; stroke-dasharray: 0 1000; stroke-dashoffset: calc(var(--lab-dot-at, 0) * -1); }
.lab-loop__trail { stroke-width: 7; stroke-dasharray: 70 930; stroke-dashoffset: calc(var(--lab-dot-at, 0) * -1 + 70); } /* ends at the dot */
.lab-loop-box--live .lab-agent-pause { inset-block-end: 0; inset-inline-end: 0; pointer-events: auto; color: var(--lab-heading); }
/* The 404 page: a faint loop beside the narrow column, wide screens only; navy at about 15 % on light, teal on dark. */
.lab-notfound { position: relative; isolation: isolate; overflow: hidden; }
.lab-loop-box--quiet { --lab-loop-stroke: #273051; --lab-loop-opacity: .15; inset-block: clamp(2rem, 5vw, 4rem) auto; block-size: 22rem; inset-inline-start: calc(50% + var(--lab-content) / 2 + 3rem); }
[data-theme="dark"] .lab-loop-box--quiet { --lab-loop-stroke: #1E918E; --lab-loop-opacity: .36; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .lab-loop-box--quiet { --lab-loop-stroke: #1E918E; --lab-loop-opacity: .36; } }
.lab-loop-box--quiet .lab-loop__line { stroke: var(--lab-loop-stroke); stroke-opacity: var(--lab-loop-opacity); }
@media (max-width: 1279px) { .lab-loop-box.lab-loop-box--quiet { display: none; } }
@media (min-width: 1024px) {
	.lab-hero--loop .lab-hero__inner > * { max-inline-size: 58%; }
}
@media (max-width: 1023px) {
	.lab-loop-box { display: none; } /* tablets and phones: the text takes the width */
}
@media (prefers-reduced-motion: no-preference) {
	.lab-loop-box .lab-loop__line { stroke-dasharray: 1000; animation: lab-loop-draw 1.2s var(--lab-ease) both; }
	.lab-loop-box .lab-loop__dot { animation: lab-loop-lap 3.4s cubic-bezier(.45, 0, .25, 1) 1.1s both; }
	.lab-loop-box .lab-loop__trail { animation: lab-loop-lap-trail 3.4s cubic-bezier(.45, 0, .25, 1) 1.1s both; }
	.lab-loop-box--live.is-live .lab-loop__dot { animation: lab-loop-in .4s ease 1.1s both, lab-loop-run 14s linear 1.2s infinite; }
	.lab-loop-box--live.is-live .lab-loop__trail { animation: lab-loop-in-trail .8s ease 1.2s both, lab-loop-run-trail 14s linear 1.2s infinite; }
	.lab-loop-box.is-paused *, .lab-loop-box.is-away *, .lab-loop-box.is-hidden-tab * { animation-play-state: paused !important; }
}
@keyframes lab-loop-draw { from { stroke-dashoffset: 1000; } to { stroke-dashoffset: 0; } }
@keyframes lab-loop-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes lab-loop-in-trail { from { opacity: 0; } to { opacity: .45; } }
@keyframes lab-loop-run { from { stroke-dashoffset: 0; } to { stroke-dashoffset: -1000; } }
@keyframes lab-loop-run-trail { from { stroke-dashoffset: 70; } to { stroke-dashoffset: -930; } }
@keyframes lab-loop-lap {
	from { stroke-dashoffset: calc(var(--lab-dot-at, 0) * -1); opacity: 0; }
	8%, 80% { opacity: 1; }
	to { stroke-dashoffset: calc(var(--lab-dot-at, 0) * -1 - 1000); opacity: 0; }
}
@keyframes lab-loop-lap-trail {
	from { stroke-dashoffset: calc(var(--lab-dot-at, 0) * -1 + 70); opacity: 0; }
	12%, 76% { opacity: .45; }
	to { stroke-dashoffset: calc(var(--lab-dot-at, 0) * -1 - 930); opacity: 0; }
}

/* ---------- print (FR-16) ---------- */
/* ---------- cookie banner (R-26) ----------
   Fixed at the bottom of the window, so it never moves the page (no layout shift); while it is open, site.js
   sets the page's bottom scroll padding to its height, so a focused element is never hidden behind it
   (WCAG 2.4.11). The three choices share one button style (equal prominence). */
.lab-consent { position: fixed; inset-inline: 0; inset-block-end: 0; z-index: 110; max-block-size: 80vh; overflow-y: auto; background: var(--lab-surface); color: var(--lab-text); border-block-start: 3px solid var(--lab-accent-2); }
.lab-consent[hidden], .lab-consent [hidden] { display: none; }
.lab-consent__inner { inline-size: min(100% - 2 * var(--lab-gutter), var(--lab-wide)); margin-inline: auto; padding-block: 1.25rem; }
.lab-consent__title { margin: 0 0 .375rem; font-size: var(--wp--preset--font-size--lg); color: var(--lab-heading); }
.lab-consent__title:focus { outline: none; }
.lab-consent__text { margin: 0 0 1rem; max-inline-size: 72ch; font-size: var(--wp--preset--font-size--sm); line-height: 1.55; }
.lab-consent__text a { color: var(--lab-link); }
.lab-consent__actions, .lab-consent-inline { display: flex; flex-wrap: wrap; gap: .75rem; }
.lab-consent__prefs fieldset { margin: 0 0 1rem; padding: 0; border: 0; }
.lab-consent__prefs legend { margin-block-end: .5rem; font-weight: 600; color: var(--lab-heading); font-size: var(--wp--preset--font-size--sm); }
.lab-consent__cat { display: grid; grid-template-columns: 1.5rem 1fr; column-gap: .625rem; padding-block: .625rem; border-block-start: 1px solid var(--lab-border); }
.lab-consent__cat input { inline-size: 1.25rem; block-size: 1.25rem; margin: .125rem 0 0; accent-color: var(--lab-accent-2); }
.lab-consent__cat label { font-weight: 600; color: var(--lab-heading); }
.lab-consent__always { margin-inline-start: .5rem; font-weight: 500; font-size: var(--wp--preset--font-size--xs); color: var(--lab-text-muted); }
.lab-consent__cat-text { grid-column: 2; margin: .125rem 0 0; font-size: var(--wp--preset--font-size--sm); color: var(--lab-text-muted); }
.lab-consent__save { margin: 0 0 1rem; }
.lab-consent-inline { position: relative; z-index: 2; margin-block-start: .75rem; padding: 1rem; border: 1px solid var(--lab-border-strong); border-radius: var(--lab-radius); background: var(--lab-surface); color: var(--lab-text); }
.lab-consent-inline p { flex-basis: 100%; margin: 0; font-size: var(--wp--preset--font-size--sm); }
.lab-consent-inline p:focus { outline: none; }
.lab-footer__cookies { display: inline-flex; min-block-size: 1.75rem; align-items: center; padding: 0; border: 0; background: none; color: inherit; font: inherit; text-decoration: underline; text-underline-offset: .2em; cursor: pointer; }
@media (max-width: 599px) { .lab-consent__actions .lab-button { flex: 1 1 100%; } }

@media print {
	.lab-consent, .lab-consent-inline, .lab-footer__cookies, .lab-header, .lab-footer__nav, .lab-footer__social, .lab-footer__newsletter, .lab-evidence__download, .lab-menu, .lab-motif, .lab-loop-box, .lab-hero__agent, .lab-newsletter, .lab-share, .lab-filters, .lab-tabs, .lab-chips, .lab-pager, .lab-event-page__actions, .skip-link, .wp-block-buttons, .lab-article__related, .lab-report__related, .lab-insights-dir__more, .lab-report__signup, .lab-report__subscribe, .lab-report__pack, .lab-breadcrumbs { display: none !important; }
	.lab-article__head, .lab-report__head, .lab-section--paper { background: #fff !important; padding-block: 0 1rem; }
	.lab-section { padding-block: 1rem; }
	.lab-article__layout, .lab-article__head-inner { max-inline-size: none; }
	.lab-article__body { font-size: 11pt; line-height: 1.5; }
	.lab-report__findings li, .lab-report__citation, .lab-note { background: #fff; border: 1px solid #000; }
	.lab-button { display: inline; min-block-size: 0; padding: 0; border: 0; background: none !important; color: #000 !important; font-size: inherit; text-decoration: underline; }
	.lab-report__cover img { max-inline-size: 6cm; box-shadow: none; }
	.lab-report__head-inner { display: block; }
	.lab-footer__logo { filter: brightness(0); }
	main :is(.lab-card--link, .lab-person-card, .lab-insight-card, .lab-event-card) a::after { content: none !important; }
	main :is(.lab-eyebrow, .lab-article__byline, .lab-article__tags) a::after, main a.lab-tag::after { content: none !important; }
	.lab-article__hero img { max-block-size: 8cm; }
	body { color: #000; background: #fff; font-size: 11pt; }
	.lab-footer { background: #fff; color: #000; border-block-start: 1px solid #000; }
	.lab-footer a, a { color: #000; }
	main a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 9pt; word-break: break-all; }
	h1, h2, h3 { break-after: avoid; color: #000; }
	figure, img, table { break-inside: avoid; }
}

/* ---------- announcement bar ---------- */
.lab-announcement { background: var(--lab-bg); color: var(--lab-heading); font-size: var(--wp--preset--font-size--sm); }
.lab-announcement__inner { inline-size: min(100% - 2 * var(--lab-gutter), 90rem); margin: 0 auto; padding-block: .625rem; display: flex; flex-wrap: wrap; justify-content: center; gap: .25rem 1rem; text-align: center; }
.lab-announcement a { color: var(--lab-link); font-weight: 600; text-decoration: underline; }

/* =====================================================================
 * Blocks (FR-02)
 * ===================================================================== */
.lab-main { padding-inline: 0 !important; }
.lab-main > .lab-section:first-child:not(.lab-hero) { padding-block-start: clamp(3rem, 6vw, 5rem); }
.lab-section--white { background: var(--lab-bg); }
.lab-section__title { margin: 0 0 1rem; }
.lab-section__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .5rem 2rem; margin-block-end: clamp(1.5rem, 3vw, 2.25rem); }
.lab-section__head .lab-section__title { margin: 0; }
.lab-section__more { margin: 2rem 0 0; }
.lab-section .lab-lead { margin-block: 0 clamp(1.75rem, 3vw, 2.5rem); }
.lab-container--narrow { inline-size: min(100% - 2 * var(--lab-gutter), var(--lab-content)); margin-inline: auto; }

/* Hero */
.lab-hero { position: relative; isolation: isolate; overflow: hidden; background: var(--lab-bg); color: var(--lab-text); padding-block: clamp(4.5rem, 11vw, 9rem) clamp(4rem, 9vw, 7.5rem); }
.lab-hero--light { background: var(--lab-surface); color: var(--lab-text); }
.lab-hero__media { position: absolute; inset: 0; z-index: -1; }
.lab-hero__media img { inline-size: 100%; block-size: 100%; object-fit: cover; }
.lab-hero--photo .lab-hero__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgb(39 48 81 / .94) 0%, rgb(39 48 81 / .82) 55%, rgb(39 48 81 / .55) 100%); }
.lab-hero .lab-motif { z-index: -1; }
.lab-hero__inner { inline-size: min(100% - 2 * var(--lab-gutter), var(--lab-wide)); margin-inline: auto; }
.lab-hero__title { color: var(--lab-heading); font-size: var(--wp--preset--font-size--5-xl); line-height: 1.04; letter-spacing: -.03em; max-inline-size: 13em; margin: 0 0 1.5rem; }
.lab-hero--light .lab-hero__title { color: var(--lab-heading); }
.lab-hero__lead { font-size: var(--wp--preset--font-size--lg); line-height: 1.5; max-inline-size: 38em; color: var(--lab-text); margin: 0 0 1.25rem; }
.lab-hero--light .lab-hero__lead { color: var(--lab-text); }
.lab-hero__lead a { color: inherit; text-decoration-color: var(--lab-link); }
.lab-on-dark .lab-hero__lead a { color: var(--lab-heading); text-decoration-color: var(--lab-link); }
/* Positioning line lock-up (R-03): the heading face with the orange agent dot as a marker, never plain body text. */
.lab-lockup { display: flex; align-items: baseline; gap: .6em; margin: 0 0 1rem; font-family: var(--lab-font-heading); font-weight: 700; line-height: 1.25; letter-spacing: -.01em; color: var(--lab-heading); max-inline-size: 30em; }
.lab-lockup__dot { flex: none; inline-size: .55em; block-size: .55em; border-radius: 50%; background: var(--lab-accent); transform: translateY(-.05em); }
.lab-lockup--focal { font-size: var(--wp--preset--font-size--xl); margin-block-end: 1.25rem; }
.lab-lockup--intro { font-size: var(--wp--preset--font-size--lg); margin-block: -.5rem 1rem; }
.lab-lockup--footer { font-size: var(--wp--preset--font-size--md); margin: 1.25rem 0 0; }
.lab-endorsement { margin: 0 0 2rem; font-size: var(--wp--preset--font-size--sm); color: var(--lab-text); }
.lab-hero--light .lab-endorsement { color: var(--lab-text-muted); }
.lab-endorsement--lockup img { block-size: 2.5rem; inline-size: auto; }
.lab-buttons { display: flex; flex-wrap: wrap; gap: .75rem 1rem; margin: 0; }

/* ---------- the agent in motion (hero, R-02 test 9; Home directions for N-15) ----------
   The CAFiL symbol with an orange "agent" dot and its trail travelling the loop, a soft pulse at the arrow's base and
   the arrow drawn once. Without JavaScript it plays once, within five seconds; with JavaScript it loops, with a pause
   button, and pauses off-screen. With reduced motion only the still symbol is shown. Pure CSS on an inline SVG. */
.lab-agent { display: block; inline-size: 100%; block-size: auto; overflow: visible; }
.lab-agent .lab-logo-navy { fill: var(--lab-logo-navy); }
.lab-agent .lab-logo-orange { fill: var(--lab-logo-orange); }
.lab-agent__dot, .lab-agent__trail { fill: none; stroke: var(--lab-logo-orange); stroke-linecap: round; stroke-dashoffset: 0; }
.lab-agent__dot { stroke-width: 26; stroke-dasharray: 0 1000; }
.lab-agent__trail { stroke-width: 12; stroke-dasharray: 60 940; opacity: .55; }
.lab-agent__trail--long { stroke-width: 6; stroke-dasharray: 170 830; opacity: .25; }
.lab-agent__pulse { fill: var(--lab-logo-orange); opacity: 0; transform-box: fill-box; transform-origin: center; }
.lab-agent__reveal { transform-box: fill-box; transform-origin: 0 100%; }
@media (prefers-reduced-motion: no-preference) {
	.lab-hero__agent { --lab-agent-time: 4.8s; --lab-agent-runs: 1; }
	.lab-hero__agent.is-live { --lab-agent-time: 9s; --lab-agent-runs: infinite; }
	.lab-agent__dot, .lab-agent__trail { animation: lab-agent-run var(--lab-agent-time) linear var(--lab-agent-runs) both; }
	.lab-agent__trail { animation-delay: calc(var(--lab-agent-time) * -.94); }
	.lab-agent__trail--long { animation-delay: calc(var(--lab-agent-time) * -.83); }
	.lab-hero__agent:not(.is-live) .lab-agent__trail { animation-name: lab-agent-run, lab-agent-settle; animation-duration: var(--lab-agent-time), .6s; animation-delay: 0s, calc(var(--lab-agent-time) - .6s); animation-timing-function: linear, ease; animation-iteration-count: 1, 1; }
	.lab-agent__pulse { animation: lab-agent-pulse calc(var(--lab-agent-time) / 2) var(--lab-motion-ease, ease-out) var(--lab-agent-runs) both; }
	.lab-agent__reveal { animation: lab-agent-reveal 1.6s var(--lab-motion-ease, ease-out) .2s both; }
	.lab-hero__agent.is-paused *, .lab-hero__agent.is-away *, .lab-hero__agent.is-hidden-tab * { animation-play-state: paused !important; }
}
@keyframes lab-agent-run { from { stroke-dashoffset: 0; } to { stroke-dashoffset: -1000; } }
@keyframes lab-agent-settle { to { opacity: 0; } }
@keyframes lab-agent-pulse { 0% { opacity: .45; transform: scale(.4); } 70%, 100% { opacity: 0; transform: scale(2.2); } }
@keyframes lab-agent-reveal { from { transform: scale(0); } to { transform: scale(1); } }
@media (prefers-reduced-motion: reduce) {
	.lab-agent__dot, .lab-agent__trail, .lab-agent__pulse, .lab-agent-pause { display: none !important; }
	.lab-agent__reveal { animation: none !important; transform: none; }
}
.lab-hero__agent { position: relative; }
.lab-agent-pause { position: absolute; inset-block-end: 0; inset-inline-end: 0; display: inline-grid; place-items: center; inline-size: 2.75rem; block-size: 2.75rem; padding: 0; border: 1px solid var(--lab-border-strong); border-radius: 50%; background: transparent; color: var(--lab-text); cursor: pointer; }
.lab-agent-pause:hover { background: var(--lab-surface-2); }
.lab-agent-pause:focus-visible { outline: 3px solid var(--lab-focus); outline-offset: 2px; }
.lab-agent-pause[hidden] { display: none; }
.lab-agent-pause__icon { inline-size: 1.125rem; block-size: 1.125rem; }
.lab-agent-pause__bars { fill: none; stroke: currentColor; stroke-width: 3; stroke-linecap: round; }
.lab-agent-pause__play { display: none; fill: currentColor; }
.lab-agent-pause[aria-pressed="true"] .lab-agent-pause__bars { display: none; }
.lab-agent-pause[aria-pressed="true"] .lab-agent-pause__play { display: block; }

/* Layout: below the text on small screens, beside it from 1024px. */
.lab-hero--agent { display: flex; flex-direction: column; }
.lab-hero--agent .lab-hero__agent { order: 2; inline-size: min(100% - 2 * var(--lab-gutter), 26rem); margin: clamp(2.5rem, 6vw, 3.5rem) auto 0; }
@media (min-width: 1024px) {
	.lab-hero--agent { display: block; }
	.lab-hero--agent .lab-hero__inner > * { max-inline-size: min(36rem, 52%); }
	.lab-hero--agent .lab-hero__title { max-inline-size: min(11.5em, 52%); }
	.lab-hero--agent .lab-hero__agent { position: absolute; inset-block-start: 50%; inset-inline-end: max(var(--lab-gutter), (100% - var(--lab-wide)) / 2); inline-size: min(40vw, 36rem); margin: 0; transform: translateY(-50%); }
}
/* A: Navy (the inverse band). B: light editorial, on the page colour with a rule below. C: Ink, with a large loop that
   runs off the end edge behind the text. */
.lab-hero--dir-b { background: var(--lab-bg); border-block-end: 1px solid var(--lab-border); }
.lab-hero--dir-b .lab-hero__title { font-size: clamp(2.75rem, 6.4vw, 5.25rem); letter-spacing: -.035em; }
@media (min-width: 1024px) {
	.lab-hero--dir-c { padding-block: clamp(6rem, 12vw, 10rem); }
	.lab-hero--dir-c .lab-hero__inner > *, .lab-hero--dir-c .lab-hero__title { max-inline-size: min(34rem, 46%); }
	.lab-hero--dir-c .lab-hero__agent { inline-size: min(48vw, 50rem); inset-inline-end: max(2vw, (100% - var(--lab-wide)) / 2 - 6vw); }
}

/* Call-to-action band */
.lab-cta { padding-block: clamp(3.5rem, 7vw, 6rem); background: var(--lab-surface); }
.lab-cta--night { background: var(--lab-bg); color: var(--lab-text); }
.lab-cta--white { background: var(--lab-bg); }
.lab-cta__inner { inline-size: min(100% - 2 * var(--lab-gutter), var(--lab-wide)); margin-inline: auto; display: grid; gap: 1.5rem 3rem; align-items: center; }
@media (min-width: 900px) { .lab-cta__inner { grid-template-columns: 1fr auto; } }
.lab-cta__copy > * + * { margin-block-start: .75rem; }
.lab-cta__title { margin: 0; max-inline-size: 22em; }
.lab-cta--night .lab-cta__title { color: var(--lab-heading); }
.lab-cta__text { margin: 0; max-inline-size: 40em; font-size: var(--wp--preset--font-size--lg); }

/* Card grids */
.lab-cards { display: grid; gap: clamp(1rem, 2vw, 1.5rem); grid-template-columns: 1fr; }
@media (min-width: 640px) { .lab-cards--2, .lab-cards--3, .lab-cards--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .lab-cards--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .lab-cards--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.lab-card { display: flex; flex-direction: column; gap: .5rem; }
.lab-card__title { font-size: var(--wp--preset--font-size--xl); line-height: 1.3; margin: .25rem 0 0; }
.lab-card__title a { color: inherit; text-decoration: none; }
.lab-card--link:hover .lab-card__title a, .lab-card__title a:focus-visible { color: var(--lab-link); text-decoration: underline; }
.lab-card__text { margin: 0; color: var(--lab-text); font-size: var(--wp--preset--font-size--sm); line-height: 1.6; }
.lab-cards--large .lab-card__title { font-size: var(--wp--preset--font-size--2-xl); }
.lab-cards--large .lab-card__text { font-size: var(--wp--preset--font-size--lg); line-height: 1.55; color: var(--lab-heading); }
.lab-card__more { margin: auto 0 0; padding-block-start: .75rem; color: var(--lab-link); font-weight: 600; font-size: var(--wp--preset--font-size--sm); display: inline-flex; align-items: center; gap: .375rem; }
.lab-card--link { cursor: pointer; }
.lab-card__action { margin: auto 0 0; padding-block-start: .75rem; } /* a card with a visible button (Work with us, C-17) */
.lab-card--link:focus-within { border-color: var(--lab-accent-2); }

/* Why now cards (FR-20) */
.lab-why__card { gap: .75rem; }
.lab-why__evidence { margin-block-start: auto; padding-block-start: 1rem; border-block-start: 1px solid var(--lab-border); font-size: var(--wp--preset--font-size--sm); }
.lab-why__evidence p { margin: 0 0 .5rem; }
.lab-why__label { font-size: var(--wp--preset--font-size--xs); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--lab-eyebrow); }
.lab-why__source { color: var(--lab-text-muted); font-size: var(--wp--preset--font-size--xs); }
/* Line up the title, text and evidence of the three cards (subgrid where supported). */
@supports (grid-template-rows: subgrid) { @media (min-width: 640px) {
	.lab-why__card { display: grid; grid-row: span 3; grid-template-rows: subgrid; row-gap: .75rem; align-content: start; }
	.lab-why__evidence { margin-block-start: 0; align-self: start; }
} }

/* Theme cards and the Evidence Programme band */
.lab-theme-card .lab-icon--theme { margin-block-end: .5rem; }
.lab-theme-card--large { padding: clamp(1.5rem, 3vw, 2.5rem); }
.lab-theme-card--large .lab-card__title { font-size: var(--wp--preset--font-size--2-xl); }
.lab-theme-card--large .lab-card__text { font-size: var(--wp--preset--font-size--md); }
.lab-programme-band { display: flex; gap: 1.25rem; align-items: flex-start; margin-block-start: clamp(1rem, 2vw, 1.5rem); padding: clamp(1.25rem, 2.5vw, 2rem); border-radius: var(--lab-radius-card); background: var(--lab-tag-bg); color: var(--lab-text); }
.lab-programme-band__title { margin: 0 0 .375rem; font-size: var(--wp--preset--font-size--xl); }
.lab-programme-band__title a { color: var(--lab-heading); }
.lab-programme-band p { margin: 0; }
.lab-programme-band .lab-icon--theme { color: var(--lab-heading); }
.lab-statement--small { margin: 1.5rem 0 0; font-size: var(--wp--preset--font-size--xs); color: var(--lab-text-muted); max-inline-size: 60em; }
.lab-statement p { margin: 0; }

/* People */
.lab-people__grid { display: grid; gap: clamp(1.25rem, 2.5vw, 2rem) clamp(1rem, 2vw, 1.5rem); grid-template-columns: repeat(auto-fill, minmax(min(100%, 13.5rem), 1fr)); }
.lab-people__note { margin-block-start: 1.5rem; font-size: var(--wp--preset--font-size--sm); color: var(--lab-text); }
.lab-people__note a { color: var(--lab-link); }
.lab-person-card { display: flex; flex-direction: column; gap: .75rem; position: relative; }
.lab-person-card__media { aspect-ratio: 1; overflow: hidden; border-radius: var(--lab-radius-card); background: var(--lab-surface); }
.lab-person-card__media img { inline-size: 100%; block-size: 100%; object-fit: cover; display: block; transition: transform .4s var(--lab-ease); }
.lab-person-card:hover .lab-person-card__media img { transform: scale(1.03); }
.lab-person-card__name { font-size: var(--wp--preset--font-size--lg); margin: 0; line-height: 1.3; }
.lab-person-card__name a { color: var(--lab-heading); text-decoration: none; }
.lab-person-card__name a::after { content: ""; position: absolute; inset: 0; }
.lab-person-card__name a:hover, .lab-person-card__name a:focus-visible { text-decoration: underline; color: var(--lab-link); }
.lab-person-card__role, .lab-person-card__org { margin: 0; font-size: var(--wp--preset--font-size--sm); color: var(--lab-text); }
.lab-person-card__org { color: var(--lab-text-muted); }
/* Theme tags on cards: a quiet line ("A · B · C") rather than chips, so cards stay compact */
.lab-person-card__tags { margin: .25rem 0 0; font-size: var(--wp--preset--font-size--xs); line-height: 1.45; color: var(--lab-text-muted); }
.lab-person-card__tags .lab-tag { display: inline; min-block-size: 0; padding: 0; background: none; color: inherit; font-size: inherit; font-weight: 500; }
.lab-person-card__tags .lab-tag:not(:last-child)::after { content: " ·"; }
.lab-badge--founding { align-self: flex-start; margin: 0; background: var(--lab-tag-bg); box-shadow: none; color: var(--lab-heading); }
.lab-person-card__media { position: relative; }
.lab-person-card__media--initials { display: grid; place-items: center; background: var(--lab-tag-bg); }
.lab-person-card__media--initials > span { font-size: clamp(2rem, 5vw, 3.25rem); font-weight: 700; letter-spacing: -.02em; color: var(--lab-heading); }
.lab-person-card__media .lab-badge--founding { position: absolute; inset-block-end: .625rem; inset-inline-start: .625rem; box-shadow: var(--lab-shadow-badge); }

/* Insights */
.lab-insight-card { position: relative; display: flex; flex-direction: column; background: var(--lab-card-bg); border: 1px solid var(--lab-border); border-radius: var(--lab-radius-card); overflow: hidden; }
.lab-insight-card__media { aspect-ratio: 16 / 9; overflow: hidden; background: var(--lab-surface); }
.lab-insight-card__media img { inline-size: 100%; block-size: 100%; object-fit: cover; display: block; }
.lab-insight-card__body { padding: clamp(1.125rem, 2vw, 1.5rem); display: flex; flex-direction: column; gap: .375rem; }
.lab-insight-card__body .lab-eyebrow { margin: 0; }
.lab-insight-card__title { font-size: var(--wp--preset--font-size--xl); line-height: 1.3; margin: 0; }
.lab-insight-card__title a { color: var(--lab-heading); text-decoration: none; }
.lab-insight-card__title a::after { content: ""; position: absolute; inset: 0; }
.lab-insight-card:hover { border-color: var(--lab-accent-2); }
.lab-insight-card:hover .lab-insight-card__title a { text-decoration: underline; }
.lab-insight-card__meta { margin: 0; font-size: var(--wp--preset--font-size--xs); color: var(--lab-text-muted); }

/* Events */
.lab-events-list__items { display: grid; gap: 1rem; }
@media (min-width: 900px) { .lab-events-list__items { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.lab-event-card { position: relative; display: flex; gap: 1.25rem; padding: clamp(1.125rem, 2vw, 1.5rem); background: var(--lab-card-bg); border: 1px solid var(--lab-border); border-radius: var(--lab-radius-card); }
.lab-event-card:hover { border-color: var(--lab-accent-2); }
.lab-event-card__date { flex: none; inline-size: 4.5rem; margin: 0; padding-block: .5rem; text-align: center; border-radius: 6px; background: var(--lab-surface-2); color: var(--lab-heading); display: flex; flex-direction: column; justify-content: center; }
.lab-event-card__day { font-size: 1.75rem; font-weight: 700; line-height: 1; }
.lab-event-card__month { font-size: var(--wp--preset--font-size--xs); color: var(--lab-text); margin-block-start: .25rem; }
.lab-event-card__body { display: flex; flex-direction: column; gap: .25rem; min-inline-size: 0; }
.lab-event-card__body .lab-eyebrow { margin: 0; }
.lab-event-card__title { font-size: var(--wp--preset--font-size--xl); line-height: 1.3; margin: 0; }
.lab-event-card__title a { color: var(--lab-heading); text-decoration: none; }
.lab-event-card__title a::after { content: ""; position: absolute; inset: 0; }
.lab-event-card:hover .lab-event-card__title a { text-decoration: underline; }
.lab-event-card__when { margin: 0; font-size: var(--wp--preset--font-size--sm); color: var(--lab-text); }
.lab-event-card .lab-tag, .lab-event-card .lab-badge { align-self: flex-start; margin: .375rem 0 0; }
.lab-empty { padding: clamp(1.5rem, 3vw, 2.5rem); border: 1px dashed var(--lab-border-strong); border-radius: var(--lab-radius-card); background: var(--lab-surface); }
.lab-empty > p { margin: 0 0 1rem; font-size: var(--wp--preset--font-size--lg); }

/* Report feature */
.lab-report-feature { background: var(--lab-bg); color: var(--lab-text); padding-block: clamp(4rem, 8vw, 6.5rem); }
.lab-report-feature__inner { inline-size: min(100% - 2 * var(--lab-gutter), var(--lab-wide)); margin-inline: auto; display: grid; gap: 2.5rem; align-items: center; }
@media (min-width: 900px) { .lab-report-feature__inner { grid-template-columns: 1.4fr 1fr; } }
.lab-report-feature__title { color: var(--lab-heading); font-family: var(--lab-font-heading); font-weight: 700; font-size: var(--wp--preset--font-size--3-xl); line-height: 1.15; margin: 0 0 1rem; max-inline-size: 18em; }
.lab-report-feature__lead { font-size: var(--wp--preset--font-size--lg); max-inline-size: 36em; margin: 0 0 1.75rem; color: var(--lab-text); }
.lab-report-feature__actions { display: flex; flex-wrap: wrap; gap: .75rem; margin: 0; }
.lab-report-feature__inside { border-inline-start: 2px solid var(--lab-accent); padding-inline-start: clamp(1.25rem, 3vw, 2rem); }
.lab-report-feature__inside-title { margin: 0 0 1rem; font-size: var(--wp--preset--font-size--xs); font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--lab-accent); }
.lab-report-feature__inside ul { margin: 0; padding: 0; list-style: none; display: grid; gap: .75rem; }
.lab-report-feature__inside li { position: relative; padding-inline-start: 1.25rem; color: var(--lab-text); line-height: 1.5; }
.lab-report-feature__inside li::before { content: ""; position: absolute; inset-inline-start: 0; inset-block-start: .6em; inline-size: .375rem; block-size: .375rem; border-radius: 50%; background: var(--lab-accent-2); }
.lab-report-feature__cover img { display: block; inline-size: 100%; max-inline-size: 22rem; margin-inline: auto; border-radius: 4px; box-shadow: var(--lab-shadow-cover); }

/* Statistics band */
.lab-stats { padding-block: clamp(3rem, 6vw, 5rem); background: var(--lab-surface); }
.lab-stats__list { display: grid; gap: 1.5rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); margin: 0; }
.lab-stats__item { display: flex; flex-direction: column; border-inline-start: 3px solid var(--lab-accent-2); padding-inline-start: 1rem; }
.lab-stats__value { order: -1; margin: 0; font-size: var(--wp--preset--font-size--4-xl); font-weight: 700; color: var(--lab-heading); line-height: 1.05; letter-spacing: -.02em; }
.lab-stats__label { margin: .25rem 0; font-weight: 600; color: var(--lab-text); }
.lab-stats__source { margin: 0; font-size: var(--wp--preset--font-size--xs); color: var(--lab-text-muted); }

/* Logo strip */
.lab-logos__list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 2rem 3rem; align-items: center; }
.lab-logos__list img { block-size: 2.75rem; inline-size: auto; max-inline-size: 10rem; object-fit: contain; box-sizing: content-box; padding: var(--lab-logo-tile-pad); border-radius: var(--lab-radius); background: var(--lab-logo-tile); }

/* Video facade (FR-09) */
.lab-video { margin: 2rem 0; }
.lab-video__frame { position: relative; aspect-ratio: 16 / 9; background: var(--lab-brand-navy); border-radius: var(--lab-radius-card); overflow: hidden; }
.lab-video__poster, .lab-video__frame iframe, .lab-video__frame video { position: absolute; inset: 0; inline-size: 100%; block-size: 100%; object-fit: cover; border: 0; }
.lab-video__play { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .75rem; inline-size: 100%; border: 0; background: rgb(39 48 81 / .45); color: #fff; font: inherit; font-weight: 600; cursor: pointer; padding: 1rem; text-align: center; }
.lab-video__play:hover { background: rgb(39 48 81 / .6); }
.lab-video__icon { inline-size: 4rem; block-size: 4rem; padding: 1rem; border-radius: 50%; background: var(--lab-brand-orange); color: var(--lab-brand-ink); }
.lab-video__play:focus-visible { outline: 3px solid var(--lab-brand-orange); outline-offset: -6px; }
/* Under the frame, so it never meets the play label on a small screen; removed once the video loads. */
.lab-video__note { margin: .5rem 0 0; font-size: var(--wp--preset--font-size--xs); color: var(--lab-text-muted); }
/* A small frame: a smaller play icon, so a long title still fits. */
.lab-video__frame { container-type: inline-size; }
@container (max-width: 26rem) {
	.lab-video:not(.lab-video--film) .lab-video__play { gap: .5rem; font-size: var(--wp--preset--font-size--sm); }
	.lab-video:not(.lab-video--film) .lab-video__icon { inline-size: 3rem; block-size: 3rem; padding: .75rem; }
}
.lab-video__transcript { margin-block-start: 1rem; }
.lab-video__caption { margin-block-start: .5rem; font-size: var(--wp--preset--font-size--sm); color: var(--lab-text-muted); }
.lab-video__caption a { color: var(--lab-link); }
.lab-video__describe { color: var(--lab-text-muted); font-style: italic; }
.lab-video__describe-label { font-style: normal; font-weight: 600; }
.lab-text-section .lab-video--film { margin-block-end: 0; }
/* The film's poster is its closing frame (logo, slogan, address in the middle), so its play control sits in the empty bottom corner. */
.lab-video--film .lab-video__play { flex-direction: row; justify-content: flex-start; align-items: flex-end; gap: .625rem; padding: clamp(.5rem, 2.5%, 1.25rem); background: linear-gradient(to top, rgb(39 48 81 / .6), rgb(39 48 81 / 0) 40%); font-size: var(--wp--preset--font-size--sm); text-align: start; }
.lab-video--film .lab-video__play:hover { background: linear-gradient(to top, rgb(39 48 81 / .8), rgb(39 48 81 / .1) 60%); }
.lab-video--film .lab-video__icon { flex: none; inline-size: clamp(2.5rem, 6vw, 3.25rem); block-size: clamp(2.5rem, 6vw, 3.25rem); padding: .7rem; }
.lab-video--film .lab-video__play > span { padding-block-end: .35rem; }
/* On a small film the full label would cover the address: it shows "Play video" and screen readers still hear the whole name. */
@container (max-width: 26rem) {
	.lab-video__label-title { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
}
.lab-video__transcript summary { cursor: pointer; font-weight: 600; color: var(--lab-link); min-block-size: 2.75rem; display: flex; align-items: center; }

/* Core block refinements */
.wp-block-details { border-block: 1px solid var(--lab-border); padding-block: .25rem; }
.wp-block-details + .wp-block-details { border-block-start: 0; }
.wp-block-details summary { cursor: pointer; font-weight: 600; color: var(--lab-heading); min-block-size: 3rem; display: flex; align-items: center; }
.wp-block-pullquote { border-block: 2px solid var(--lab-heading); padding-block: 1.5rem; }
.wp-block-quote { border-inline-start: 3px solid var(--lab-accent-2); padding-inline-start: 1.25rem; margin-inline: 0; }
.wp-block-table table { border-collapse: collapse; inline-size: 100%; }
.wp-block-table th, .wp-block-table td { border-block-end: 1px solid var(--lab-border); padding: .625rem .75rem; text-align: start; }
.wp-block-table th { color: var(--lab-heading); }

/* Designed pages: blocks span the page; plain text blocks stay at a readable width. */
.lab-designed > .wp-block-post-content > :not([class*="lab-"]):not(.alignfull):not(.alignwide) { inline-size: min(100% - 2 * var(--lab-gutter), var(--lab-content)); margin-inline: auto; }
.lab-designed > .wp-block-post-content > .alignwide { inline-size: min(100% - 2 * var(--lab-gutter), var(--lab-wide)); margin-inline: auto; }
.lab-designed > .wp-block-post-content > * + * { margin-block-start: 0; }
.lab-designed > .wp-block-post-content > p:first-child, .lab-designed > .wp-block-post-content > h2:first-child { margin-block-start: clamp(3rem, 6vw, 5rem); }
.lab-designed > .wp-block-post-content > .lab-panel { inline-size: min(100% - 2 * var(--lab-gutter), var(--lab-wide)); margin: clamp(2rem, 4vw, 3rem) auto; }

/* Small screens: two people per row; quieter motif behind full-width text */
@media (max-width: 639px) {
	.lab-people__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem 1rem; }
	.lab-person-card__name { font-size: var(--wp--preset--font-size--md); }
	.lab-person-card__tags { display: none; }
	.lab-person-card__media .lab-badge--founding { inset-block-end: .375rem; inset-inline-start: .375rem; padding: .0625rem .375rem; font-size: .75rem; white-space: nowrap; }
}
/* Up to tablet width the hero text runs under the motif, so the motif is quieter there. */
@media (max-width: 1023px) {
	.lab-hero .lab-motif { opacity: .4; }
}

/* ---------- forms ---------- */
/* The spam trap: clipped in place rather than moved 10,000px aside, which in right-to-left pages lands on the other side. */
.lab-hp { position: absolute !important; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.lab-form { margin-block-start: 1rem; }
.lab-form__intro { padding: 1rem 1.25rem; background: var(--lab-tag-bg); border-radius: var(--lab-radius-card); color: var(--lab-text); }
.lab-form__submit { margin: 1.5rem 0 0; }
.lab-form__small { font-size: var(--wp--preset--font-size--xs); color: var(--lab-text-muted); }
.lab-optional { font-weight: 400; color: var(--lab-text-muted); }
.lab-form-errors { border: 2px solid var(--lab-error); border-radius: var(--lab-radius-card); padding: 1rem 1.25rem; margin-block-end: 1.5rem; background: var(--lab-card-bg); }
.lab-form-errors h3 { margin: 0 0 .5rem; font-size: var(--wp--preset--font-size--lg); color: var(--lab-heading); }
.lab-form-errors ul { margin: 0; padding-inline-start: 1.25rem; }
.lab-form-errors a { color: var(--lab-error); font-weight: 600; }
.lab-form-done { padding: 1.25rem 1.5rem; border-radius: var(--lab-radius-card); background: var(--lab-notice-success-bg); color: var(--lab-text); font-size: var(--wp--preset--font-size--lg); }
.lab-form-done p { margin: 0; }
.lab-field fieldset, fieldset.lab-field { border: 0; padding: 0; margin: 0 0 1.25rem; }
fieldset.lab-field legend { margin-block-end: .5rem; }
fieldset.lab-field .lab-check { margin-block-end: .5rem; }
.lab-counter.is-over { color: var(--lab-error); font-weight: 600; }
.lab-form-fallback { font-size: var(--wp--preset--font-size--lg); }
.lab-field input[type="file"] { padding: .5rem 0; }
/* Newsletter band */
.lab-newsletter { padding-block: clamp(3rem, 6vw, 5rem); background: var(--lab-surface); }
.lab-newsletter--night { background: var(--lab-bg); color: var(--lab-text); }
.lab-newsletter__inner { inline-size: min(100% - 2 * var(--lab-gutter), var(--lab-wide)); margin-inline: auto; display: grid; gap: 1rem 4rem; align-items: start; }
@media (min-width: 900px) { .lab-newsletter__inner { grid-template-columns: 1fr 1fr; } }
.lab-newsletter__title { margin: 0 0 .75rem; }
.lab-newsletter__credit { margin: .5rem 0 0; font-size: var(--wp--preset--font-size--xs); color: var(--lab-text-muted); }
.lab-newsletter--night .lab-newsletter__title { color: var(--lab-heading); }
.lab-newsletter--night .lab-field label, .lab-newsletter--night .lab-form__small { color: var(--lab-text); }
.lab-newsletter--night .lab-form__small a { color: var(--lab-link); }
.lab-newsletter .lab-form--newsletter, .lab-footer__newsletter .lab-form--newsletter { display: grid; grid-template-columns: 1fr auto; column-gap: .75rem; align-items: end; margin: 0; }
.lab-newsletter .lab-form--newsletter > :not(.lab-field--email):not(.lab-form__submit):not(input), .lab-footer__newsletter .lab-form--newsletter > :not(.lab-field--email):not(.lab-form__submit):not(input) { grid-column: 1 / -1; }
.lab-newsletter .lab-form--newsletter .lab-field, .lab-footer__newsletter .lab-form--newsletter .lab-field { margin: 0; }
.lab-newsletter .lab-form__submit, .lab-footer__newsletter .lab-form__submit { margin: 0; }
.lab-newsletter--inline .lab-form--newsletter { max-inline-size: 36rem; }

/* Long-form text inside blocks */
.lab-prose > * { margin-block: 0; }
.lab-prose > * + * { margin-block-start: 1.125em; }
.lab-prose :where(p, li) { max-inline-size: 42em; }
.lab-prose ul.wp-block-list { padding-inline-start: 1.25em; }
.lab-prose ul.wp-block-list > li + li { margin-block-start: .5em; }
.lab-prose ul.wp-block-list > li::marker { color: var(--lab-link); }
.lab-prose ol.wp-block-list { padding-inline-start: 1.75em; }
.lab-prose ol.wp-block-list > li { padding-inline-start: .25em; }
.lab-prose ol.wp-block-list > li + li { margin-block-start: .875em; }
.lab-prose ol.wp-block-list > li::marker { color: var(--lab-link); font-weight: 600; font-variant-numeric: tabular-nums; }
.lab-prose .wp-block-buttons { margin-block-start: 2rem; }
.lab-version-date { color: var(--lab-text-muted); font-size: var(--wp--preset--font-size--sm); }
.lab-prose :where(h3) { margin-block-start: 2rem; font-size: var(--wp--preset--font-size--xl); }
.lab-prose .wp-block-columns { gap: clamp(1.5rem, 4vw, 4rem); }
.lab-prose .wp-block-column > h3:first-child { margin-block-start: 0; }

/* Text section: heading above, or beside the text on wide screens */
.lab-text-section__head { margin-block-end: clamp(1.25rem, 2.5vw, 2rem); }
.lab-text-section__head .lab-section__title { margin: 0; max-inline-size: 20em; }
.lab-text-section .lab-lead { margin-block-end: 1.5rem; }
@media (min-width: 960px) {
	.lab-text-section--split .lab-text-section__inner { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 4rem; align-items: start; }
	.lab-text-section--split .lab-text-section__head { position: sticky; inset-block-start: calc(var(--lab-header-offset) + 2rem); margin: 0; }
}
.lab-section--night .lab-lead, .lab-section--night .lab-prose { color: var(--lab-text); }
.lab-section--white + .lab-section--white, .lab-section--paper + .lab-section--paper { padding-block-start: 0; }

/* Origin strip */
.lab-origin { background: var(--lab-surface); border-block: 1px solid var(--lab-border); padding-block: clamp(3rem, 6vw, 5rem); }
.lab-origin__inner { display: grid; gap: .5rem 3rem; align-items: center; }
@media (min-width: 800px) { .lab-origin__inner { grid-template-columns: auto minmax(0, 1fr); } }
.lab-origin__year { margin: 0; font-weight: 700; font-size: clamp(3.5rem, 9vw, 7rem); line-height: 1; letter-spacing: -.03em; color: var(--lab-heading); font-variant-numeric: lining-nums tabular-nums; }
.lab-origin__year::after { content: ""; display: block; inline-size: 3rem; block-size: 3px; margin-block-start: .75rem; background: var(--lab-accent); }
.lab-origin__text p { margin: 0; font-size: var(--wp--preset--font-size--lg); line-height: 1.55; color: var(--lab-text); max-inline-size: 42em; }
.lab-origin__lead { color: var(--lab-heading); }
.lab-origin__text .lab-origin__more { margin-block-start: 1rem; font-size: var(--wp--preset--font-size--md); }

/* How we work diagram */
.lab-flow { margin: 2.5rem 0 0; }
.lab-flow__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.75rem; counter-reset: none; }
.lab-flow__step { position: relative; display: flex; align-items: center; gap: 1rem; }
.lab-flow__node { flex: none; display: grid; place-items: center; inline-size: 3rem; block-size: 3rem; border-radius: 50%; background: var(--lab-heading); color: var(--lab-bg); font-weight: 700; box-shadow: 0 0 0 6px var(--lab-tag-bg); }
.lab-flow__step:first-child .lab-flow__node { background: var(--lab-accent-2); }
.lab-flow__label { font-weight: 600; color: var(--lab-heading); font-size: var(--wp--preset--font-size--lg); }
.lab-flow__step + .lab-flow__step::before { content: ""; position: absolute; inset-inline-start: calc(1.5rem - 1px); inset-block-end: calc(100% + .125rem); block-size: 1.5rem; border-inline-start: 2px solid var(--lab-border); }
@media (min-width: 720px) {
	.lab-flow__list { grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); gap: 1rem; }
	.lab-flow__step { flex-direction: column; text-align: center; gap: .875rem; }
	.lab-flow__step + .lab-flow__step::before { inset-block: 1.5rem auto; inset-inline: calc(-50% + 2.25rem) calc(50% + 2.25rem); block-size: 0; border-inline-start: 0; border-block-start: 2px solid var(--lab-border); }
	.lab-flow__step + .lab-flow__step::after { content: ""; position: absolute; inset-block-start: calc(1.5rem - 5px); inset-inline-end: calc(50% + 2.25rem); inline-size: 8px; block-size: 8px; border-block-start: 2px solid var(--lab-border-strong); border-inline-end: 2px solid var(--lab-border-strong); transform: rotate(45deg); }
	[dir="rtl"] .lab-flow__step + .lab-flow__step::after { transform: rotate(-135deg); }
}

/* Routes (Work with us) */
.lab-routes__nav { position: sticky; inset-block-start: var(--lab-header-offset); z-index: 5; background: var(--lab-header-bg); border-block-end: 1px solid var(--lab-border); }
.lab-routes__list { list-style: none; margin-block: 0; padding: 0; display: flex; gap: .25rem 1.75rem; overflow-x: auto; scrollbar-width: none; }
/* Phones: the bar scrolls sideways, and its right edge fades to show there is more. Wider screens: it wraps. */
@media (max-width: 639px) {
	.lab-routes__list { padding-inline-end: 2.5rem; -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 2.5rem), transparent); mask-image: linear-gradient(to right, #000 calc(100% - 2.5rem), transparent); }
}
@media (min-width: 640px) {
	.lab-routes__list { flex-wrap: wrap; overflow-x: visible; row-gap: 0; }
}
.lab-routes__list a { display: inline-flex; align-items: center; min-block-size: 3rem; white-space: nowrap; font-weight: 600; font-size: var(--wp--preset--font-size--sm); color: var(--lab-heading); text-decoration: none; border-block-end: 2px solid transparent; }
.lab-routes__list a:hover { border-block-end-color: var(--lab-accent-2); color: var(--lab-link); }
.lab-route { border-block-end: 1px solid var(--lab-border); scroll-margin-top: calc(var(--lab-header-offset) + 3rem); padding-block: clamp(3rem, 6vw, 5rem); }
.lab-route__inner { display: grid; gap: 1.5rem 4rem; }
@media (min-width: 960px) { .lab-route__inner { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } }
.lab-route__title { font-size: var(--wp--preset--font-size--2-xl); margin: 0; max-inline-size: 16em; }
.lab-route__intro { margin: 1rem 0 0; color: var(--lab-text); max-inline-size: 34em; }
.lab-route__options { list-style: none; margin: 0; padding: 0; display: grid; gap: .25rem; }
.lab-route__options li { position: relative; padding: .625rem 0 .625rem 1.75rem; border-block-end: 1px solid var(--lab-border); color: var(--lab-text); }
.lab-route__options li::first-letter { text-transform: uppercase; }
.lab-route__options li::before { content: ""; position: absolute; inset-inline-start: .125rem; inset-block-start: 1.1rem; inline-size: .625rem; block-size: .625rem; border-radius: 50%; border: 2px solid var(--lab-accent-2); }
.lab-route__note { margin: 1.25rem 0 0; color: var(--lab-text-muted); font-size: var(--wp--preset--font-size--sm); max-inline-size: 40em; }
.lab-route__action { margin: 1.5rem 0 0; }
.lab-routes + .lab-statement-section, .lab-routes + * { margin-block-start: 0; }
.lab-statement-section:has(+ .lab-statement-section) { padding-block-end: clamp(2.5rem, 5vw, 4rem); }
.lab-statement-section + .lab-statement-section .lab-container { border-block-start: 1px solid var(--lab-border); padding-block-start: clamp(2rem, 4vw, 3rem); }

/* Contact details and the click-to-load map */
.lab-contact-details { display: grid; gap: 2rem; }
.lab-contact-details__list { margin: 0; display: grid; gap: 1.25rem; }
.lab-contact-details__list dt { font-size: var(--wp--preset--font-size--xs); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--lab-eyebrow); margin-block-end: .25rem; }
.lab-contact-details__list dd { margin: 0; color: var(--lab-text); }
.lab-contact-details__list address { font-style: normal; line-height: 1.6; }
.lab-contact-details__list a { color: var(--lab-heading); font-weight: 600; overflow-wrap: anywhere; }
.lab-map { position: relative; aspect-ratio: 4 / 3; border-radius: var(--lab-radius-card); overflow: hidden; background: var(--lab-tag-bg); border: 1px solid var(--lab-border); }
.lab-map__facade { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .75rem; padding: 1.25rem; text-align: center; background-image: radial-gradient(circle at 1px 1px, rgb(39 48 81 / .14) 1px, transparent 0); background-size: 18px 18px; }
.lab-map__pin { inline-size: 2rem; block-size: 2rem; color: var(--lab-link); }
.lab-map__text { margin: 0; font-weight: 600; color: var(--lab-heading); }
.lab-map__note { margin: 0; font-size: var(--wp--preset--font-size--xs); color: var(--lab-text); max-inline-size: 28em; }
.lab-map__note a { color: var(--lab-heading); }
.lab-map__frame { position: absolute; inset: 0; inline-size: 100%; block-size: 100%; border: 0; }
.lab-contact-layout { display: grid; gap: clamp(2.5rem, 5vw, 5rem); }
@media (min-width: 960px) { .lab-contact-layout { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); } }
.lab-form-section__note { margin-block-start: 1.5rem; color: var(--lab-text); }
.lab-form-section__note a { color: var(--lab-link); }

/* Grading scale */
.lab-scale { margin: 1.5rem 0 0; display: grid; gap: 1rem; }
@media (min-width: 720px) { .lab-scale { grid-template-columns: repeat(var(--lab-steps, 4), minmax(0, 1fr)); } }
.lab-scale__step { background: var(--lab-card-bg); border: 1px solid var(--lab-border); border-radius: var(--lab-radius-card); padding: 1.25rem; display: flex; flex-direction: column; gap: .5rem; }
.lab-scale__step::before { content: ""; display: block; block-size: 6px; border-radius: 3px; margin-block-end: .75rem; background: linear-gradient(90deg, var(--lab-accent-2) calc(var(--lab-step) / var(--lab-steps, 4) * 100%), var(--lab-surface-2) 0); }
.lab-scale__term { font-weight: 700; color: var(--lab-heading); font-size: var(--wp--preset--font-size--lg); }
.lab-scale__meaning { margin: 0; color: var(--lab-text); font-size: var(--wp--preset--font-size--sm); line-height: 1.6; }
.lab-scale__meaning::first-letter { text-transform: uppercase; }
.lab-scale__note { margin: 1.5rem 0 0; color: var(--lab-text-muted); font-size: var(--wp--preset--font-size--sm); }

/* Card extras */
.lab-card__label { margin: auto 0 0; padding-block-start: .75rem; font-style: italic; font-weight: 600; color: var(--lab-link); font-size: var(--wp--preset--font-size--sm); }
.lab-card[id] { scroll-margin-top: calc(var(--lab-header-offset) + 1.5rem); }
.lab-card[id]:target { border-color: var(--lab-accent-2); box-shadow: 0 0 0 3px var(--lab-tag-bg); }
.lab-programme-band { position: relative; }
.lab-programme-band__more { margin-block-start: .75rem !important; font-weight: 600; color: var(--lab-heading); text-decoration: underline; text-underline-offset: .18em; display: inline-flex; align-items: center; gap: .375rem; font-size: var(--wp--preset--font-size--sm); }
.lab-programme-band.lab-card--link:hover { box-shadow: inset 0 0 0 1px var(--lab-accent-2); }

/* Breadcrumbs (§8.1: below level two) */
.lab-breadcrumbs { margin-block-end: 1.5rem; font-size: var(--wp--preset--font-size--xs); }
.lab-breadcrumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .25rem .5rem; }
.lab-breadcrumbs li { display: inline-flex; align-items: center; gap: .5rem; }
.lab-breadcrumbs li:not(:last-child)::after { content: "/" / ""; opacity: .6; }
.lab-breadcrumbs a { display: inline-flex; align-items: center; min-block-size: 1.5rem; }
.lab-on-dark .lab-breadcrumbs { color: var(--lab-text); }
.lab-on-dark .lab-breadcrumbs a { color: var(--lab-heading); }
.lab-hero--light .lab-breadcrumbs a { color: var(--lab-heading); }

/* Research theme page */
.lab-hero__icon { inline-size: 3rem; block-size: 3rem; color: var(--lab-link); margin-block-end: 1.25rem; }
.lab-hero__title--theme { max-inline-size: 16em; font-size: var(--wp--preset--font-size--4-xl); }
.lab-prose--large > p { font-size: var(--wp--preset--font-size--lg); line-height: 1.6; color: var(--lab-text); }
.lab-questions { list-style: none; margin: 1.5rem 0 0; padding: 0; counter-reset: lab-q; display: grid; gap: 1rem; }
@media (min-width: 900px) { .lab-questions { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.lab-questions li { counter-increment: lab-q; position: relative; padding: 1.25rem 1.5rem 1.25rem 4rem; background: var(--lab-card-bg); border: 1px solid var(--lab-border); border-radius: var(--lab-radius-card); font-size: var(--wp--preset--font-size--md); line-height: 1.5; color: var(--lab-heading); font-weight: 500; }
.lab-questions li::before { content: counter(lab-q, decimal-leading-zero); position: absolute; inset-inline-start: 1.25rem; inset-block-start: 1.35rem; font-weight: 600; font-size: var(--wp--preset--font-size--sm); color: var(--lab-warning-text); font-variant-numeric: lining-nums tabular-nums; }
.lab-outputs { list-style: none; margin: 1.5rem 0 0; padding: 0; border-block-start: 1px solid var(--lab-border); }
.lab-outputs__item { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; padding-block: 1rem; border-block-end: 1px solid var(--lab-border); }
.lab-outputs__icon { flex: none; inline-size: 1.25rem; block-size: 1.25rem; color: var(--lab-link); }
.lab-outputs__text { flex: 1 1 20rem; color: var(--lab-text); }
.lab-outputs__text a { color: var(--lab-link); font-weight: 600; }
/* Theme pages: links to the other research pages */
.lab-more-research { list-style: none; margin: 1.5rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: .75rem; }
.lab-more-research__link { display: flex; align-items: center; gap: .75rem; min-block-size: 3.5rem; padding: .75rem 1rem; border: 1px solid var(--lab-border); line-height: 1.35; border-radius: var(--lab-radius); background: var(--lab-card-bg); color: var(--lab-heading); font-weight: 600; text-decoration: none; }
.lab-more-research__link:hover { border-color: var(--lab-accent-2); color: var(--lab-link); }
.lab-more-research__link .lab-icon { flex: none; inline-size: 2rem; block-size: 2rem; color: var(--lab-link); }

/* Search (FR-07) and 404 (FR-13) */
.lab-search__title, .lab-notfound__title { font-size: var(--wp--preset--font-size--4-xl); line-height: 1.08; letter-spacing: -.02em; margin: 0 0 1.5rem; color: var(--lab-heading); }
.lab-notfound__title { font-size: var(--wp--preset--font-size--3-xl); max-inline-size: 18em; }
.lab-search-form { margin-block: 1.5rem 2rem; }
.lab-search-form label { display: block; font-weight: 600; color: var(--lab-heading); font-size: var(--wp--preset--font-size--sm); margin-block-end: .375rem; }
.lab-search-form__row { display: flex; gap: .5rem; }
.lab-search-form input[type="search"] { flex: 1; min-inline-size: 0; min-block-size: 3rem; padding: .5rem .875rem; font: inherit; border: 1px solid var(--lab-border-strong); border-radius: var(--lab-radius); background: var(--lab-control-bg); color: var(--lab-text); }
.lab-search-form .lab-button { gap: .5rem; }
.lab-search-form .lab-icon { inline-size: 1.125rem; block-size: 1.125rem; }
.lab-search__count { margin: 0 0 1rem; color: var(--lab-text); font-weight: 600; }
.lab-search__suggestion { margin: 0 0 1.5rem; font-size: var(--wp--preset--font-size--lg); }
.lab-search__suggestion a { font-weight: 600; color: var(--lab-link); }
.lab-search__tools { display: grid; gap: 1rem; margin-block-end: .5rem; }
.lab-search .lab-chips { margin: 0; }
.lab-search__n { font-weight: 400; margin-inline-start: .3em; }
.lab-search__sort { display: flex; flex-wrap: wrap; align-items: center; gap: 0 1.25rem; font-size: var(--wp--preset--font-size--sm); color: var(--lab-text-muted); }
.lab-search__sort a { display: inline-flex; align-items: center; min-block-size: 2.75rem; font-weight: 600; color: var(--lab-link); }
.lab-search__sort a[aria-current="page"] { color: var(--lab-heading); text-decoration: none; }
.lab-search__results, .lab-search__links, .lab-notfound__links ul { list-style: none; margin: 0; padding: 0; }
.lab-search__result { padding-block: 1.25rem; border-block-end: 1px solid var(--lab-border); }
.lab-search__result-title { margin: 0 0 .25rem; font-size: var(--wp--preset--font-size--lg); line-height: 1.3; }
.lab-search__result-title a { color: var(--lab-heading); }
.lab-search__meta { display: flex; flex-wrap: wrap; gap: 0 .75rem; margin: 0 0 .375rem; font-size: var(--wp--preset--font-size--xs); color: var(--lab-text-muted); }
.lab-search__meta span + span::before { content: "·"; margin-inline-end: .75rem; }
.lab-search__kind { font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--lab-eyebrow); }
.lab-search__summary { margin: 0; color: var(--lab-text); font-size: var(--wp--preset--font-size--sm); }
.lab-search mark { background: var(--lab-tag-bg); color: inherit; padding-inline: .1em; border-radius: 2px; font-weight: 600; }
.lab-search__links, .lab-notfound__links ul { display: grid; gap: .25rem 2rem; grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr)); margin-block-start: 1rem; }
.lab-search__links a, .lab-notfound__links a { min-block-size: 2.75rem; color: var(--lab-link); }
.lab-notfound__links { margin-block-start: 2.5rem; padding-block-start: 1.5rem; border-block-start: 1px solid var(--lab-border); }
.lab-notfound__links-title { font-size: var(--wp--preset--font-size--lg); margin: 0; }
/* Readiness Diagnostic (FR-32) */
.lab-diagnostic__intro { margin: 0 0 2rem; color: var(--lab-text-muted); }
.lab-diagnostic__area { margin-block-end: 2.5rem; }
.lab-diagnostic__area-title { margin: 0 0 .5rem; font-size: var(--wp--preset--font-size--2-xl); color: var(--lab-heading); }
.lab-diagnostic__area-intro { margin: 0 0 1rem; color: var(--lab-text); }
fieldset.lab-diagnostic__question { margin: 0; padding-block: 1.25rem; border-block-start: 1px solid var(--lab-border); }
.lab-diagnostic__question legend { float: inline-start; inline-size: 100%; margin: 0 0 .5rem; padding: 0; font-size: var(--wp--preset--font-size--md); color: var(--lab-heading); }
.lab-diagnostic__question legend + * { clear: both; }
.lab-diagnostic__n { color: var(--lab-link); }
.lab-diagnostic__options { display: grid; gap: .5rem; }
@media (min-width: 48rem) { .lab-diagnostic__options { grid-template-columns: repeat(var(--lab-n, 5), minmax(0, 1fr)); } }
.lab-diagnostic__option { position: relative; display: flex; }
.lab-diagnostic__option input { position: absolute; inset-block-start: 50%; inset-inline-start: .875rem; inline-size: 1.125rem; block-size: 1.125rem; margin: 0; transform: translateY(-50%); accent-color: var(--lab-link); }
.lab-diagnostic__option label { display: flex; align-items: center; inline-size: 100%; min-block-size: 3rem; padding: .5rem .75rem .5rem 2.5rem; border: 1px solid var(--lab-border); border-radius: var(--lab-radius); background: var(--lab-card-bg); font-size: var(--wp--preset--font-size--sm); font-weight: 400; line-height: 1.3; color: var(--lab-text); cursor: pointer; }
.lab-diagnostic__option label:hover { border-color: var(--lab-accent-2); }
.lab-diagnostic__option input:checked + label { border-color: var(--lab-accent-2); background: var(--lab-tag-bg); color: var(--lab-heading); font-weight: 600; }
.lab-diagnostic__option input:focus-visible + label { outline: 2px solid var(--lab-focus); outline-offset: 2px; }
.lab-field--error .lab-diagnostic__option label { border-color: var(--lab-error); }
.lab-diagnostic__submit { margin: 1rem 0 0; }
.lab-diagnostic__result { margin-block-start: 3rem; padding: clamp(1.5rem, 4vw, 2.5rem); border-radius: var(--lab-radius-card); background: var(--lab-surface); }
.lab-diagnostic__result:focus { outline: none; }
.lab-diagnostic__result-title { margin: 0 0 .5rem; font-size: var(--wp--preset--font-size--3-xl); color: var(--lab-heading); }
.lab-diagnostic__overall { display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem .75rem; margin: 0 0 1.5rem; }
.lab-diagnostic__percent { font-size: clamp(3rem, 8vw, 4.5rem); font-weight: 600; line-height: 1; letter-spacing: -.02em; color: var(--lab-link); }
.lab-diagnostic__overall-label { color: var(--lab-text-muted); }
.lab-diagnostic__band-title { margin: 0 0 .5rem; font-size: var(--wp--preset--font-size--xl); color: var(--lab-heading); }
.lab-diagnostic__band > p { margin: 0 0 1rem; }
.lab-diagnostic__by-area { margin: 2rem 0 .5rem; font-size: var(--wp--preset--font-size--lg); color: var(--lab-heading); }
.lab-diagnostic__areas { inline-size: 100%; border-collapse: collapse; font-size: var(--wp--preset--font-size--sm); }
.lab-diagnostic__areas th, .lab-diagnostic__areas td { padding: .625rem 0; border-block-end: 1px solid var(--lab-border); text-align: start; vertical-align: middle; }
.lab-diagnostic__areas thead th { font-size: var(--wp--preset--font-size--xs); font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--lab-text-muted); }
.lab-diagnostic__areas tbody th { inline-size: 45%; padding-inline-end: 1rem; font-weight: 600; color: var(--lab-heading); }
.lab-diagnostic__areas td { white-space: nowrap; }
.lab-diagnostic__bar { display: inline-block; inline-size: min(10rem, 45%); block-size: .5rem; margin-inline-end: .75rem; overflow: hidden; vertical-align: middle; border-radius: 999px; background: var(--lab-surface-2); }
.lab-diagnostic__bar > span { display: block; block-size: 100%; border-radius: inherit; background: var(--lab-accent-2); }
.lab-diagnostic__copy { margin-block-start: 2rem; padding-block-start: 1.5rem; border-block-start: 1px solid var(--lab-border); }
.lab-diagnostic__copy-title { margin: 0 0 1rem; font-size: var(--wp--preset--font-size--lg); color: var(--lab-heading); }
.lab-diagnostic__copy .lab-form-done { margin: 0; }
.lab-diagnostic__again { margin: 1.5rem 0 0; }
.lab-diagnostic__again a { color: var(--lab-link); font-weight: 600; }
/* Readiness Diagnostic in the editor */
.lab-diagnostic-editor { padding: 1rem; border: 1px dashed var(--lab-border-strong); border-radius: var(--lab-radius-card); }
.lab-diagnostic-editor__summary { margin: 0 0 .25rem; font-size: var(--wp--preset--font-size--sm); font-weight: 600; color: var(--lab-heading); }
.lab-diagnostic-editor__help { margin: 0 0 1rem; font-size: var(--wp--preset--font-size--xs); color: var(--lab-text-muted); }
.lab-diagnostic-editor__question { margin-block: .5rem; padding: .25rem 0 .25rem 1rem; border-inline-start: 3px solid var(--lab-tag-bg); }
.lab-diagnostic-editor__question-text { margin: 0; font-weight: 600; }
.lab-diagnostic-editor__result { margin-block: 1rem; padding: 1rem; border-radius: var(--lab-radius-card); background: var(--lab-surface); }
.lab-diagnostic-editor__from { margin: 0; font-size: var(--wp--preset--font-size--xs); font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--lab-eyebrow); }
.lab-review-note { padding: 1rem 1.25rem; border: 2px dashed var(--lab-accent); border-radius: var(--lab-radius); background: var(--lab-card-bg); color: var(--lab-text); font-size: var(--wp--preset--font-size--sm); }
.lab-review-note::before { content: "Review note: "; font-weight: 700; color: var(--lab-warning-text); }

/* ---------- People directory (§8.7) ---------- */
.lab-tabs { margin-block-end: clamp(1.5rem, 3vw, 2rem); border-block-end: 1px solid var(--lab-border); }
.lab-tabs__list { list-style: none; margin: 0; padding: 0; display: flex; gap: 0 1.75rem; overflow-x: auto; scrollbar-width: none; }
.lab-tabs__list a { display: inline-flex; align-items: center; min-block-size: 3rem; white-space: nowrap; font-weight: 600; font-size: var(--wp--preset--font-size--sm); color: var(--lab-text); text-decoration: none; border-block-end: 3px solid transparent; }
.lab-tabs__list a:hover { color: var(--lab-link); border-block-end-color: var(--lab-border); }
.lab-tabs__list a[aria-current="page"] { color: var(--lab-heading); border-block-end-color: var(--lab-accent-2); }
@media (max-width: 639px) {
	.lab-tabs__list { padding-inline-end: 2.5rem; -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 2.5rem), transparent); mask-image: linear-gradient(to right, #000 calc(100% - 2.5rem), transparent); }
}
.lab-filters { display: flex; flex-wrap: wrap; align-items: end; gap: 1rem 1.25rem; margin-block-end: clamp(2rem, 4vw, 3rem); padding: 1.25rem; background: var(--lab-surface); border-radius: var(--lab-radius-card); }
.lab-filters__field { display: grid; gap: .375rem; flex: 1 1 10rem; max-inline-size: 16rem; }
.lab-filters__field--theme { flex: 2 1 21rem; max-inline-size: 26rem; } /* fits the longest theme name */
.lab-filters__field label { font-weight: 600; font-size: var(--wp--preset--font-size--sm); color: var(--lab-heading); }
.lab-filters__field select { inline-size: 100%; min-block-size: 3rem; padding: .5rem .875rem; border: 1px solid var(--lab-border-strong); border-radius: var(--lab-radius); background: var(--lab-control-bg); color: var(--lab-text); font: inherit; }
.lab-filters__field select:focus-visible { outline: 2px solid var(--lab-focus); outline-offset: 1px; border-color: var(--lab-focus); }
.lab-filters__actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; }
.lab-filters__clear, .lab-result-count a { font-weight: 600; color: var(--lab-link); }
.lab-filters__clear { display: inline-flex; align-items: center; min-block-size: 2.75rem; }
.lab-result-count { margin: 0 0 clamp(1.5rem, 3vw, 2rem); font-weight: 600; color: var(--lab-heading); }
.lab-result-count a { margin-inline-start: .5rem; }
.lab-people-dir__group + .lab-people-dir__group { margin-block-start: clamp(3rem, 6vw, 5rem); }
.lab-people-dir__intro { margin-block: 0 clamp(1.5rem, 3vw, 2.5rem); }
.lab-people-dir__subhead { font-size: var(--wp--preset--font-size--xl); margin: clamp(2rem, 4vw, 3rem) 0 1.25rem; }
.lab-people-dir__group > .lab-section__title + .lab-people-dir__subhead, .lab-people-dir__intro + .lab-people-dir__subhead { margin-block-start: 0; }

/* Leadership: wide cards, photograph beside the text with the short biography */
.lab-people__grid.lab-people__grid--wide { grid-template-columns: minmax(0, 1fr); gap: 2rem; }
@media (min-width: 1100px) { .lab-people__grid.lab-people__grid--wide { grid-template-columns: repeat(auto-fill, minmax(34rem, 1fr)); } }
.lab-person-card--wide { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem 1.75rem; align-items: start; }
@media (min-width: 600px) { .lab-person-card--wide { grid-template-columns: minmax(9rem, 14rem) minmax(0, 1fr); } }
.lab-person-card--wide .lab-person-card__media { max-inline-size: 14rem; }
.lab-person-card--wide .lab-person-card__name { font-size: var(--wp--preset--font-size--xl); }
.lab-person-card--wide .lab-person-card__tags { display: block; }
.lab-person-card__bio { margin: .5rem 0 0; color: var(--lab-text); font-size: var(--wp--preset--font-size--sm); line-height: 1.55; max-inline-size: 38em; }

/* ---------- Profile page (§8.7) ---------- */
.lab-profile { padding-block: clamp(1.5rem, 4vw, 3rem) clamp(2.5rem, 6vw, 5rem); background: var(--lab-surface); }
.lab-profile__head { display: grid; gap: clamp(1.5rem, 4vw, 4rem); align-items: center; }
@media (min-width: 800px) {
	.lab-profile__head { grid-template-columns: minmax(14rem, 22rem) minmax(0, 1fr); }
	.lab-profile__head--no-photo { grid-template-columns: minmax(0, 1fr); }
}
.lab-profile__media { margin: 0; max-inline-size: 22rem; }
.lab-profile__media img { display: block; inline-size: 100%; block-size: auto; aspect-ratio: 1; object-fit: cover; border-radius: var(--lab-radius-card); background: var(--lab-card-bg); }
.lab-profile__credit { margin-block-start: .5rem; font-size: var(--wp--preset--font-size--xs); color: var(--lab-text-muted); }
.lab-profile__name { margin: 0 0 .75rem; font-size: var(--wp--preset--font-size--3-xl); line-height: 1.08; letter-spacing: -.02em; }
.lab-profile__title { margin: 0 0 .25rem; font-weight: 600; font-size: var(--wp--preset--font-size--md); color: var(--lab-link); max-inline-size: 36em; }
.lab-profile__org { margin: 0; color: var(--lab-text); max-inline-size: 36em; }
.lab-profile .lab-badge--founding { margin-block-end: 1rem; }
.lab-profile__tags { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1.5rem 0 0; }
.lab-profile__links { list-style: none; margin: 1.25rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0 1.75rem; }
.lab-profile__links a { display: inline-flex; align-items: center; min-block-size: 2.75rem; color: var(--lab-link); }
.lab-tag--link { text-decoration: none; }
.lab-tag--link:hover { background: var(--lab-tag-text); color: var(--lab-card-bg); text-decoration: none; }

/* ---------- Events listing and event page (§8.9) ---------- */
.lab-chips { margin-block: -.75rem clamp(1.5rem, 3vw, 2rem); }
.lab-chips ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.lab-chips a { display: inline-flex; align-items: center; min-block-size: 2.75rem; padding: .25rem 1rem; border: 1px solid var(--lab-border); border-radius: 999px; font-size: var(--wp--preset--font-size--sm); font-weight: 600; color: var(--lab-text); text-decoration: none; }
.lab-chips a:hover { border-color: var(--lab-accent-2); color: var(--lab-link); }
.lab-chips a[aria-current="page"] { background: var(--lab-heading); border-color: var(--lab-heading); color: var(--lab-bg); }
.lab-events-dir__group + .lab-events-dir__group { margin-block-start: clamp(3rem, 6vw, 5rem); }
.lab-events-dir__more { margin: 1.5rem 0 0; }
.lab-pager { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.5rem; margin-block-start: 2rem; font-size: var(--wp--preset--font-size--sm); }
.lab-pager a { display: inline-flex; align-items: center; min-block-size: 2.75rem; font-weight: 600; color: var(--lab-link); }
.lab-pager span { color: var(--lab-text-muted); }
.lab-eyebrow a { color: inherit; text-decoration: underline; text-underline-offset: .2em; }
.lab-eyebrow a:hover { color: var(--lab-heading); }
.lab-badge--quiet { background: var(--lab-card-bg); box-shadow: inset 0 0 0 1px var(--lab-border); color: var(--lab-heading); }
.lab-meta { color: var(--lab-text-muted); font-weight: 400; }

.lab-event-page { padding-block: clamp(1.5rem, 4vw, 3rem) clamp(2.5rem, 6vw, 4.5rem); background: var(--lab-surface); }
.lab-event-page__head { max-inline-size: 52rem; }
.lab-event-page__title { margin: 0; font-size: var(--wp--preset--font-size--3-xl); line-height: 1.08; letter-spacing: -.02em; }
.lab-event-page__badges { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1rem 0 0; }
.lab-event-page__facts { display: grid; gap: 1rem 2.5rem; margin: clamp(1.5rem, 3vw, 2.25rem) 0 0; padding: 1.25rem 0 0; border-block-start: 1px solid var(--lab-border); max-inline-size: 60rem; }
@media (min-width: 700px) { .lab-event-page__facts { grid-template-columns: repeat(auto-fit, minmax(13rem, max-content)); } }
.lab-event-page__facts dt { font-size: var(--wp--preset--font-size--xs); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--lab-text-muted); }
.lab-event-page__facts dd { margin: .25rem 0 0; font-size: var(--wp--preset--font-size--md); font-weight: 600; color: var(--lab-heading); }
.lab-event-page__tz { font-weight: 400; color: var(--lab-text); }
.lab-event-page__host-logo { display: block; max-block-size: 3rem; inline-size: auto; }
.lab-event-page__actions { display: flex; flex-wrap: wrap; gap: .75rem 1rem; margin-block-start: clamp(1.5rem, 3vw, 2rem); }
.lab-event-page__speakers { list-style: none; margin: 2rem 0 0; padding: 0; display: grid; gap: 1rem; }
@media (min-width: 700px) { .lab-event-page__speakers { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.lab-event-page__speakers li { display: grid; gap: .125rem; padding: 1rem 1.25rem; background: var(--lab-card-bg); border: 1px solid var(--lab-border); border-radius: var(--lab-radius-card); }
.lab-event-page__speakers span { color: var(--lab-text); font-size: var(--wp--preset--font-size--sm); }
.lab-event-page__after { display: grid; gap: clamp(2.5rem, 5vw, 4rem); }
.lab-event-page__recording { max-inline-size: 56rem; }

/* ---------- Insights listing and article page (§8.13) ---------- */
.lab-insights-dir__more { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 2rem; margin-block-start: clamp(2rem, 4vw, 3rem); }
.lab-insights-dir__more .lab-result-count { margin: 0; }
.lab-insights-dir__more a[aria-disabled="true"] { opacity: .6; pointer-events: none; }
.lab-notice { display: flex; gap: .75rem; align-items: flex-start; margin: 0; padding: 1rem 1.25rem; border-radius: var(--lab-radius-card); border-inline-start: 4px solid var(--lab-info); background: var(--lab-notice-info-bg); color: var(--lab-text); }
.lab-notice p { margin: 0; }
.lab-notice .lab-icon { flex: none; inline-size: 1.25rem; block-size: 1.25rem; margin-block-start: .15rem; }
.lab-notice--success { border-inline-start-color: var(--lab-success); background: var(--lab-notice-success-bg); }
.lab-notice--warning { border-inline-start-color: var(--lab-brand-orange); background: var(--lab-notice-warning-bg); }
.lab-notice--error { border-inline-start-color: var(--lab-error); background: var(--lab-notice-error-bg); }
.lab-note { margin: 0; padding: 1rem 1.25rem; border-inline-start: 3px solid var(--lab-accent); background: var(--lab-surface); color: var(--lab-text); font-size: var(--wp--preset--font-size--sm); line-height: 1.55; }
.lab-note a { color: var(--lab-link); font-weight: 600; }
.lab-tag--quiet { background: var(--lab-card-bg); border: 1px solid var(--lab-border); color: var(--lab-text); font-weight: 500; }

.lab-article__head { padding-block: clamp(1.5rem, 4vw, 3rem) clamp(2rem, 4vw, 3rem); background: var(--lab-surface); }
.lab-article__head-inner, .lab-article__layout { max-inline-size: calc(var(--lab-content) + 2 * var(--lab-gutter)); }
.lab-article__title, .lab-report__title { margin: 0; font-family: var(--lab-font-heading); font-weight: 700; font-size: var(--wp--preset--font-size--3-xl); line-height: 1.12; letter-spacing: -.01em; color: var(--lab-heading); }
.lab-article__standfirst, .lab-report__standfirst { margin: 1rem 0 0; font-size: var(--wp--preset--font-size--lg); line-height: 1.5; color: var(--lab-text); max-inline-size: 38em; }
.lab-article__byline { display: flex; flex-wrap: wrap; gap: .25rem 0; margin: 1.5rem 0 0; font-size: var(--wp--preset--font-size--sm); color: var(--lab-text); }
.lab-article__byline > span:not(:last-child)::after { content: "·"; margin-inline: .625rem; color: var(--lab-text-muted); }
.lab-article__byline a { color: var(--lab-link); font-weight: 600; }
.lab-article__hero { margin-block: 0; padding-block-start: clamp(1.5rem, 3vw, 2.5rem); }
.lab-article__hero img { display: block; inline-size: 100%; block-size: auto; max-block-size: 70vh; object-fit: cover; border-radius: var(--lab-radius-card); }
.lab-article__credit { margin-block-start: .5rem; font-size: var(--wp--preset--font-size--xs); color: var(--lab-text-muted); }
.lab-article__layout { padding-block: clamp(2rem, 5vw, 3.5rem) clamp(3rem, 6vw, 5rem); }
.lab-article__disclaimer { margin-block-end: 2rem; }
.lab-article__body { font-size: var(--wp--preset--font-size--md); line-height: 1.7; }
.lab-article__body :where(h2, h3) { font-family: var(--lab-font-heading); font-weight: 700; margin-block-start: 1.75em; }
.lab-article__body blockquote { margin-inline: 0; padding-inline-start: 1.25rem; border-inline-start: 3px solid var(--lab-accent-2); font-weight: 500; font-size: var(--wp--preset--font-size--lg); color: var(--lab-heading); }
.lab-article__body figure { margin-inline: 0; }
.lab-article__body figcaption { font-size: var(--wp--preset--font-size--xs); color: var(--lab-text-muted); }
.lab-article__body .wp-block-footnotes { margin-block-start: 2.5em; padding-block-start: 1.25em; border-block-start: 1px solid var(--lab-border); font-size: var(--wp--preset--font-size--sm); }
.lab-article__extras { display: grid; gap: .75rem; margin-block-start: clamp(2rem, 4vw, 3rem); padding-block-start: 1.5rem; border-block-start: 1px solid var(--lab-border); }
.lab-article__extras p { margin: 0; }
.lab-article__extras a { color: var(--lab-link); }
.lab-article__funding { font-size: var(--wp--preset--font-size--sm); color: var(--lab-text); }
.lab-article__foot { display: grid; gap: 1.5rem; margin-block-start: clamp(2rem, 4vw, 3rem); padding-block-start: 1.5rem; border-block-start: 1px solid var(--lab-border); }
.lab-article__tags { display: flex; flex-wrap: wrap; gap: .5rem; }
.lab-share { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.25rem; }
.lab-share__title { margin: 0; font-family: inherit; font-size: var(--wp--preset--font-size--sm); font-weight: 700; color: var(--lab-heading); }
.lab-share ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0 1.25rem; }
.lab-share a { display: inline-flex; align-items: center; min-block-size: 2.75rem; font-weight: 600; font-size: var(--wp--preset--font-size--sm); color: var(--lab-link); }

/* ---------- Outlook & Reports (§8.6) ---------- */
.lab-report-card__cover { margin: 0 0 .75rem; }
.lab-report-card__cover img { display: block; inline-size: auto; max-inline-size: 100%; max-block-size: 16rem; block-size: auto; border-radius: 3px; box-shadow: var(--lab-shadow-cover); }
.lab-report-card .lab-tag { align-self: flex-start; margin: .25rem 0 0; }
.lab-report-series .lab-card__text { color: var(--lab-text); }
.lab-report__head { padding-block: clamp(1.5rem, 4vw, 3rem) clamp(2.5rem, 5vw, 4rem); background: var(--lab-surface); }
.lab-report__head-inner { display: grid; gap: clamp(2rem, 5vw, 4rem); align-items: center; }
@media (min-width: 900px) { .lab-report__head-inner:not(.lab-report__head-inner--no-cover) { grid-template-columns: minmax(0, 1.5fr) minmax(14rem, 1fr); } }
.lab-report__intro { max-inline-size: 48rem; }
.lab-report__date { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; margin: 1.25rem 0 0; font-weight: 600; color: var(--lab-heading); }
.lab-report__actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.5rem; margin-block-start: clamp(1.5rem, 3vw, 2rem); }
.lab-report__size { font-weight: 400; white-space: nowrap; }
.lab-button:has(> .lab-report__size) { flex-wrap: wrap; column-gap: .375rem; row-gap: 0; } /* on a narrow screen the size goes under the label */
.lab-report__subscribe { color: var(--lab-link); font-size: var(--wp--preset--font-size--sm); min-block-size: 2.75rem; }
.lab-report__launch { margin: 1.5rem 0 0; color: var(--lab-text); }
.lab-report__launch a { color: var(--lab-link); font-weight: 600; }
.lab-report__cover img { display: block; inline-size: 100%; max-inline-size: min(22rem, 60vw); block-size: auto; margin-inline: auto; border-radius: 4px; box-shadow: var(--lab-shadow-cover); }
.lab-report__superseded { margin-block: 2rem 0; }
.lab-report__signup-inner { display: grid; gap: 1.5rem clamp(2rem, 5vw, 4rem); align-items: start; }
@media (min-width: 900px) { .lab-report__signup-inner { grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); } }
.lab-report__signup-sub { display: block; margin-block-start: .5rem; font-family: var(--wp--preset--font-family--sans); font-size: var(--wp--preset--font-size--lg); font-weight: 400; line-height: 1.4; color: var(--lab-text); }
.lab-report__signup .lab-meta { margin: 1rem 0 0; }
.lab-report__findings { margin: 0; padding: 0; list-style: none; counter-reset: lab-finding; display: grid; gap: 1rem; max-inline-size: 46rem; }
.lab-report__findings li { counter-increment: lab-finding; position: relative; padding: 1rem 1.25rem 1rem 3.75rem; background: var(--lab-surface); border-radius: var(--lab-radius-card); line-height: 1.55; }
.lab-report__findings li::before { content: counter(lab-finding); position: absolute; inset-inline-start: 1.25rem; inset-block-start: 1rem; font-family: var(--lab-font-heading); font-weight: 700; font-size: var(--wp--preset--font-size--lg); line-height: 1.3; color: var(--lab-link); }
.lab-report__cite { max-inline-size: 46rem; }
.lab-report__cite > :first-child { margin-block-start: 0; }
.lab-report__citation { margin: 0; padding: 1.25rem 1.5rem; background: var(--lab-card-bg); border: 1px solid var(--lab-border); border-radius: var(--lab-radius-card); line-height: 1.6; overflow-wrap: anywhere; }
.lab-report__repos { margin: 1.25rem 0 0; }
.lab-report__repos a { color: var(--lab-link); font-weight: 600; }
.lab-report__disclosure-inner { display: grid; gap: 2rem clamp(2rem, 4vw, 3.5rem); padding-block-start: clamp(2rem, 4vw, 3rem); border-block-start: 1px solid var(--lab-border); }
.lab-section--paper + .lab-report__disclosure .lab-report__disclosure-inner, .lab-report__head + .lab-report__disclosure .lab-report__disclosure-inner { padding-block-start: 0; border: 0; }
@media (min-width: 900px) { .lab-report__disclosure-inner { grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); } }
.lab-report__disclosure p { margin: 0; color: var(--lab-text); font-size: var(--wp--preset--font-size--sm); line-height: 1.6; }
.lab-report__disclosure p + p { margin-block-start: .75rem; }
.lab-report__disclosure .lab-link-arrow { color: var(--lab-link); font-size: var(--wp--preset--font-size--md); }
.lab-section__title--small { font-size: var(--wp--preset--font-size--lg); margin-block-end: .75rem; }
.lab-report__sponsor-logo { display: block; max-block-size: 3rem; inline-size: auto; margin-block-start: 1rem; }
.lab-report__pack .lab-form, .lab-report__pack .lab-form-done { max-inline-size: 36rem; }

/* ---------- Research library (§6.3, §9.7) ---------- */
.lab-pubs .lab-filters { margin-block-end: 2rem; }
.lab-pubs__year + .lab-pubs__year { margin-block-start: clamp(2.5rem, 5vw, 3.5rem); }
.lab-pubs__year-title { margin: 0 0 .5rem; font-size: var(--wp--preset--font-size--xl); color: var(--lab-heading); }
.lab-pubs__list { display: grid; max-inline-size: 60rem; }
.lab-pub { padding-block: 1.5rem; border-block-start: 1px solid var(--lab-border); }
.lab-pub:last-child { border-block-end: 1px solid var(--lab-border); }
.lab-pub .lab-eyebrow { margin: 0 0 .375rem; }
.lab-pub__title { margin: 0; font-size: var(--wp--preset--font-size--lg); line-height: 1.35; color: var(--lab-heading); }
.lab-pub__title a { color: inherit; text-decoration: none; }
.lab-pub__title a:hover { color: var(--lab-link); text-decoration: underline; }
.lab-pub__cite { margin: .5rem 0 0; color: var(--lab-text); max-inline-size: 48em; }
.lab-pub__cite cite { font-style: italic; }
.lab-pub__links { display: flex; flex-wrap: wrap; gap: 0 1.5rem; margin: .5rem 0 0; padding: 0; list-style: none; font-size: var(--wp--preset--font-size--sm); }
.lab-pub__links a { display: inline-block; padding-block: .75rem; overflow-wrap: anywhere; }
.lab-pub__abstract summary { display: inline-flex; align-items: center; gap: .5rem; min-block-size: 2.75rem; cursor: pointer; font-weight: 600; font-size: var(--wp--preset--font-size--sm); color: var(--lab-link); list-style: none; }
.lab-pub__abstract summary::-webkit-details-marker { display: none; }
.lab-pub__abstract summary::after { content: ""; inline-size: .45rem; block-size: .45rem; border-inline-end: 2px solid currentColor; border-block-end: 2px solid currentColor; transform: translateY(-2px) rotate(45deg); transition: transform .2s var(--lab-ease); }
.lab-pub__abstract[open] summary::after { transform: translateY(2px) rotate(-135deg); }
.lab-pub__abstract .lab-prose { max-inline-size: 48em; padding-block-end: .5rem; }
.lab-pub__meta { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; margin-block-start: .75rem; }
.lab-pub__people { margin: 0; font-size: var(--wp--preset--font-size--sm); color: var(--lab-text-muted); }
.lab-pub__meta .lab-tags, .lab-pub__meta p { margin: 0; }
@media (prefers-reduced-motion: reduce) { .lab-pub__abstract summary::after { transition: none; } }

/* ---------- Evidence Register (FR-30, §9.9) ---------- */
.lab-evidence .lab-filters { margin-block-end: 1.5rem; }
.lab-filters__field--sort { flex: 1 1 12rem; }
.lab-evidence__bar { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .5rem 2rem; margin-block-end: 1.5rem; }
.lab-evidence__bar .lab-result-count, .lab-evidence__download { margin: 0; }
.lab-evidence__download a { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 0 .375rem; min-block-size: 2.75rem; padding-block: .625rem; }
.lab-grade { display: inline-flex; align-items: center; gap: .5rem; font-weight: 600; color: var(--lab-heading); white-space: nowrap; }
.lab-grade::before { content: ""; flex: none; inline-size: 2.5rem; block-size: 6px; border-radius: 3px; background: linear-gradient(90deg, var(--lab-accent-2) calc(var(--lab-step) / 4 * 100%), var(--lab-surface-2) 0); }
.lab-timeline__grade .lab-tag, .lab-evidence-entry__grade .lab-tag { margin-inline-start: .5rem; }
.lab-evidence__grade .lab-tag { display: flex; inline-size: fit-content; margin-block-start: .375rem; }
.lab-evidence__table { inline-size: 100%; border-collapse: collapse; font-size: var(--wp--preset--font-size--sm); }
.lab-evidence__table th, .lab-evidence__table td { padding: 1rem .75rem; border-block-end: 1px solid var(--lab-border); text-align: start; vertical-align: top; }
.lab-evidence__table thead th { padding-block: .75rem; border-block-end: 2px solid var(--lab-heading); font-size: var(--wp--preset--font-size--xs); font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--lab-text-muted); }
.lab-evidence__table th:first-child, .lab-evidence__table td:first-child { padding-inline-start: 0; }
.lab-evidence__entry { font-weight: 400; min-inline-size: 15rem; }
.lab-evidence__title { display: inline; font-size: var(--wp--preset--font-size--md); font-weight: 600; line-height: 1.35; color: var(--lab-heading); text-decoration: none; }
.lab-evidence__title:hover { color: var(--lab-link); text-decoration: underline; }
.lab-evidence__id, .lab-evidence__sub { display: block; margin-block-start: .25rem; font-size: var(--wp--preset--font-size--xs); font-variant-numeric: tabular-nums; color: var(--lab-text-muted); }
.lab-evidence__desc { display: block; margin-block-start: .375rem; color: var(--lab-text); max-inline-size: 32em; }
.lab-evidence__date { white-space: nowrap; font-variant-numeric: tabular-nums; }
.lab-evidence__sources ul { margin: 0; padding: 0; list-style: none; }
.lab-evidence__sources li + li { margin-block-start: .375rem; }
.lab-evidence__sources { min-inline-size: 9rem; }
.lab-evidence__sources a { color: var(--lab-link); overflow-wrap: break-word; }
/* Below wide screens each entry is a card; the column names are repeated beside each value. */
@media (max-width: 71.99rem) {
	.lab-evidence__table, .lab-evidence__table tbody, .lab-evidence__table tr, .lab-evidence__table th, .lab-evidence__table td { display: block; }
	.lab-evidence__table thead { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
	.lab-evidence__table tr { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-flow: dense; gap: 1rem 1.5rem; padding: 1.25rem; margin-block-end: 1rem; border: 1px solid var(--lab-border); border-radius: var(--lab-radius-card); }
	.lab-evidence__entry, .lab-evidence__table td[data-label="Organisation"], .lab-evidence__table td[data-label="Theme"], .lab-evidence__sources { grid-column: 1 / -1; min-inline-size: 0; }
	.lab-evidence__table th, .lab-evidence__table td, .lab-evidence__table th:first-child, .lab-evidence__table td:first-child { padding: 0; border: 0; }
	.lab-evidence__table td::before { content: attr(data-label); display: block; margin-block-end: .25rem; font-size: var(--wp--preset--font-size--xs); font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--lab-text-muted); }
	.lab-evidence__entry { min-inline-size: 0; }
}
@media (min-width: 40rem) and (max-width: 71.99rem) {
	.lab-evidence__table tr { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.lab-evidence__table td[data-label="Organisation"], .lab-evidence__table td[data-label="Theme"], .lab-evidence__sources { grid-column: auto; }
}
.lab-timeline__year + .lab-timeline__year { margin-block-start: clamp(2rem, 4vw, 3rem); }
.lab-timeline__year-title { display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem 1rem; margin: 0 0 1rem; font-size: var(--wp--preset--font-size--xl); color: var(--lab-heading); }
.lab-timeline__count { font-size: var(--wp--preset--font-size--sm); font-weight: 500; color: var(--lab-text-muted); }
.lab-timeline__list { margin: 0; padding: 0 0 0 1.5rem; list-style: none; border-inline-start: 2px solid var(--lab-border); max-inline-size: 60rem; }
.lab-timeline__item { position: relative; display: grid; gap: .25rem 1.5rem; padding-block: .75rem 1.25rem; }
.lab-timeline__item::before { content: ""; position: absolute; inset-inline-start: calc(-1.5rem - 7px); inset-block-start: 1.125rem; inline-size: 12px; block-size: 12px; border-radius: 50%; background: var(--lab-accent-2); box-shadow: 0 0 0 3px var(--lab-bg); }
@media (min-width: 40rem) { .lab-timeline__item { grid-template-columns: 7rem minmax(0, 1fr); } }
.lab-timeline__date { margin: 0; padding-block-start: .125rem; font-size: var(--wp--preset--font-size--sm); font-weight: 600; font-variant-numeric: tabular-nums; color: var(--lab-text-muted); white-space: nowrap; }
.lab-timeline__title { margin: 0; font-size: var(--wp--preset--font-size--md); line-height: 1.35; color: var(--lab-heading); }
.lab-timeline__title a { color: inherit; text-decoration: none; }
.lab-timeline__title a:hover { color: var(--lab-link); text-decoration: underline; }
.lab-timeline__meta, .lab-timeline__checked { margin: .25rem 0 0; font-size: var(--wp--preset--font-size--sm); color: var(--lab-text); }
.lab-timeline__checked { font-size: var(--wp--preset--font-size--xs); color: var(--lab-text-muted); }
.lab-timeline__grade { margin: .5rem 0 0; font-size: var(--wp--preset--font-size--sm); }
.lab-evidence-entry__head { padding-block: clamp(1.5rem, 4vw, 3rem) clamp(2.5rem, 5vw, 4rem); background: var(--lab-surface); }
.lab-evidence-entry__title { margin: 0; font-weight: 700; font-size: var(--wp--preset--font-size--3-xl); line-height: 1.12; letter-spacing: -.01em; color: var(--lab-heading); max-inline-size: 24em; }
.lab-evidence-entry__line { margin: 1rem 0 0; font-size: var(--wp--preset--font-size--lg); line-height: 1.55; color: var(--lab-text); max-inline-size: 40em; }
.lab-evidence-entry__grade { margin: 1.25rem 0 0; }
.lab-evidence-entry__facts { display: grid; gap: 1.25rem 2.5rem; margin: 0; }
@media (min-width: 640px) { .lab-evidence-entry__facts { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.lab-evidence-entry__facts dt { font-size: var(--wp--preset--font-size--xs); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--lab-text-muted); }
.lab-evidence-entry__facts dd { margin: .25rem 0 0; font-size: var(--wp--preset--font-size--md); font-weight: 600; color: var(--lab-heading); overflow-wrap: anywhere; }
.lab-evidence-entry__meaning { display: block; margin-block-start: .25rem; font-size: var(--wp--preset--font-size--sm); font-weight: 400; color: var(--lab-text); }
.lab-evidence-entry__by { font-weight: 400; }
.lab-evidence-entry__facts a:not(.lab-tag), .lab-evidence-entry__sources a { color: var(--lab-link); }
.lab-evidence-entry__sources { margin: 0; padding-inline-start: 1.25rem; }
.lab-evidence-entry__sources li + li { margin-block-start: .75rem; }
.lab-evidence-entry__sources a { overflow-wrap: anywhere; }
.lab-evidence-entry__back { padding-block: 0 clamp(2.5rem, 5vw, 4rem); }

/* ---------- Roundtable summaries (§6.4, §7) ---------- */
.lab-roundtable-page__head { padding-block: clamp(1.5rem, 4vw, 3rem) clamp(2.5rem, 5vw, 4rem); background: var(--lab-surface); }
.lab-roundtable-page__title { margin: 0; font-family: var(--lab-font-heading); font-weight: 700; font-size: var(--wp--preset--font-size--3-xl); line-height: 1.12; letter-spacing: -.01em; color: var(--lab-heading); max-inline-size: 24em; }
.lab-roundtable-page__facts { display: flex; flex-wrap: wrap; gap: 1rem 2.5rem; margin: clamp(1.5rem, 3vw, 2.25rem) 0 0; padding: 1.25rem 0 0; border-block-start: 1px solid var(--lab-border); max-inline-size: 60rem; }
.lab-roundtable-page__facts dt { font-size: var(--wp--preset--font-size--xs); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--lab-text-muted); }
.lab-roundtable-page__facts dd { margin: .25rem 0 0; font-size: var(--wp--preset--font-size--md); font-weight: 600; color: var(--lab-heading); }
.lab-roundtable-page__back { padding-block: 0 clamp(2.5rem, 5vw, 4rem); }
.lab-roundtable-summaries__items { display: grid; gap: 1.5rem; margin: 0; padding: 0; list-style: none; }
@media (min-width: 640px) { .lab-roundtable-summaries__items { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .lab-roundtable-summaries__items { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.lab-roundtable-item { block-size: 100%; padding: 1.25rem 0 0; border-block-start: 2px solid var(--lab-heading); }
.lab-roundtable-item__title { margin: 0; font-size: var(--wp--preset--font-size--lg); line-height: 1.3; }
.lab-roundtable-item__title a { color: var(--lab-heading); text-decoration: none; }
.lab-roundtable-item__title a:hover { color: var(--lab-link); text-decoration: underline; }
.lab-roundtable-item__meta { margin: .5rem 0 0; font-size: var(--wp--preset--font-size--sm); color: var(--lab-text); }
.lab-roundtable-item__theme { margin: .75rem 0 0; }

/* ---------- Partner area (FR-31) ---------- */
.lab-partner-unlock { max-inline-size: 28rem; margin: 0; }
.lab-partner-unlock__intro { margin: 0 0 1.5rem; color: var(--lab-text); }
.lab-partner-unlock .lab-form-done { margin: 0 0 1.5rem; font-size: var(--wp--preset--font-size--md); }
.lab-partner-lock { margin: 2rem 0 0; }
.lab-partner-lock__button { padding: .25rem 0; min-block-size: 2.75rem; border: 0; background: none; color: var(--lab-link); font: inherit; font-size: var(--wp--preset--font-size--sm); text-decoration: underline; text-underline-offset: .2em; cursor: pointer; }
.lab-partner-lock__button:hover { color: var(--lab-heading); }
.lab-partner-lock__button:focus-visible { outline: 2px solid var(--lab-accent-2); outline-offset: 2px; }
.lab-partner-page__back .lab-partner-lock { margin: 1rem 0 0; }
.lab-partner-area__items { display: grid; gap: 1.5rem; margin: 0; padding: 0; list-style: none; }
@media (min-width: 768px) { .lab-partner-area__items { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.lab-partner-item { padding: 1.25rem 0 0; border-block-start: 2px solid var(--lab-heading); }
.lab-partner-item__title { margin: 0; font-size: var(--wp--preset--font-size--lg); line-height: 1.3; }
.lab-partner-item__title a { color: var(--lab-heading); text-decoration: none; }
.lab-partner-item__title a:hover { color: var(--lab-link); text-decoration: underline; }
.lab-partner-item__line { margin: .5rem 0 0; color: var(--lab-text); max-inline-size: 40em; }
.lab-partner-item__meta { margin: .75rem 0 0; font-size: var(--wp--preset--font-size--sm); color: var(--lab-text-muted); }
.lab-partner-area__empty { margin: 0; font-size: var(--wp--preset--font-size--lg); color: var(--lab-text); }
.lab-partner-page__head { padding-block: clamp(1.5rem, 4vw, 3rem) clamp(2.5rem, 5vw, 4rem); background: var(--lab-surface); }
.lab-partner-page__title { margin: 0; font-weight: 700; font-size: var(--wp--preset--font-size--3-xl); line-height: 1.12; letter-spacing: -.01em; color: var(--lab-heading); max-inline-size: 24em; }
.lab-partner-page__meta { margin: 1rem 0 0; font-size: var(--wp--preset--font-size--sm); color: var(--lab-text); }
.lab-partner-page__body { max-inline-size: 46rem; }
.lab-partner-page__files { display: grid; gap: .75rem; margin: 0; padding: 0; list-style: none; }
.lab-partner-page__file { font-weight: 600; color: var(--lab-link); overflow-wrap: anywhere; }
.lab-partner-page__file .lab-meta { font-weight: 400; }
.lab-partner-page__back { padding-block: 0 clamp(2.5rem, 5vw, 4rem); }

/* ---------- Network (§8.14) ---------- */
.lab-network__group + .lab-network__group { margin-block-start: clamp(3rem, 6vw, 4.5rem); }
.lab-network__group > .lab-section__title { margin-block-end: 1.5rem; }
.lab-network__note { margin: -1rem 0 1.5rem; font-size: var(--wp--preset--font-size--sm); color: var(--lab-text-muted); }
.lab-network__when { margin: 2rem 0 1rem; font-size: var(--wp--preset--font-size--lg); color: var(--lab-text); }
.lab-network__group > .lab-network__when:first-of-type { margin-block-start: 0; }
.lab-network__list { display: grid; gap: 1.5rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 18rem), 1fr)); }
.lab-network-entry { display: flex; flex-direction: column; gap: .5rem; padding: clamp(1.125rem, 2vw, 1.5rem); background: var(--lab-card-bg); border: 1px solid var(--lab-border); border-radius: var(--lab-radius-card); }
.lab-network-entry__media { display: flex; align-items: center; block-size: 3.5rem; margin-block-end: .5rem; }
.lab-network-entry__logo { block-size: auto; max-block-size: 3.5rem; inline-size: auto; max-inline-size: 10rem; object-fit: contain; padding: var(--lab-logo-tile-pad); border-radius: var(--lab-radius); background: var(--lab-logo-tile); }
.lab-network-entry__name { margin: 0; font-size: var(--wp--preset--font-size--lg); line-height: 1.35; color: var(--lab-heading); overflow-wrap: anywhere; }
.lab-network-entry__text { margin: 0; color: var(--lab-text); }
.lab-network-entry__years { margin: auto 0 0; padding-block-start: .5rem; font-size: var(--wp--preset--font-size--sm); color: var(--lab-text-muted); }
.lab-network__disclaimer { max-inline-size: 48em; margin: clamp(2.5rem, 5vw, 3.5rem) 0 0; padding-block-start: 1.5rem; border-block-start: 1px solid var(--lab-border); font-size: var(--wp--preset--font-size--sm); color: var(--lab-text-muted); }

.lab-text-section__head .lab-meta { margin: .5rem 0 0; font-size: var(--wp--preset--font-size--sm); }

/* Text marked "Show until a date" (shown only in the editor; on the site the marker is removed) */
.lab-until { background: rgb(240 168 48 / .18); text-decoration: underline dotted; }

.screen-reader-text:not(:focus) { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* ---------- interaction components (R-02 tests 9 and 11) ----------
   Connections: thin teal arcs between nodes, each with an orange dot at its peak (C-18: curved, no right angles), that
   draw once, in under a second, when the component comes into view (site.js arms them; without JavaScript or with
   reduced motion they are simply complete). The arc rises 14 px above the line through the node centres. */
.lab-link { position: absolute; overflow: visible; pointer-events: none; }
.lab-link svg { position: absolute; inset: 0; inline-size: 100%; block-size: 100%; overflow: visible; }
.lab-link path { fill: none; stroke: var(--lab-accent-2); stroke-width: 2; stroke-linecap: round; }
.lab-link__dot { position: absolute; inset-inline-start: calc(50% - 4px); inset-block-start: -3px; inline-size: 8px; block-size: 8px; border-radius: 50%; background: var(--lab-accent); }
.lab-link__v { display: none; }
[dir="rtl"] .lab-link { transform: scaleX(-1); }
@media (prefers-reduced-motion: no-preference) {
	/* The arc is revealed with a clip rather than a dash, which stays exact however far the arc is stretched. */
	.is-armed .lab-link__h { clip-path: inset(-4px 100% -4px 0); }
	.is-armed .lab-link__v { clip-path: inset(0 -4px 100% -4px); }
	.is-armed .lab-link__dot { opacity: 0; transform: scale(.4); }
	.is-on .lab-link__dot { opacity: 1; transform: none; transition: opacity .15s ease calc(var(--lab-i, 0) * .2s + .12s), transform .2s var(--lab-motion-ease-out) calc(var(--lab-i, 0) * .2s + .12s); }
	.is-armed .lab-flow__node, .is-armed .lab-stepper__node { transform: scale(.6); opacity: 0; }
	.is-on .lab-link svg { clip-path: inset(-4px); transition: clip-path .24s var(--lab-motion-ease) calc(var(--lab-i, 0) * .2s); }
	.is-on .lab-flow__node, .is-on .lab-stepper__node { transform: none; opacity: 1; transition: transform .2s var(--lab-motion-ease-out) calc(var(--lab-i, 0) * .2s), opacity .2s ease calc(var(--lab-i, 0) * .2s); }
}

/* How we work: nodes joined by drawn lines; the ordered list is the text alternative. */
.lab-flow__list { counter-reset: none; }
.lab-flow__step .lab-link { inset-inline-start: calc(-50% + 1.5rem); inset-block-start: calc(1.5rem - 15px); inline-size: calc(100% - 4rem); block-size: 16px; }
.lab-flow__node { position: relative; z-index: 1; box-shadow: 0 0 0 6px var(--lab-tag-bg); }
@media (max-width: 719px) {
	.lab-flow__step .lab-link { inset-inline-start: calc(1.5rem - 1px); inset-block: auto calc(100% + .125rem); inline-size: 16px; block-size: 1.5rem; }
	.lab-flow .lab-link__h { display: none; }
	.lab-flow .lab-link__v { display: inline; }
	.lab-flow .lab-link__dot { inset-inline-start: 11px; inset-block-start: calc(50% - 4px); }
}
.lab-flow__step + .lab-flow__step::before, .lab-flow__step + .lab-flow__step::after { content: none; }

/* Stepper (the Advisory engagement): numbered stages in a row from 768px, a column below. */
.lab-stepper { list-style: none; margin: clamp(1.5rem, 3vw, 2.5rem) 0; padding: 0; display: grid; gap: 1.5rem; }
.lab-stepper__step { position: relative; display: grid; grid-template-columns: 3rem 1fr; column-gap: 1rem; align-items: start; }
.lab-stepper__node { grid-row: span 2; display: grid; place-items: center; inline-size: 3rem; block-size: 3rem; border-radius: 50%; border: 2px solid var(--lab-accent-2); background: var(--lab-bg); color: var(--lab-heading); font-family: var(--lab-font-heading); font-weight: 700; position: relative; z-index: 1; }
.lab-stepper__step:last-child .lab-stepper__node { background: var(--lab-heading); border-color: var(--lab-heading); color: var(--lab-bg); }
.lab-stepper__title { align-self: center; min-block-size: 3rem; display: flex; align-items: center; font-family: var(--lab-font-heading); font-weight: 700; color: var(--lab-heading); font-size: var(--wp--preset--font-size--md); }
.lab-stepper__text { color: var(--lab-text); font-size: var(--wp--preset--font-size--sm); line-height: 1.55; }
.lab-stepper__step .lab-link { inset-inline-start: calc(1.5rem - 1px); inset-block: auto calc(100% - .25rem); inline-size: 16px; block-size: 1.75rem; }
.lab-stepper .lab-link__h { display: none; }
.lab-stepper .lab-link__v { display: inline; }
.lab-stepper .lab-link__dot { inset-inline-start: 11px; inset-block-start: calc(50% - 4px); }
@media (min-width: 768px) {
	.lab-stepper { grid-template-columns: repeat(var(--lab-steps, 4), minmax(0, 1fr)); gap: 1.5rem; }
	.lab-stepper__step { grid-template-columns: 1fr; row-gap: .75rem; align-content: start; }
	.lab-stepper__node { grid-row: auto; }
	.lab-stepper__title { min-block-size: 0; }
	.lab-stepper__step .lab-link { inset-inline-start: calc(-100% + 1.75rem); inset-block: calc(1.5rem - 15px) auto; inline-size: calc(100% - 2rem); block-size: 16px; }
	.lab-stepper .lab-link__h { display: inline; }
	.lab-stepper .lab-link__v { display: none; }
	.lab-stepper .lab-link__dot { inset-inline-start: calc(50% - 4px); inset-block-start: -3px; }
}

/* Filterable grid (Latest Experiments): numbered tiles; chips filter by theme (with JavaScript). */
.lab-fields__chips { display: flex; flex-wrap: wrap; gap: .5rem; margin-block-end: 1.5rem; }
.lab-fields__chips[hidden] { display: none; }
.lab-chip { display: inline-flex; align-items: center; min-block-size: 2.75rem; padding: .25rem 1rem; border: 1px solid var(--lab-border-strong); border-radius: 999px; background: transparent; color: var(--lab-text); font: inherit; font-size: var(--wp--preset--font-size--sm); font-weight: 600; cursor: pointer; transition: background-color .15s var(--lab-ease), border-color .15s var(--lab-ease), color .15s var(--lab-ease); }
.lab-chip:hover { border-color: var(--lab-accent-2); color: var(--lab-heading); }
.lab-chip[aria-pressed="true"] { background: var(--lab-heading); border-color: var(--lab-heading); color: var(--lab-bg); }
.lab-chip:focus-visible { outline: 2px solid var(--lab-focus); outline-offset: 2px; }
.lab-fields__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .75rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr)); }
.lab-fields__item { display: grid; grid-template-columns: auto 1fr; gap: .25rem .875rem; align-content: start; padding: 1rem 1.125rem; border: 1px solid var(--lab-border); border-radius: var(--lab-radius-card); background: var(--lab-card-bg); transition: border-color .2s var(--lab-ease), transform .2s var(--lab-ease); }
.lab-fields__item:hover { border-color: var(--lab-accent-2); }
.lab-fields__item[hidden] { display: none; }
.lab-fields__num { grid-row: span 2; font-family: var(--lab-font-heading); font-weight: 700; font-size: var(--wp--preset--font-size--sm); color: var(--lab-eyebrow); font-variant-numeric: tabular-nums; padding-block-start: .1rem; }
.lab-fields__title { font-weight: 600; color: var(--lab-heading); line-height: 1.35; }
.lab-fields__theme { font-size: var(--wp--preset--font-size--xs); color: var(--lab-text-muted); }
@media (prefers-reduced-motion: no-preference) {
	.lab-fields__item.is-entering { animation: lab-fade-up .2s var(--lab-motion-ease-out) both; }
}
@keyframes lab-fade-up { from { opacity: 0; transform: translateY(6px); } }

/* Accordion (Partnership scenarios, FAQs): native <details>; the height animates where the browser can. */
.lab-accordion { border-block-start: 1px solid var(--lab-border); margin-block: clamp(1.5rem, 3vw, 2.5rem); interpolate-size: allow-keywords; }
.lab-accordion__item { border-block-end: 1px solid var(--lab-border); }
.lab-accordion__summary { display: flex; align-items: center; gap: 1rem; min-block-size: 3.5rem; padding-block: .75rem; cursor: pointer; list-style: none; }
.lab-accordion__summary::-webkit-details-marker { display: none; }
.lab-accordion__summary:focus-visible { outline: 2px solid var(--lab-focus); outline-offset: 2px; }
.lab-accordion__num { flex: none; display: grid; place-items: center; inline-size: 2rem; block-size: 2rem; border-radius: 50%; background: var(--lab-tag-bg); color: var(--lab-tag-text); font-family: var(--lab-font-heading); font-weight: 700; font-size: var(--wp--preset--font-size--sm); }
.lab-accordion__title { flex: 1; margin: 0; font-size: var(--wp--preset--font-size--md); line-height: 1.35; color: var(--lab-heading); }
.lab-accordion__icon { flex: none; inline-size: 1.25rem; block-size: 1.25rem; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; color: var(--lab-text-muted); transition: transform .2s var(--lab-ease); }
.lab-accordion__item[open] .lab-accordion__icon { transform: rotate(180deg); }
.lab-accordion__summary:hover .lab-accordion__title { color: var(--lab-link); }
.lab-accordion__body { padding: 0 0 1.25rem; max-inline-size: 44em; }
.lab-accordion--numbered .lab-accordion__body { padding-inline-start: 3rem; }
.lab-accordion__body p { margin: 0; color: var(--lab-text); }
.lab-accordion__item::details-content { block-size: 0; overflow: clip; transition: block-size .22s var(--lab-ease), content-visibility .22s allow-discrete; }
.lab-accordion__item[open]::details-content { block-size: auto; }
@media print { .lab-accordion__item::details-content { block-size: auto; content-visibility: visible; } }

/* Reading progress on long pages: a thin teal bar under the header, driven by scrolling (CSS scroll-driven animation;
   site.js updates it where that is not supported). Hidden with reduced motion, since it moves with the page. */
.lab-progress { position: fixed; inset-block-start: 0; inset-inline: 0; z-index: 60; block-size: 3px; background: var(--lab-accent-2); transform: scaleX(var(--lab-progress, 0)); transform-origin: left; pointer-events: none; }
[dir="rtl"] .lab-progress { transform-origin: right; }
@supports (animation-timeline: scroll()) {
	.lab-progress { animation: lab-progress linear both; animation-timeline: scroll(root block); }
}
@keyframes lab-progress { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@media (prefers-reduced-motion: reduce) { .lab-progress { display: none; } }
@media print { .lab-progress { display: none; } }

/* Home direction B (light editorial): flatter cards separated by rules, so the page reads like a printed report. */
.lab-dir-b .lab-main .lab-card { border-width: 2px 0 0; border-color: var(--lab-heading); border-radius: 0; background: transparent; padding-inline: 0; }
.lab-dir-b .lab-main .lab-card--link:hover { transform: none; border-color: var(--lab-accent-2); }
.lab-dir-b .lab-main .lab-section--paper { background: var(--lab-bg); border-block-start: 1px solid var(--lab-border); }
/* Home direction C (Ink): section headings a step larger, with a short orange rule. */
.lab-dir-c .lab-main > .lab-section h2:first-child::before, .lab-dir-c .lab-main .lab-section > .lab-container > h2:first-child::before { content: ""; display: block; inline-size: 2.5rem; block-size: 3px; background: var(--lab-brand-orange); margin-block-end: 1rem; }

/* Email first (C-14, 13 October 2026): the email address is the main button in the footer and on the Contact page;
   the phone number stays clearly visible as the secondary way in. */
.lab-footer__email-row { margin-block-end: 1rem !important; }
.lab-footer__email, .lab-contact-details__email { gap: .5rem; max-inline-size: 100%; overflow-wrap: anywhere; text-align: start; }
.lab-footer__email .lab-icon, .lab-contact-details__email .lab-icon { flex: none; inline-size: 1.125rem; block-size: 1.125rem; }
.lab-contact-details__list a.lab-contact-details__email { color: var(--lab-btn-primary-text); }
.lab-footer__phone a { font-weight: 600; }
.lab-footer a.lab-button--primary, .lab-footer a.lab-button--primary:hover { color: var(--lab-btn-primary-text); text-decoration: none; }
.lab-footer a.lab-button--primary:hover { background: var(--lab-btn-primary-hover-bg); color: var(--lab-btn-primary-hover-text); }
.lab-contact-details__list a.lab-contact-details__email:hover { color: var(--lab-btn-primary-hover-text); text-decoration: none; }

/* The claim as the Home H1 (Director decision C-11): "first" carries the orange of the identity on Navy and Ink; on a light
   hero, where orange is never text, it gets an orange underline instead. The "Since 2023" badge is a small eyebrow
   above the H1 (C-19). */
.lab-hero__title--claim { max-inline-size: 15em; }
.lab-hero__first { color: var(--lab-accent); }
.lab-hero--light .lab-hero__first { color: inherit; text-decoration: underline; text-decoration-color: var(--lab-accent); text-decoration-thickness: .09em; text-underline-offset: .12em; }
.lab-hero__badge {
	display: inline-flex; align-items: center; margin: 0 0 1rem; padding: .25rem .75rem; border: 1px solid var(--lab-accent);
	border-radius: 999px; font-family: var(--lab-font-body, inherit); font-size: var(--wp--preset--font-size--xs); font-weight: 600; line-height: 1.3;
	letter-spacing: .06em; text-transform: uppercase; color: var(--lab-heading); white-space: nowrap;
}
.lab-hero__tagline { margin: -.5rem 0 1.25rem; font-family: var(--lab-font-heading); font-size: var(--wp--preset--font-size--xl); font-weight: 600; line-height: 1.3; color: var(--lab-heading); max-inline-size: 30em; }

/* R-25 (C-16): the sign-up now carries a required consent box, so the form stacks (email, consent, small print, button)
   and the order on screen matches the order of the fields for keyboard and screen-reader users. */
.lab-newsletter .lab-form--newsletter, .lab-footer__newsletter .lab-form--newsletter { grid-template-columns: minmax(0, 1fr); row-gap: .75rem; }
.lab-newsletter .lab-form--newsletter .lab-form__submit, .lab-footer__newsletter .lab-form--newsletter .lab-form__submit { justify-self: start; }
.lab-form--newsletter .lab-form__small { margin: 0; }
