@layer reset, theme, typography, layout, components, utilities;
/** CSS reset **/
@layer reset {
	/* simpler sizing */
	*, *::before, *::after {
		box-sizing: border-box;
	}

	/* remove default margin */
	* {
		margin: 0;
	}

	/* enable keyword animations */
	@media (prefers-reduced-motion: no-preference) {
		html {
			interpolate-size: allow-keywords;
		}
	}

	/* color mode user-agent styles */
	html {
		color-scheme: light;
	}

	body {
		/* min body height */
		min-height: 100svh;
		/* default to system fonts */
		font-family: system-ui, sans-serif;
		/* improve text rendering & line-sizing */
		-webkit-font-smoothing: antialiased;
		text-rendering: optimizeSpeed;
		line-height: 1.5;
		hanging-punctuation: first last;
	}

	/* improve media controls */
	img, svg, video, canvas, audio, iframe, embed, object {
		/* responsive embeds, maintain aspect ratios */
		display: block;
		max-width: 100%;
		vertical-align: middle;
		shape-margin: 1rem;
	}
	img, svg, video, canvas {
		height: auto;
	}
	audio:not([controls]) { display: none; }
	audio { width: 100%; }
	picture { display: contents; }
	source { display: none; }

	/* spacing & fallback tweaks*/
	img, picture, video {
		font-style: italic;
		text-align: center;
		background-repeat: no-repeat;
		background-size: cover;
	}

	/* inherit fonts for form controls */
	input, button, textarea, select {
		font: inherit;
	}

	/* legacy browser cleanup */
	img { border-style: none; }
	svg { overflow: hidden; }
	article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section {
		display: block;
	}
	[type='checkbox'], [type='radio'] {
		box-sizing: border-box;
		padding: 0;
	}

	/* cleaner type layouts */
	h1, h2, h3, h4, h5, h6 {
		text-wrap: balance;
		/* avoid text overflows */
		overflow-wrap: break-word;
		line-height: initial;
	}
	p {
		text-wrap: pretty;
	}

	/* switch to em units for headings */
	h1 { font-size: 2em; }
	h2 { font-size: 1.5em; }
	h3 { font-size: 1.17em; }
	h4 { font-size: 1.00em; }
	h5 { font-size: 0.83em; }
	h6 { font-size: 0.67em; }

	/* keep h1 margins consistent, even when nested */
	h1 {
		margin: 0.67em 0;
	}

	/* don't overflow <pre>s by default */
	pre { white-space: pre-wrap; }

	/* <a> elements that don't have a class get default styles */
	a:not([class]) {
		text-decoration-skip-ink: auto;
	}

	/* uniform baseline horizontal rule */
	hr {
		border-style: solid;
		border-width: 1px 0 0;
		color: inherit;
		height: 0;
		overflow: visible;
	}

	/* table improvements */
	table {
		border-collapse: collapse;
	}

	th, td {
		border: 1px solid;
		vertical-align: baseline;
	}

	th, caption {
		text-align: start;
	}

	thead th {
		vertical-align: bottom;
	}

	th, td, caption {
		padding: 0.25rem 0.75rem;
	}


	/* animate & pad same-page navigation */
	@media (prefers-reduced-motion: no-preference) {
		html {
			scroll-behavior: smooth;
		}
		:has(:target) {
			scroll-padding-top: 3rem;
		}
	}

	/* ignore children for <a> & <button> event listeners */
	:is(a, button) * {
		pointer-events: none;
	}

	/* maintain 'hidden' behaviour when overriding 'display' values */
	[hidden] {
		display: none;
	}

	/* remove list styles on ul & ol elements with a 'list' role, which suggests default styling will be removed */
	ul[role='list'],
	ol[role='list'] {
		list-style: none;
	}
}
@media print {
	html {
		font-size: 8pt;
	}

	*,
	*::before,
	*::after,
	*:first-letter,
	p:first-line,
	div:first-line,
	blockquote:first-line,
	li:first-line {
		background: transparent !important;
		color: #000 !important;
		box-shadow: none !important;
		text-shadow: none !important;
		font-size: revert;
		overflow: revert;
	}

	body {
		display: block;
	}

	body > *:not(main),
	#page-content:has(> .article-content) > *:not(.article-content),
	.article-content .article-other {
		display: none;
	}

	a,
	a:visited {
		text-decoration: underline;
		color: #000;
	}

	abbr[title]::after {
		content: ' (' attr(title) ')';
	}

	a[href]:not([href^="#"], [href^="javascript:"])::after {
		content: ' (' attr(href) ')';
	}

	pre {
		white-space: pre-wrap !important;
	}

	pre,
	blockquote {
		border: 1px solid #999;
		page-break-inside: avoid;
	}

	tr,
	img {
		page-break-inside: avoid;
	}

	p,
	h2,
	h3,
	h4 {
		orphans: 3;
		widows: 3;
	}

	h2,
	h3,
	h4 {
		page-break-after: avoid;
	}
}