@font-face{font-family:"TeX Gyre Pagella";font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/pagella/pagella-regular.woff2") format("woff2")}
@font-face{font-family:"TeX Gyre Pagella";font-style:italic;font-weight:400;font-display:swap;src:url("/fonts/pagella/pagella-italic.woff2") format("woff2")}
@font-face{font-family:"TeX Gyre Pagella";font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/pagella/pagella-bold.woff2") format("woff2")}
@font-face{font-family:"TeX Gyre Pagella";font-style:italic;font-weight:700;font-display:swap;src:url("/fonts/pagella/pagella-bolditalic.woff2") format("woff2")}
@font-face{font-family:"Source Code Pro";font-style:normal;font-weight:200 900;font-display:swap;src:url("/fonts/mono/source-code-pro-latin-wght-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Source Code Pro";font-style:normal;font-weight:200 900;font-display:swap;src:url("/fonts/mono/source-code-pro-latin-ext-wght-normal.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Source Code Pro";font-style:italic;font-weight:200 900;font-display:swap;src:url("/fonts/mono/source-code-pro-latin-wght-italic.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Source Code Pro";font-style:italic;font-weight:200 900;font-display:swap;src:url("/fonts/mono/source-code-pro-latin-ext-wght-italic.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"CMU Serif";font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/cmu/cmu-serif-500-roman.woff2") format("woff2")}
@font-face{font-family:"CMU Serif";font-style:italic;font-weight:400;font-display:swap;src:url("/fonts/cmu/cmu-serif-500-italic.woff2") format("woff2")}
@font-face{font-family:"CMU Serif";font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/cmu/cmu-serif-700-roman.woff2") format("woff2")}
@font-face{font-family:"CMU Serif";font-style:italic;font-weight:700;font-display:swap;src:url("/fonts/cmu/cmu-serif-700-italic.woff2") format("woff2")}
@font-face{font-family:"CMU Typewriter Text";font-style:italic;font-weight:400;font-display:swap;src:url("/fonts/cmu/cmu-typewriter-text-500-italic.woff2") format("woff2")}
@font-face{font-family:"CMU Typewriter Text";font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/cmu/cmu-typewriter-text-500-roman.woff2") format("woff2")}

:root{--fg:#151515;--muted:#5a5a5a;--line:#d6d6d6;--link:#1c3d8c;--code:#f6f6f3;--match-bg:#fff2b3;--match-line:#c9a400;--match-alt-bg:#dbeafe;--match-alt-line:#3b6fd4;--error:#a12a2a}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0 auto;max-width:42rem;padding:2.2rem 1.25rem 5rem;background:#fffffd;color:var(--fg);font:400 19px/1.6 "TeX Gyre Pagella","Palatino Linotype",Palatino,serif;font-kerning:normal;text-rendering:optimizeLegibility}
a{color:var(--link);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:.15em;text-decoration-thickness:1px}
h1,h2,h3,h4{line-height:1.25;text-wrap:balance}
h1{font-size:2.15rem;font-weight:400;line-height:1.2;text-align:center;margin:0 0 2.6rem}
h2{font-size:1.4rem;font-weight:700;margin:2.6rem 0 .8rem}
h3{font-size:1.15rem;font-weight:700;margin:2.1rem 0 .6rem}
h4{font-size:1rem;font-weight:700;font-style:italic;margin:1.6rem 0 .4rem}
p,ul,ol,table,figure,pre{margin:0 0 1.1rem}
li{margin:.2rem 0}
hr{border:0;border-top:1px solid var(--line);margin:2.5rem 0}
blockquote{margin:0 0 1.1rem;padding:0 1.5rem;font-style:italic}
em em,blockquote em{font-style:normal}
.bar{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:3.6rem;padding-bottom:.55rem;border-bottom:.5px solid var(--fg);font-variant-caps:small-caps;letter-spacing:.05em}
.bar .name{color:var(--fg);font-size:1.15rem}
.bar .name:hover{text-decoration:none}
.bar span a{color:var(--muted);font-variant-caps:all-small-caps;font-size:1.1rem}
.bar a.icon{display:inline-block;width:1.2rem;height:1.23rem;vertical-align:-.2em;background:var(--muted);-webkit-mask:var(--icon) center/contain no-repeat;mask:var(--icon) center/contain no-repeat;transition:background .15s}
.bar a.icon:hover{background:var(--fg);text-decoration:none}
footer{margin-top:3.5rem;padding-top:.8rem;border-top:.5px solid var(--line);font-size:.95rem;font-variant-caps:all-small-caps;letter-spacing:.04em}

.posts{list-style:none;padding:0;margin:0}
.posts li{margin:0 0 1.7rem}
.posts a{color:var(--fg);font-size:1.22rem;line-height:1.3}
.posts a:hover{color:var(--link);text-decoration:none}
.posts p{margin:.25rem 0 0;color:var(--muted);font-style:italic;font-size:.98rem;line-height:1.45}

article{overflow-wrap:break-word}
article p{hyphens:auto;-webkit-hyphens:auto;text-wrap:pretty}
@media (min-width:36rem){article p{text-align:justify}}
article li{hyphens:auto}
code,pre,kbd,samp{font-family:"Source Code Pro",ui-monospace,monospace;font-size:.8em;font-variant-ligatures:none}
:not(pre)>code{font-size:.84em;overflow-wrap:anywhere}
pre{padding:.9rem 1.1rem;background:var(--code);border-radius:2px;overflow-x:auto;line-height:1.5;tab-size:4}
pre code{font-size:.82rem;background:none;padding:0}
table{border-collapse:collapse;display:block;max-width:100%;overflow-x:auto;font-size:.92rem}
th,td{padding:.35rem .7rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{font-weight:600;border-bottom-color:#bbb}

figure{margin:1.8rem 0;text-align:center}
figcaption{margin-top:.5rem;color:var(--muted);font-size:.9rem}
a.figure{display:block;color:var(--fg);text-decoration:none;cursor:zoom-in}
a.figure svg,figure svg,article>svg{display:block;max-width:min(calc(100vw - 2.5rem),64rem);height:auto;margin:1.8rem 0;position:relative;left:50%;transform:translateX(-50%);color:var(--fg)}
figure a.figure svg,figure>svg{margin:0}
.katex{font-size:1.08em}
.katex-display{margin:1.2rem 0;overflow-x:auto;overflow-y:hidden;padding:.2rem 0}

.hljs-keyword,.hljs-built_in,.hljs-type,.hljs-meta .hljs-keyword{color:#7a2d91}
.hljs-string,.hljs-regexp,.hljs-char.escape_{color:#1d6b3a}
.hljs-number,.hljs-literal,.hljs-symbol{color:#a3460e}
.hljs-comment,.hljs-quote{color:#7c7c74;font-style:italic}
.hljs-title,.hljs-title.function_,.hljs-section{color:#1f4fae}
.hljs-variable,.hljs-params,.hljs-attr,.hljs-property{color:#24292f}
.hljs-meta,.hljs-doctag{color:#8a6100}

.demo,.tree-matcher-demo{display:grid;gap:.6rem;margin:1.5rem 0}
.tree-matcher-demo>input{width:100%;min-height:44px;padding:.6rem;font-family:"Source Code Pro",monospace;font-size:.9rem;border:1px solid #999}
.tree-demo-strict{display:flex;align-items:center;gap:.5rem}
.tree-demo-render,.tree-demo-status{font-family:"Source Code Pro",monospace;font-size:.9rem;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 #999}
.demo-bar textarea{flex:1;min-width:0;padding:.6rem;border:0;resize:vertical;font:.85rem "Source Code Pro",monospace}
.demo-bar button{min-height:44px;padding:.5rem 1rem;border:0;border-left:1px solid #999;background:#f2f2f2;cursor:pointer;font:inherit}
.demo-panel{min-width:0;border:1px solid #999}
.demo-label{padding:.35rem .6rem;background:#f4f4f4;font-size:.9rem}
.demo-panel pre{margin:0;min-height:9em;border-radius:0;background:#fff}
.demo-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}

@media (max-width:40em){body{font-size:17.5px;padding-top:2rem}.demo-cols{grid-template-columns:minmax(0,1fr)}h1{font-size:1.6rem}}
.two-up{display:grid;gap:1.2rem;justify-items:center;width:min(calc(100vw - 2.5rem),64rem);position:relative;left:50%;transform:translateX(-50%)}
.figure-open{display:block;max-width:100%;padding:0;border:0;background:none;color:var(--fg);font:inherit;cursor:default}
.figure-open svg{position:static;left:auto;transform:none;max-width:100%;margin:0 auto}
