/* utilities.css — small helpers. */

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

.hc-measure { max-width: 68ch; }
.hc-measure-narrow { max-width: 52ch; }

.hc-center { text-align: center; }
.hc-right  { text-align: right; }

.hc-mt-0  { margin-top: 0; }
.hc-mt-s  { margin-top: var(--space-item); }
.hc-mt-m  { margin-top: var(--space-block); }
.hc-mt-l  { margin-top: var(--space-section); }
.hc-mb-0  { margin-bottom: 0; }
.hc-mb-s  { margin-bottom: var(--space-item); }
.hc-mb-m  { margin-bottom: var(--space-block); }
.hc-mb-l  { margin-bottom: var(--space-section); }

.hc-mono-text { font-family: var(--f-mono); font-size: var(--f-mono); letter-spacing: 0; }
.hc-stone { color: var(--c-stone); }
.hc-ink-muted { color: var(--c-ink-muted); }

.hc-skip-link {
	position: absolute;
	top: -40px;
	left: 8px;
	padding: 8px 12px;
	background: var(--c-ink);
	color: var(--c-paper);
	font-family: var(--f-body);
	font-weight: 500;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	font-size: .75rem;
	border-radius: var(--r-sm);
	z-index: 2000;
	transition: top .15s ease;
}
.hc-skip-link:focus { top: 8px; }

/* Reveal animation (only opacity — rules.md C10) */
[data-hc-reveal] { opacity: 0; transition: opacity .5s ease; }
[data-hc-reveal].is-visible { opacity: 1; }

/* Sport kicker colour variants (kept stone-only for discipline) */
.hc-sport-tag {
	font-family: var(--f-body);
	font-size: var(--f-caption);
	color: var(--c-stone);
	text-transform: uppercase;
	letter-spacing: 0.12em;
}
