:root {
	color-scheme: light dark;

	--font-display: 'Iowan Old Style', 'Palatino Linotype', 'Book Antiqua', Palatino, Georgia, serif;
	--font-body: 'Helvetica Neue', Helvetica, Arial, sans-serif;
	--font-prose: Charter, 'Bitstream Charter', 'Sitka Text', Cambria, serif;
	--font-mono: 'SF Mono', 'JetBrains Mono', 'IBM Plex Mono', Menlo, monospace;

	--color-bg: #fff;
	--color-ink: #111;
	--color-ink-2: #262626;
	--color-muted: #555;
	--color-soft: #767676;
	--color-faint: #a3a3a3;
	--color-accent: #7a2e1c;
	--color-border: #e2e0dc;
	--color-code: #f4f3f1;
	--color-code-block: #faf9f7;

	--space-xs: 0.2rem;
	--space-sm: 0.35rem;
	--space-md: 0.75rem;
	--space-lg: 1.15rem;
	--space-xl: 1.75rem;
	--space-2xl: 2.4rem;
	--space-3xl: 3.1rem;
	--space-4xl: 4rem;
	--space-5xl: 5.25rem;

	--measure-page: 52rem;
	--measure-prose: 42rem;
	--gutter-label: 9rem;

	--text-label: 0.74rem;
	--text-sm: 0.88rem;

	--radius-md: 0.6rem;
	--border-subtle: 1px solid var(--color-border);
}

@media (prefers-color-scheme: dark) {
	:root {
		--color-bg: #141413;
		--color-ink: #f1efea;
		--color-ink-2: #dedbd4;
		--color-muted: #b0aca4;
		--color-soft: #8f8b84;
		--color-faint: #6b6862;
		--color-accent: #e08a6d;
		--color-border: #2e2d2a;
		--color-code: #22211f;
		--color-code-block: #1b1b19;
	}
}

* {
	box-sizing: border-box;
}

html {
	scroll-behavior: smooth;
	-webkit-text-size-adjust: 100%;
}

body {
	min-height: 100svh;
	margin: 0;
	font-family: var(--font-body);
	color: var(--color-ink);
	background-color: var(--color-bg);
	-webkit-font-smoothing: antialiased;
}

a {
	color: inherit;
	text-decoration: underline;
	text-decoration-thickness: 0.06em;
	text-underline-offset: 0.15em;
	text-decoration-color: var(--color-faint);
}

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

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

h1,
h2,
h3 {
	margin: 0;
	font-family: var(--font-display);
	font-weight: 600;
	color: var(--color-ink);
}

h1 {
	font-size: clamp(2.4rem, 6vw, 3.4rem);
	line-height: 1;
	letter-spacing: -0.02em;
}

h2 {
	font-size: 1.3rem;
	line-height: 1.2;
}

h3 {
	font-size: 1.12rem;
	line-height: 1.25;
}

p {
	margin: 0;
	line-height: 1.6;
}

ul,
ol {
	margin: 0;
	padding: 0;
	list-style: none;
}

/* Shared building blocks */

.shell {
	width: min(var(--measure-page), calc(100% - 2rem));
	margin: 0 auto;
}

.label {
	font-family: var(--font-mono);
	font-size: var(--text-label);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--color-soft);
}

.meta {
	font-family: var(--font-mono);
	font-size: 0.78rem;
	letter-spacing: 0.02em;
	color: var(--color-soft);
	font-variant-numeric: tabular-nums;
}

/* A labelled section: label in a left gutter on wide screens, stacked on narrow. */
.section {
	display: grid;
	grid-template-columns: var(--gutter-label) minmax(0, 1fr);
	gap: var(--space-xl);
	padding-block: var(--space-2xl);
	border-top: var(--border-subtle);
}

.section > .label {
	padding-top: 0.3rem;
}

.lede {
	font-family: var(--font-prose);
	font-size: 1.16rem;
	line-height: 1.7;
	color: var(--color-ink-2);
}

@media (max-width: 680px) {
	.section {
		grid-template-columns: 1fr;
		gap: var(--space-lg);
	}

	.lede {
		font-size: 1.06rem;
	}
}

@media print {
	:root {
		--color-bg: #fff;
		--color-ink: #000;
		--color-ink-2: #111;
		--color-muted: #333;
		--color-soft: #555;
		--color-accent: #000;
		--color-border: #ccc;
	}

	@page {
		margin: 12mm 14mm;
	}

	html {
		font-size: 12.75px;
	}

	a {
		text-decoration: none;
	}

	.no-print {
		display: none !important;
	}
}

	.site-header.svelte-12qhfyh {
		display: flex;
		align-items: baseline;
		justify-content: space-between;
		gap: var(--space-lg);
		padding-block: var(--space-2xl) var(--space-xl);
	}

	.site-header__name.svelte-12qhfyh {
		font-family: var(--font-display);
		font-size: 1.08rem;
		font-weight: 600;
		text-decoration: none;
	}

	nav.svelte-12qhfyh {
		display: flex;
		gap: var(--space-lg);
	}

	nav.svelte-12qhfyh a:where(.svelte-12qhfyh),
	.site-footer__links.svelte-12qhfyh a:where(.svelte-12qhfyh) {
		font-family: var(--font-mono);
		font-size: 0.8rem;
		letter-spacing: 0.06em;
		text-transform: uppercase;
		text-decoration: none;
		color: var(--color-muted);
	}

	nav.svelte-12qhfyh a[aria-current='page']:where(.svelte-12qhfyh) {
		color: var(--color-ink);
		text-decoration: underline;
		text-decoration-color: var(--color-accent);
		text-underline-offset: 0.35em;
	}

	nav.svelte-12qhfyh a:where(.svelte-12qhfyh):hover,
	.site-footer__links.svelte-12qhfyh a:where(.svelte-12qhfyh):hover {
		color: var(--color-accent);
	}

	main.svelte-12qhfyh {
		min-height: 70svh;
	}

	.site-footer.svelte-12qhfyh {
		display: flex;
		flex-wrap: wrap;
		align-items: baseline;
		justify-content: space-between;
		gap: var(--space-md) var(--space-xl);
		margin-top: var(--space-4xl);
		padding-block: var(--space-xl) var(--space-3xl);
		border-top: var(--border-subtle);
	}

	.site-footer__links.svelte-12qhfyh {
		display: flex;
		flex-wrap: wrap;
		gap: var(--space-sm) var(--space-lg);
	}
