/*
 * Base: fonts, reset, typography, links, focus, accessibility utilities.
 * Bodoni Moda is only ever set at 48px and above (see the .display rule).
 */

/* Self-hosted variable fonts. Place the .woff2 files in assets/fonts/.
   If absent, the stack falls back to system serif / sans gracefully. */
@font-face {
	font-family: "Archivo";
	src: url("../fonts/archivo-variable.woff2") format("woff2");
	font-weight: 100 900;
	font-stretch: 62% 125%;
	font-style: normal;
	font-display: swap;
}

@font-face {
	font-family: "Bodoni Moda";
	src: url("../fonts/bodoni-moda-variable.woff2") format("woff2");
	font-weight: 400 900;
	font-style: normal;
	font-display: swap;
}

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

html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	/* Keep anchored targets (skip link, #contact-form) clear of the sticky header. */
	scroll-padding-top: 5rem;
}

body {
	margin: 0;
	background-color: var(--jet-900);
	color: var(--silver-100);
	font-family: var(--font-body);
	font-size: var(--step-0);
	line-height: 1.6;
	font-weight: 400;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

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

/* Body copy measure. */
p,
li,
dd,
blockquote {
	max-width: var(--measure);
}

p {
	margin: 0 0 var(--space-4);
}

a {
	color: var(--silver-100);
	text-decoration: none;
}

/* Inline content links: silver text, burgundy underline that thickens on hover.
   The text colour never becomes burgundy. */
.entry-content a,
.prose a {
	border-bottom: 1px solid var(--burgundy-300);
	transition: border-color var(--dur-fast) var(--ease), border-width var(--dur-fast) var(--ease);
}

.entry-content a:hover,
.entry-content a:focus,
.prose a:hover,
.prose a:focus {
	border-bottom-width: 2px;
	border-bottom-color: var(--burgundy-400);
}

/* Headings. Below 48px everything is Archivo. */
h1, h2, h3, h4, h5, h6 {
	font-family: var(--font-body);
	font-weight: 600;
	line-height: 1.3;
	margin: 0 0 var(--space-4);
	color: var(--silver-100);
}

/* The single Didone display treatment. Only applied at >= 48px contexts. */
.display {
	font-family: var(--font-display);
	font-weight: 500;
	line-height: 1.05;
	letter-spacing: -0.01em;
}

/* Utility treatment: eyebrows, credits, meta. The connective tissue. */
.eyebrow,
.utility {
	font-family: var(--font-body);
	font-size: var(--step--2);
	text-transform: uppercase;
	letter-spacing: 0.14em;
	color: var(--silver-500);
	font-weight: 500;
	margin: 0;
}

.lead {
	font-size: var(--step-1);
	line-height: 1.4;
	color: var(--silver-100);
}

.meta {
	font-size: var(--step--1);
	color: var(--silver-500);
}

/* Section hairline: the one permitted metallic gesture. */
.hairline {
	border: 0;
	height: 1px;
	background: linear-gradient(90deg, var(--silver-700), transparent);
	margin: var(--space-8) 0;
}

/* Focus ring: never removed without replacement. */
:focus-visible {
	outline: 2px solid var(--burgundy-300);
	outline-offset: 2px;
}

/* Skip link. */
.skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 1000;
	background: var(--jet-800);
	color: var(--silver-100);
	padding: var(--space-3) var(--space-4);
	border: 1px solid var(--silver-700);
}

.skip-link:focus {
	left: var(--space-4);
	top: var(--space-4);
}

/* Screen-reader-only text. */
.screen-reader-text {
	border: 0;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	width: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	word-wrap: normal !important;
}

.screen-reader-text:focus {
	background-color: var(--jet-800);
	clip: auto !important;
	clip-path: none;
	color: var(--silver-100);
	display: block;
	height: auto;
	left: var(--space-4);
	padding: var(--space-3);
	top: var(--space-4);
	width: auto;
	z-index: 100000;
}

/* Minimum interactive target. */
a,
button,
input,
select,
textarea,
summary {
	min-height: 24px;
}

/* Reduced motion: disable every transition, animation, and smooth scroll. */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
		scroll-behavior: auto !important;
	}
}
