/* Nexus Access screens, in the estate chrome: the --nxc-* tokens of nexus-chrome.css when the theme loads it, with the
   same values as fallbacks when it does not; IBM Plex Sans and Mono (self-hosted by the estate when present, else the
   system font); light and dark through html[data-theme] ("auto" follows the system); logical properties for
   right-to-left; sizes in rem and em, so Readabler's font size, spacing and readable-font settings scale everything.
   The theme's header and footer stay around it. Contrast of every text pair is at least 4.5:1 (WCAG 2.2 AA). */
.nxa-shell {
	--nxa-canvas: var(--nxc-canvas, #ffffff);
	--nxa-elevated: var(--nxc-elevated, #fafafa);
	--nxa-hover: var(--nxc-hover, #ededed);
	--nxa-line: var(--nxc-line, rgba(0, 0, 0, .10));
	--nxa-line-strong: var(--nxc-line-strong, rgba(0, 0, 0, .20));
	--nxa-text: var(--nxc-text, #000000);
	--nxa-muted: var(--nxc-muted, #525252);
	--nxa-primary-bg: var(--nxc-primary-bg, #000000);
	--nxa-primary-ink: var(--nxc-primary-ink, #ffffff);
	--nxa-primary-hover: var(--nxc-primary-hover, #262626);
	--nxa-focus: var(--nxc-focus, #1a73e8);
	--nxa-bad: #b3261e;
	--nxa-good: #1e6b3a;
	--nxa-sans: var(--nxc-sans, "IBM Plex Sans", "IBM Plex Sans Variable", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif);
	--nxa-mono: var(--nxc-mono, "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
	--nxa-radius: var(--nxc-radius, 5px);
}
html[data-theme="dark"] .nxa-shell {
	--nxa-canvas: var(--nxc-canvas, #000000);
	--nxa-elevated: var(--nxc-elevated, #111111);
	--nxa-hover: var(--nxc-hover, #1a1a1a);
	--nxa-line: var(--nxc-line, rgba(255, 255, 255, .10));
	--nxa-line-strong: var(--nxc-line-strong, rgba(255, 255, 255, .20));
	--nxa-text: var(--nxc-text, #ffffff);
	--nxa-muted: var(--nxc-muted, #a3a3a3);
	--nxa-primary-bg: var(--nxc-primary-bg, #ffffff);
	--nxa-primary-ink: var(--nxc-primary-ink, #000000);
	--nxa-primary-hover: var(--nxc-primary-hover, #e5e5e5);
	--nxa-focus: var(--nxc-focus, #8ab4f8);
	--nxa-bad: #f2b8b5;
	--nxa-good: #9ad7a8;
}
@media (prefers-color-scheme: dark) {
	html[data-theme="auto"] .nxa-shell {
		--nxa-canvas: var(--nxc-canvas, #000000);
		--nxa-elevated: var(--nxc-elevated, #111111);
		--nxa-hover: var(--nxc-hover, #1a1a1a);
		--nxa-line: var(--nxc-line, rgba(255, 255, 255, .10));
		--nxa-line-strong: var(--nxc-line-strong, rgba(255, 255, 255, .20));
		--nxa-text: var(--nxc-text, #ffffff);
		--nxa-muted: var(--nxc-muted, #a3a3a3);
		--nxa-primary-bg: var(--nxc-primary-bg, #ffffff);
		--nxa-primary-ink: var(--nxc-primary-ink, #000000);
		--nxa-primary-hover: var(--nxc-primary-hover, #e5e5e5);
		--nxa-focus: var(--nxc-focus, #8ab4f8);
		--nxa-bad: #f2b8b5;
		--nxa-good: #9ad7a8;
	}
}

/* Layout: the institution panel and the form card; on a phone one column, the card first. */
.nxa-shell {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 2rem;
	max-inline-size: none;
	inline-size: 100%;
	margin-block: 2rem;
	margin-inline: 0;
	padding-inline: clamp(1rem, 4vw, 4rem);
	padding-block: 1.5rem;
	color: var(--nxa-text);
	background: var(--nxa-canvas);
	border-radius: var(--nxa-radius);
	font-family: var(--nxa-sans);
	font-size: 1rem;
	line-height: 1.5;
	box-sizing: border-box;
}
.nxa-shell *,
.nxa-shell *::before,
.nxa-shell *::after {
	box-sizing: border-box;
}
@media (min-width: 56em) {
	.nxa-shell {
		grid-template-columns: minmax(0, 1fr) minmax(24rem, 32rem);
		grid-template-areas: "panel card" "legal legal";
		gap: 4rem;
		align-items: start;
		margin-block: 3.5rem;
	}
	.nxa-shell > .nxa-card { grid-area: card; }
	.nxa-shell > .nxa-panel { grid-area: panel; padding-block-start: 1.5rem; }
	/* The wide shell (the account screen) has one column and no named areas: a named area here would open an empty
	   row above the card. */
	.nxa-shell--wide > .nxa-card,
	.nxa-shell--wide > .nxa-panel { grid-area: auto; }
}
.nxa-shell--wide {
	max-inline-size: none;
	grid-template-columns: minmax(0, 1fr) !important;
	grid-template-areas: none !important;
}
.nxa-card {
	background: var(--nxa-elevated);
	border: 1px solid var(--nxa-line-strong);
	border-radius: var(--nxa-radius);
	padding: 2rem 1.75rem;
	max-inline-size: 25rem;
	inline-size: 100%;
	margin-inline: auto;
}
.nxa-card--wide {
	max-inline-size: none;
}
@media (max-width: 30em) {
	.nxa-shell { padding-inline: 0.75rem; margin-block: 1rem; gap: 1.5rem; }
	.nxa-card { padding: 1.5rem 1.125rem; }
}

/* Type. */
.nxa-shell p { margin-block: 0 1rem; }
.nxa-eyebrow {
	margin-block: 0 0.5rem !important;
	font-family: var(--nxa-mono);
	font-size: 0.75rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nxa-muted);
}
.nxa-title {
	margin-block: 0 1.25rem;
	font-family: var(--nxa-sans);
	font-size: 1.5rem;
	line-height: 1.25;
	font-weight: 600;
	color: var(--nxa-text);
	letter-spacing: -0.01em;
}
.nxa-subtitle {
	margin-block: 1.5rem 0.5rem;
	font-size: 1rem;
	font-weight: 600;
	color: var(--nxa-text);
}
.nxa-lede { color: var(--nxa-text); }
/* :not(#nxa-0) outranks BuddyPress's "body #buddypress * a" on its own register page. */
.nxa-shell a:not(#nxa-0) {
	color: var(--nxa-text);
	text-decoration-line: underline;
	text-underline-offset: 0.2em;
}
.nxa-shell a:not(#nxa-0):hover { text-decoration-thickness: 2px; }
.nxa-sr {
	position: absolute !important;
	inline-size: 1px;
	block-size: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	margin: 0 !important;
}

/* The institution panel. */
.nxa-panel .nxa-eyebrow { font-size: 0.8125rem; }
.nxa-mission {
	font-size: 1.75rem;
	line-height: 1.25;
	font-weight: 500;
	letter-spacing: -0.015em;
	max-inline-size: 28ch;
	margin-block-end: 1.75rem !important;
}
.nxa-benefits {
	list-style: none;
	margin: 0;
	padding: 0;
	border-block-start: 1px solid var(--nxa-line-strong);
}
.nxa-benefits li {
	padding-block: 0.875rem;
	padding-inline-start: 2rem;
	border-block-end: 1px solid var(--nxa-line);
	position: relative;
	color: var(--nxa-text);
}
.nxa-benefits li::before {
	content: "";
	position: absolute;
	inset-inline-start: 0.25rem;
	inset-block-start: 1.375rem;
	inline-size: 0.75rem;
	block-size: 1px;
	background: var(--nxa-text);
}
.nxa-panel-note {
	margin-block-start: 1.25rem !important;
	font-size: 0.875rem;
	color: var(--nxa-muted);
}

/* Fields. Form controls and buttons carry :not(#nxa-0), an id-level weight, because themes style every input and
   button with long selectors (BuddyX: input:not(…)×5); the card keeps its own look inside any theme. */
.nxa-form { margin: 0; }
.nxa-field { margin-block: 0 1.125rem !important; }
.nxa-field label,
.nxa-group legend {
	display: block;
	margin-block-end: 0.375rem;
	font-weight: 600;
	font-size: 0.9375rem;
	color: var(--nxa-text);
}
.nxa-label-row {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 1rem;
}
.nxa-label-row label { margin-block-end: 0.375rem; }
.nxa-inline-link { font-size: 0.875rem; font-weight: 400; }
.nxa-required,
.nxa-help {
	font-weight: 400;
	color: var(--nxa-muted);
}
.nxa-required { font-size: 0.8125rem; }
.nxa-help {
	display: block;
	font-size: 0.875rem;
	margin-block-end: 0.375rem;
}
.nxa-shell input.nxa-input:not(#nxa-0),
.nxa-shell select.nxa-input:not(#nxa-0),
.nxa-shell textarea.nxa-input:not(#nxa-0) {
	display: block;
	inline-size: 100%;
	min-block-size: 2.75rem;
	padding-block: 0.5rem;
	padding-inline: 0.75rem;
	font: inherit;
	color: var(--nxa-text);
	background: var(--nxa-canvas);
	border: 1px solid var(--nxa-line-strong);
	border-radius: var(--nxa-radius);
	box-shadow: none;
	margin: 0;
}
.nxa-shell select.nxa-input:not(#nxa-0)[multiple] { padding-block: 0.25rem; }
.nxa-shell .nxa-input:not(#nxa-0):hover { border-color: var(--nxa-muted); }
.nxa-shell :focus-visible,
.nxa-shell .nxa-button:focus-visible {
	outline: 2px solid var(--nxa-focus);
	outline-offset: 2px;
}
.nxa-shell .nxa-input:not(#nxa-0):focus { border-color: var(--nxa-text); background: var(--nxa-canvas); color: var(--nxa-text); }
.nxa-shell .nxa-input:not(#nxa-0)[aria-invalid="true"] { border-color: var(--nxa-bad); border-width: 2px; }
.nxa-error {
	display: block;
	margin-block: 0.25rem 0.375rem;
	font-size: 0.875rem;
	font-weight: 600;
	color: var(--nxa-bad);
}
.nxa-error:empty { display: none; }
.nxa-error::before { content: "! "; }
.nxa-password {
	display: flex;
	align-items: stretch;
	gap: 0;
	position: relative;
}
.nxa-shell .nxa-password .nxa-input:not(#nxa-0) { padding-inline-end: 4.5rem; }
.nxa-shell button.nxa-reveal:not(#nxa-0) {
	position: absolute;
	inset-inline-end: 0.25rem;
	inset-block: 0.25rem;
	min-inline-size: 3.75rem;
	padding-inline: 0.75rem;
	font: inherit;
	font-size: 0.8125rem;
	font-weight: 600;
	color: var(--nxa-text);
	background: transparent;
	border: 0;
	border-radius: calc(var(--nxa-radius) - 1px);
	cursor: pointer;
}
.nxa-shell button.nxa-reveal:not(#nxa-0):hover,
.nxa-shell button.nxa-reveal:not(#nxa-0):focus { background: var(--nxa-hover); color: var(--nxa-text); }
.nxa-strength {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin-block-start: 0.5rem;
	font-size: 0.875rem;
	color: var(--nxa-muted);
	min-block-size: 1.25rem;
}
.nxa-strength:not([data-score]) meter,
.nxa-strength[data-score="0"] meter { visibility: hidden; }
.nxa-strength meter {
	inline-size: 6rem;
	block-size: 0.375rem;
	flex: none;
}
.nxa-check,
.nxa-choice {
	display: flex;
	gap: 0.625rem;
	align-items: flex-start;
	margin-block: 0 0.875rem !important;
}
.nxa-check { flex-wrap: wrap; }
.nxa-check .nxa-error { flex-basis: 100%; }
.nxa-choice { margin-block-end: 0.5rem !important; }
/* the box is the estate control standard (.nx-check, .nx-radio; kits/controls, block at the end of this file) */
.nxa-shell {
	--nx-ctl-ink: var(--nxa-primary-bg);
	--nx-ctl-canvas: var(--nxa-primary-ink);
	--nx-ctl-line: var(--nxa-line-strong);
	--nx-ctl-hover: var(--nxa-hover);
	--nx-ctl-focus: var(--nxa-focus);
	--nx-ctl-critical: var(--nxa-bad);
	--nx-ctl-radius: var(--nxa-radius);
}
.nxa-check input,
.nxa-choice input { margin: 0; flex: none; }
.nxa-check label,
.nxa-choice label { font-weight: 400; color: var(--nxa-text); }
.nxa-group { border: 0; padding: 0; margin-inline: 0; }

/* Buttons. */
.nxa-submit { margin-block: 1.5rem 0 !important; }
.nxa-shell button.nxa-button:not(#nxa-0),
.nxa-shell a.nxa-button:not(#nxa-0) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	min-block-size: 2.75rem;
	padding-block: 0.5rem;
	padding-inline: 1.25rem;
	font: inherit;
	font-weight: 600;
	font-size: 0.9375rem;
	line-height: 1.2;
	text-decoration: none;
	color: var(--nxa-primary-ink);
	background: var(--nxa-primary-bg);
	border: 1px solid var(--nxa-primary-bg);
	border-radius: var(--nxa-radius);
	cursor: pointer;
	transition: background-color var(--nxc-fast, 120ms) ease;
}
.nxa-shell button.nxa-button:not(#nxa-0):hover,
.nxa-shell button.nxa-button:not(#nxa-0):focus,
.nxa-shell a.nxa-button:not(#nxa-0):hover { background: var(--nxa-primary-hover); border-color: var(--nxa-primary-hover); }
.nxa-shell .nxa-button--wide:not(#nxa-0) { inline-size: 100%; }
.nxa-shell button.nxa-button--quiet:not(#nxa-0),
.nxa-shell a.nxa-button--quiet:not(#nxa-0) {
	color: var(--nxa-text);
	background: transparent;
	border-color: var(--nxa-line-strong);
}
.nxa-shell button.nxa-button--quiet:not(#nxa-0):hover,
.nxa-shell button.nxa-button--quiet:not(#nxa-0):focus,
.nxa-shell a.nxa-button--quiet:not(#nxa-0):hover { background: var(--nxa-hover); border-color: var(--nxa-line-strong); }
.nxa-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	margin-block-start: 1.5rem;
}
.nxa-actions .nxa-more { flex-basis: 100%; margin-block: 0; }

/* Lines under the form. */
.nxa-switch {
	margin-block: 1.5rem 0 !important;
	padding-block-start: 1.25rem;
	border-block-start: 1px solid var(--nxa-line);
	color: var(--nxa-muted);
	font-size: 0.9375rem;
}
.nxa-or {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin-block: 1.25rem !important;
	color: var(--nxa-muted);
	font-family: var(--nxa-mono);
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
}
.nxa-or::before,
.nxa-or::after { content: ""; flex: 1; block-size: 1px; background: var(--nxa-line-strong); }
.nxa-more { margin-block-start: 1.25rem; font-size: 0.9375rem; }
.nxa-more summary {
	cursor: pointer;
	color: var(--nxa-text);
	text-decoration-line: underline;
	text-underline-offset: 0.2em;
	min-block-size: 24px;
}
.nxa-more .nxa-form { margin-block-start: 0.875rem; }
.nxa-links { margin-block: 1rem 0; padding-inline-start: 0; list-style: none; }
.nxa-links li { margin-block: 0.375rem; min-block-size: 24px; }

/* Messages and result screens: words say whether it is a problem, never colour alone. */
.nxa-message {
	margin-block: 0 1.25rem;
	padding-block: 0.75rem;
	padding-inline: 1rem;
	border: 1px solid var(--nxa-line-strong);
	border-inline-start: 3px solid var(--nxa-text);
	border-radius: var(--nxa-radius);
	background: var(--nxa-canvas);
	font-size: 0.9375rem;
}
.nxa-message--bad { border-inline-start-color: var(--nxa-bad); }
.nxa-message--good { border-inline-start-color: var(--nxa-good); }
.nxa-message p { margin: 0 !important; }
.nxa-message-kind { font-weight: 700; }
.nxa-message--bad .nxa-message-kind { color: var(--nxa-bad); }
.nxa-message--good .nxa-message-kind { color: var(--nxa-good); }
.nxa-state .nxa-eyebrow::before {
	content: "";
	display: inline-block;
	inline-size: 0.5rem;
	block-size: 0.5rem;
	margin-inline-end: 0.5rem;
	border-radius: 2px; /* square marks (design gate 11) */
	background: var(--nxa-muted);
	vertical-align: 0.1em;
}
.nxa-state--good .nxa-eyebrow::before { background: var(--nxa-good); }
.nxa-state--bad .nxa-eyebrow::before { background: var(--nxa-bad); }
.nxa-ref {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 0.5rem;
	padding: 0.75rem 1rem;
	border: 1px dashed var(--nxa-line-strong);
	border-radius: var(--nxa-radius);
	background: var(--nxa-canvas);
	font-size: 0.875rem;
	color: var(--nxa-muted);
}
.nxa-ref strong {
	font-family: var(--nxa-mono);
	font-size: 0.9375rem;
	color: var(--nxa-text);
	letter-spacing: 0.02em;
}
.nxa-next {
	margin-block: 0;
	padding-inline-start: 1.25rem;
	color: var(--nxa-text);
}
.nxa-next li { margin-block: 0.375rem; }

/* Registration steps. */
.nxa-steps {
	display: flex;
	gap: 0.5rem;
	margin: 0 0 0.75rem;
	padding: 0;
	list-style: none;
	font-size: 0.8125rem;
	color: var(--nxa-muted);
	flex-wrap: wrap;
}
.nxa-steps li { display: flex; align-items: center; gap: 0.375rem; }
.nxa-steps li + li::before { content: "/"; color: var(--nxa-line-strong); margin-inline-end: 0.25rem; }
.nxa-steps li[aria-current="step"] { color: var(--nxa-text); font-weight: 600; }
.nxa-step-n {
	display: inline-grid;
	place-items: center;
	inline-size: 1.375rem;
	block-size: 1.375rem;
	border: 1px solid var(--nxa-line-strong);
	border-radius: 3px; /* square step numbers (design gate 11) */
	font-family: var(--nxa-mono);
	font-size: 0.6875rem;
}
.nxa-steps li[aria-current="step"] .nxa-step-n,
.nxa-steps li.is-done .nxa-step-n {
	background: var(--nxa-primary-bg);
	color: var(--nxa-primary-ink);
	border-color: var(--nxa-primary-bg);
}
.nxa-progress {
	block-size: 2px;
	background: var(--nxa-line-strong);
	margin-block-end: 1.5rem;
	overflow: hidden;
}
.nxa-progress span {
	display: block;
	block-size: 100%;
	background: var(--nxa-text);
	transition: inline-size 200ms ease;
}
.nxa-step {
	border: 0;
	padding: 0;
	margin: 0 0 1.5rem;
	min-inline-size: 0;
}
.nxa-step > legend {
	font-family: var(--nxa-mono);
	font-size: 0.75rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nxa-muted);
	margin-block-end: 1rem;
	padding: 0;
}
.nxa-stepped .nxa-step { margin-block-end: 0; }
.nxa-step-help { margin-block-end: 1rem; }
.nxa-step-nav {
	display: flex;
	justify-content: space-between;
	gap: 0.75rem;
	margin-block-start: 1.5rem;
}
.nxa-step-nav .nxa-button:only-child { margin-inline-start: auto; }
.nxa-stepped .nxa-submit { display: flex; flex-direction: column; gap: 0.75rem; }
.nxa-stepped .nxa-submit .nxa-step-nav { margin-block-start: 0; }
.nxa-stepped .nxa-submit .nxa-step-nav .nxa-button { flex: none; }

/* The account screen. */
.nxa-section {
	margin-block-start: 2rem;
	padding-block-start: 1.5rem;
	border-block-start: 1px solid var(--nxa-line);
}
.nxa-section h3 { margin-block: 0 1rem; font-size: 1.0625rem; font-weight: 600; color: var(--nxa-text); }
.nxa-section .nxa-form + .nxa-form { margin-block-start: 0.75rem; }
.nxa-section .nxa-submit { margin-block-start: 0.75rem !important; }

/* The anti-spam field: never visible. */
.nxa-hp {
	position: absolute !important;
	inset-inline-start: -10000px !important;
	inline-size: 1px;
	block-size: 1px;
	overflow: hidden;
}

@media (prefers-reduced-motion: reduce) {
	.nxa-progress span,
	.nxa-button { transition: none; }
}
@media (forced-colors: active) {
	.nxa-card, .nxa-input, .nxa-button { border: 1px solid CanvasText; }
	.nxa-progress span { background: Highlight; }
}

/* BuddyPress's own register page: its wrapper (narrowed by some themes, e.g. 460px) gives the screen the full width. */
body #buddypress.buddypress-wrap:has(> .nxa-shell) {
	max-inline-size: none;
	inline-size: auto;
	margin-inline: 0;
	padding: 0;
}

/* nx-controls:begin */
.nx-switch, .nx-check, .nx-radio {
  --_ink: var(--nx-ctl-ink, var(--nx-text-primary, CanvasText));
  --_canvas: var(--nx-ctl-canvas, var(--nx-bg-canvas, Canvas));
  --_line: var(--nx-ctl-line, var(--nx-border-hairline-strong, GrayText));
  --_hover: var(--nx-ctl-hover, var(--nx-bg-hover, transparent));
  --_focus: var(--nx-ctl-focus, var(--nx-focus, Highlight));
  --_crit: var(--nx-ctl-critical, var(--nx-critical, CanvasText));
  --_r: var(--nx-ctl-radius, var(--nx-radius-sm, 5px));
  --_rs: var(--nx-ctl-radius-xs, var(--nx-radius-xs, 4px));
  --_fast: var(--nx-ctl-fast, var(--nx-motion-fast, 120ms));
  --_ease: var(--nx-ctl-ease, cubic-bezier(.2, 0, 0, 1));
}

/* ---- checkbox: 18px box, 4px corners, a drawn tick; indeterminate is a bar. */
input[type="checkbox"].nx-check,
input[type="radio"].nx-radio {
  appearance: none;
  -webkit-appearance: none;
  position: relative;
  display: inline-block;
  flex: none;
  box-sizing: border-box;
  inline-size: 18px;
  block-size: 18px;
  min-inline-size: 18px;
  margin: 0;
  padding: 0;
  border: 1px solid var(--_line);
  border-radius: var(--_rs);
  background: transparent;
  box-shadow: none;
  cursor: pointer;
  vertical-align: middle;
  transition: background-color var(--_fast) var(--_ease), border-color var(--_fast) var(--_ease);
}
input[type="checkbox"].nx-check::before {
  content: "";
  position: absolute;
  inset-block-start: 2px;
  inset-inline-start: 5px;
  inline-size: 5px;
  block-size: 9px;
  margin: 0;
  border: solid var(--_canvas);
  border-width: 0 2px 2px 0;
  background: none;
  transform: rotate(45deg) scale(0);
  transition: transform var(--_fast) var(--_ease);
  filter: none;
}
input[type="checkbox"].nx-check:is(:checked, :indeterminate) {
  background: var(--_ink);
  border-color: var(--_ink);
}
input[type="checkbox"].nx-check:checked::before {
  content: "";
  transform: rotate(45deg) scale(1);
}
input[type="checkbox"].nx-check:indeterminate::before {
  content: "";
  inset-block-start: 7px;
  inset-inline-start: 3px;
  inline-size: 10px;
  block-size: 0;
  border-width: 2px 0 0;
  transform: none;
}
/* radio: the one circle in the set (a dot, as in the kit) */
input[type="radio"].nx-radio { border-radius: 50%; }
input[type="radio"].nx-radio::before {
  content: "";
  position: absolute;
  inset: 3px;
  margin: 0;
  inline-size: auto;
  block-size: auto;
  border-radius: 50%;
  background: var(--_canvas);
  transform: scale(0);
  transition: transform var(--_fast) var(--_ease);
  line-height: 0;
}
input[type="radio"].nx-radio:checked { background: var(--_ink); border-color: var(--_ink); }
input[type="radio"].nx-radio:checked::before { content: ""; transform: scale(1); }
input.nx-check:hover:not(:disabled),
input.nx-radio:hover:not(:disabled) { border-color: var(--_ink); }
input.nx-check:focus-visible,
input.nx-radio:focus-visible { outline: 2px solid var(--_focus); outline-offset: 2px; }
input.nx-check:disabled,
input.nx-radio:disabled { opacity: .45; cursor: not-allowed; }
input.nx-check[aria-invalid="true"],
input.nx-radio[aria-invalid="true"] { border-color: var(--_crit); }
/* the labelled row: box, then text; the whole row is the target */
.nx-ctl { display: flex; align-items: flex-start; gap: 10px; min-block-size: 24px; color: var(--nx-ctl-ink, var(--nx-text-primary, CanvasText)); font: inherit; line-height: 1.4; cursor: pointer; }
.nx-ctl > :is(.nx-check, .nx-radio) { margin-block-start: 1px; }
.nx-ctl__hint { display: block; color: var(--nx-ctl-muted, var(--nx-text-muted, GrayText)); font-size: .8125em; }

/* ---- switch: an input[type=checkbox][role=switch] or a button[role=switch][aria-checked]. Off = line track and
   canvas thumb; on = ink track and canvas-coloured thumb; mixed = thumb centred over a half-ink track. */
:is(input, button).nx-switch {
  appearance: none;
  -webkit-appearance: none;
  position: relative;
  display: inline-block;
  flex: none;
  box-sizing: border-box;
  inline-size: 40px;
  min-inline-size: 40px;
  block-size: 24px;
  margin: 0;
  padding: 0;
  border: 1px solid var(--_line);
  border-radius: var(--_r);
  background: var(--_line);
  color: inherit;
  box-shadow: none;
  cursor: pointer;
  vertical-align: middle;
  transition: background-color var(--_fast) var(--_ease), border-color var(--_fast) var(--_ease);
}
:is(input, button).nx-switch::before {
  content: "";
  position: absolute;
  inset-block-start: 2px;
  inset-inline-start: 2px;
  inline-size: 18px;
  block-size: 18px;
  margin: 0;
  border: 0;
  border-radius: 3px;
  background: var(--_canvas);
  box-shadow: 0 1px 2px color-mix(in srgb, var(--_ink) 28%, transparent);
  transform: none;
  filter: none;
  transition: inset-inline-start var(--_fast) var(--_ease), background-color var(--_fast) var(--_ease);
}
/* a 44px-tall target around the 24px track (WCAG 2.5.8) without growing the layout */
:is(input, button).nx-switch::after {
  content: "";
  position: absolute;
  inset: -10px -4px;
}
:is(input, button).nx-switch:is(:checked, [aria-checked="true"]) {
  background: var(--_ink);
  border-color: var(--_ink);
}
:is(input, button).nx-switch:is(:checked, [aria-checked="true"])::before {
  content: "";
  inset-inline-start: calc(100% - 20px);
  background: var(--_canvas);
  transform: none;
}
:is(input, button).nx-switch:is([aria-checked="mixed"], :indeterminate) {
  background: color-mix(in srgb, var(--_ink) 45%, var(--_line));
  border-color: color-mix(in srgb, var(--_ink) 45%, var(--_line));
}
:is(input, button).nx-switch:is([aria-checked="mixed"], :indeterminate)::before { inset-inline-start: calc(50% - 10px); }
:is(input, button).nx-switch:hover:not(:disabled) { border-color: var(--_ink); }
:is(input, button).nx-switch:focus-visible { outline: 2px solid var(--_focus); outline-offset: 2px; }
:is(input, button).nx-switch:is(:disabled, [aria-disabled="true"]) { opacity: .45; cursor: not-allowed; }
:is(input, button).nx-switch[aria-invalid="true"] { border-color: var(--_crit); }
/* compact: 34x20 */
:is(input, button).nx-switch.nx-switch--sm { inline-size: 34px; min-inline-size: 34px; block-size: 20px; }
:is(input, button).nx-switch.nx-switch--sm::before { inline-size: 14px; block-size: 14px; }
:is(input, button).nx-switch.nx-switch--sm:is(:checked, [aria-checked="true"])::before { inset-inline-start: calc(100% - 16px); }
:is(input, button).nx-switch.nx-switch--sm:is([aria-checked="mixed"], :indeterminate)::before { inset-inline-start: calc(50% - 8px); }

@media (prefers-reduced-motion: reduce) {
  .nx-switch, .nx-switch::before, .nx-check, .nx-check::before, .nx-radio, .nx-radio::before { transition: none; }
}
@media (forced-colors: active) {
  :is(input, button).nx-switch { border-color: CanvasText; }
  :is(input, button).nx-switch:is(:checked, [aria-checked="true"]) { background: Highlight; border-color: Highlight; }
  :is(input, button).nx-switch::before { background: ButtonText; }
  input.nx-check:checked,
  input.nx-radio:checked { background: Highlight; border-color: Highlight; }
}
/* nx-controls:end */

/* 1.4.0: full-width registration, the legal links, the checklist, the refusal screen. */
@media (min-width: 56em) {
	/* Registration: a narrow panel beside a wide form; the checklist uses the width in columns. */
	.nxa-shell--register {
		grid-template-columns: minmax(14rem, 22rem) minmax(0, 1fr);
		gap: 3rem;
	}
	.nxa-shell--register > .nxa-card { max-inline-size: none; margin-inline: 0; }
	.nxa-shell--register .nxa-mission { font-size: 1.375rem; }
	.nxa-shell > .nxa-legal { grid-area: legal; }
}
.nxa-shell--register > .nxa-card { max-inline-size: none; }
.nxa-shell--register .nxa-step > :where(.nxa-field, .nxa-check, .nxa-help) { max-inline-size: 44rem; }
.nxa-legal {
	grid-column: 1 / -1;
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.5rem 1.5rem;
	padding-block-start: 1.25rem;
	border-block-start: 1px solid var(--nxa-line-strong);
	font-size: 0.875rem;
	color: var(--nxa-muted);
}
.nxa-legal__title {
	font-family: var(--nxa-mono);
	font-size: 0.75rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.nxa-legal__list {
	display: flex;
	flex-wrap: wrap;
	gap: 0.25rem 1.25rem;
	list-style: none;
	margin: 0;
	padding: 0;
}
.nxa-legal__list li { margin: 0; }
.nxa-legal__credit { margin-inline-start: auto; }
/* wp-login.php keeps its own box; the links sit under it, centred in its column. */
body.login .nxa-legal { max-inline-size: 20rem; margin: 1.5rem auto 0; padding-inline: 0; justify-content: center; border-block-start: 0; }
.nxa-where { margin-block-end: 0.5rem; }
.nxa-checklist { display: grid; gap: 1.25rem; }
@media (min-width: 64em) {
	.nxa-shell--register .nxa-checklist { grid-template-columns: repeat(auto-fit, minmax(22rem, 1fr)); align-items: start; }
}
.nxa-legalset {
	min-inline-size: 0;
	margin: 0;
	padding: 1rem 1.125rem 0.25rem;
	border: 1px solid var(--nxa-line-strong);
	border-radius: var(--nxa-radius);
}
.nxa-legalset > legend {
	padding-inline: 0.5rem;
	font-family: var(--nxa-mono);
	font-size: 0.75rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--nxa-muted);
}
.nxa-legalset--required { border-color: var(--nxa-text); }
.nxa-checklist .nxa-check label { flex: 1 1 0; min-inline-size: 0; }
.nxa-legal-link { white-space: nowrap; }
.nxa-optional { font-size: 0.8125rem; font-weight: 400; color: var(--nxa-muted); }
.nxa-legal-notice { margin-block: 0 0.875rem !important; font-size: 0.9375rem; color: var(--nxa-text); }
.nxa-check input[aria-invalid="true"] { outline: 2px solid var(--nxa-bad); outline-offset: 2px; }
.nxa-appeal { margin-block: 1.5rem; padding-block-start: 1rem; border-block-start: 1px solid var(--nxa-line-strong); max-inline-size: 36rem; }
.nxa-state--bad .nxa-title { color: var(--nxa-text); }

/* 1.5.0: sign-in providers. Rows of quiet buttons with a monochrome mark; never a coloured brand button. */
.nxa-providers { display: grid; gap: 0.5rem; margin-block: 1rem 0; }
@media (min-width: 40em) {
	.nxa-shell--register .nxa-providers { grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); }
}
.nxa-shell a.nxa-provider:not(#nxa-0) {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.625rem;
	min-block-size: 2.75rem;
	padding-block: 0.5rem;
	padding-inline: 1rem;
	font-weight: 600;
	font-size: 0.9375rem;
	line-height: 1.2;
	text-decoration: none;
	color: var(--nxa-text);
	background: var(--nxa-canvas);
	border: 1px solid var(--nxa-line-strong);
	border-radius: var(--nxa-radius);
	transition: background-color var(--nxc-fast, 120ms) ease;
}
.nxa-shell a.nxa-provider:not(#nxa-0):hover { background: var(--nxa-hover); }
.nxa-shell a.nxa-provider:not(#nxa-0):focus-visible { outline: 2px solid var(--nxa-focus); outline-offset: 2px; }
.nxa-provider__mark { flex: none; inline-size: 1.125rem; block-size: 1.125rem; }
.nxa-providers__note { margin-block: 0.5rem 0 !important; }
.nxa-social-banner {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 0.75rem;
	margin-block: 1rem;
	padding-block: 0.875rem;
	padding-inline: 1rem;
	border-inline-start: 2px solid var(--nxa-text);
	background: var(--nxa-elevated);
}
.nxa-social-banner p { margin: 0; flex: 1 1 14rem; }
.nxa-social-banner .nxa-provider__mark { margin-block-start: 0.125rem; }
.nxa-label { display: block; font-weight: 600; color: var(--nxa-text); }
.nxa-readonly { display: block; padding-block: 0.5rem; font-family: var(--nxa-mono); font-size: 0.9375rem; color: var(--nxa-text); overflow-wrap: anywhere; }
.nxa-methods { list-style: none; margin: 0.75rem 0 0; padding: 0; }
.nxa-method {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 0.75rem;
	min-block-size: 3rem;
	padding-block: 0.5rem;
	border-block-end: 1px solid var(--nxa-line);
}
.nxa-method__name { font-weight: 600; }
.nxa-method__state { display: inline-flex; align-items: center; gap: 0.375rem; color: var(--nxa-muted); font-size: 0.875rem; flex: 1 1 12rem; }
.nxa-method form, .nxa-social-banner form { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; margin: 0; }
.nxa-inline { display: flex; gap: 0.5rem; margin: 0 !important; }
.nxa-dot { display: inline-block; inline-size: 0.5rem; block-size: 0.5rem; border-radius: 2px; background: var(--nxa-line-strong); }
.nxa-dot--on { background: var(--nxa-good); }
.nxa-input--inline { inline-size: 12rem; max-inline-size: 100%; min-block-size: 2.75rem; }
.nxa-sr { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
