/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}*,:after,:before{box-sizing:inherit}html{font-size:clamp(14px,1.35vw,32px);font-family:Ubuntu,sans-serif;box-sizing:border-box;width:100%}#root,body,html{height:100%}#root{font-size:1rem;width:100%}.about h1{margin-top:0}.app{
  /*!
    Theme: a11y-light
    Author: @ericwbailey
    Maintainer: @ericwbailey

    Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css
  */--text-color:#000;--text-bg:#fff;--text-bg-hl:#eee;--text-bg-hl-more:#d7d7d7;--text-bg-reverse:#222;--link-active-color:red;--link-hover-bg:#eee;width:100%;background:var(--text-bg-hl)}.app pre code.hljs{display:block;overflow-x:auto;padding:1em}.app code.hljs{padding:3px 5px}.app .hljs{background:#fefefe;color:#545454}.app .hljs-comment,.app .hljs-quote{color:#696969}.app .hljs-deletion,.app .hljs-name,.app .hljs-regexp,.app .hljs-selector-class,.app .hljs-selector-id,.app .hljs-tag,.app .hljs-template-variable,.app .hljs-variable{color:#d91e18}.app .hljs-attribute,.app .hljs-built_in,.app .hljs-link,.app .hljs-literal,.app .hljs-meta,.app .hljs-number,.app .hljs-params,.app .hljs-type{color:#aa5d00}.app .hljs-addition,.app .hljs-bullet,.app .hljs-string,.app .hljs-symbol{color:green}.app .hljs-section,.app .hljs-title{color:#007faa}.app .hljs-keyword,.app .hljs-selector-tag{color:#7928a1}.app .hljs-emphasis{font-style:italic}.app .hljs-strong{font-weight:700}@media screen and (-ms-high-contrast:active){.app .hljs-addition,.app .hljs-attribute,.app .hljs-built_in,.app .hljs-bullet,.app .hljs-comment,.app .hljs-link,.app .hljs-literal,.app .hljs-meta,.app .hljs-number,.app .hljs-params,.app .hljs-quote,.app .hljs-string,.app .hljs-symbol,.app .hljs-type{color:highlight}.app .hljs-keyword,.app .hljs-selector-tag{font-weight:700}}.app--dark{
  /*!
    Theme: a11y-dark
    Author: @ericwbailey
    Maintainer: @ericwbailey

    Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css
  */--text-color:#ddd;--text-bg:#222;--text-bg-hl:#111;--text-bg-hl-more:#070707;--text-bg-reverse:#fff;--link-active-color:#ff0;--link-hover-bg:#444}.app--dark pre code.hljs{display:block;overflow-x:auto;padding:1em}.app--dark code.hljs{padding:3px 5px}.app--dark .hljs{background:#2b2b2b;color:#f8f8f2}.app--dark .hljs-comment,.app--dark .hljs-quote{color:#d4d0ab}.app--dark .hljs-deletion,.app--dark .hljs-name,.app--dark .hljs-regexp,.app--dark .hljs-selector-class,.app--dark .hljs-selector-id,.app--dark .hljs-tag,.app--dark .hljs-template-variable,.app--dark .hljs-variable{color:#ffa07a}.app--dark .hljs-built_in,.app--dark .hljs-link,.app--dark .hljs-literal,.app--dark .hljs-meta,.app--dark .hljs-number,.app--dark .hljs-params,.app--dark .hljs-type{color:#f5ab35}.app--dark .hljs-attribute{color:gold}.app--dark .hljs-addition,.app--dark .hljs-bullet,.app--dark .hljs-string,.app--dark .hljs-symbol{color:#abe338}.app--dark .hljs-section,.app--dark .hljs-title{color:#00e0e0}.app--dark .hljs-keyword,.app--dark .hljs-selector-tag{color:#dcc6e0}.app--dark .hljs-emphasis{font-style:italic}.app--dark .hljs-strong{font-weight:700}@media screen and (-ms-high-contrast:active){.app--dark .hljs-addition,.app--dark .hljs-attribute,.app--dark .hljs-built_in,.app--dark .hljs-bullet,.app--dark .hljs-comment,.app--dark .hljs-link,.app--dark .hljs-literal,.app--dark .hljs-meta,.app--dark .hljs-number,.app--dark .hljs-params,.app--dark .hljs-quote,.app--dark .hljs-string,.app--dark .hljs-symbol,.app--dark .hljs-type{color:highlight}.app--dark .hljs-keyword,.app--dark .hljs-selector-tag{font-weight:700}}.app--dark a{color:#40e0d0}.app--dark a:visited{color:salmon}.app--dark a:active{color:var(--link-active-color)}.app__content{margin:0 auto;width:min(75ch + 1em,100%);padding:1em;min-height:100vh;background:var(--text-bg);color:var(--text-color)}.app__main{display:flex;margin-top:1em}.app__main>:not(:first-child){border-left:2px dotted var(--text-color);margin-left:1em;padding-left:.5em}@media screen and (max-width:768px){.app__main{flex-direction:column;gap:1em}.app__main>*{border:none!important}}.article{font-size:1rem;text-align:left;margin-top:1em}.article__content{font-family:Merriweather,sans-serif;width:min(75ch + 1em,100%)}.article__content h1,.article__content h2,.article__content h3,.article__content h4,.article__content h5,.article__content h6{font-family:Ubuntu,serif}.article__content code{background-color:var(--text-bg-hl);white-space:pre-wrap;word-break:break-word}.article__content figure{text-align:center}.article__content figcaption{padding:.5em 0}.article__content pre{background-color:var(--text-bg-hl);padding:1em}.article__content li{line-height:1.5}.article__content li:not(:last-child){margin-bottom:1em}.article__content img{display:block;max-width:70%;margin:0 auto}.article__content p{line-height:1.5}.article__content table{border-spacing:0 .5em}.article__content table th{text-align:left}.article__content table td,.article__content table th{padding-right:.5em}.article__content table tr:nth-child(2n){background-color:var(--text-bg-hl)}.article__content .graphviz__arrow path,.article__content .graphviz__arrow polygon{stroke:var(--text-color);fill:none}.article__content .graphviz__arrow text{fill:var(--text-color)}.article__content .graphviz__text path,.article__content .graphviz__text polygon{stroke:var(--text-color)}.article__content .graphviz__text text{fill:var(--text-color)}.article-table{display:table-cell;border-spacing:0 .5em}.article-table__header-date,.article-table__header-title{text-align:left}.article-table .article-table__body-row{height:max-content}.article-table .article-table__body-row:hover{background-color:var(--text-bg-hl)}.article-table .article-table__body-row .article-table__body-date{width:6em;text-align:left}.article-table .article-table__body-row .article-table__body-title{text-align:left}.article-table .article-table__body-row .article-table__body-title .article-table__body-link{display:block}.blog-structure{display:flex;flex-direction:column;padding:.5em 0 0}.blog-structure__link{text-decoration:none}.blog-structure__link--active:after,.blog-structure__link:hover:after{position:absolute;content:" *";color:var(--link-active-color);font-weight:700;white-space:pre}.blog-structure__list{display:block;margin:.2em 0 0 1em;padding:0;border-left:1px solid var(--text-color)}.blog-structure__list-item{width:max-content;padding:.1em 0;list-style-type:none}.blog-structure__list-item:before{display:inline-block;content:" ";height:.3em;width:.5em;border-top-color:var(--text-color);border-top:1px solid var(--text-color)}.footer{margin-top:1em;display:flex;justify-content:center}.footer__backBtn{align-self:flex-end}.header{display:flex;justify-content:space-between}.header>*{align-self:flex-end}.header__backBtn{flex:1}.header__backBtn--hidden{display:none}.header__theme-button{background-color:var(--text-bg-reverse);padding:3px;border:2px solid var(--text-bg-reverse);border-radius:.3em;cursor:pointer;color:var(--text-bg);white-space:pre}.header__theme-button:focus,.header__theme-button:hover{box-shadow:0 0 0 5px var(--text-bg-reverse)}.header__theme-button:focus{outline:none}.header__theme-button--dark{background:#fff;color:grey}.header__title{flex:1;font-weight:700;text-decoration:none}.header__title:active,.header__title:hover,.header__title:link,.header__title:visited{color:var(--text-color)!important}