
:root {
	--ink:#1c1a17;
	--ink-soft:#3b3732;

	--stone:#5a544b;
	--rule:#d4cab8;
	--oat:#ebe3d3;
	--paper:#f7f3eb;
	--clay:#a9502b;

	--clay-deep:#8a3f20;
	--clay-wash:#f1e2d6;
	--oat-deep:#e2d8c4;
	--paper-bright:#fbf8f2;
	--ink-raised:#26231f;
	--ink-line:#4a453e;
	--on-ink:#f2ece0;
	--on-ink-soft:#b9b0a1;
	--ink-a06:rgba(28, 26, 23, 0.06);
	--ink-a10:rgba(28, 26, 23, 0.1);
	--ink-a16:rgba(28, 26, 23, 0.16);
	--ink-a60:rgba(28, 26, 23, 0.6);
	--success:#3f5a37;
	--danger:#9b2f1f;
	--danger-wash:#f6e4dd;

	--fubi-1a0:'Zilla Slab', 'Rockwell', 'Roboto Slab', Georgia, serif;
	--fubi-c3f:"Alegreya Sans", "Gill Sans", 'Trebuchet MS', sans-serif;
	--fubi-fa4:"IBM Plex Mono", 'SFMono-Regular', Menlo, Consolas, monospace;

	--step--2:clamp(0.75rem, 0.73rem + 0.08vw, 0.8125rem);
	--step--1:clamp(0.875rem, 0.85rem + 0.12vw, 0.9375rem);
	--fubi-da6:clamp(1.0625rem, 1.03rem + 0.18vw, 1.1875rem);
	--fubi-480:clamp(1.1875rem, 1.12rem + 0.35vw, 1.4375rem);
	--fubi-c06:clamp(1.375rem, 1.24rem + 0.65vw, 1.8125rem);
	--fubi-6e8:clamp(1.625rem, 1.38rem + 1.15vw, 2.4375rem);
	--fubi-03f:clamp(1.875rem, 1.48rem + 1.9vw, 3.25rem);
	--fubi-12e:clamp(2rem, 1.45rem + 2.9vw, 4.375rem);
	--fubi-87d:clamp(2.125rem, 1.3rem + 4.2vw, 5.75rem);
	--numeral:clamp(4.5rem, 1.6rem + 14vw, 16rem);
	--numeral-sm:clamp(3rem, 1.8rem + 6vw, 7rem);

	--lh-tight:1.04;
	--lh-snug:1.18;
	--lh-body:1.6;
	--track-display:-0.01em;
	--track-tight:-0.022em;
	--track-mono:0.02em;
	--track-caps:0.12em;
	--measure:66ch;
	--measure-narrow:44ch;

	--unit:0.5rem;
	--space-3xs:0.25rem;
	--space-2xs:0.5rem;
	--space-xs:0.75rem;
	--space-s:1rem;
	--space-m:1.5rem;
	--space-l:2rem;
	--space-xl:3rem;
	--space-2xl:4.5rem;
	--space-3xl:6.5rem;
	--section-gap:clamp(4rem, 9vw, 8.5rem);
	--gutter:clamp(1rem, 4vw, 3rem);
	--shell-max:1240px;
	--shell-wide:1480px;
	--shell-narrow:760px;

	--header-h:4.75rem;

	--radius:14px;
	--radius-s:10px;
	--radius-pill:999px;
	--hairline:1px solid var(--rule);
	--hairline-ink:1px solid var(--ink);

	--shadow-press:0 1px 0 var(--ink-a16);
	--shadow-lift:0 2px 0 var(--ink-a10), 0 10px 24px -14px rgba(28, 26, 23, 0.35);
	--shadow-doc:0 1px 0 rgba(28, 26, 23, 0.05), 0 2px 4px rgba(28, 26, 23, 0.04), 0 24px 48px -28px rgba(28, 26, 23, 0.32);
	--shadow-float:0 18px 40px -18px rgba(28, 26, 23, 0.45), 0 2px 6px rgba(28, 26, 23, 0.12);
	--focus-ring:0 0 0 3px var(--paper), 0 0 0 5px var(--clay);

	--dur-instant:90ms;
	--dur-fast:140ms;
	--dur-base:180ms;
	--dur-slow:320ms;
	--dur-reveal:640ms;
	--dur-scene:1100ms;
	--ease-out:cubic-bezier(0.2, 0.7, 0.1, 1);
	--ease-in-out:cubic-bezier(0.65, 0, 0.35, 1);
	--ease-draw:cubic-bezier(0.77, 0, 0.18, 1);
	--ease-press:cubic-bezier(0.3, 0, 0.2, 1);
	--ease-settle:cubic-bezier(0.16, 1, 0.3, 1);

	--z-base:1;
	--z-sticky:20;
	--z-header:40;
	--z-nav:45;
	--z-chat:60;
	--z-consent:70;
	--z-skip:100;

	color-scheme:light;
}

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

html {
	-webkit-text-size-adjust:100%;
	text-size-adjust:100%;
	scroll-padding-top:calc(var(--header-h) + 1rem);
	hanging-punctuation:first allow-end last;
}

@media (prefers-reduced-motion: no-preference) {
	html { scroll-behavior:smooth; }
}

body {
	margin:0;
	min-height:100vh;
	min-height:100dvh;
	background-color:var(--paper);
	background-image:radial-gradient(120% 80% at 50% 0%, var(--paper-bright) 0%, var(--paper) 55%, #f3eee4 100%);
	background-attachment:fixed;
	color:var(--ink);
	font-family:var(--fubi-c3f);
	font-size:var(--fubi-da6);
	font-weight:400;
	line-height:var(--lh-body);
	font-kerning:normal;
	font-variant-ligatures:common-ligatures;
	text-rendering:optimizeLegibility;
	-webkit-font-smoothing:antialiased;
	-moz-osx-font-smoothing:grayscale;
	overflow-x:hidden;
	overflow-x:clip;
}

h1,
h2,
h3,
h4,
h5,
h6,
p,
figure,
blockquote,
dl,
dd,
ol,
ul { margin:0; }

ol,
ul { padding:0; }

ul[role="list"],
ol[role="list"] { list-style:none; }

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

img {
	height:auto;
	font-style:italic;
	background-color:var(--oat);
}

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

button {
	cursor:pointer;
	background:none;
	border:0;
	padding:0;
}

button:disabled { cursor:not-allowed; }

textarea { resize:vertical; }

table {
	border-collapse:collapse;
	width:100%;
}

hr {
	border:0;
	border-top:var(--hairline);
	margin:var(--space-xl) 0;
}

[hidden] { display:none !important; }

address { font-style:normal; }

::selection {
	background:var(--ink);
	color:var(--paper);
}

:focus { outline:none; }

:focus-visible {
	outline:2px solid var(--clay);
	outline-offset:3px;
	border-radius:3px;
}

h1,
h2,
h3,
h4 {
	font-family:var(--fubi-1a0);
	font-weight:600;
	letter-spacing:var(--track-display);
	line-height:var(--lh-snug);
	font-variant-numeric:lining-nums;
	text-wrap:balance;
	overflow-wrap:break-word;
	color:var(--ink);
}

h1 {
	font-size:var(--fubi-12e);
	line-height:var(--lh-tight);

	letter-spacing:var(--track-tight);
	font-weight:700;
}

h2 {
	font-size:var(--fubi-03f);
	line-height:1.08;
}

h3 { font-size:var(--fubi-c06); }

h4 {
	font-size:var(--fubi-480);
	font-weight:600;
}

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

a {
	color:inherit;
	text-decoration-line:underline;
	text-decoration-thickness:1px;
	text-underline-offset:0.2em;
	text-decoration-color:var(--rule);
	transition:color var(--dur-fast) var(--ease-out), text-decoration-color var(--dur-fast) var(--ease-out);
}

a:hover { text-decoration-color:var(--clay); }

a:active { color:var(--clay-deep); }

strong,
b { font-weight:700; }

em,
i { font-style:italic; }

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

code,
kbd,
samp,
pre {
	font-family:var(--fubi-fa4);
	font-size:0.9em;
}

pre {
	overflow-x:auto;
	max-width:100%;
	padding:var(--space-s);
	background:var(--oat);
	border-radius:var(--radius-s);
}

abbr[title] {
	text-decoration:underline dotted;
	cursor:help;
}

.display-xl {
	font-family:var(--fubi-1a0);
	font-size:var(--fubi-87d);
	font-weight:700;
	line-height:1;
	letter-spacing:var(--track-tight);
}

.display-l {
	font-family:var(--fubi-1a0);
	font-size:var(--fubi-12e);
	font-weight:700;
	line-height:var(--lh-tight);
	letter-spacing:var(--track-tight);
}

.lede {
	font-size:var(--fubi-480);
	line-height:1.5;
	color:var(--ink-soft);
	max-width:52ch;
}

.eyebrow {
	display:inline-flex;
	align-items:center;
	gap:var(--space-2xs);
	font-family:var(--fubi-fa4);
	font-size:var(--step--2);
	font-weight:500;
	letter-spacing:var(--track-caps);
	text-transform:uppercase;
	color:var(--stone);
}

.eyebrow::before {
	content:"";
	width:1.5rem;
	height:1px;
	background:currentColor;
	flex:none;
}

.mono,
.meta {
	font-family:var(--fubi-fa4);
	font-size:var(--step--1);
	letter-spacing:var(--track-mono);
	font-variant-numeric:tabular-nums;
	color:var(--stone);
}

.muted { color:var(--stone); }

.accent { color:var(--clay); }

.numerals-lining { font-variant-numeric:lining-nums tabular-nums; }

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

.prose > * + * { margin-top:1.05em; }

.prose h2 {
	font-size:var(--fubi-6e8);
	margin-top:2.2em;
}

.prose h3 {
	font-size:var(--fubi-c06);
	margin-top:1.9em;
}

.prose h4 { margin-top:1.6em; }

.prose h2 + *,
.prose h3 + *,
.prose h4 + * { margin-top:0.6em; }

.prose ul,
.prose ol { padding-left:1.3em; }

.prose li + li { margin-top:0.4em; }

.prose ul li::marker { color:var(--clay); }

.prose ol li::marker {
	font-family:var(--fubi-fa4);
	font-size:0.85em;
	color:var(--stone);
}

.prose a {
	text-decoration-color:var(--clay);
	text-decoration-thickness:1px;
}

.prose a:hover { text-decoration-thickness:2px; }

.prose blockquote {
	border-left:2px solid var(--clay);
	padding:0.2em 0 0.2em 1.1em;
	font-family:var(--fubi-1a0);
	font-size:var(--fubi-480);
	font-weight:500;
	line-height:1.4;
}

.prose .fire40b,
.fire40b {
	max-width:100%;
	overflow-x:auto;
	-webkit-overflow-scrolling:touch;
}

.shell {
	width:100%;
	max-width:calc(var(--shell-max) + var(--gutter) * 2);
	margin-inline:auto;
	padding-inline:var(--gutter);
}

.shell--wide { max-width:calc(var(--shell-wide) + var(--gutter) * 2); }

.shell--narrow { max-width:calc(var(--shell-narrow) + var(--gutter) * 2); }

.section {
	padding-block:var(--section-gap);
	position:relative;
	overflow-x:clip;
}

.section--tight { padding-block:calc(var(--section-gap) * 0.6); }

.section--oat { background:var(--oat); }

.section--ink {
	background:var(--ink);
	color:var(--on-ink);
}

.section--ink h2,
.section--ink h3 { color:var(--on-ink); }

.section + .section--rule { border-top:var(--hairline); }

.stack {
	display:flex;
	flex-direction:column;
	gap:var(--stack-gap, var(--space-m));
}

.stack > * { min-width:0; }

.stack--s { --stack-gap:var(--space-xs); }

.stack--l { --stack-gap:var(--space-xl); }

.cluster {
	display:flex;
	flex-wrap:wrap;
	align-items:center;
	gap:var(--cluster-gap, var(--space-xs));
}

.cluster > * { min-width:0; }

.grid {
	display:grid;
	gap:var(--grid-gap, var(--space-l));
	grid-template-columns:repeat(auto-fit, minmax(min(100%, var(--grid-min, 16rem)), 1fr));
}

.grid > * { min-width:0; }

.split {
	display:grid;
	gap:var(--split-gap, clamp(2rem, 5vw, 5rem));
	grid-template-columns:minmax(0, 1fr);
	align-items:start;
}

.split > * { min-width:0; }

@media (min-width: 900px) {
	.split { grid-template-columns:minmax(0, 5fr) minmax(0, 7fr); }

	.split--even { grid-template-columns:minmax(0, 1fr) minmax(0, 1fr); }

	.split--wide-left { grid-template-columns:minmax(0, 7fr) minmax(0, 5fr); }
}

.measure { max-width:var(--measure); }

.measure-narrow { max-width:var(--measure-narrow); }

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

.skip-link {
	position:fixed;
	top:0.75rem;
	left:0.75rem;
	z-index:var(--z-skip);
	display:inline-flex;
	align-items:center;
	min-height:44px;
	padding:0.6rem 1.1rem;
	background:var(--ink);
	color:var(--paper);
	font-family:var(--fubi-fa4);
	font-size:var(--step--1);
	border-radius:var(--radius-pill);
	text-decoration:none;
	transform:translateY(-180%);
	transition:transform var(--dur-base) var(--ease-out);
}

.skip-link:focus,
.skip-link:focus-visible {
	transform:translateY(0);
	outline:2px solid var(--clay);
	outline-offset:3px;
}

.icon {
	width:1.25em;
	height:1.25em;
	flex:none;
	fill:none;
	stroke:currentColor;
	vertical-align:middle;
}

.icon--s {
	width:1em;
	height:1em;
}

.icon--l {
	width:1.75em;
	height:1.75em;
}

.rule {
	height:1px;
	background:var(--rule);
	border:0;
	margin:0;
}

.rule--ink { background:var(--ink); }

.flow > * + * { margin-top:var(--flow, 1em); }

.text-center { text-align:center; }

.no-js-only { display:initial; }

html.js .no-js-only { display:none; }

@media (prefers-reduced-motion: reduce) {
	:root {
		--dur-instant:0ms;
		--dur-fast:0ms;
		--dur-base:0ms;
		--dur-slow:0ms;
		--dur-reveal:0ms;
		--dur-scene:0ms;
	}

	html { scroll-behavior:auto; }

	*,
	*::before,
	*::after {
		animation-duration:0.01ms !important;
		animation-iteration-count:1 !important;
		transition-duration:0.01ms !important;
		scroll-behavior:auto !important;
	}
}

@media print {
	body { background:#fff; }

	.site-header,
	.consent,
	.chat-launcher,
	.chat-panel { display:none !important; }
}
