@layer typography {
  .doc-page :is(h1, h2, h3, h4)[id] {
    scroll-margin-block-start: calc(var(--header-h) + var(--s-5));
  }

  .doc-page:not(.home-article) {
    counter-reset: doc-section;
  }

  .doc-page:not(.home-article) h1 {
    font-family: var(--sans);
    font-weight: 600;
    font-size: 2em;
    line-height: 1.15;
    letter-spacing: -0.02em;
    margin-block-end: var(--s-3);
    color: var(--ink);
    text-wrap: balance;
  }

  .doc-page:not(.home-article) h1 + :where(p) {
    font-family: var(--serif);
    font-size: 1.05em;
    line-height: 1.5;
    color: var(--ink-soft);
    margin-block-end: var(--s-6);
    max-inline-size: 64ch;
  }

  .doc-page:not(.home-article) h2 {
    font-family: var(--sans);
    font-weight: 600;
    font-size: 1.5em;
    line-height: 1.2;
    letter-spacing: -0.01em;
    margin-block-start: var(--s-7);
    margin-block-end: var(--s-3);
    padding-block-start: var(--s-4);
    border-block-start: var(--rule-thick);

    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: var(--s-2);
  }

  .doc-page:not(.home-article) h3 {
    font-family: var(--sans);
    font-weight: 600;
    font-size: 1.17em;
    line-height: 1.3;
    margin-block-start: var(--s-6);
    margin-block-end: var(--s-2);
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: var(--s-2);
  }

  .doc-page:not(.home-article) h4 {
    font-family: var(--sans);
    font-weight: 600;
    font-size: 1em;
    line-height: 1.3;
    margin-block-start: var(--s-5);
    margin-block-end: var(--s-2);
    color: var(--ink-soft);
  }

  .doc-page .heading-anchor {
    flex-shrink: 0;
    font-family: var(--mono);
    font-size: 0.78rem;
    font-weight: 400;
    color: var(--ink-quiet);
    text-transform: uppercase;
    text-decoration: none;
    cursor: pointer;
    transition: color var(--t-snap);
  }

  .doc-page h3 .heading-anchor {
    font-size: 0.7rem;
  }

  .doc-page h2:hover .heading-anchor,
  .doc-page h3:hover .heading-anchor {
    color: var(--accent-text);
  }

  .doc-page p {
    margin-block: var(--s-4);
    max-inline-size: var(--measure);
    text-wrap: pretty;
    hyphens: auto;
    hyphenate-limit-chars: 8 4 4;
  }

  .doc-page p > strong,
  .doc-page p > b {
    font-weight: 600;
    color: var(--ink);
  }

  .doc-page p > em,
  .doc-page p > i {
    font-style: italic;
  }

  .doc-page ul,
  .doc-page ol {
    margin-block: var(--s-4);
    max-inline-size: var(--measure);
  }

  .doc-page ul {
    list-style-type: "›  ";
    list-style-position: outside;
    padding-inline-start: var(--s-5);
  }

  .doc-page ol {
    list-style-type: decimal-leading-zero;
    list-style-position: outside;
    padding-inline-start: var(--s-7);
  }

  .doc-page ul > li,
  .doc-page ol > li {
    margin-block: var(--s-2);
    padding-inline-start: var(--s-2);
  }

  .doc-page ul > li::marker,
  .doc-page ol > li::marker {
    color: var(--ink-quiet);
    font-family: var(--mono);
    font-feature-settings: "tnum";
    font-size: 0.92em;
  }

  .doc-page blockquote {
    margin-block: var(--s-5);
    padding: var(--s-4) var(--s-5);
    border: 1px solid var(--accent);
    background: var(--accent-soft);
    color: var(--ink);
    inline-size: 100%;
    max-inline-size: none;
  }

  .doc-page blockquote p {
    margin-block: var(--s-2);
    max-inline-size: none;
  }

  .doc-page blockquote p:first-child { margin-block-start: 0; }
  .doc-page blockquote p:last-child { margin-block-end: 0; }

  .doc-page blockquote :not(pre) > code {
    color: inherit;
  }

  .doc-page table {
    inline-size: 100%;
    margin-block: var(--s-6);
    border-collapse: collapse;
    border: var(--rule-thick);
    font-feature-settings: "tnum", "lnum";
  }

  .doc-page thead th {
    font-family: var(--mono);
    font-size: 0.72rem;
    font-weight: 400;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    text-align: start;
    color: var(--ink-quiet);
    padding-block: var(--s-3);
    padding-inline: var(--s-3);
    border-block-end: var(--hair);
  }

  .doc-page tbody td {
    padding-block: var(--s-3);
    padding-inline: var(--s-3);
    border-block-end: var(--hairline);
    vertical-align: baseline;
  }

  .doc-page tbody tr:last-child td {
    border-block-end: 0;
  }

  .doc-page hr {
    margin-block: var(--s-7);
    border: 0;
    border-block-start: var(--rule-thick);
  }

  .doc-page a {
    text-decoration-color: var(--rule-hair);
  }

  .doc-page a:hover {
    text-decoration-color: var(--accent-text);
  }
}
