


:root {
	/* Authoritative palette tokens */
	--ground:#fff;
	--surface:#f0f0f0;
	--surface-2:#dedede;
	--line:#bababa;
	--ink-soft:#4d4d4d;
	--ink:#292929;
	--accent:#3a5a8c;
	--accent-ink:#fff;


	--color-bg:var(--ground);
	--color-surface:var(--surface);
	--color-surface-hover:var(--surface-2);
	--color-border:var(--line);
	--color-text:var(--ink);
	--color-text-muted:var(--ink-soft);
	--color-primary:var(--accent);
	--color-primary-ink:var(--accent-ink);


	/* Typography families */
	--maho-d80:"Cinzel", 'Cinzel Fallback', Georgia, 'Times New Roman', serif;
	--maho-6f3:'Bitter', 'Bitter Fallback', 'Rockwell', 'Georgia', serif;
	--maho-57e:'JetBrains Mono', 'JetBrains Mono Fallback', "SF Mono", Consolas, Menlo, monospace;


	/* Type scale using clamp() — minimum fits 320px phone viewport */
	--step--2:clamp(0.70rem, 0.68rem + 0.10vw, 0.78rem);
	--step--1:clamp(0.84rem, 0.81rem + 0.16vw, 0.94rem);
	--maho-76c:clamp(1.00rem, 0.96rem + 0.22vw, 1.125rem);
	--maho-6d0:clamp(1.18rem, 1.12rem + 0.38vw, 1.38rem);
	--maho-9df:clamp(1.42rem, 1.32rem + 0.62vw, 1.72rem);
	--maho-4a0:clamp(1.70rem, 1.54rem + 0.98vw, 2.18rem);
	--maho-d31:clamp(2.04rem, 1.80rem + 1.48vw, 2.76rem);
	--maho-3a6:clamp(2.44rem, 2.10rem + 2.12vw, 3.50rem);
	--maho-ec2:clamp(2.88rem, 2.42rem + 2.92vw, 4.40rem);


	/* Spacing rhythm — mathematical progression */
	--space-3xs:clamp(0.25rem, 0.23rem + 0.08vw, 0.31rem);
	--space-2xs:clamp(0.50rem, 0.47rem + 0.15vw, 0.625rem);
	--space-xs:clamp(0.75rem, 0.70rem + 0.25vw, 0.94rem);

	--space-s:clamp(1.00rem, 0.94rem + 0.31vw, 1.25rem);
	--space-m:clamp(1.50rem, 1.41rem + 0.47vw, 1.875rem);
	--space-l:clamp(2.00rem, 1.88rem + 0.62vw, 2.50rem);
	--space-xl:clamp(3.00rem, 2.81rem + 0.94vw, 3.75rem);
	--space-2xl:clamp(4.00rem, 3.75rem + 1.25vw, 5.00rem);
	--space-3xl:clamp(5.50rem, 5.10rem + 2.00vw, 7.00rem);


	/* Layout measures */
	--measure-narrow:48ch;
	--measure-prose:65ch;
	--measure-wide:84ch;
	--container-max:1220px;
	--container-gutter:clamp(1.0rem, 0.8rem + 1.2vw, 2.5rem);


	/* Geometry & Borders */
	--radius-xs:2px;
	--radius-sm:4px;
	--radius-md:6px;
	--border-thin:1px solid var(--line);
	--border-focus:2px solid var(--accent);


	--dur-instant:120ms;
	--dur-fast:180ms;
	--dur-mid:280ms;
	--dur-slow:440ms;
	--ease-editorial:cubic-bezier(0.16, 1, 0.3, 1);
	--ease-in-out:cubic-bezier(0.65, 0, 0.35, 1);


	/* Structural offsets */
	--header-height-desk:96px;
	--header-height-mobile:60px;
	--dock-height:64px;
}



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


html {
	-webkit-text-size-adjust:100%;
	tab-size:4;
	scroll-behavior:smooth;
	background-color:var(--ground);
	color:var(--ink);
}


body {
	font-family:var(--maho-6f3);
	font-size:var(--maho-76c);
	line-height:1.68;
	color:var(--ink);
	background-color:var(--ground);
	text-rendering:optimizeLegibility;
	-webkit-font-smoothing:antialiased;
	-moz-osx-font-smoothing:grayscale;
	min-height:100vh;
	display:flex;
	flex-direction:column;
}


@media (max-width: 959px) {
	body { padding-bottom:calc(var(--dock-height) + env(safe-area-inset-bottom, 0px)); }
}


button,
input,
optgroup,
select,
textarea {
	font:inherit;
	color:inherit;
	letter-spacing:inherit;
}


/* Replaced media elements */
img,
picture,
video,
canvas,
svg {
	display:block;
	max-width:100%;
}


img {
	height:auto;
	font-style:italic;
	background-repeat:no-repeat;
	background-size:cover;
	shape-margin:1rem;
}


table {
	border-collapse:collapse;
	border-spacing:0;
}


a {
	color:inherit;
	text-decoration:underline;
	text-underline-offset:3px;
	text-decoration-thickness:1px;
	transition:color var(--dur-instant) var(--ease-editorial),
							text-decoration-color var(--dur-instant) var(--ease-editorial);
}


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


@media (pointer: coarse) {
	a[href^='tel:'],
	a[href^='mailto:'] {
		min-height:44px;
		display:inline-flex;
		align-items:center;
		margin-inline:0.4ch;
	}
}



h1,
h2,
h3,
h4,
h5,
h6 {
	font-family:var(--maho-d80);
	font-weight:600;
	color:var(--ink);
	line-height:1.2;
	text-wrap:balance;
	letter-spacing:0.02em;
}


h1 {
	font-size:var(--maho-3a6);
	line-height:1.12;
	letter-spacing:0.03em;
}


h2 {
	font-size:var(--maho-4a0);
	line-height:1.18;
}


h3 {
	font-size:var(--maho-9df);
	line-height:1.25;
}


h4 {
	font-size:var(--maho-6d0);
	line-height:1.30;
}


h5 {
	font-size:var(--maho-76c);
	font-weight:700;
}


h6 {
	font-size:var(--step--1);
	font-weight:700;
	text-transform:uppercase;
	letter-spacing:0.06em;
}


p {
	max-width:var(--measure-prose);
	color:var(--ink);
}


p + p { margin-top:var(--space-s); }


.lede,
.standfirst {
	font-size:var(--maho-6d0);
	line-height:1.55;
	color:var(--ink);
	max-width:var(--measure-prose);
}


small {
	font-size:var(--step--1);
	color:var(--ink-soft);
}


strong,
b {
	font-weight:700;
	color:var(--ink);
}


em,
i { font-style:italic; }


code,
kbd,
samp,
pre {
	font-family:var(--maho-57e);

	font-size:var(--step--1);
}


code {
	background-color:var(--surface);
	padding:0.15em 0.35em;
	border-radius:var(--radius-xs);
	border:1px solid var(--line);
}


pre {
	background-color:var(--surface);
	border:1px solid var(--line);
	padding:var(--space-s);
	overflow-x:auto;
	border-radius:var(--radius-sm);
}


pre code {
	background:none;
	border:none;
	padding:0;
}


.tabular-nums {
	font-variant-numeric:tabular-nums;
	font-feature-settings:'tnum' 1;
}



.editorial-article {
	width:100%;
	margin-inline:auto;
}


.editorial-measure {
	max-width:var(--measure-prose);
	margin-inline:auto;

}


.editorial-wide {
	max-width:var(--measure-wide);
	margin-inline:auto;
}


.editorial-full { width:100%; }


.editorial-inline-subhead {
	font-family:var(--maho-d80);
	font-size:var(--maho-9df);
	line-height:1.25;
	color:var(--ink);
	margin-top:var(--space-xl);
	margin-bottom:var(--space-xs);
	display:block;
}


.editorial-rule {
	border:0;
	border-top:1px solid var(--line);
	margin-block:var(--space-xl);
	width:100%;
}


/* Pull quote */
.pullquote {
	font-family:var(--maho-d80);
	font-size:var(--maho-9df);
	line-height:1.35;
	color:var(--ink);
	margin-block:var(--space-xl);
	padding-left:var(--space-m);
	border-left:2px solid var(--accent);
	max-width:var(--measure-prose);
}


.pullquote cite {
	display:block;
	font-family:var(--maho-6f3);
	font-size:var(--step--1);
	font-style:normal;
	color:var(--ink-soft);
	margin-top:var(--space-xs);
	letter-spacing:0.02em;
}


/* Full measure photo figure with caption */
.editorial-figure {
	margin-block:var(--space-xl);
	width:100%;
}


.editorial-figure img {
	width:100%;
	height:auto;
	border:1px solid var(--line);
}


.editorial-caption {
	font-size:var(--step--1);
	line-height:1.45;
	color:var(--ink-soft);
	margin-top:var(--space-2xs);
	padding-left:2px;
}


.fact-inset {
	border:1px solid var(--line);
	background-color:var(--surface);
	padding:var(--space-m);
	margin-block:var(--space-l);
	border-radius:var(--radius-xs);
	max-width:var(--measure-prose);
}


.fact-inset__heading {
	font-family:var(--maho-d80);
	font-size:var(--maho-6d0);
	color:var(--ink);
	margin-bottom:var(--space-2xs);
	border-bottom:1px solid var(--line);
	padding-bottom:var(--space-3xs);
}


.fact-inset__content {
	font-size:var(--step--1);
	line-height:1.55;
	color:var(--ink);
}



.container {
	width:100%;
	max-width:var(--container-max);
	margin-inline:auto;
	padding-inline:var(--container-gutter);
}


.container-narrow {
	width:100%;
	max-width:820px;
	margin-inline:auto;
	padding-inline:var(--container-gutter);
}


.flow > * + * { margin-top:var(--space-m); }


.flow-loose > * + * { margin-top:var(--space-xl); }


.flow-tight > * + * { margin-top:var(--space-s); }


.site-main {
	flex:1 0 auto;
	width:100%;
}


.skip-link {
	position:absolute;
	top:-120px;
	left:var(--space-s);
	background:var(--accent);
	color:var(--accent-ink);
	padding:var(--space-xs) var(--space-s);
	z-index:9999;
	text-decoration:none;
	font-weight:600;
	font-size:var(--step--1);
	border-radius:var(--radius-xs);
	transition:top var(--dur-instant) var(--ease-editorial);
}


.skip-link:focus-visible {
	top:var(--space-s);
	outline:3px solid var(--ink);
	outline-offset:2px;
}


/* Screen reader utility */
.visually-hidden,
.sr-only {
	position:absolute;
	width:1px;
	height:1px;
	padding:0;
	margin:-1px;
	overflow:hidden;
	clip:rect(0, 0, 0, 0);
	white-space:nowrap;
	border:0;
}



@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration:0.01ms !important;
		animation-iteration-count:1 !important;
		transition-duration:0.01ms !important;
		scroll-behavior:auto !important;
	}
}
