/* ==========================================================================
   utilities.css — sr-only, tabular-nums, print. No reveal animations.
   ========================================================================== */

/* HTML [hidden] must win over component display rules (e.g. .row-item grid).
   Without this, JS that sets element.hidden = true has no visible effect. */
[hidden] {
	display: none !important;
}

/* Screen-reader only */
.sr-only {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.visually-hidden {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
}

/* Tabular numerals — for all mono stats where alignment matters */
.tabular-nums {
	font-variant-numeric: tabular-nums;
}

/* Text helpers */
.text-accent { color: var(--c-accent); }
.text-moss   { color: var(--c-accent-sec); }
.text-dim    { color: var(--c-text-dim); }
.text-white  { color: var(--c-white); }

.uppercase      { text-transform: uppercase; letter-spacing: 1px; }
.italic         { font-style: italic; }
.font-heading   { font-family: var(--f-heading); }
.font-body      { font-family: var(--f-body); }
.font-mono      { font-family: var(--f-mono); }

.nowrap { white-space: nowrap; }

/* --- Print --- */
@media print {
	body {
		background: #fff;
		color: #111;
	}
	.header,
	.footer,
	.header__mobile,
	#Cookiebot,
	#CybotCookiebotDialog,
	.grecaptcha-badge,
	.no-print {
		display: none !important;
	}
	a {
		color: #111;
		text-decoration: underline;
	}
	h1, h2, h3 {
		color: #111;
	}
	.section {
		padding: 1em 0;
	}
	.row-item {
		break-inside: avoid;
		page-break-inside: avoid;
	}
	main {
		padding-top: 0;
	}
}

/* --- Reduced motion --- */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0ms !important;
		animation-delay: 0ms !important;
		transition-duration: 0ms !important;
		transition-delay: 0ms !important;
		scroll-behavior: auto !important;
	}
}
