/*
 * Estate Instrument v4 components (lane L20-2). Tokens only: colours from --wp--preset--color--*, spacing from
 * --wp--preset--spacing--*, type from --wp--preset--font-size--*, corners and motion from --wp--custom--*.
 * No colour, font or pixel literal. Light, Dark and System come from modes.css re-pointing the same variables.
 * Logical properties only (RTL). Layout is intrinsic (grid auto-fit, flex wrap, clamp-free), so 320 px to 1440 px
 * need no breakpoints beyond the two below. Motion only under prefers-reduced-motion: no-preference.
 *
 * Sections: 1 type and rhythm, 2 layout hooks of the patterns, 3 forms and search, 4 tables and pagination,
 * 5 chips, states and notices, 6 forms of record (calendar, directory, profile, glossary, course, dashboard shell),
 * 7 take-part (donate, petition, progress), 8 loading, 9 accessibility modes, 10 print.
 */

/* 1. Type and rhythm ------------------------------------------------------------------------------------------ */
:root {
	--nx-measure: 68ch;
	--nx-measure-wide: 90ch;
	--nx-lh-tight: 1.2;
	--nx-lh-body: 1.6;
	--nx-lh-loose: 1.75;
	--nx-rule: thin solid var(--wp--preset--color--hairline);
	--nx-rule-strong: thin solid var(--wp--preset--color--hairline-strong);
	--nx-ease: var(--wp--custom--motion--ease);
}

body {
	text-rendering: optimizeLegibility;
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	overflow-wrap: break-word;
	font-variant-numeric: lining-nums;
}

:where(h1, h2, h3, .wp-block-post-title) {
	text-wrap: balance;
	hyphens: manual;
}
:where(p, li, figcaption, dd, blockquote) {
	text-wrap: pretty;
}
:where(.entry-content, .wp-block-post-content, .nx-main) :where(p, ul, ol, dl, blockquote) {
	max-inline-size: var(--nx-measure);
}
:where(.alignwide, .alignfull, .nx-wide, .nx-cards, .nx-kpis, .nx-explorer, table) :where(p, ul, ol, dl) {
	max-inline-size: none;
}
:where(code, kbd, samp, pre, time, .nx-register-v--mono, .nx-metric-v) {
	font-variant-numeric: tabular-nums;
}
:where(pre) {
	max-inline-size: 100%;
	overflow-x: auto;
	padding: var(--wp--preset--spacing--4);
	border: var(--nx-rule);
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--s);
	line-height: var(--nx-lh-body);
	tab-size: 4;
}
:where(:not(pre) > code) {
	padding-inline: var(--wp--preset--spacing--1);
	background-color: var(--wp--preset--color--muted);
	border-radius: var(--wp--custom--radius--r);
	font-size: 0.92em;
}
:where(blockquote) {
	margin-inline: 0;
	padding-inline-start: var(--wp--preset--spacing--4);
	border-inline-start: var(--wp--preset--spacing--1) solid var(--wp--preset--color--hairline-strong);
	color: var(--wp--preset--color--ink-2);
}
:where(hr, .wp-block-separator) {
	border: 0;
	border-block-start: var(--nx-rule);
	opacity: 1;
}
:where(img, video, svg, canvas, iframe) {
	max-inline-size: 100%;
}
:where(img, video) {
	block-size: auto;
}
:where(figure) {
	margin-inline: 0;
}
:where(figcaption, .wp-element-caption) {
	margin-block-start: var(--wp--preset--spacing--2);
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--s);
}
:where(.wp-block-post-content, .entry-content) :where(h2) {
	margin-block-start: var(--wp--preset--spacing--7);
}
:where(.wp-block-post-content, .entry-content) :where(h3) {
	margin-block-start: var(--wp--preset--spacing--6);
}
:where(.wp-block-post-content, .entry-content) a:not(.wp-element-button) {
	text-underline-offset: var(--wp--preset--spacing--1);
	text-decoration-thickness: from-font;
}
:where(h1, h2, h3, h4, h5, h6) {
	scroll-margin-block-start: calc(var(--wp--custom--chrome--bar) + var(--wp--preset--spacing--5));
}
:target {
	scroll-margin-block-start: calc(var(--wp--custom--chrome--bar) + var(--wp--preset--spacing--5));
}
html {
	scroll-padding-block-start: calc(var(--wp--custom--chrome--bar) + var(--wp--preset--spacing--5));
}

/* Hebrew and Yiddish are right to left but not Arabic script: no tracking, no forced capitals. */
:is(:lang(he), :lang(yi), :lang(dv), :lang(syr)) {
	letter-spacing: 0 !important;
	text-transform: none !important;
}
/* Languages written without spaces or with tall marks keep a looser line. */
:is(:lang(th), :lang(lo), :lang(km), :lang(my), :lang(bn), :lang(hi), :lang(ne), :lang(ta), :lang(te), :lang(ml), :lang(si), :lang(zh), :lang(ja), :lang(ko)) {
	line-height: var(--nx-lh-loose);
	letter-spacing: 0 !important;
	text-transform: none !important;
	word-break: normal;
	line-break: strict;
}
:is(:lang(zh), :lang(ja), :lang(ko)) :where(p, li) {
	text-wrap: wrap;
}

.nx-eyebrow {
	margin-block: 0;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--xs);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-muted);
}
.nx-eyebrow-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--wp--preset--spacing--2) var(--wp--preset--spacing--4);
}
.nx-lede {
	max-inline-size: var(--nx-measure);
	font-size: var(--wp--preset--font-size--l);
	line-height: var(--nx-lh-body);
	color: var(--wp--preset--color--ink-2);
}
.nx-section-title {
	margin-block: 0 var(--wp--preset--spacing--4);
	padding-block-end: var(--wp--preset--spacing--3);
	border-block-end: var(--nx-rule);
}
.nx-caption,
.nx-byline,
.nx-updated {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--s);
}

/* 2. Layout hooks of the patterns ------------------------------------------------------------------------------ */
.nx-main {
	min-block-size: 50vh;
	padding-block: var(--wp--preset--spacing--6) var(--wp--preset--spacing--8);
}
.nx-main > * + * {
	margin-block-start: var(--wp--preset--spacing--7);
}
.nx-main > .nx-hero,
.nx-main > :first-child {
	margin-block-start: 0;
}

.nx-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--wp--preset--spacing--3) var(--wp--preset--spacing--4);
	margin-block-start: var(--wp--preset--spacing--5);
}

/* Children of compact groups sit on the group's inline start. Core's constrained layout centres them with an
   !important margin and caps them at the content size, so these groups say otherwise with the same weight. */
:is(.nx-register-row, .nx-metric, .nx-timeline-row, .nx-list-row, .nx-dest, .nx-dest-card, .nx-grix-slot, .nx-notice, .nx-kb-notice, .nx-corrections, .nx-panel, .nx-empty, .nx-opportunity, .nx-course, .nx-sign, .nx-facts, .nx-person, .nx-org, .nx-newsletter, .nx-cta, .nx-campaign-sign) > :where(*) {
	margin-inline: 0 !important;
	max-inline-size: none;
}
:is(.nx-register-rows, .nx-rows) {
	max-inline-size: none;
}
:is(.nx-register-rows, .nx-rows) > * {
	margin-inline: 0 !important;
}

/* Register rows: a fact label and its value on one line, stacked below 30em. */
.nx-register-rows.nx-register-rows {
	display: grid;
	gap: 0;
	margin-block-start: var(--wp--preset--spacing--4);
}
.nx-register-row.nx-register-row {
	display: grid;
	grid-template-columns: minmax(7rem, 14rem) minmax(0, 1fr);
	gap: var(--wp--preset--spacing--1) var(--wp--preset--spacing--5);
	align-items: baseline;
	padding-block: var(--wp--preset--spacing--3);
	border-block-start: var(--nx-rule);
	margin-block: 0;
}
.nx-register-rows > .nx-register-row:first-child {
	border-block-start: 0;
}
.nx-register-row.nx-register-row > * {
	margin-block: 0;
	max-inline-size: none;
}
.nx-register-k {
	text-transform: none;
	letter-spacing: 0.02em;
}
.nx-register-v {
	overflow-wrap: anywhere;
}
.wp-block-column .nx-register-row.nx-register-row {
	grid-template-columns: minmax(0, 1fr);
}
@media (max-width: 30em) {
	.nx-register-row.nx-register-row {
		grid-template-columns: minmax(0, 1fr);
	}
}
/* A row whose value the record leaves empty is not shown, so a label never stands without its fact. The selectors
   outweigh the grid display above. */
.nx-register-row.nx-register-row:not(:has(> .nx-register-v)),
.nx-register-row.nx-register-row:has(> .nx-register-v:empty) {
	display: none;
}
/* A figure caption stands only beside its figure: with the map plugin off, the frame holds the caption alone. */
.nx-figure-frame:not(:has(> :not(.nx-caption))) > .nx-caption {
	display: none;
}

/* Title page and dossier headers: the facts sit in a core grid layout of narrow cells (patterns/report-title-page.php,
   standards-dossier.php). A two-column row would be squeezed to one letter per line, so inside such a grid each row
   stacks, label above value, like the trust strip. */
.nx-hero > .nx-lede,
.nx-titlepg > *,
.nx-dossier > * {
	margin-inline: 0 !important; /* core centres constrained children with !important */
}
.nx-register-rows.is-layout-grid {
	gap: var(--wp--preset--spacing--3) var(--wp--preset--spacing--6);
}
.nx-register-rows.is-layout-grid .nx-register-row.nx-register-row {
	grid-template-columns: minmax(0, 1fr);
	border-block-start: 0;
	padding-block: 0;
	gap: var(--wp--preset--spacing--1);
}
/* An honest note under a fact list: shown only when the list hides at least one unrecorded row. */
.nx-register-note {
	display: none;
	margin-block: var(--wp--preset--spacing--3) 0;
}
.nx-register-rows:has(> .nx-register-row > .nx-register-v:empty) + .nx-register-note {
	display: block;
}

/* Trust strip: facts side by side, label above value. A fact the record leaves empty is not shown. With no fact at
   all the strip is one line; with some, a short note says the rest are not recorded. */
.nx-trust-strip.nx-trust-strip {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--2) var(--wp--preset--spacing--6);
	align-items: baseline;
	border-block: var(--nx-rule);
}
.nx-trust-strip .nx-register-row.nx-register-row {
	grid-template-columns: minmax(0, 1fr);
	border-block-start: 0;
	padding-block: 0;
	gap: var(--wp--preset--spacing--1);
	flex: 0 1 auto;
	max-inline-size: 100%;
}
.nx-trust-strip .nx-trust-strip__none,
.nx-trust-strip .nx-trust-strip__some {
	display: none;
	flex: 1 1 100%;
	max-inline-size: none;
	margin: 0;
}
.nx-trust-strip:not(:has(.nx-register-v:not(:empty))) .nx-trust-strip__none {
	display: block;
}
.nx-trust-strip:has(.nx-register-v:not(:empty)):has(.nx-register-v:empty) .nx-trust-strip__some {
	display: block;
}
.nx-facts.nx-facts {
	padding: var(--wp--preset--spacing--5);
	border-radius: var(--wp--custom--radius--r);
}
.nx-facts > h2,
.nx-facts > .wp-block-heading {
	margin-block: 0;
}

/* Counted figures. */
.nx-kpis.nx-kpis {
	gap: var(--wp--preset--spacing--4);
}
.nx-metric.nx-metric {
	display: grid;
	align-content: start;
	gap: var(--wp--preset--spacing--1);
	padding: var(--wp--preset--spacing--4) var(--wp--preset--spacing--5);
	border: var(--nx-rule);
	border-block-start: var(--wp--preset--spacing--1) solid var(--wp--preset--color--accent);
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--surface);
	min-inline-size: 0;
}
.nx-metric.nx-metric > * {
	margin-block: 0;
}
.nx-metric-v {
	line-height: var(--nx-lh-tight);
	overflow-wrap: anywhere;
}
.nx-metric-note {
	margin-block-start: var(--wp--preset--spacing--2);
}

/* Timeline and ledger rows. */
.nx-rows.nx-rows {
	display: grid;
	gap: 0;
}
.nx-timeline-row.nx-timeline-row {
	display: grid;
	grid-template-columns: minmax(6rem, 10rem) minmax(0, 1fr);
	gap: var(--wp--preset--spacing--1) var(--wp--preset--spacing--5);
	padding-block: var(--wp--preset--spacing--4);
	border-block-start: var(--nx-rule);
	position: relative;
}
.nx-timeline-row > * {
	margin-block: 0;
}
.nx-timeline-row::before {
	content: "";
	position: absolute;
	inset-block-start: calc(var(--wp--preset--spacing--4) + 0.5em);
	inset-inline-start: calc(-1 * var(--wp--preset--spacing--4));
	inline-size: var(--wp--preset--spacing--2);
	block-size: var(--wp--preset--spacing--2);
	background-color: var(--wp--preset--color--accent);
	border-radius: var(--wp--custom--radius--round);
}
@media (max-width: 30em) {
	.nx-timeline-row.nx-timeline-row {
		grid-template-columns: minmax(0, 1fr);
	}
	.nx-timeline-row::before {
		display: none;
	}
}
.nx-timeline.nx-timeline {
	padding-inline-start: var(--wp--preset--spacing--4);
}

/* List rows (archives, events, datasets, experts). */
.nx-list-row.nx-list-row {
	display: grid;
	gap: var(--wp--preset--spacing--2);
	margin-block: 0;
	border-block-end: var(--nx-rule);
	transition: background-color var(--wp--custom--motion--fast) var(--nx-ease);
}
.nx-list-row > * {
	margin-block: 0;
}
.nx-list-row .wp-block-post-title a {
	text-decoration-thickness: from-font;
	text-underline-offset: var(--wp--preset--spacing--1);
}
.nx-list-row:hover {
	background-color: var(--wp--preset--color--elevated);
}
.nx-list > .wp-block-post-template {
	padding: 0;
	margin: 0;
	list-style: none;
}

/* Cards and destination grids. */
.nx-cards.nx-cards,
.nx-dest-grid.nx-dest-grid,
.nx-cards-query .wp-block-post-template {
	gap: var(--wp--preset--spacing--4);
}
.nx-dest.nx-dest,
.nx-dest-card.nx-dest-card {
	display: grid;
	align-content: start;
	gap: var(--wp--preset--spacing--2);
	min-inline-size: 0;
	transition: border-color var(--wp--custom--motion--fast) var(--nx-ease), background-color var(--wp--custom--motion--fast) var(--nx-ease);
}
.nx-dest > *,
.nx-dest-card > * {
	margin-block: 0;
}
.nx-dest:hover,
.nx-dest-card:hover,
.is-style-nx-card:hover {
	border-color: var(--wp--preset--color--hairline-strong);
	background-color: var(--wp--preset--color--elevated);
}
.nx-dest-title,
.nx-dest-title a {
	font-size: var(--wp--preset--font-size--l);
}
.nx-dest-why {
	color: var(--wp--preset--color--ink-2);
}
.is-style-nx-card > * {
	margin-block: 0;
}
.is-style-nx-card > * + * {
	margin-block-start: var(--wp--preset--spacing--3);
}
/* Whole-card link: the title link stretches over its card; inner links stay above it. */
:where(.nx-dest, .nx-dest-card, .nx-cards-query .wp-block-post) {
	position: relative;
}
:where(.nx-dest-title, .nx-dest-card .wp-block-post-title) a::after {
	content: "";
	position: absolute;
	inset: 0;
}
:where(.nx-dest, .nx-dest-card, .nx-cards-query .wp-block-post):has(:where(a):focus-visible) {
	outline: var(--nx-focus-width) solid var(--wp--preset--color--focus);
	outline-offset: var(--nx-focus-offset);
}
:where(.nx-dest, .nx-dest-card) a:focus-visible {
	outline: 0;
}

/* Hero bands. */
.nx-hero {
	padding-block: var(--wp--preset--spacing--8) var(--wp--preset--spacing--7);
}
.nx-hero > * {
	margin-block: 0;
}
.nx-hero > * + * {
	margin-block-start: var(--wp--preset--spacing--4);
}
.nx-hero--band {
	border-block: var(--nx-rule);
}

/* Explorer (registry, directory): a search field and a facet band of columns that wrap on narrow screens. */
.nx-explorer > * + * {
	margin-block-start: var(--wp--preset--spacing--4);
}
.nx-explorer-facets.nx-explorer-facets {
	gap: var(--wp--preset--spacing--5);
	padding: var(--wp--preset--spacing--4) var(--wp--preset--spacing--5);
	border: var(--nx-rule);
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--elevated);
}
.nx-explorer-facets ul {
	margin: 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: var(--wp--preset--spacing--1);
}
.nx-explorer-facets li a {
	display: inline-flex;
	align-items: center;
	min-block-size: var(--wp--preset--spacing--5);
}
.nx-explorer-facets h3 {
	margin-block: 0 var(--wp--preset--spacing--2);
	font-family: var(--wp--preset--font-family--mono);
	letter-spacing: 0.04em;
}

/* Wide split: main and rail. */
.nx-split {
	gap: var(--wp--preset--spacing--6);
}
.nx-toc,
.nx-standards-rail,
.nx-report-rail {
	font-size: var(--wp--preset--font-size--s);
}
@media (min-width: 64em) {
	.nx-toc,
	.nx-standards-rail,
	.nx-report-rail {
		position: sticky;
		inset-block-start: calc(var(--wp--custom--chrome--bar) + var(--wp--preset--spacing--5));
	}
}

/* Slots for data blocks that render later: a quiet placeholder with a visible reason. */
.nx-grix-slot.nx-grix-slot {
	padding: var(--wp--preset--spacing--5);
	border: thin dashed var(--wp--preset--color--hairline-strong);
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--elevated);
	min-inline-size: 0;
}
.nx-grix-slot > * {
	margin-block: 0;
}
.nx-grix-slot > * + * {
	margin-block-start: var(--wp--preset--spacing--2);
}
.nx-slot-note {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--s);
}

/* 3. Forms and search ----------------------------------------------------------------------------------------- */
:where(label, .nx-label) {
	display: inline-block;
	margin-block-end: var(--wp--preset--spacing--1);
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--s);
	font-weight: 600;
}
:where(input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"], [type="color"], [type="submit"], [type="button"], [type="reset"], [type="image"]), select, textarea) {
	inline-size: 100%;
	min-block-size: calc(var(--wp--preset--spacing--6) + var(--wp--preset--spacing--2));
	padding: var(--wp--preset--spacing--2) var(--wp--preset--spacing--3);
	border: thin solid var(--wp--preset--color--hairline-strong);
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--surface);
	color: var(--wp--preset--color--ink);
	font: inherit;
	font-size: var(--wp--preset--font-size--m);
	line-height: var(--nx-lh-body);
	transition: border-color var(--wp--custom--motion--fast) var(--nx-ease);
}
:where(textarea) {
	min-block-size: calc(var(--wp--preset--spacing--9));
	resize: vertical;
}
:where(select) {
	appearance: none;
	padding-inline-end: var(--wp--preset--spacing--6);
	background-image: linear-gradient(45deg, transparent 50%, currentcolor 50%), linear-gradient(135deg, currentcolor 50%, transparent 50%);
	background-position: calc(100% - var(--wp--preset--spacing--4)) 50%, calc(100% - var(--wp--preset--spacing--3)) 50%;
	background-size: var(--wp--preset--spacing--1) var(--wp--preset--spacing--1);
	background-repeat: no-repeat;
}
:where(select):dir(rtl) {
	background-position: calc(var(--wp--preset--spacing--4)) 50%, calc(var(--wp--preset--spacing--3)) 50%;
}
:where(input, select, textarea)::placeholder {
	color: var(--wp--preset--color--ink-muted);
	opacity: 1;
}
:where(input, select, textarea):hover {
	border-color: var(--wp--preset--color--ink-muted);
}
:where(input, select, textarea):focus-visible {
	border-color: var(--wp--preset--color--focus);
}
:where(input, select, textarea)[aria-invalid="true"],
:where(input, select, textarea):user-invalid {
	border-color: var(--wp--preset--color--critical);
	border-inline-start-width: var(--wp--preset--spacing--1);
}
:where(input, select, textarea):disabled {
	background-color: var(--wp--preset--color--muted);
	color: var(--wp--preset--color--ink-muted);
	cursor: not-allowed;
}
label:has(> :is(input[type="checkbox"], input[type="radio"])),
:is(input[type="checkbox"], input[type="radio"]) + label {
	font-weight: 400;
}
/* A choice made of a control and a label beside it (campaign consent, registry reports): one row, the control on the
   first line of the text. */
:where(.nx-main, .nx-engine) :where(p, div):has(> :is(input[type="checkbox"], input[type="radio"]) + label) {
	display: flex;
	align-items: flex-start;
	gap: var(--wp--preset--spacing--2);
	margin-block: var(--wp--preset--spacing--2);
}
:where(.nx-main, .nx-engine) :where(p, div):has(> :is(input[type="checkbox"], input[type="radio"]) + label) > input {
	flex: none;
	margin: 0;
	margin-block-start: 0.2em;
}
:where(.nx-main, .nx-engine) :where(p, div):has(> :is(input[type="checkbox"], input[type="radio"]) + label) > label {
	margin: 0;
}
:where(input[type="checkbox"], input[type="radio"]) {
	accent-color: var(--wp--preset--color--primary);
	inline-size: var(--wp--preset--spacing--4);
	block-size: var(--wp--preset--spacing--4);
	margin-inline-end: var(--wp--preset--spacing--2);
	vertical-align: middle;
}
:where(input[type="file"]) {
	max-inline-size: 100%;
	font-size: var(--wp--preset--font-size--s);
}
:where(input[type="file"])::file-selector-button {
	margin-inline-end: var(--wp--preset--spacing--3);
	padding: var(--wp--preset--spacing--2) var(--wp--preset--spacing--3);
	border: thin solid var(--wp--preset--color--hairline-strong);
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--muted);
	color: var(--wp--preset--color--ink);
	font: inherit;
	cursor: pointer;
}
:where(fieldset) {
	margin: 0;
	padding: var(--wp--preset--spacing--4);
	border: var(--nx-rule);
	border-radius: var(--wp--custom--radius--r);
	min-inline-size: 0;
}
:where(legend) {
	padding-inline: var(--wp--preset--spacing--2);
	font-weight: 600;
}
:where(.nx-main, .nx-engine, .nx-form, .comment-form) :where(input[type="submit"], input[type="button"], input[type="reset"], button:not(.wp-element-button, .components-button)) {
	min-block-size: calc(var(--wp--preset--spacing--6) + var(--wp--preset--spacing--2));
	padding: var(--wp--preset--spacing--2) var(--wp--preset--spacing--4);
	border: thin solid var(--wp--preset--color--hairline-strong);
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--surface);
	color: var(--wp--preset--color--ink);
	font: inherit;
	font-size: var(--wp--preset--font-size--s);
	font-weight: 600;
	cursor: pointer;
	transition: background-color var(--wp--custom--motion--fast) var(--nx-ease), border-color var(--wp--custom--motion--fast) var(--nx-ease);
}
:where(.nx-main, .nx-engine, .nx-form, .comment-form) :where(input[type="submit"], input[type="button"], input[type="reset"], button:not(.wp-element-button, .components-button)):hover {
	background-color: var(--wp--preset--color--hover);
}
:where(.nx-main, .nx-engine, .nx-form, .comment-form) :where(input[type="submit"], input[type="button"], input[type="reset"], button:not(.wp-element-button, .components-button)):disabled {
	opacity: 0.6;
	cursor: not-allowed;
}
:where(.nx-main, .nx-engine, .nx-form, .comment-form) :where(input[type="submit"], button[type="submit"]):not(.is-style-nx-secondary) {
	background-color: var(--wp--preset--color--primary);
	border-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--primary-ink);
}
:where(.nx-main, .nx-engine, .nx-form, .comment-form) :where(input[type="submit"], button[type="submit"]):not(.is-style-nx-secondary):hover {
	background-color: var(--wp--preset--color--ink-2);
}
.wp-element-button,
.wp-block-button__link {
	min-block-size: calc(var(--wp--preset--spacing--6) + var(--wp--preset--spacing--2));
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: var(--wp--preset--spacing--2) var(--wp--preset--spacing--5);
	font-size: var(--wp--preset--font-size--s);
	font-weight: 600;
	text-decoration: none;
	transition: background-color var(--wp--custom--motion--fast) var(--nx-ease), color var(--wp--custom--motion--fast) var(--nx-ease);
}
.wp-element-button:hover,
.wp-block-button__link:hover {
	background-color: var(--wp--preset--color--ink-2);
	color: var(--wp--preset--color--primary-ink);
}
.wp-element-button:active {
	translate: 0 calc(var(--wp--preset--spacing--1) / 4);
}
.wp-element-button[disabled],
.wp-element-button[aria-disabled="true"] {
	opacity: 0.6;
	pointer-events: none;
}
.is-style-nx-secondary .wp-block-button__link {
	background-color: transparent;
	border: thin solid var(--wp--preset--color--hairline-strong);
	color: var(--wp--preset--color--ink);
}
.is-style-nx-secondary .wp-block-button__link:hover {
	background-color: var(--wp--preset--color--hover);
	color: var(--wp--preset--color--ink);
}
.is-style-nx-text-link .wp-block-button__link {
	background-color: transparent;
	color: var(--wp--preset--color--ink);
	padding-inline: 0;
	text-decoration: underline;
	text-underline-offset: var(--wp--preset--spacing--1);
}
.is-style-nx-text-link .wp-block-button__link:hover {
	background-color: transparent;
	color: var(--wp--preset--color--accent);
}

/* Field groups for forms (nexus-forms output and the form patterns). */
.nx-form {
	display: grid;
	gap: var(--wp--preset--spacing--5);
	max-inline-size: 40rem;
}
.nx-field {
	display: grid;
	gap: var(--wp--preset--spacing--1);
	min-inline-size: 0;
}
.nx-field > label {
	margin-block-end: 0;
}
.nx-field__help,
.nx-help {
	margin: 0;
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--s);
}
.nx-field__error,
.nx-error-text {
	margin: 0;
	color: var(--wp--preset--color--critical);
	font-size: var(--wp--preset--font-size--s);
	font-weight: 600;
}
.nx-field__error::before,
.nx-error-text::before {
	content: "Error: " / "";
}
.nx-field--inline {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--wp--preset--spacing--2) var(--wp--preset--spacing--3);
}
.nx-field-row {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
	gap: var(--wp--preset--spacing--4);
}
.nx-required-mark {
	color: var(--wp--preset--color--critical);
}
.nx-consent {
	display: flex;
	align-items: flex-start;
	gap: var(--wp--preset--spacing--2);
	font-size: var(--wp--preset--font-size--s);
}
.nx-consent label {
	margin: 0;
	font-weight: 400;
}
.nx-honeypot {
	position: absolute;
	inset-inline-start: -100vw;
	inline-size: 0.0625rem;
	block-size: 0.0625rem;
	overflow: hidden;
}

/* Core search block. */
.wp-block-search__inside-wrapper {
	display: flex;
	flex-wrap: nowrap;
	gap: 0;
	inline-size: 100%;
	max-inline-size: 40rem;
}
.wp-block-search__inside-wrapper .wp-block-search__input {
	flex: 1 1 auto;
	min-inline-size: 0;
	border-start-end-radius: 0;
	border-end-end-radius: 0;
	border-inline-end-width: 0;
}
.wp-block-search__inside-wrapper .wp-block-search__button {
	flex: 0 0 auto;
	margin: 0;
	border-radius: 0;
	border-start-end-radius: var(--wp--custom--radius--r);
	border-end-end-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--primary);
	border-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--primary-ink);
}
.wp-block-search__inside-wrapper .wp-block-search__button:hover {
	background-color: var(--wp--preset--color--ink-2);
}
.wp-block-search__label {
	font-weight: 600;
	font-size: var(--wp--preset--font-size--s);
}
.nx-chrome :where(.wp-block-search__inside-wrapper, .search-form) {
	max-inline-size: none;
}

/* Comment form and list. */
.comment-form {
	display: grid;
	gap: var(--wp--preset--spacing--4);
}
.comment-form > p {
	margin: 0;
}
.comment-form-cookies-consent {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--2);
}
.comment-form-cookies-consent label {
	margin: 0;
	font-weight: 400;
}
.wp-block-comment-template,
.commentlist {
	padding: 0;
	list-style: none;
}
.wp-block-comment-template > li,
.commentlist > li {
	padding-block: var(--wp--preset--spacing--4);
	border-block-start: var(--nx-rule);
}

/* 4. Tables and pagination ------------------------------------------------------------------------------------- */
:where(.wp-block-table, .nx-table) {
	max-inline-size: 100%;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}
:where(.wp-block-table, .nx-table):focus-visible {
	outline-offset: 0;
}
:where(table) {
	inline-size: 100%;
	border-collapse: collapse;
	font-size: var(--wp--preset--font-size--s);
	font-variant-numeric: tabular-nums;
}
:where(th, td) {
	padding: var(--wp--preset--spacing--2) var(--wp--preset--spacing--3);
	border-block-end: var(--nx-rule);
	text-align: start;
	vertical-align: top;
}
:where(th) {
	border-block-end: var(--nx-rule-strong);
	color: var(--wp--preset--color--ink);
	font-weight: 600;
}
:where(thead th) {
	background-color: var(--wp--preset--color--elevated);
}
:where(tbody tr):hover {
	background-color: var(--wp--preset--color--elevated);
}
:where(caption) {
	padding-block: var(--wp--preset--spacing--2);
	color: var(--wp--preset--color--ink-muted);
	text-align: start;
}
.wp-block-table :where(.has-text-align-right) {
	text-align: end;
}
.wp-block-table :where(.has-text-align-left) {
	text-align: start;
}

.wp-block-query-pagination {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--wp--preset--spacing--2) var(--wp--preset--spacing--4);
	margin-block-start: var(--wp--preset--spacing--6);
	font-size: var(--wp--preset--font-size--s);
}
.wp-block-query-pagination-numbers {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--1);
}
:where(.wp-block-query-pagination-numbers a, .wp-block-query-pagination-numbers .page-numbers, .wp-block-query-pagination-previous, .wp-block-query-pagination-next, .page-numbers) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-block-size: var(--wp--preset--spacing--6);
	min-inline-size: var(--wp--preset--spacing--6);
	padding-inline: var(--wp--preset--spacing--2);
	border: thin solid transparent;
	border-radius: var(--wp--custom--radius--r);
	text-decoration: none;
}
:where(.wp-block-query-pagination-numbers a, .wp-block-query-pagination-previous, .wp-block-query-pagination-next, a.page-numbers):hover {
	border-color: var(--wp--preset--color--hairline-strong);
	background-color: var(--wp--preset--color--hover);
}
.wp-block-query-pagination-numbers .current,
.page-numbers.current {
	border-color: var(--wp--preset--color--ink);
	background-color: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--canvas);
	font-weight: 600;
}

:where(.wp-block-details, details) {
	border-block-end: var(--nx-rule);
}
:where(.wp-block-details summary, details > summary) {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--3);
	min-block-size: var(--wp--preset--spacing--7);
	cursor: pointer;
	font-weight: 600;
}
:where(.wp-block-details summary, details > summary)::-webkit-details-marker {
	display: none;
}
:where(.wp-block-details summary, details > summary)::after {
	content: "+" / "";
	font-family: var(--wp--preset--font-family--mono);
	font-weight: 400;
}
:where(.wp-block-details[open] summary, details[open] > summary)::after {
	content: "\2212" / "";
}
:where(.wp-block-details, details)[open] > :not(summary) {
	padding-block-end: var(--wp--preset--spacing--4);
}

/* 5. Chips, states and notices --------------------------------------------------------------------------------- */
.nx-chip,
.nx-state,
.wp-block-post-terms.is-style-nx-chips a {
	display: inline-flex;
	align-items: center;
	gap: var(--wp--preset--spacing--1);
	margin: 0;
	padding: var(--wp--preset--spacing--1) var(--wp--preset--spacing--2);
	border: thin solid var(--wp--preset--color--hairline-strong);
	border-radius: var(--wp--custom--radius--chip);
	background-color: var(--wp--preset--color--muted);
	color: var(--wp--preset--color--ink-2);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--xs);
	line-height: var(--nx-lh-tight);
	text-decoration: none;
	max-inline-size: 100%;
}
.nx-state::before {
	content: "";
	flex: none;
	inline-size: var(--wp--preset--spacing--2);
	block-size: var(--wp--preset--spacing--2);
	background-color: currentcolor;
}
.nx-state--positive,
.nx-state[data-state="open"],
.nx-state[data-state="verified"] {
	color: var(--wp--preset--color--positive);
}
.nx-state--caution,
.nx-state[data-state="forming"],
.nx-state[data-state="to-verify"] {
	color: var(--wp--preset--color--caution);
}
.nx-state--critical,
.nx-state[data-state="closed"] {
	color: var(--wp--preset--color--critical);
}
.nx-state--info {
	color: var(--wp--preset--color--info);
}

.nx-notice,
.nx-kb-notice,
.nx-corrections {
	padding: var(--wp--preset--spacing--4) var(--wp--preset--spacing--5);
	border: var(--nx-rule);
	border-inline-start: var(--wp--preset--spacing--1) solid var(--wp--preset--color--info);
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--elevated);
	font-size: var(--wp--preset--font-size--s);
}
.nx-notice > *,
.nx-kb-notice > *,
.nx-corrections > * {
	margin-block: 0;
}
.nx-notice > * + *,
.nx-kb-notice > * + *,
.nx-corrections > * + * {
	margin-block-start: var(--wp--preset--spacing--2);
}
.nx-notice--caution {
	border-inline-start-color: var(--wp--preset--color--caution);
}
.nx-notice--critical {
	border-inline-start-color: var(--wp--preset--color--critical);
}
.nx-notice--positive {
	border-inline-start-color: var(--wp--preset--color--positive);
}

.nx-empty.nx-empty {
	display: grid;
	gap: var(--wp--preset--spacing--3);
	justify-items: start;
}
.nx-empty > * {
	margin-block: 0;
}
.nx-empty > :where(p) {
	max-inline-size: var(--nx-measure);
}
.nx-empty--404 .wp-block-search {
	inline-size: 100%;
	max-inline-size: 40rem;
}

/* 6. Forms of record -------------------------------------------------------------------------------------------- */
/* Events calendar: a month grid of days, each with its events as links (nexus-site-core EventGrid markup). */
.nx-calendar {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	inline-size: 100%;
	gap: var(--wp--preset--spacing--4);
}
.nx-calendar__head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--3);
}
.nx-calendar__title {
	margin: 0;
	font-size: var(--wp--preset--font-size--xl);
}
.nx-calendar__nav {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--2);
}
.nx-calendar__nav-item {
	display: inline-flex;
	align-items: center;
	min-block-size: var(--wp--preset--spacing--6);
	padding: var(--wp--preset--spacing--1) var(--wp--preset--spacing--3);
	border: var(--nx-rule);
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--surface);
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--s);
	text-decoration: none;
}
a.nx-calendar__nav-item:hover {
	border-color: var(--wp--preset--color--hairline-strong);
	background-color: var(--wp--preset--color--hover);
}
.nx-calendar__nav-item[aria-disabled="true"] {
	color: var(--wp--preset--color--ink-muted);
	border-style: dashed;
}
.nx-calendar__grid {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	inline-size: 100%;
	max-inline-size: none; /* the reading measure is for prose, the grid fills the column */
	box-sizing: border-box;
	border: var(--nx-rule);
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--surface);
	overflow: hidden;
	list-style: none;
	margin: 0;
	padding: 0;
}
.nx-calendar__dow {
	padding: var(--wp--preset--spacing--2);
	background-color: var(--wp--preset--color--elevated);
	border-block-end: var(--nx-rule);
	color: var(--wp--preset--color--ink-muted);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--xs);
	text-align: center;
}
.nx-calendar__dow abbr {
	text-decoration: none;
}
.nx-calendar__day {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--1);
	min-block-size: 7rem;
	min-inline-size: 0;
	padding: var(--wp--preset--spacing--2);
	border-block-end: var(--nx-rule);
	border-inline-end: var(--nx-rule);
	font-size: var(--wp--preset--font-size--xs);
}
.nx-calendar__day:nth-child(7n) {
	border-inline-end: 0;
}
.nx-calendar__day > time {
	align-self: flex-start;
	min-inline-size: 1.75em;
	padding: 0 var(--wp--preset--spacing--1);
	border-radius: var(--wp--custom--radius--chip);
	color: var(--wp--preset--color--ink-2);
	font-family: var(--wp--preset--font-family--mono);
	font-variant-numeric: tabular-nums;
	text-align: center;
}
.nx-calendar__day--outside {
	background-color: var(--wp--preset--color--elevated);
	color: var(--wp--preset--color--ink-muted);
}
.nx-calendar__day--outside > time {
	color: var(--wp--preset--color--ink-muted);
}
/* Today: tinted cell, a heavier top edge and the date in a filled badge (a shape, not colour alone). */
.nx-calendar__day[aria-current="date"] {
	background-color: var(--wp--preset--color--accent-soft);
	box-shadow: inset 0 var(--wp--preset--spacing--1) 0 var(--wp--preset--color--accent);
}
.nx-calendar__day[aria-current="date"] > time {
	background-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--primary-ink);
	font-weight: 600;
}
.nx-calendar__event {
	display: block;
	padding: var(--wp--preset--spacing--1) var(--wp--preset--spacing--2);
	border: thin solid var(--wp--preset--color--hairline);
	border-inline-start: var(--wp--preset--spacing--1) solid var(--wp--preset--color--accent);
	border-radius: var(--wp--custom--radius--chip);
	background-color: var(--wp--preset--color--muted);
	color: var(--wp--preset--color--ink);
	line-height: var(--nx-lh-tight);
	overflow-wrap: anywhere;
	text-decoration: none;
	unicode-bidi: plaintext; /* a title in another script keeps its own direction beside the time */
}
.nx-calendar__event:hover {
	border-color: var(--wp--preset--color--hairline-strong);
	background-color: var(--wp--preset--color--hover);
	text-decoration: underline;
}
/* Cancelled: struck through, dashed outline, no fill. The label also says "(cancelled)" in words. */
.nx-calendar__event--cancelled {
	border-style: dashed;
	border-inline-start-color: var(--wp--preset--color--critical);
	background-color: transparent;
	color: var(--wp--preset--color--ink-muted);
	text-decoration: line-through;
	text-decoration-thickness: thin;
}
.nx-calendar__event--cancelled:hover {
	text-decoration: line-through underline;
}
/* Below 48em the grid becomes an agenda: one day per row, empty and other-month days hidden. */
@media (max-width: 48em) {
	.nx-calendar__grid {
		display: block;
	}
	.nx-calendar__dow,
	.nx-calendar__day--empty,
	.nx-calendar__day--outside {
		display: none;
	}
	.nx-calendar__day {
		min-block-size: 0;
		border-inline-end: 0;
		padding-block: var(--wp--preset--spacing--3);
		font-size: var(--wp--preset--font-size--s);
	}
	.nx-calendar__day:last-child {
		border-block-end: 0;
	}
	.nx-calendar__day > time {
		font-size: var(--wp--preset--font-size--s);
	}
	.nx-calendar__event {
		padding-block: var(--wp--preset--spacing--2);
	}
}
@media (forced-colors: active) {
	.nx-calendar__day[aria-current="date"] > time {
		border: var(--nx-focus-width) solid CanvasText;
	}
}

/* Share links and related content (nexus-site-core engagement module). */
.nx-engagement {
	display: grid;
	gap: var(--wp--preset--spacing--5);
	margin-block-start: var(--wp--preset--spacing--7);
	padding-block-start: var(--wp--preset--spacing--5);
	border-block-start: var(--nx-rule);
}
.nx-engagement > * {
	margin-block: 0;
	margin-inline: 0 !important; /* core centres constrained children with !important */
	max-inline-size: none;
}
.nx-share__list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--2);
	max-inline-size: none;
	margin: 0;
	padding: 0;
	list-style: none;
}
.nx-share__link {
	display: inline-flex;
	align-items: center;
	gap: var(--wp--preset--spacing--2);
	min-block-size: var(--wp--preset--spacing--6);
	padding: var(--wp--preset--spacing--1) var(--wp--preset--spacing--3);
	border: var(--nx-rule);
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--surface);
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--s);
	text-decoration: none;
	--nx-share-shape: polygon(31% 19%, 81% 19%, 81% 69%, 69% 69%, 69% 40%, 29% 79%, 21% 71%, 60% 31%, 31% 31%);
}
.nx-share__link:hover {
	border-color: var(--wp--preset--color--hairline-strong);
	background-color: var(--wp--preset--color--hover);
}
/* Two shapes drawn with clip-path in the text colour, no image and no URL: an envelope for email, an arrow out for a service. */
.nx-share__link::before {
	content: "";
	flex: none;
	inline-size: 1em;
	block-size: 1em;
	background-color: currentcolor;
	clip-path: var(--nx-share-shape);
}
[dir="rtl"] .nx-share__link:not(.nx-share__link--email)::before {
	transform: scaleX(-1);
}
.nx-share__link--email {
	--nx-share-shape: polygon(9% 19%, 50% 56%, 91% 19%, 91% 81%, 9% 81%);
}
.nx-related__title {
	margin-block: 0 var(--wp--preset--spacing--3);
	font-size: var(--wp--preset--font-size--l);
}
.nx-related__list {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr));
	gap: var(--wp--preset--spacing--3);
	max-inline-size: none;
	margin: 0;
	padding: 0;
	list-style: none;
}
.nx-related__item {
	display: flex;
	margin: 0;
	border: var(--nx-rule);
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--surface);
}
.nx-related__item:hover {
	border-color: var(--wp--preset--color--hairline-strong);
	background-color: var(--wp--preset--color--hover);
}
.nx-related__item a {
	flex: 1;
	padding: var(--wp--preset--spacing--3) var(--wp--preset--spacing--4);
	border-inline-start: var(--wp--preset--spacing--1) solid var(--wp--preset--color--accent);
	border-start-start-radius: var(--wp--custom--radius--r);
	border-end-start-radius: var(--wp--custom--radius--r);
	color: var(--wp--preset--color--ink);
	font-weight: 500;
	text-decoration: none;
}
.nx-related__item a:hover {
	text-decoration: underline;
}

/* Directory and profile. */
.nx-directory {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr));
	gap: var(--wp--preset--spacing--4);
	list-style: none;
	margin: 0;
	padding: 0;
}
.nx-person,
.nx-org {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: var(--wp--preset--spacing--3) var(--wp--preset--spacing--4);
	align-items: start;
	padding: var(--wp--preset--spacing--4);
	border: var(--nx-rule);
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--surface);
}
.nx-avatar {
	display: inline-grid;
	place-items: center;
	inline-size: var(--wp--preset--spacing--7);
	block-size: var(--wp--preset--spacing--7);
	border-radius: var(--wp--custom--radius--round);
	background-color: var(--wp--preset--color--accent-soft);
	color: var(--wp--preset--color--ink);
	font-weight: 600;
	overflow: hidden;
	object-fit: cover;
}
.nx-avatar--lg {
	inline-size: var(--wp--preset--spacing--9);
	block-size: var(--wp--preset--spacing--9);
	font-size: var(--wp--preset--font-size--xl);
}
.nx-profile {
	display: grid;
	gap: var(--wp--preset--spacing--5);
}
.nx-profile__head {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: var(--wp--preset--spacing--5);
	align-items: center;
}
@media (max-width: 30em) {
	.nx-profile__head {
		grid-template-columns: minmax(0, 1fr);
	}
}
.nx-profile__body {
	display: grid;
	gap: var(--wp--preset--spacing--5);
}
@media (min-width: 64em) {
	.nx-profile__body {
		grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
		align-items: start;
	}
}

/* Glossary: a letter index and definition rows. */
.nx-glossary__index {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--1);
	margin: 0 0 var(--wp--preset--spacing--5);
	padding: 0;
	list-style: none;
}
.nx-glossary__index a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-block-size: var(--wp--preset--spacing--6);
	min-inline-size: var(--wp--preset--spacing--6);
	border: var(--nx-rule);
	border-radius: var(--wp--custom--radius--r);
	text-decoration: none;
}
.nx-glossary__index a:hover {
	background-color: var(--wp--preset--color--hover);
}
.nx-glossary dt {
	margin-block-start: var(--wp--preset--spacing--4);
	font-weight: 600;
}
.nx-glossary dd {
	margin-inline: 0;
	color: var(--wp--preset--color--ink-2);
}
.nx-glossary__letter {
	margin-block: var(--wp--preset--spacing--6) var(--wp--preset--spacing--2);
	padding-block-end: var(--wp--preset--spacing--2);
	border-block-end: var(--nx-rule-strong);
	font-family: var(--wp--preset--font-family--mono);
}

/* Opportunities and course cards: a title, a meta line and a state. */
.nx-opportunity,
.nx-course {
	display: grid;
	gap: var(--wp--preset--spacing--2);
	padding: var(--wp--preset--spacing--5);
	border: var(--nx-rule);
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--surface);
}
.nx-opportunity > *,
.nx-course > * {
	margin-block: 0;
}
.nx-meta {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--1) var(--wp--preset--spacing--4);
	margin: 0;
	padding: 0;
	list-style: none;
	color: var(--wp--preset--color--ink-muted);
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--xs);
}

/* Course outline: numbered lessons with a state mark that does not rely on colour. */
.nx-outline {
	margin: 0;
	padding: 0;
	list-style: none;
	counter-reset: nx-lesson;
}
.nx-outline > li {
	counter-increment: nx-lesson;
	display: grid;
	grid-template-columns: var(--wp--preset--spacing--6) minmax(0, 1fr) auto;
	gap: var(--wp--preset--spacing--3);
	align-items: baseline;
	padding-block: var(--wp--preset--spacing--3);
	border-block-end: var(--nx-rule);
}
.nx-outline > li::before {
	content: counter(nx-lesson, decimal-leading-zero);
	font-family: var(--wp--preset--font-family--mono);
	color: var(--wp--preset--color--ink-muted);
}

/* Core table cells: hairline rules instead of the default solid borders. */
.wp-block-table table td,
.wp-block-table table th {
	border: 0;
	border-block-end: var(--nx-rule);
}
.wp-block-table table th {
	border-block-end: var(--nx-rule-strong);
}
.wp-block-table table {
	border: 0;
}

/* Dashboard shell: a rail and a main column; the rail folds above the main column below 64em. */
.nx-dash {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--wp--preset--spacing--5);
}
.nx-dash > * {
	min-inline-size: 0;
}
@media (min-width: 64em) {
	.nx-dash {
		grid-template-columns: minmax(12rem, 16rem) minmax(0, 1fr);
		align-items: start;
	}
}
.nx-dash__nav {
	display: grid;
	gap: var(--wp--preset--spacing--1);
	margin: 0;
	padding: 0;
	list-style: none;
}
.nx-dash__nav a {
	display: flex;
	align-items: center;
	min-block-size: var(--wp--preset--spacing--6);
	padding-inline: var(--wp--preset--spacing--3);
	border-inline-start: var(--wp--preset--spacing--1) solid transparent;
	text-decoration: none;
}
.nx-dash__nav a:hover {
	background-color: var(--wp--preset--color--hover);
}
.nx-dash__nav a[aria-current="page"] {
	border-inline-start-color: var(--wp--preset--color--accent);
	background-color: var(--wp--preset--color--accent-soft);
	font-weight: 600;
}
.nx-dash__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
	gap: var(--wp--preset--spacing--4);
}
.nx-panel {
	display: grid;
	align-content: start;
	gap: var(--wp--preset--spacing--3);
	padding: var(--wp--preset--spacing--5);
	border: var(--nx-rule);
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--surface);
	min-inline-size: 0;
}
.nx-panel > * {
	margin-block: 0;
}

/* 7. Take part ---------------------------------------------------------------------------------------------------- */
.nx-progress {
	display: grid;
	gap: var(--wp--preset--spacing--1);
}
.nx-progress progress {
	appearance: none;
	inline-size: 100%;
	block-size: var(--wp--preset--spacing--2);
	border: 0;
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--muted);
	accent-color: var(--wp--preset--color--accent);
}
.nx-progress progress::-webkit-progress-bar {
	background-color: var(--wp--preset--color--muted);
	border-radius: var(--wp--custom--radius--r);
}
.nx-progress progress::-webkit-progress-value {
	background-color: var(--wp--preset--color--accent);
	border-radius: var(--wp--custom--radius--r);
}
.nx-progress progress::-moz-progress-bar {
	background-color: var(--wp--preset--color--accent);
}
.nx-amounts {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(5.5rem, 1fr));
	gap: var(--wp--preset--spacing--2);
	margin: 0;
	padding: 0;
	border: 0;
}
.nx-amounts label {
	display: grid;
	place-items: center;
	min-block-size: var(--wp--preset--spacing--7);
	margin: 0;
	border: thin solid var(--wp--preset--color--hairline-strong);
	border-radius: var(--wp--custom--radius--r);
	cursor: pointer;
	font-family: var(--wp--preset--font-family--mono);
}
.nx-amounts input {
	position: absolute;
	opacity: 0;
}
.nx-amounts label:has(input:checked) {
	border-color: var(--wp--preset--color--ink);
	background-color: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--canvas);
}
.nx-amounts label:has(input:focus-visible) {
	outline: var(--nx-focus-width) solid var(--wp--preset--color--focus);
	outline-offset: var(--nx-focus-offset);
}
.nx-sign {
	padding: var(--wp--preset--spacing--5);
	border: var(--nx-rule);
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--elevated);
}
.nx-sign > * {
	margin-block: 0;
}
.nx-sign > * + * {
	margin-block-start: var(--wp--preset--spacing--4);
}
.nx-partner-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 12rem), 1fr));
	gap: var(--wp--preset--spacing--4);
	margin: 0;
	padding: 0;
	list-style: none;
}
.nx-partner-grid li {
	display: grid;
	place-items: center;
	min-block-size: var(--wp--preset--spacing--9);
	padding: var(--wp--preset--spacing--3);
	border: var(--nx-rule);
	border-radius: var(--wp--custom--radius--r);
	text-align: center;
}
.nx-badge-wall {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 10rem), 1fr));
	gap: var(--wp--preset--spacing--4);
	margin: 0;
	padding: 0;
	list-style: none;
}

/* 8. Loading --------------------------------------------------------------------------------------------------------- */
.nx-skeleton,
[aria-busy="true"] .nx-skeleton-line {
	display: block;
	min-block-size: 1em;
	border-radius: var(--wp--custom--radius--r);
	background-color: var(--wp--preset--color--muted);
}
.nx-skeleton--title {
	inline-size: 60%;
	min-block-size: 1.5em;
}
.nx-skeleton--text {
	inline-size: 100%;
}
.nx-skeleton--card {
	min-block-size: 8rem;
}
@media (prefers-reduced-motion: no-preference) {
	.nx-skeleton,
	[aria-busy="true"] .nx-skeleton-line {
		background-image: linear-gradient(90deg, transparent, var(--wp--preset--color--hover), transparent);
		background-size: 200% 100%;
		background-repeat: no-repeat;
		animation: nx-shimmer 1.4s linear infinite;
	}
	@keyframes nx-shimmer {
		from { background-position: 200% 0; }
		to { background-position: -200% 0; }
	}
	@keyframes nx-rise {
		from { opacity: 0; translate: 0 var(--wp--preset--spacing--2); }
		to { opacity: 1; translate: 0 0; }
	}
	.nx-main > * {
		animation: nx-rise var(--wp--custom--motion--base) var(--nx-ease) both;
	}
	::view-transition-old(root),
	::view-transition-new(root) {
		animation-duration: var(--wp--custom--motion--base);
	}
}

/* 9. Accessibility modes ------------------------------------------------------------------------------------------ */
@media (forced-colors: active) {
	.nx-metric,
	.nx-dest,
	.nx-dest-card,
	.nx-panel,
	.nx-person,
	.nx-org,
	.nx-notice,
	.nx-kb-notice,
	.nx-corrections,
	.nx-chip,
	.nx-state,
	.nx-explorer-facets,
	.nx-grix-slot {
		border: thin solid CanvasText;
	}
	.nx-state::before,
	.nx-timeline-row::before {
		background-color: CanvasText;
	}
	.nx-amounts label:has(input:checked),
	.wp-block-query-pagination-numbers .current,
	.page-numbers.current {
		background-color: Highlight;
		color: HighlightText;
		forced-color-adjust: none;
	}
	.nx-progress progress {
		forced-color-adjust: none;
		accent-color: Highlight;
	}
	:where(a, button, input, select, textarea, summary):focus-visible {
		outline: var(--nx-focus-width) solid Highlight;
	}
	.nx-skeleton {
		background-color: GrayText;
	}
}
@media (prefers-contrast: more) {
	:root {
		--nx-rule: thin solid var(--wp--preset--color--hairline-strong);
	}
	:where(a) {
		text-decoration-thickness: var(--nx-focus-width);
	}
}
@media (prefers-reduced-motion: reduce) {
	.nx-skeleton,
	.nx-main > * {
		animation: none !important;
	}
	.wp-element-button:active {
		translate: none;
	}
}
@media (hover: none) {
	.nx-list-row:hover,
	.nx-dest:hover,
	.nx-dest-card:hover {
		background-color: transparent;
	}
}
/* Inputs stay 1rem on phones so iOS does not zoom on focus. */
@media (max-width: 30em) {
	:where(input, select, textarea) {
		font-size: max(var(--wp--preset--font-size--m), 1rem);
	}
	.nx-main {
		padding-block: var(--wp--preset--spacing--5) var(--wp--preset--spacing--7);
	}
	.nx-hero {
		padding-block: var(--wp--preset--spacing--6) var(--wp--preset--spacing--5);
	}
	.nx-actions .wp-block-button,
	.nx-actions .wp-block-button__link {
		inline-size: 100%;
	}
	/* Text links in an action row (the cite box formats) stay links: side by side, on the start edge, with a touch-size target. */
	.nx-actions .wp-block-button.is-style-nx-text-link,
	.nx-actions .wp-block-button.is-style-nx-text-link .wp-block-button__link {
		inline-size: auto;
	}
	.nx-actions .wp-block-button.is-style-nx-text-link .wp-block-button__link {
		display: inline-flex;
		align-items: center;
		min-block-size: calc(var(--wp--preset--spacing--6) + var(--wp--preset--spacing--2));
		text-align: start;
	}
	.wp-block-search__inside-wrapper {
		flex-wrap: wrap;
	}
	.wp-block-search__inside-wrapper .wp-block-search__input {
		border-inline-end-width: thin;
		border-radius: var(--wp--custom--radius--r);
	}
	.wp-block-search__inside-wrapper .wp-block-search__button {
		inline-size: 100%;
		border-radius: var(--wp--custom--radius--r);
	}
}

/* 9b. Platform single pages -------------------------------------------------------------------------------------
   The platform children (standards, agency, labs, reports, platform, institution) stack a lead, a wide split and
   record bands on one page. Core centres each constrained band at the narrow content size while the split starts on
   the chrome's content edge, so the left edges disagreed. Every band of a platform single now starts on that edge
   (the same inline padding as .nx-split.alignwide, base.css); prose inside keeps the reading measure. */
body[class*="nx-platform-"].single .nx-main > :is(.wp-block-group.is-layout-constrained, .wp-block-template-part) {
	--nx-chrome-gutter: var(--wp--custom--layout--gutter-sm);
	box-sizing: border-box;
	max-inline-size: var(--wp--style--global--wide-size);
	--nx-band-edge: calc((min(var(--wp--style--global--wide-size), 100%) - min(var(--wp--style--global--wide-size), 100% + var(--wp--style--root--padding-left) + var(--wp--style--root--padding-right))) / 2 + var(--nx-chrome-gutter));
	padding-inline: var(--nx-band-edge);
}
@media (min-width: 48em) {
	body[class*="nx-platform-"].single .nx-main > :is(.wp-block-group.is-layout-constrained, .wp-block-template-part) {
		--nx-chrome-gutter: var(--wp--custom--layout--gutter-md);
	}
}
/* A boxed band (a window, a card, the corrections notice) has a border, so it is centred on the chrome's content width and its own
   padding stays inside the border. As a padded band its text touched the border on a phone. */
body[class*="nx-platform-"].single .nx-main > :is(.is-style-nx-window, .is-style-nx-card, .nx-corrections).wp-block-group.is-layout-constrained {
	margin-inline: auto !important;
	padding-inline: var(--wp--preset--spacing--5);
	max-inline-size: calc(var(--wp--style--global--wide-size) - 2 * var(--nx-chrome-gutter));
}
body[class*="nx-platform-"].single .nx-main > :is(.wp-block-group.is-layout-constrained, .wp-block-template-part) > * {
	margin-inline: 0 !important; /* core centres constrained children with !important */
	max-inline-size: none;
}
body[class*="nx-platform-"].single .nx-main > .wp-block-group.is-layout-constrained > :is(p, h1, h2, h3, ul, ol, .nx-lede) {
	max-inline-size: var(--nx-measure);
}

/* Platform heroes read from the start edge, like the lead of a platform single: eyebrow, title, lede and actions share one left edge. */
body[class*="nx-platform-"] .nx-main > section[class*="-hero"] {
	text-align: start;
}
body[class*="nx-platform-"] .nx-main > section[class*="-hero"] > * {
	margin-inline: 0 !important; /* core centres constrained children with !important */
}
body[class*="nx-platform-"] .nx-main > section[class*="-hero"] .wp-block-buttons {
	justify-content: flex-start;
}

/* Record tables of the platform plugins (crosswalks, readiness, spine, annex) keep their columns and scroll inside the
   page on a phone instead of widening it. */
@media (max-width: 47.99em) {
	body[class*="nx-platform-"] .nx-main table[class*="-table"] {
		display: block;
		max-inline-size: 100%;
		overflow-x: auto;
	}
}

/* A lede or a narrow list inside a platform section starts on the section edge (core centres a narrower constrained child). */
body[class*="nx-platform-"] .nx-main :is([class*="__lede"], .nx-lede) {
	margin-inline: 0 auto !important; /* core centres constrained children with !important */
}

/* The platform context bar: the site name on one side, the platform's own links on the other. */
.nx-platform-context {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--2) var(--wp--preset--spacing--4);
	padding-block: var(--wp--preset--spacing--3);
	border-block-end: var(--nx-rule);
}
.nx-platform-context > * {
	margin: 0;
}
.nx-platform-context a {
	color: var(--wp--preset--color--ink-2);
	text-underline-offset: 0.2em;
}
.nx-platform-context a:hover {
	color: var(--wp--preset--color--accent);
}

/* 9c. Record pages of the base theme (listing, report, standard, dataset, event, expert, term, petition, donate) -------
   Core centres each constrained band (title block, share row, corrections, cite box, notices) at the narrow content
   size, while the split starts on the chrome's content edge, so the left edges disagreed: the title block started
   right of the body, and the bands below started right of both. Every band now starts on the split's edge (the same
   inline padding as .nx-split.alignwide, base.css); a boxed band (window, card, notice) is centred on the chrome's
   content width with its own padding inside the border; prose keeps the reading measure. */
.nx-main:is(.nx-listing, .nx-report, .nx-standard, .nx-dataset, .nx-event, .nx-expert, .nx-term, .nx-take-part--petition, .nx-take-part--donate, .nx-learning--course, .nx-kb) {
	--nx-chrome-gutter: var(--wp--custom--layout--gutter-sm);
	--nx-band-edge: calc((min(var(--wp--style--global--wide-size), 100%) - min(var(--wp--style--global--wide-size), 100% + var(--wp--style--root--padding-left) + var(--wp--style--root--padding-right))) / 2 + var(--nx-chrome-gutter));
}
@media (min-width: 48em) {
	.nx-main:is(.nx-listing, .nx-report, .nx-standard, .nx-dataset, .nx-event, .nx-expert, .nx-term, .nx-take-part--petition, .nx-take-part--donate, .nx-learning--course, .nx-kb) {
		--nx-chrome-gutter: var(--wp--custom--layout--gutter-md);
	}
}
.nx-main:is(.nx-listing, .nx-report, .nx-standard, .nx-dataset, .nx-event, .nx-expert, .nx-term, .nx-take-part--petition, .nx-take-part--donate, .nx-learning--course, .nx-kb) > :is(.wp-block-group.is-layout-constrained, .wp-block-template-part) {
	box-sizing: border-box;
	max-inline-size: var(--wp--style--global--wide-size);
	margin-inline: auto !important; /* core centres constrained blocks with !important */
	padding-inline: var(--nx-band-edge);
}
.nx-main:is(.nx-listing, .nx-report, .nx-standard, .nx-dataset, .nx-event, .nx-expert, .nx-term, .nx-take-part--petition, .nx-take-part--donate, .nx-learning--course, .nx-kb) > :is(.wp-block-group.is-layout-constrained, .wp-block-template-part) > * {
	max-inline-size: none;
	margin-inline: 0 !important;
}
.nx-main:is(.nx-listing, .nx-report, .nx-standard, .nx-dataset, .nx-event, .nx-expert, .nx-term, .nx-take-part--petition, .nx-take-part--donate, .nx-learning--course, .nx-kb) > .wp-block-group.is-layout-constrained > :is(p, h1, h2, h3, ul, ol, .nx-lede, .wp-block-post-excerpt) {
	max-inline-size: var(--nx-measure);
}
.nx-main:is(.nx-listing, .nx-report, .nx-standard, .nx-dataset, .nx-event, .nx-expert, .nx-term, .nx-take-part--petition, .nx-take-part--donate, .nx-learning--course, .nx-kb) > :is(.is-style-nx-window, .is-style-nx-card, .nx-corrections, .nx-notice).wp-block-group.is-layout-constrained {
	inline-size: 100%;
	max-inline-size: calc(var(--wp--style--global--wide-size) - 2 * var(--nx-chrome-gutter));
	padding-inline: var(--wp--preset--spacing--5);
}
.nx-main:is(.nx-listing, .nx-report, .nx-standard, .nx-dataset, .nx-event, .nx-expert, .nx-term, .nx-take-part--petition, .nx-take-part--donate, .nx-learning--course, .nx-kb) > .nx-main-split-reset {
	margin-inline: 0;
}
.nx-main:is(.nx-listing, .nx-report, .nx-standard, .nx-dataset, .nx-event, .nx-expert, .nx-term, .nx-take-part--petition, .nx-take-part--donate, .nx-learning--course, .nx-kb) > :is(.is-style-nx-window, .is-style-nx-card, .nx-corrections, .nx-notice).wp-block-group.is-layout-constrained > :is(h1, h2, h3) {
	max-inline-size: none;
}
/* The share row's rule runs between the content edges, not through the band's padding. */
.nx-main:is(.nx-listing, .nx-report, .nx-standard, .nx-dataset, .nx-event, .nx-expert, .nx-term, .nx-take-part--petition, .nx-take-part--donate, .nx-learning--course, .nx-kb) > .nx-engagement {
	border-block-start: 0;
}
.nx-main:is(.nx-listing, .nx-report, .nx-standard, .nx-dataset, .nx-event, .nx-expert, .nx-term, .nx-take-part--petition, .nx-take-part--donate, .nx-learning--course, .nx-kb) > .nx-engagement > :first-child {
	padding-block-start: var(--wp--preset--spacing--5);
	border-block-start: var(--nx-rule);
}
.nx-main.nx-listing > :is([class^="nexus-registry-"], .nx-stewardship) {
	box-sizing: border-box;
	inline-size: 100%;
	max-inline-size: calc(var(--wp--style--global--wide-size) - 2 * var(--nx-chrome-gutter));
	margin-inline: auto !important;
}
.nx-main.nx-listing > :is([class^="nexus-registry-"], .nx-stewardship) :is(p, ul, ol, form) {
	max-inline-size: var(--nx-measure);
}

/* The registry's boxes on the archive keep to the list's width (their padding is inside it). */
.nx-main.nx-registry > [class^="nexus-registry-"] {
	box-sizing: border-box;
	max-inline-size: var(--wp--style--global--content-size);
	margin-inline: auto !important;
}
.nx-main.nx-listing > .nx-stewardship {
	padding-inline: var(--wp--preset--spacing--5);
}

/* The registry's own boxes inside the listing's main column: the same surface as the facts window. */
.nx-listing .wp-block-column > :is(.nexus-registry-locations, .nexus-registry-relations, .nexus-registry-bookmark) {
	max-inline-size: none;
	margin-inline: 0 !important;
}
.nx-listing .nexus-registry-locations ul,
.nx-listing .nexus-registry-relations ul {
	display: grid;
	gap: var(--wp--preset--spacing--2);
	margin-block: 0;
	padding-inline-start: var(--wp--preset--spacing--4);
}
.nx-listing .nexus-registry-relations dl,
.nx-listing .nexus-registry-relations h3 {
	margin-block: var(--wp--preset--spacing--3) var(--wp--preset--spacing--1);
	font-size: var(--wp--preset--font-size--s);
	color: var(--wp--preset--color--ink-2);
}
.nx-listing .nexus-registry-hint {
	color: var(--wp--preset--color--ink-muted);
	font-size: var(--wp--preset--font-size--s);
}
/* A choice and its label: normal weight, the control and the text on one line. */
:is(.nexus-registry-report, .nexus-registry-claim, .nexus-registry-roster, .nexus-registry-submit) :is(input[type="radio"], input[type="checkbox"]) + label,
:is(.nexus-registry-report, .nexus-registry-claim, .nexus-registry-roster, .nexus-registry-submit) label:has(> :is(input[type="radio"], input[type="checkbox"])) {
	font-weight: 400;
	margin-block-end: 0;
}
:is(.nexus-registry-report, .nexus-registry-claim, .nexus-registry-roster, .nexus-registry-submit) fieldset {
	display: grid;
	gap: var(--wp--preset--spacing--2);
	max-inline-size: var(--nx-measure);
}
:is(.nexus-registry-report, .nexus-registry-claim, .nexus-registry-roster, .nexus-registry-submit) fieldset > p {
	margin: 0;
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--2);
}
:is(.nexus-registry-report, .nexus-registry-claim, .nexus-registry-roster, .nexus-registry-submit) :is(input[type="radio"], input[type="checkbox"]) {
	flex: none;
	min-block-size: 0;
	margin: 0;
}
:is(.nexus-registry-report, .nexus-registry-roster, .nexus-registry-submit) textarea {
	max-inline-size: var(--nx-measure);
}
.nexus-registry-correction {
	border-inline-start: var(--wp--preset--spacing--1) solid var(--wp--preset--color--caution);
}

/* The "Checked" marker of a fact (inc/registry.php): a tick, the date and the source, under the value. */
.nx-checked {
	display: flex;
	align-items: baseline;
	gap: var(--wp--preset--spacing--1);
	margin-block-start: var(--wp--preset--spacing--1);
	color: var(--wp--preset--color--ink-2);
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--xs);
	line-height: var(--nx-lh-body);
}
.nx-checked__icon {
	flex: none;
	color: var(--wp--preset--color--positive);
	inline-size: 1em;
	block-size: 1em;
	align-self: center;
}
.nx-register-v:has(> .nx-checked) {
	display: block;
}

/* 10. Print --------------------------------------------------------------------------------------------------------- */
@media print {
	.nx-skeleton,
	.nx-actions,
	.nx-explorer-facets,
	.wp-block-query-pagination,
	.nx-calendar__head .nx-actions {
		display: none !important;
	}
	.nx-metric,
	.nx-dest,
	.nx-panel,
	.nx-person,
	.nx-register-row,
	.nx-timeline-row,
	.nx-list-row {
		break-inside: avoid;
	}
	.nx-main > * {
		animation: none !important;
	}
}
