@import url('https://fonts.googleapis.com/css2?family=Bodoni+Moda:wght@500;600;700&family=IBM+Plex+Mono:wght@400;500&family=Source+Sans+3:wght@400;500;600;700&display=swap');

:root {
  --paper: #F4EEDF;
  --ink: #292B22;
  --olive: #555B3F;
  --ochre: #C4AA70;
  --wash: #E7DFCC;
  --rule: #B7AD96;
  --accent: #A5482D;
  --white: #fffdf6;
  --deep: #35392a;
  --muted: #55564c;
  --shadow: 0 18px 42px rgba(41,43,34,.12);
  --shadow-small: 0 7px 18px rgba(41,43,34,.10);
  --gutter: clamp(1rem, 3vw, 3.5rem);
  --shell: 90rem;
  --measure: 44rem;
  --ledger: 1.5rem;
  --space-1: .375rem;
  --space-2: .625rem;
  --space-3: .875rem;
  --space-4: 1.125rem;
  --space-5: 1.5rem;
  --space-6: 2rem;
  --space-7: 3rem;
  --space-8: 4.5rem;
  --space-9: 6.5rem;
  --space-10: 8rem;
  --display: 'Bodoni Moda', Georgia, serif;
  --body: 'Source Sans 3', Arial, sans-serif;
  --meta: 'IBM Plex Mono', 'Courier New', monospace;
  --text-size: clamp(1rem, .96rem + .18vw, 1.125rem);
  --small-size: .875rem;
  --h1: clamp(2.25rem, 6vw, 6.4rem);
  --h2: clamp(2rem, 4vw, 4.15rem);
  --h3: clamp(1.35rem, 2.2vw, 2.25rem);
  --h4: clamp(1.1rem, 1.4vw, 1.45rem);
  --ease-out: cubic-bezier(.16, 1, .3, 1);
  --ease-in-out: cubic-bezier(.65, 0, .35, 1);
  --ease-linear: linear;
  --duration-fast: 160ms;
  --duration: 300ms;
  --duration-slow: 700ms;
  --focus-ring: 0 0 0 3px var(--paper), 0 0 0 6px var(--accent);
}

*, *::before, *::after { box-sizing: border-box; }
html { min-width: 320px; scroll-behavior: smooth; scroll-padding-block-start: 4.5rem; background: var(--paper); }
body { margin: 0; min-width: 320px; overflow-x: hidden; background: var(--paper); color: var(--ink); font-family: var(--body); font-size: var(--text-size); line-height: 1.55; text-rendering: optimizeLegibility; }
img, svg, video { display: block; max-width: 100%; }
img { height: auto; }
button, input, select, textarea { color: inherit; font: inherit; }
button, a, summary, select, input[type='checkbox'], input[type='radio'] { -webkit-tap-highlight-color: transparent; }
a { color: var(--accent); text-decoration-thickness: .08em; text-underline-offset: .18em; }
a:hover { color: var(--ink); }
button { cursor: pointer; }
fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
address { font-style: normal; }
::selection { background: var(--ochre); color: var(--ink); }
:focus-visible { outline: none; box-shadow: var(--focus-ring); }

h1, h2, h3, h4, h5, h6 { margin: 0; color: var(--ink); font-family: var(--display); font-optical-sizing: auto; font-weight: 600; letter-spacing: -.035em; line-height: .98; text-wrap: balance; }
h1 { font-size: var(--h1); }
h2 { font-size: var(--h2); }
h3 { font-size: var(--h3); }
h4 { font-size: var(--h4); line-height: 1.12; }
p, ul, ol, figure, blockquote { margin: 0; }
p + p { margin-top: 1em; }
ul, ol { padding-left: 1.35em; }
strong { font-weight: 700; }
small { font-size: .875em; }
.prose { max-width: var(--measure); }
.prose p { max-width: 68ch; }
.prose h2, .prose h3 { margin-top: 2.2em; margin-bottom: .65em; }
.prose ul, .prose ol { margin-top: 1em; margin-bottom: 1em; }
.prose li + li { margin-top: .45em; }
.prose blockquote { margin: 2rem 0; padding: 1.25rem 1.5rem; border-left: 3px solid var(--accent); font-family: var(--display); font-size: 1.4em; line-height: 1.25; }

.container { width: min(100% - (var(--gutter) * 2), var(--shell)); margin-inline: auto; }
.narrow { width: min(100% - (var(--gutter) * 2), 54rem); margin-inline: auto; }
.full-bleed { width: 100%; }
.stack > * + * { margin-top: var(--stack-gap, var(--space-5)); }
.cluster { display: flex; flex-wrap: wrap; align-items: center; gap: var(--cluster-gap, var(--space-4)); }
.grid { display: grid; gap: var(--grid-gap, var(--space-6)); }
.split { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(2rem, 6vw, 7rem); align-items: start; }
.rule-top { border-top: 1px solid var(--rule); }
.rule-bottom { border-bottom: 1px solid var(--rule); }
.ledger { background-image: linear-gradient(to bottom, transparent calc(var(--ledger) - 1px), rgba(183,173,150,.32) var(--ledger)); background-size: 100% var(--ledger); }
.meta { color: var(--olive); font-family: var(--meta); font-size: .72rem; letter-spacing: .09em; line-height: 1.5; text-transform: uppercase; }
.meta + h1, .meta + h2, .meta + h3 { margin-top: .8rem; }
.meta:has(+ h1, + h2, + h3), .eyebrow:has(+ h1, + h2, + h3) { display: block; padding-bottom: .8rem; }
.eyebrow { color: var(--accent); font-family: var(--meta); font-size: .72rem; font-weight: 500; letter-spacing: .13em; line-height: 1.4; text-transform: uppercase; }
.label { display: block; color: var(--olive); font-family: var(--meta); font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; }
.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; }
.visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; clip-path: inset(50%) !important; white-space: nowrap !important; }
.skip-link { position: fixed; z-index: 1000; top: .75rem; left: .75rem; padding: .7rem 1rem; transform: translateY(-160%); background: var(--ink); color: var(--paper); font-family: var(--meta); font-size: .8rem; text-decoration: none; transition: transform var(--duration-fast) var(--ease-out); }
.skip-link:focus { transform: translateY(0); }
.icon { width: 1.1em; height: 1.1em; flex: 0 0 auto; fill: currentColor; }

@media (max-width: 767px) {
  .split { grid-template-columns: minmax(0, 1fr); gap: var(--space-7); }
  .container, .narrow { width: min(100% - 2rem, var(--shell)); }
}
@media (min-width: 768px) and (max-width: 1099px) {
  .split { gap: var(--space-6); }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}


:root {
  --content-gutter: clamp(1rem, 4vw, 5.5rem);
  --reading-leading: 1.68;
  --heading-leading: .96;
  --hairline: 1px;
  --control-radius: 0;
  --focus-offset: 3px;
  --z-header: 20;
  --z-overlay: 80;
  --z-dialog: 100;
}

html.js [hidden] { display: none !important; }
main { display: block; min-width: 0; }
section, article, aside, header, footer, nav, form, figure { min-width: 0; }
button, input, textarea, select { border-radius: var(--control-radius); }
button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: not-allowed; opacity: .58; }
hr { height: 1px; margin: var(--space-7) 0; border: 0; background: var(--rule); }

.display-xl { max-width: 12ch; font-size: clamp(2.25rem, 7vw, 7.2rem); line-height: .9; }
.display-lg { max-width: 16ch; font-size: clamp(2rem, 5vw, 5rem); line-height: .92; }
.display-md { max-width: 20ch; font-size: clamp(1.8rem, 3.6vw, 3.8rem); }
.body-lg { font-size: clamp(1.1rem, 1rem + .35vw, 1.35rem); line-height: 1.48; }
.body-sm { font-size: .9rem; line-height: 1.5; }
.mono { font-family: var(--meta); }
.muted { color: var(--muted); }
.olive { color: var(--olive); }
.accent { color: var(--accent); }
.bg-wash { background: var(--wash); }
.bg-olive { background: var(--olive); color: var(--paper); }
.bg-olive h1, .bg-olive h2, .bg-olive h3, .bg-olive h4 { color: var(--paper); }

.pad-section { padding-block: clamp(4rem, 9vw, 8rem); }
.pad-section--compact { padding-block: clamp(2.5rem, 5vw, 4.5rem); }
.pad-inline { padding-inline: var(--gutter); }
.flow-tight > * + * { margin-top: .65rem; }
.flow-loose > * + * { margin-top: 2rem; }
.center-content { display: grid; place-items: center; text-align: center; }
.align-end { align-items: end; }
.justify-between { justify-content: space-between; }
.columns-2 { columns: 2 minmax(0, 1fr); column-gap: clamp(2rem, 5vw, 5rem); column-rule: 1px solid var(--rule); }
.columns-2 > * { break-inside: avoid; }
.measure-wide { max-width: 72rem; }
.measure-readable { max-width: 68ch; }

.ledger-grid { position: relative; background-image: linear-gradient(to right, transparent calc(50% - .5px), rgba(183,173,150,.4) 50%, transparent calc(50% + .5px)), linear-gradient(to bottom, transparent calc(var(--ledger) - 1px), rgba(183,173,150,.28) var(--ledger)); background-size: 100% 100%, 100% var(--ledger); }
.ledger-grid > * { position: relative; }
.ledger-number { color: var(--accent); font-family: var(--meta); font-size: .72rem; letter-spacing: .1em; }
.ruled-list { margin: 0; padding: 0; list-style: none; }
.ruled-list > li { border-bottom: 1px solid var(--rule); }
.rule-inset { border-left: 1px solid var(--rule); padding-left: clamp(1rem, 2.5vw, 2rem); }

.table-wrap { max-width: 100%; overflow-x: auto; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--rule); }
table { width: 100%; min-width: 38rem; border-collapse: collapse; font-size: .94rem; }
th, td { padding: .85rem .75rem; border-bottom: 1px solid var(--rule); text-align: left; vertical-align: top; }
th { color: var(--olive); font-family: var(--meta); font-size: .7rem; font-weight: 500; letter-spacing: .07em; text-transform: uppercase; }
tbody tr:last-child td { border-bottom: 0; }

.screen-reader-heading { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); clip-path: inset(50%); white-space: nowrap; }
[aria-live] { overflow-wrap: anywhere; }

@media (max-width: 767px) {
  .display-xl, .display-lg { max-width: none; }
  .columns-2 { columns: auto; }
  .ledger-grid { background-image: linear-gradient(to bottom, transparent calc(var(--ledger) - 1px), rgba(183,173,150,.28) var(--ledger)); background-size: 100% var(--ledger); }
  .rule-inset { padding-left: 1rem; }
}
@media (min-width: 1600px) {
  :root { --gutter: clamp(3.5rem, 5vw, 7rem); }
}
@media print {
  *, *::before, *::after { background: transparent !important; box-shadow: none !important; color: #000 !important; }
  body { font-size: 11pt; }
  a { text-decoration: none; }
  .site-header, .site-footer, .chat-launcher, .chat-panel, [data-a5c638], .skip-link { display: none !important; }
  .pad-section { padding-block: 1rem; }
}
