:root {
  color-scheme: light;
  --paper: #fff;
  --ink: #000;
  --muted: #444;
  --line: #d0d0d0;
  --line-input: #8a8a8a;
  --wash: #f6f6f6;
  --link: #14c;
  --serif: sans-serif;
  --mono: monospace;
  --match-bg: #dcecdf;
  --match-line: #326244;
  --match-alt-bg: #f3e6c7;
  --match-alt-line: #80601e;
  --error: #9a2929;
}
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { font-family: sans-serif; background: #fff; color: #000; }
h1, h2, h3, h4, h5, h6 { margin-bottom: .2em; }
h1 { margin-top: 0; }
h2 { border-bottom: 1pt solid #e8e8e8; }
a { color: #14c; }
a:visited { color: #74c; }
a:hover { color: #444; text-decoration: none; }
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, summary:focus-visible { outline: 2px solid #14c; outline-offset: 3px; }
blockquote { margin: 1em 1.5em; border: 1pt dashed #aaa; padding: 1em; }
blockquote > p { margin: 0; }
hr { width: 80%; border: 1pt dotted #444; border-left: 0; border-right: 0; }
header { margin-top: 1ex; margin-bottom: 1em; }
footer { margin-top: 1em; }
.page-block { max-width: 45em; margin: 0 auto; border-left: 1.2em solid #bbb; padding-left: 1em; }
.breadcrumbs { border-left-color: #e7e7e7; }
.breadcrumbs a { color: #444; text-decoration: none; }
.breadcrumbs a:hover { color: #000; }
#bottom-spacer { height: 60vh; }
.listing-list { list-style: none; padding: 0; margin: 0; }
.writing-index > h1 { margin-bottom: .8em; }
.listing-item + .listing-item { margin-top: 1.25em; padding-top: 1.25em; border-top: 1px solid #e8e8e8; }
.listing-item-title { display: inline-block; font-size: 1.125rem; font-weight: 600; line-height: 1.4; color: #111; text-decoration: none; text-underline-offset: .15em; }
.listing-item-title:visited { color: #444; }
.listing-item-title:hover { color: #14c; text-decoration: underline; }
.listing-item-date, .post-date { color: #444; font-size: small; }
.listing-item > p { max-width: 65ch; margin: .4em 0 0; font-size: .9375rem; line-height: 1.55; color: #444; }
.post-content p { text-align: justify; }
.post-content li p { text-align: left; }
.post-content { overflow-wrap: break-word; }
.post-content p { hyphens: auto; }
input, textarea, select, button { font-family: inherit; }
.article-references { overflow-wrap: anywhere; }
code { background: #f6f6f6; }
pre { box-sizing: border-box; max-width: 100%; overflow: auto; background: #fdfdfd; border: 1pt solid #d0d0d0; padding: .5em; }
pre code { background: transparent; }
.hljs-keyword, .hljs-doctag { color: #8b2f97; }
.hljs-type, .hljs-built_in { color: #8a5a00; }
.hljs-title { color: #1f5fbf; }
.hljs-string { color: #2f7a34; }
.hljs-number { color: #b4451f; }
.hljs-literal { color: #0b6f86; }
.hljs-comment { color: #6b6f76; font-style: italic; }
figure { margin: 1em 0; }
.figure-body { display: block; max-width: 95%; margin: auto; color: #000; }
.figure-body svg, .figure-body img { display: block; max-width: 100%; height: auto; margin: auto; }
.figure-open { display: block; width: 100%; border: 0; padding: 0; background: transparent; cursor: zoom-in; }
figcaption { margin: .5em auto; text-align: center; font-size: small; color: #444; }
.two-up { display: grid; grid-template-columns: 1fr; gap: 1em; }
.table-scroll, .math-block, .katex-display { max-width: 100%; overflow-x: auto; overflow-y: hidden; }
table.results { border-collapse: collapse; margin: auto; }
table.results th, table.results td { padding: .4em; border: 1pt solid #d0d0d0; }
table.results th { background: #e7e7e7; }
table.results tr:nth-child(even) { background: #fbfbfb; }
dialog.zoom { width: 95vw; height: 90vh; max-width: 95vw; max-height: 90vh; padding: 0; border: 1px solid #aaa; box-sizing: border-box; }
dialog.zoom::backdrop { background: rgb(255 255 255 / 92%); }
.zoom-body { height: 100%; padding: 3em 1em 1em; box-sizing: border-box; overflow: auto; }
.zoom-body > svg, .zoom-body > img { width: 100%; height: 100%; object-fit: contain; }
.zoom-close { position: absolute; top: .5em; right: .5em; min-height: 44px; padding: .5em 1em; cursor: pointer; }
.tree-matcher-demo { display: grid; gap: .6em; margin: 1em 0; }
.tree-matcher-demo > input { box-sizing: border-box; width: 100%; min-width: 0; min-height: 44px; padding: .6em; font-family: monospace; }
.tree-demo-strict { display: flex; align-items: center; gap: .5em; min-height: 44px; }
.tree-demo-render, .tree-demo-status { font-family: monospace; overflow-wrap: anywhere; }
.tree-demo-render { line-height: 2; }
.tree-demo-term.is-match { background: var(--match-bg); border-bottom: 2px solid var(--match-line); }
.tree-demo-term.is-match[data-match-tone="1"] { background: var(--match-alt-bg); border-bottom-color: var(--match-alt-line); }
.tree-demo-status.is-error { color: var(--error); }
.demo-bar { display: flex; border: 1px solid #8a8a8a; }
.demo-bar textarea { flex: 1; min-width: 0; padding: .6em; border: 0; resize: vertical; font-family: monospace; }
.demo-bar button { min-height: 44px; padding: .5em 1em; border: 0; border-left: 1px solid #8a8a8a; cursor: pointer; }
.demo-panel { min-width: 0; border: 1px solid #8a8a8a; }
.demo-label { padding: .4em; background: #f6f6f6; }
.demo-panel pre { margin: 0; min-height: 9em; border: 0; }
.demo-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 48em) {
  .page-block { border-left-width: .75em; padding-left: .75em; }
  .post-content > h1 { text-wrap: balance; }
  .post-content code { overflow-wrap: anywhere; }
  .post-content pre code { overflow-wrap: normal; }
  .tree-matcher-demo > input, .demo-bar textarea { font-size: 1rem; }
  blockquote { margin-left: .5em; margin-right: .5em; padding: .75em; }
  dialog.zoom { height: 90dvh; max-height: 90dvh; }
  .zoom-body > svg, .zoom-body > img { width: auto; min-width: 100%; max-width: none; height: auto; }
}
@media (max-width: 30em) { .demo-cols { grid-template-columns: minmax(0, 1fr); } }
@media (hover: none) and (pointer: coarse) {
  .breadcrumbs a { display: inline-flex; align-items: center; min-height: 44px; }
  .page-block:not(.post-content) > ul > li > a { display: inline-flex; align-items: center; min-height: 44px; }
  .listing-item-title { display: inline-block; padding: .25em 0; }
  .tree-demo-strict input { width: 20px; height: 20px; }
}
