:root {
  color-scheme: light;

  --color-bg: #f8f7f3;
  --color-text: #1f2423;
  --color-muted: #69706d;
  --color-rule: #d9d5cc;
  --color-accent: #6f3f2b;
  --color-quote: #343231;

  --content-width: 920px;
  --page-padding-x: 28px;
  --page-padding-top: 72px;
  --page-padding-bottom: 88px;
  --header-margin-bottom: 48px;
  --header-padding-bottom: 28px;
  --title-font-size-min: 2.1rem;
  --title-font-size-fluid: 7vw;
  --title-font-size-max: 4.4rem;
  --subtitle-font-size: 0.78rem;
  --subtitle-margin-top: 18px;
  --subtitle-letter-spacing: 0.08em;
  --article-font-size-min: 1rem;
  --article-font-size-fluid: 1.45vw;
  --article-font-size-max: 1.16rem;
  --body-line-height: 1.72;
  --paragraph-margin-bottom: 1.25em;
  --list-margin-y: 2rem;
  --list-line-height: 1.9;
  --quote-margin-y: 2.4rem;
  --quote-border-width: 3px;
  --quote-padding-left: 1.25rem;
  --quote-font-scale: 1.18em;
  --closing-margin-top: 2.4rem;
  --index-list-margin-top: 2.5rem;
  --index-list-gap: 1.35rem;
  --index-link-font-size: 1.12em;
  --index-description-margin-top: 0.25rem;
  --index-description-font-size: 0.9em;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  background: var(--color-bg);
  color: var(--color-text);
  font-family: "SF Mono", "Cascadia Mono", "Roboto Mono", "Liberation Mono", ui-monospace, monospace;
  line-height: var(--body-line-height);
}

main {
  width: min(100%, var(--content-width));
  margin: 0 auto;
  padding: var(--page-padding-top) var(--page-padding-x) var(--page-padding-bottom);
}

header {
  margin-bottom: var(--header-margin-bottom);
  border-bottom: 1px solid var(--color-rule);
  padding-bottom: var(--header-padding-bottom);
}

h1 {
  margin: 0;
  color: var(--color-accent);
  font-size: clamp(var(--title-font-size-min), var(--title-font-size-fluid), var(--title-font-size-max));
  font-weight: 500;
  line-height: 1;
}

.subtitle {
  margin: var(--subtitle-margin-top) 0 0;
  color: var(--color-muted);
  font-size: var(--subtitle-font-size);
  letter-spacing: var(--subtitle-letter-spacing);
  text-transform: uppercase;
}

article {
  font-size: clamp(var(--article-font-size-min), var(--article-font-size-fluid), var(--article-font-size-max));
  text-align: justify;
  text-justify: inter-word;
}

p {
  margin: 0 0 var(--paragraph-margin-bottom);
}

.line-list {
  margin: var(--list-margin-y) 0;
  padding: 0;
  list-style: none;
  color: var(--color-text);
  font-size: 1em;
  line-height: var(--list-line-height);
  text-align: left;
}

blockquote {
  margin: var(--quote-margin-y) 0;
  border-left: var(--quote-border-width) solid var(--color-accent);
  padding-left: var(--quote-padding-left);
  color: var(--color-text);
  font-size: var(--quote-font-scale);
  line-height: 1.55;
  text-align: left;
}

.closing {
  margin-top: var(--closing-margin-top);
  color: var(--color-text);
  font-size: var(--quote-font-scale);
}

.index-content {
  text-align: left;
}

.index-list {
  display: grid;
  gap: var(--index-list-gap);
  margin: var(--index-list-margin-top) 0 0;
  padding-left: 1.35rem;
}

.index-list li::marker {
  color: var(--color-muted);
}

.index-list a {
  color: var(--color-text);
  font-size: var(--index-link-font-size);
  font-weight: 700;
  text-decoration-color: var(--color-rule);
  text-decoration-thickness: 1px;
  text-underline-offset: 0.22em;
}

.index-list a:hover,
.index-list a:focus {
  color: var(--color-accent);
}

.index-list span {
  display: block;
  margin-top: var(--index-description-margin-top);
  color: var(--color-muted);
  font-size: var(--index-description-font-size);
}
