/*
 * Global element baseline, layered on top of the design tokens. Kept
 * deliberately small: it sets the document background, default text
 * colour/typography, a token-driven focus ring, and selection colour.
 * Component-scoped styles still own everything else.
 *
 * The focus-ring rule uses :where() so its specificity is zero and any
 * component that defines its own focus treatment wins without !important.
 */

body {
	margin: 0;
	background: var(--color-bg);
	color: var(--color-text);
	font-family: var(--font-sans);
	font-size: var(--text-base);
	line-height: var(--leading-normal);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

:where(*):focus-visible {
	outline: 2px solid var(--color-focus);
	outline-offset: 2px;
}

::selection {
	background: var(--color-accent-subtle);
}

/*
 * Visually-hidden content that stays available to assistive tech. Use
 * for labels/announcements a sighted user gets from layout or icons.
 */
.sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/*
 * Skip link: visually hidden until focused, then slides into the
 * top-left so a keyboard user can jump straight to the main content.
 * Each layout renders one as its first focusable element, targeting a
 * `tabindex="-1"` main region.
 */
.skip-link {
	position: absolute;
	left: var(--space-2);
	top: -4rem;
	z-index: 100;
	padding: var(--space-2) var(--space-3);
	background: var(--color-surface-overlay);
	color: var(--color-text);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-sm);
	transition: top 120ms ease;
}
.skip-link:focus-visible {
	top: var(--space-2);
}
