/*
 * Foundry surfaces of the Nexus layer (inc/nexus-foundry-surfaces.php; THEMES_ON_FOUNDRY.md).
 * Tokens only (nexus-assets/css/nexus-tokens.css, the Foundry UI/UX kit): no colour literal, so light and dark both
 * come from the kit. Logical properties only (RTL). Motion only behind prefers-reduced-motion: no-preference.
 */
.nx-fd {
	margin-block: 2rem;
	color: var(--nx-text-secondary);
	font-family: var(--nx-font-sans, inherit);
}
.nx-fd-head { margin-block-end: 1rem; }
.nx-fd-eyebrow {
	margin: 0 0 .25rem;
	font-family: var(--nx-font-mono, monospace);
	font-size: .6875rem;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--nx-text-muted);
}
.nx-fd-title { margin: 0; color: var(--nx-text-primary); font-size: 1.375rem; line-height: 1.3; }
.nx-fd-intro { margin: .5rem 0 0; max-inline-size: 65ch; }
.nx-fd-meta { color: var(--nx-text-muted); font-size: .8125rem; }
.nx-fd-mono, .nx-fd code { font-family: var(--nx-font-mono, monospace); font-size: .75rem; }
.nx-fd code { color: var(--nx-text-primary); unicode-bidi: isolate; }
.nx-fd-wrap { overflow-wrap: anywhere; }
.nx-fd-select { user-select: all; }

/* lists of items: feed, editions */
.nx-fd-feed { list-style: none; margin: 0; padding: 0; border-block-start: 1px solid var(--nx-border-hairline); }
.nx-fd-item { padding-block: .875rem; border-block-end: 1px solid var(--nx-border-hairline); }
.nx-fd-item article > * { margin-block: 0 .25rem; }
.nx-fd-item-title { font-size: 1rem; line-height: 1.4; color: var(--nx-text-primary); }
.nx-fd-item-title a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .2em; }
.nx-fd-summary { max-inline-size: 70ch; }
.nx-fd-family { color: var(--nx-text-secondary); }

/* cards and facts */
.nx-fd-card {
	padding: 1rem 1.125rem;
	border: 1px solid var(--nx-border-hairline);
	border-radius: var(--nx-radius-md, 5px);
	background: var(--nx-bg-surface);
}
.nx-fd-card > :last-child { margin-block-end: 0; }
.nx-fd-card-title { margin: 0 0 .75rem; font-size: 1rem; font-weight: 600; color: var(--nx-text-primary); }
.nx-fd-card-title:focus { outline: 2px solid var(--nx-focus); outline-offset: 2px; }
.nx-fd-facts { display: grid; gap: .5rem; margin: 0 0 .75rem; }
.nx-fd-facts > div { display: grid; grid-template-columns: minmax(8rem, 12rem) 1fr; gap: .75rem; align-items: baseline; }
.nx-fd-facts dt { color: var(--nx-text-muted); font-size: .8125rem; }
.nx-fd-facts dd { margin: 0; min-inline-size: 0; }
@media (max-width: 34rem) { .nx-fd-facts > div { grid-template-columns: 1fr; gap: .125rem; } }

/* states: dot plus words (UI kit principle 3), banners and empty state (section 6.6) */
.nx-fd-state { display: inline-flex; align-items: center; gap: .4rem; color: var(--nx-text-primary); }
.nx-fd-dot { inline-size: 6px; block-size: 6px; border-radius: 50%; background: var(--nx-text-muted); flex: none; }
.nx-fd-state[data-tone="positive"] .nx-fd-dot { background: var(--nx-positive); }
.nx-fd-state[data-tone="caution"] .nx-fd-dot { background: var(--nx-caution); }
.nx-fd-state[data-tone="critical"] .nx-fd-dot { background: var(--nx-critical); }
.nx-fd-state[data-tone="info"] .nx-fd-dot { background: var(--nx-info); }
.nx-fd-banner {
	margin-block: .75rem;
	padding: .75rem 1rem;
	border: 1px solid var(--nx-border-hairline);
	border-inline-start: 3px solid var(--nx-text-muted);
	border-radius: var(--nx-radius-md, 5px);
	background: var(--nx-bg-elevated);
	color: var(--nx-text-primary);
}
.nx-fd-banner[data-tone="caution"] { border-inline-start-color: var(--nx-caution); }
.nx-fd-banner[data-tone="critical"] { border-inline-start-color: var(--nx-critical); }
.nx-fd-banner[data-tone="info"] { border-inline-start-color: var(--nx-info); }
.nx-fd-banner p { margin: 0 0 .375rem; }
.nx-fd-banner > :last-child { margin-block-end: 0; }
.nx-fd-empty { padding-block: 1.5rem; text-align: center; }
.nx-fd-empty p { margin: 0 auto .375rem; max-inline-size: 50ch; }

/* controls: 5px, 24px minimum targets (WCAG 2.2 2.5.8), visible focus */
.nx-fd-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-block-size: 2.25rem;
	min-inline-size: 1.5rem;
	padding: .375rem .875rem;
	border: 1px solid var(--nx-primary-bg);
	border-radius: var(--nx-radius-md, 5px);
	background: var(--nx-primary-bg);
	color: var(--nx-primary-ink);
	font: inherit;
	font-size: .875rem;
	font-weight: 500;
	text-decoration: none;
	cursor: pointer;
}
.nx-fd-btn:hover { background: var(--nx-primary-hover); }
.nx-fd-btn--secondary, .nx-fd-btn--icon {
	border-color: var(--nx-border-hairline-strong);
	background: transparent;
	color: var(--nx-text-primary);
}
.nx-fd-btn--secondary:hover, .nx-fd-btn--icon:hover { background: var(--nx-bg-hover); }
.nx-fd-btn--icon { min-block-size: 1.5rem; padding: .125rem .5rem; font-size: .75rem; }
.nx-fd-btn:focus-visible, .nx-fd a:focus-visible, .nx-fd input:focus-visible, .nx-fd textarea:focus-visible, .nx-fd summary:focus-visible {
	outline: 2px solid var(--nx-focus);
	outline-offset: 2px;
}
.nx-fd-btn[hidden], .nx-fd [hidden] { display: none; }

/* forms */
.nx-fd-form { display: grid; gap: .375rem; margin-block-end: 1rem; max-inline-size: 48rem; }
.nx-fd-form label { color: var(--nx-text-primary); font-weight: 500; }
.nx-fd-form p { margin: 0; }
.nx-fd-row { display: flex; flex-wrap: wrap; gap: .5rem; }
.nx-fd-row input { flex: 1 1 16rem; min-inline-size: 0; }
.nx-fd input[type="text"], .nx-fd textarea {
	padding: .5rem .625rem;
	border: 1px solid var(--nx-border-hairline-strong);
	border-radius: var(--nx-radius-md, 5px);
	background: var(--nx-bg-canvas);
	color: var(--nx-text-primary);
	font-family: var(--nx-font-mono, monospace);
	font-size: .8125rem;
}
.nx-fd textarea { inline-size: 100%; resize: vertical; }

/* tables */
.nx-fd-table { inline-size: 100%; border-collapse: collapse; margin-block-end: .75rem; font-size: .875rem; }
.nx-fd-table th, .nx-fd-table td { padding-block: .5rem; padding-inline: 0 .5rem; border-block-end: 1px solid var(--nx-border-hairline); text-align: start; vertical-align: top; }
.nx-fd-table thead th { color: var(--nx-text-muted); font-weight: 500; font-size: .75rem; }

/* steps of a contribution */
.nx-fd-steps { margin: 0 0 1rem; padding-inline-start: 1.25rem; max-inline-size: 60ch; }
.nx-fd-steps li { margin-block-end: .25rem; }

/* figures */
.nx-fd-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr)); }
.nx-fd-figure {
	margin: 0;
	padding: 1rem;
	border: 1px solid var(--nx-border-hairline);
	border-radius: var(--nx-radius-md, 5px);
	background: var(--nx-bg-surface);
}
.nx-fd-figure-label { margin: 0 0 .25rem; color: var(--nx-text-primary); font-weight: 500; }
.nx-fd-value { margin: 0 0 .5rem; color: var(--nx-text-primary); font-family: var(--nx-font-mono, monospace); font-size: 1.75rem; line-height: 1.2; font-variant-numeric: tabular-nums; }
.nx-fd-value--none { font-family: inherit; font-size: 1rem; color: var(--nx-text-muted); }
.nx-fd-unit { font-size: .875rem; color: var(--nx-text-muted); }

/* live bar, corrections, map */
.nx-fd-live-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem; margin-block-start: .75rem; }
.nx-fd-live-bar p { margin: 0; }
.nx-fd-corrections summary { cursor: pointer; color: var(--nx-text-primary); font-size: .875rem; }
.nx-fd-map { margin: 0; }
.nx-fd-map figcaption { margin-block-start: .5rem; }

/* a streamed item is marked briefly, only when motion is welcome */
@media (prefers-reduced-motion: no-preference) {
	.nx-fd-item--new { animation: nx-fd-arrive 1.2s var(--nx-ease-standard, ease-out) 1; }
	@keyframes nx-fd-arrive { from { background: var(--nx-accent-soft); } to { background: transparent; } }
}
@media print {
	.nx-fd-live-bar, .nx-fd-btn, .nx-fd-form { display: none; }
}
