/* ============================================================================
   base.css — reset + base typography (specs.md §4.0, §4.2)
   ========================================================================= */

@layer reset {

	*,
	*::before,
	*::after {
		box-sizing: border-box;
	}

	html {
		-webkit-text-size-adjust: 100%;
		text-size-adjust: 100%;
		tab-size: 4;
		scroll-behavior: smooth;
		scroll-padding-block-start: var(--space-5);
	}

	@media (prefers-reduced-motion: reduce) {
		html {
			scroll-behavior: auto;
		}
	}

	body,
	h1, h2, h3, h4, h5, h6,
	p,
	figure,
	blockquote,
	dl, dd {
		margin: 0;
	}

	ul[role="list"],
	ol[role="list"] {
		list-style: none;
		padding: 0;
		margin: 0;
	}

	img,
	picture,
	video,
	canvas,
	svg {
		display: block;
		max-width: 100%;
	}

	img,
	video {
		height: auto;
	}

	input,
	button,
	textarea,
	select {
		font: inherit;
		color: inherit;
	}

	button {
		background: none;
		border: 0;
		cursor: pointer;
	}

	a {
		color: inherit;
		text-decoration-thickness: 1px;
		text-decoration-color: var(--color-border-strong);
		text-underline-offset: 3px;
	}

	a:hover {
		text-decoration-color: var(--color-text);
	}

	@media (prefers-reduced-motion: reduce) {

		*,
		*::before,
		*::after {
			animation-duration: 0.01ms !important;
			animation-iteration-count: 1 !important;
			transition-duration: 0.01ms !important;
			scroll-behavior: auto !important;
		}
	}
}

@layer base {

	html {
		font-size: 100%;
		line-height: var(--lh-normal);
		scroll-padding-block-start: var(--space-7);
	}

	body {
		font-family: var(--font-sans);
		font-size: var(--fs-base);
		font-weight: var(--fw-regular);
		color: var(--color-text);
		background: var(--color-bg);
		text-rendering: optimizeLegibility;
		-webkit-font-smoothing: antialiased;
		-moz-osx-font-smoothing: grayscale;
	}

	h1, h2, h3, h4, h5, h6 {
		font-family: var(--font-display);
		font-weight: var(--fw-semibold);
		line-height: var(--lh-tight);
		color: var(--color-text);
		text-wrap: balance;
	}

	h1 {
		font-size: clamp(28px, 4vw, 44px);
		font-weight: var(--fw-bold);
		letter-spacing: var(--tracking-tight);
		line-height: var(--lh-tight);
	}

	h2 {
		font-size: clamp(var(--fs-xl), 1.5vw + 0.5rem, var(--fs-2xl));
		letter-spacing: var(--tracking-snug);
		font-weight: var(--fw-bold);
	}

	h3 {
		font-size: clamp(var(--fs-md), 1vw + 0.5rem, var(--fs-xl));
		letter-spacing: var(--tracking-normal);
	}

	h4 {
		font-size: var(--fs-lg);
	}

	h5 {
		font-size: var(--fs-md);
	}

	h6 {
		font-size: var(--fs-base);
	}

	p {
		line-height: var(--lh-normal);
		text-wrap: pretty;
	}

	p + p {
		margin-block-start: var(--space-4);
	}

	a {
		color: var(--color-brand);
		transition: color var(--transition-fast);
	}

	a:hover,
	a:focus-visible {
		color: var(--color-brand-hover);
	}

	a:focus-visible,
	button:focus-visible,
	input:focus-visible,
	textarea:focus-visible,
	select:focus-visible,
	[tabindex]:focus-visible {
		outline: 2px solid var(--color-brand);
		outline-offset: 2px;
		border-radius: var(--radius-sm);
	}

	::selection {
		background: var(--color-brand);
		color: #fff;
	}

	hr {
		border: 0;
		border-block-start: 1px solid var(--color-border);
		margin-block: var(--space-7);
	}

	small {
		font-size: var(--fs-sm);
		color: var(--color-text-muted);
	}

	strong,
	b {
		font-weight: var(--fw-semibold);
	}

	code,
	pre,
	kbd,
	samp {
		font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
		font-size: 0.9em;
	}

	blockquote {
		border-inline-start: 3px solid var(--color-border-strong);
		padding-inline-start: var(--space-5);
		color: var(--color-text-muted);
		font-style: italic;
	}

	/* Skip-to-content link — always present, only visible on focus. */
	.b9ab66def {
		position: absolute;
		inset-inline-start: var(--space-4);
		inset-block-start: -100px;
		background: var(--color-brand);
		color: #fff;
		padding: var(--space-3) var(--space-5);
		border-radius: var(--radius-md);
		z-index: var(--z-modal);
		transition: inset-block-start var(--transition-base);
	}

	.b9ab66def:focus-visible {
		inset-block-start: var(--space-3);
	}
}
