/* Vireon Site Core — global typography, layout, links and focus. */

body {
	background-color: var(--vm-ivory);
	color: var(--vm-charcoal);
	font-family: var(--vm-font-sans);
	font-size: var(--vm-body);
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

body,
button,
input,
select,
textarea,
.ast-button,
.ast-custom-button {
	font-family: var(--vm-font-sans);
}

h1, h2, h3, h4,
.entry-content :where(h1, h2, h3, h4),
.site-title,
.site-title a {
	font-family: var(--vm-font-serif);
	font-weight: 500;
	color: var(--vm-forest);
	letter-spacing: -0.005em;
}

h1, .entry-content h1 { font-size: var(--vm-h1); line-height: 1.05; }
h2, .entry-content h2 { font-size: var(--vm-h2); line-height: 1.1; margin-top: var(--vm-s5); margin-bottom: var(--vm-s2); }
h3, .entry-content h3 { font-size: var(--vm-h3); line-height: 1.18; margin-top: var(--vm-s4); margin-bottom: var(--vm-s1); }
h4, .entry-content h4 { font-size: var(--vm-h4); line-height: 1.25; font-weight: 600; }

.entry-title,
.ast-archive-title {
	font-family: var(--vm-font-serif);
	font-weight: 500;
	font-size: var(--vm-h1);
	line-height: 1.05;
	color: var(--vm-forest);
}

.site-title,
.site-title a {
	font-size: clamp(1.25rem, 1.1rem + 0.6vw, 1.625rem);
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

p, li { overflow-wrap: break-word; }

a {
	color: var(--vm-forest);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.18em;
	text-decoration-color: var(--vm-bronze-decorative);
	transition: color var(--vm-motion), text-decoration-color var(--vm-motion);
}
a:hover { color: var(--vm-bronze-text); text-decoration-color: currentColor; }

:focus-visible {
	outline: var(--vm-focus);
	outline-offset: 2px;
}

.entry-content .screen-reader-text:not(:focus) {
	position: absolute !important; /* Accessibility utility; documented exception to the no-!important rule. */
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.screen-reader-text:focus {
	background: var(--vm-white);
	color: var(--vm-forest);
	outline: var(--vm-focus);
}

strong, b { font-weight: 600; }

hr, .wp-block-separator {
	border: 0;
	border-top: var(--vm-rule);
}

/* Reading width for prose inside page content. Sections and wide components opt out. */
.entry-content > :where(p, h2, h3, h4, h5, h6, ul, ol, blockquote, dl, .wp-block-details, .wp-block-image, .wp-block-quote, .vireon-box, .vireon-byline, .vireon-video, .vireon-history, .vireon-sources, .vireon-link-list, .vireon-toc) {
	max-width: var(--vm-read);
	margin-left: auto;
	margin-right: auto;
}
.entry-content > :where(.wp-block-table, .vireon-table, .vireon-wide) {
	max-width: var(--vm-wide);
	margin-left: auto;
	margin-right: auto;
}

.vireon-wrap {
	max-width: var(--vm-max);
	margin-inline: auto;
	padding-inline: var(--vm-gutter);
}

img, video, iframe { max-width: 100%; height: auto; }

::selection { background: var(--vm-sage-300); color: var(--vm-forest-dark); }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}
