/* Shared by both pages; index.css and article.css load after it. */

/* Self-hosted, variable across 400–700 for the h1 ripple. Only the latin
   subsets are vendored; latin-ext is fetched only if an accent turns up. */
@font-face {
	font-family: "Geist";
	font-style: normal;
	font-weight: 400 700;
	font-display: swap;
	src: url("/fonts/geist-latin.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: "Geist";
	font-style: normal;
	font-weight: 400 700;
	font-display: swap;
	src: url("/fonts/geist-latin-ext.woff2") format("woff2");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

:root {
	color-scheme: light dark;
	--ease-out: cubic-bezier(0.215, 0.61, 0.355, 1);
	--bg: light-dark(oklch(96.4% 0.004 91.4), oklch(15.4% 0.002 106.6));
	--fg: light-dark(oklch(18.6% 0.008 95.5), oklch(92.5% 0.008 91.5));
	--muted: light-dark(oklch(54% 0.012 89.8), oklch(58% 0.011 93.7));
	--rule: light-dark(oklch(90.9% 0.010 93.6), oklch(23.4% 0.004 106.7));
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html { font-size: 14px; -webkit-font-smoothing: antialiased; }
/* Each page sets its own `padding`; the rest of the box is the same on both. */
body {
	background: var(--bg);
	color: var(--fg);
	font-family: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
	font-size: 1.223rem;
	letter-spacing: normal;
	line-height: 1.7;
	text-wrap: pretty;
	max-width: 48rem;
	margin-inline: auto;
}

a {
	color: inherit;
	text-decoration: none;
	border-bottom: 1px solid var(--rule);
	transition: border-color .2s ease, color .2s ease;
}
a:hover { border-color: var(--fg); }

@keyframes rise {
	from { opacity: 0; transform: translateY(6px); }
	to   { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: .01ms !important;
		animation-delay: 0ms !important;
		transition-duration: .01ms !important;
	}
}
