
  --renu-9e0:"IBM Plex Mono", "Courier New", monospace;
  --renu-17d:"IBM Plex Mono", "Courier New", monospace;

  --fs-2xs:clamp(0.6875rem, 0.65rem + 0.15vw, 0.75rem);
  --fs-xs:clamp(0.75rem, 0.72rem + 0.18vw, 0.8125rem);
  --fs-sm:clamp(0.8125rem, 0.78rem + 0.2vw, 0.875rem);
  --fs-base:clamp(0.875rem, 0.84rem + 0.22vw, 0.9375rem);
  --fs-md:clamp(1rem, 0.95rem + 0.3vw, 1.125rem);
  --fs-lg:clamp(1.15rem, 1.05rem + 0.5vw, 1.35rem);
  --fs-xl:clamp(1.35rem, 1.2rem + 0.8vw, 1.75rem);
  --fs-2xl:clamp(1.65rem, 1.45rem + 1.2vw, 2.25rem);
  --fs-3xl:clamp(2rem, 1.7rem + 1.8vw, 3rem);
  --fs-hero:clamp(2.25rem, 1.9rem + 2.5vw, 4.25rem);

  --lh-tight:1.12;
  --lh-heading:1.2;
  --lh-snug:1.35;
  --lh-body:1.68;
  --lh-loose:1.85;

  --measure-narrow:48ch;
  --measure-body:62ch;
  --measure-wide:74ch;

  --space-3xs:clamp(0.25rem, 0.2rem + 0.15vw, 0.375rem);
  --space-2xs:clamp(0.375rem, 0.3rem + 0.2vw, 0.5rem);
  --space-xs:clamp(0.5rem, 0.45rem + 0.25vw, 0.75rem);
  --space-sm:clamp(0.75rem, 0.65rem + 0.4vw, 1rem);
  --space-md:clamp(1rem, 0.85rem + 0.6vw, 1.5rem);
  --space-lg:clamp(1.5rem, 1.25rem + 1vw, 2.25rem);
  --space-xl:clamp(2rem, 1.6rem + 1.5vw, 3.25rem);
  --space-2xl:clamp(2.75rem, 2.2rem + 2vw, 4.5rem);
  --space-3xl:clamp(3.5rem, 2.8rem + 3vw, 6.5rem);

  --container-max:1280px;
  --container-pad:clamp(1rem, 3.5vw, 2.5rem);
  --column-gap:clamp(1.25rem, 2.5vw, 2rem);

  --radius-xs:2px;
  --radius-sm:3px;
  --radius-md:4px;
  --radius-lg:6px;

  --border-fine:1px solid var(--border);
  --border-medium:1px solid var(--border-strong);
  --border-rule:2px solid var(--ink);

  --shadow-subtle:0 1px 3px rgba(32, 27, 26, 0.05);
  --shadow-card:0 4px 14px rgba(32, 27, 26, 0.07);
  --shadow-float:0 12px 32px rgba(32, 27, 26, 0.12);

  --dur-fast:140ms;
  --dur-base:220ms;
  --dur-slow:380ms;

  --ease-standard:cubic-bezier(0.2, 0, 0.2, 1);
  --ease-out:cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out:cubic-bezier(0.4, 0, 0.2, 1);
  --ease-editorial:cubic-bezier(0.25, 1, 0.5, 1);
}

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

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

body {
  background-color:var(--ground);
  color:var(--ink);
  font-family:var(--renu-9e0);
  font-size:var(--fs-base);
  line-height:var(--lh-body);
  letter-spacing:-0.01em;

  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  min-height:100vh;
  display:flex;
  flex-direction:column;
}

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

  background:none;
  border:none;
  cursor:pointer;
  text-align:left;
}

ul, ol {
  list-style:none;
}

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

h1, h2, h3, h4, h5, h6 {
  font-family:var(--renu-0be);
  font-weight:700;
  line-height:var(--lh-heading);
  color:var(--ink);
  text-wrap:balance;
  overflow-wrap:break-word;
  letter-spacing:-0.015em;
}

h1 {
  font-size:var(--fs-hero);
  line-height:var(--lh-tight);
  font-weight:800;
  letter-spacing:-0.025em;
}

h2 {
  font-size:var(--fs-3xl);
  line-height:var(--lh-tight);
}

h3 {
  font-size:var(--fs-2xl);
}

h4 {
  font-size:var(--fs-xl);
}

h5 {
  font-size:var(--fs-lg);
}

h6 {
  font-size:var(--fs-md);
}

p {
  max-width:var(--measure-body);
  margin-bottom:var(--space-sm);
  color:var(--ink-muted);
}

p:last-child {
  margin-bottom:0;
}

p.lead {
  font-size:var(--fs-md);
  line-height:var(--lh-snug);
  color:var(--ink);
  max-width:var(--measure-wide);
}

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

em, i {
  font-style:italic;
}

small {
  font-size:var(--fs-xs);
  line-height:var(--lh-snug);
}

blockquote {
  border-left:3px solid var(--clay);
  padding-left:var(--space-md);
  margin:var(--space-md) 0;
  font-family:var(--renu-0be);
  font-size:var(--fs-lg);
  font-style:italic;
  line-height:var(--lh-snug);
  color:var(--ink);
}

code, kbd, samp {
  font-family:var(--renu-17d);
  font-size:0.9em;
  background-color:var(--surface-dim);
  padding:0.15em 0.4em;
  border-radius:var(--radius-xs);
  color:var(--ink);
}

pre {
  font-family:var(--renu-17d);
  font-size:var(--fs-xs);
  background-color:var(--ink);
  color:var(--surface);
  padding:var(--space-md);
  border-radius:var(--radius-sm);
  overflow-x:auto;
  line-height:1.5;
}

hr {
  border:none;
  border-top:var(--border-fine);
  margin:var(--space-lg) 0;
}

.container {
  width:100%;
  max-width:var(--container-max);
  margin-left:auto;
  margin-right:auto;
  padding-left:var(--container-pad);
  padding-right:var(--container-pad);
}

.container-narrow {
  width:100%;
  max-width:860px;
  margin-left:auto;
  margin-right:auto;
  padding-left:var(--container-pad);
  padding-right:var(--container-pad);
}

.container-reading {
  width:100%;
  max-width:var(--measure-wide);
  margin-left:auto;
  margin-right:auto;
  padding-left:var(--container-pad);
  padding-right:var(--container-pad);
}

.container-fluid {
  width:100%;
  padding-left:var(--container-pad);
  padding-right:var(--container-pad);
}

.split-held-scroll {
  display:grid;
  grid-template-columns:1fr;

  gap:var(--space-lg);
  position:relative;
  align-items:start;
}

@media (min-width: 860px) {
  .split-held-scroll {

    grid-template-columns:minmax(280px, 1fr) minmax(340px, 1.45fr);
    gap:var(--column-gap);
  }

  .split-held-scroll.reverse {
    grid-template-columns:minmax(340px, 1.45fr) minmax(280px, 1fr);
  }

  .split-held-header {
    position:sticky;
    top:calc(5rem + var(--space-md));
    align-self:start;
    padding-bottom:var(--space-xl);
  }
}

.split-held-header {
  min-width:0;
}

.split-held-header h2,
.split-held-header h3 {
  margin-bottom:var(--space-xs);
}

.split-held-header .standfirst {
  font-size:var(--fs-md);
  line-height:var(--lh-snug);
  color:var(--ink-muted);
  max-width:var(--measure-narrow);
  margin-bottom:var(--space-md);
}

.split-scroll-body {
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:var(--space-md);
}

.modular-grid {
  display:grid;
  grid-template-columns:1fr;
  gap:var(--column-gap);
}

@media (min-width: 640px) {
  .modular-grid.cols-2 {
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 900px) {
  .modular-grid.cols-3 {
    grid-template-columns:repeat(3, minmax(0, 1fr));
  }

  .modular-grid.cols-4 {
    grid-template-columns:repeat(4, minmax(0, 1fr));
  }

  .modular-grid.magazine-lead {
    grid-template-columns:minmax(0, 1.6fr) minmax(0, 1fr);
  }

  .modular-grid.magazine-rail {
    grid-template-columns:minmax(0, 1.4fr) minmax(0, 0.9fr) minmax(0, 0.7fr);
  }
}

.flex {
  display:flex;
}

.flex-col {
  display:flex;
  flex-direction:column;
}

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

.items-start {
  align-items:flex-start;
}

.justify-between {
  justify-content:space-between;
}

.justify-center {
  justify-content:center;
}

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

.gap-sm {
  gap:var(--space-sm);
}

.gap-md {
  gap:var(--space-md);
}

.gap-lg {
  gap:var(--space-lg);
}

.icon {
  width:1.15em;
  height:1.15em;
  display:inline-block;
  vertical-align:-0.18em;
  fill:currentColor;
  flex-shrink:0;
}

.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;
}

.skip-link {
  position:absolute;
  top:var(--space-xs);
  left:var(--space-xs);
  background-color:var(--ink);
  color:var(--surface-raised);
  padding:var(--space-xs) var(--space-md);
  font-family:var(--renu-17d);
  font-size:var(--fs-xs);
  font-weight:600;
  border-radius:var(--radius-xs);
  z-index:9999;
  transform:translateY(-160%);
  transition:transform var(--dur-fast) var(--ease-out);
}

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

main {
  flex:1 0 auto;
}

@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;
  }
}
