@font-face{font-family:Heliotrope;font-style:normal;font-weight:400;font-stretch:normal;font-stretch:normal;font-display:swap;src:url(../assets/fonts/heliotrope/heliotrope_4_regular.woff2)format("woff2")}@font-face{font-family:Heliotrope;font-style:italic;font-weight:400;font-stretch:normal;font-stretch:normal;font-display:swap;src:url(../assets/fonts/heliotrope/heliotrope_4_italic.woff2)format("woff2")}@font-face{font-family:Heliotrope;font-style:normal;font-weight:700;font-stretch:normal;font-display:swap;src:url(../assets/fonts/heliotrope/heliotrope_4_bold.woff2)format("woff2")}@font-face{font-family:Heliotrope;font-style:italic;font-weight:700;font-stretch:normal;font-display:swap;src:url(../assets/fonts/heliotrope/heliotrope_4_bold_italic.woff2)format("woff2")}@font-face{font-family:berkeley mono;font-style:normal;font-weight:400;font-stretch:normal;font-stretch:normal;font-display:swap;src:url(../assets/fonts/berkeley/berkeley_mono-regular.woff2)format("woff2")}@font-face{font-family:berkeley mono;font-style:italic;font-weight:400;font-stretch:normal;font-stretch:normal;font-display:swap;src:url(../assets/fonts/berkeley/berkeley_mono-italic.woff2)format("woff2")}@font-face{font-family:berkeley mono;font-style:normal;font-weight:700;font-stretch:normal;font-display:swap;src:url(../assets/fonts/berkeley/berkeley_mono-bold.woff2)format("woff2")}@font-face{font-family:berkeley mono;font-style:italic;font-weight:700;font-stretch:normal;font-display:swap;src:url(../assets/fonts/berkeley/berkeley_mono-bold_italic.woff2)format("woff2")}.anchor-tag{color:oklch(.615 .014 325);text-decoration:none;background-image:none;font-weight:400;opacity:0;transition:opacity .15s ease-out}@media(prefers-color-scheme:dark){.anchor-tag{color:oklch(.722 .012 325)}}@media(min-width:836px){.anchor-tag{position:absolute;left:0}}h1.anchored,h2.anchored,h3.anchored,h4.anchored,h5.anchored,h6.anchored{position:relative}@media(min-width:836px){h1.anchored,h2.anchored,h3.anchored,h4.anchored,h5.anchored,h6.anchored{margin-left:-1.2em;padding-left:1.2em}}h1.anchored:hover .anchor-tag,h1.anchored .anchor-tag:focus,h2.anchored:hover .anchor-tag,h2.anchored .anchor-tag:focus,h3.anchored:hover .anchor-tag,h3.anchored .anchor-tag:focus,h4.anchored:hover .anchor-tag,h4.anchored .anchor-tag:focus,h5.anchored:hover .anchor-tag,h5.anchored .anchor-tag:focus,h6.anchored:hover .anchor-tag,h6.anchored .anchor-tag:focus{opacity:1}@media(prefers-reduced-motion:no-preference){@view-transition{navigation:auto}}html{box-sizing:border-box;display:flex;flex-direction:column;scroll-behavior:smooth;padding:0 15px;border-top:.5em solid gray;min-height:100vh;padding:2em;--border-color:linear-gradient( to right, #ffafc7 10%, #73d7ee 10% 20%, #613915 20% 30%, #000000 30% 40%, #e50000 40% 50%, #ff8d00 50% 60%, #ffee00 60% 70%, #028121 70% 80%, #004cff 80% 90%, #760088 90% );border-image:var(--border-color)1}body{display:flex;flex:1;flex-direction:column;font-family:Heliotrope;color:#2f2f2f;background:oklch(1 0 0)}#content{flex:1 0 auto}details{margin-left:3.5%}summary{padding:0 10px;transition:background-color .15s ease-out}summary a{color:#2f2f2f}summary a:visited{color:#2f2f2f}summary:hover{cursor:pointer;background-color:#ddd;border-radius:7px}.admonition{margin:15px -12px;padding:5px 10px;border:1px solid;border-radius:7px;box-shadow:0 1px 1px rgba(12,13,14,.15),inset 0 1px #fff}.admonition p{margin:0}.admonition.note{border-color:#90baf1;background-color:#e1edfb}.admonition.tip{border-color:#83caa4;background-color:#ddf3e6}.admonition.warn{border-color:#d2b373;background-color:#f6ecd7}.admonition.err{border-color:#eca0a0;background-color:#ffe5e4}details.admonition{padding:0}details.admonition>summary{padding:5px 10px;border-radius:6px;background-color:rgba(0,0,0,6%)}details.admonition>summary:hover{background-color:rgba(0,0,0,.1)}details.admonition[open]>summary{border-radius:6px 6px 0 0}details.admonition>ul{margin:10px;padding-left:1.1em}details.admonition>ul code{padding:0;background:0 0}blockquote{margin:15px -19px;padding:0 15px;border-left:3px solid #2f2f2f;border-radius:7px;color:#2f2f2f;background:#f7f7f7}blockquote p{margin:0}.content>ul,#TableOfContents>ul,.content>ol,#TableOfContents>ol{padding-left:1em}ul,ol>ul,ol{padding-left:1.1em}hr{margin:15px 0;border:1px solid #2f2f2f}code{background:oklch(.924 .008 325);border-radius:3px;padding:0 4px}a code{background:0 0;padding:0}pre{margin:15px -12px;border-radius:7px}code,pre{font-size:16px;font-family:berkeley mono,monospace;color:#2f2f2f}input{font-family:inherit;text-align:center;width:100%;height:35px;box-sizing:border-box;box-shadow:0 1px 1px rgba(12,13,14,.15),inset 0 1px #fff;transition:.15s ease-out}input[type=text]{font-size:inherit;color:#2f2f2f;border:1px solid oklch(.722 .012 325);border-radius:3px}.wrapper{max-width:600px;margin:0 auto;font-size:18px;line-height:30px;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;-moz-hyphens:auto;hyphens:auto;text-align:left}.content h2 a:not(.button):not(.anchor-tag),.content h3 a:not(.button):not(.anchor-tag),.content p a:not(.button):not(.anchor-tag),.content li a:not(.button):not(.anchor-tag),.content td a:not(.button):not(.anchor-tag){color:inherit;text-decoration:none;background-image:linear-gradient(120deg,#904e95 0%,#e96443 100%);background-repeat:no-repeat;background-size:100% 2px;background-position:0 100%;transition:background-size .15s ease-out}.content h2 a:not(.button):not(.anchor-tag):hover,.content h3 a:not(.button):not(.anchor-tag):hover,.content p a:not(.button):not(.anchor-tag):hover,.content li a:not(.button):not(.anchor-tag):hover,.content td a:not(.button):not(.anchor-tag):hover{background-size:100% 4px}.content h2 a:not(.button):not(.anchor-tag)[href^=http]::after,.content h3 a:not(.button):not(.anchor-tag)[href^=http]::after,.content p a:not(.button):not(.anchor-tag)[href^=http]::after,.content li a:not(.button):not(.anchor-tag)[href^=http]::after,.content td a:not(.button):not(.anchor-tag)[href^=http]::after{position:relative;content:"﻿°";margin-left:.1em;font-size:90%;top:-.1em;color:oklch(.48 .19 341);font-feature-settings:"caps";font-variant-numeric:normal}@media(prefers-color-scheme:dark){.content h2 a:not(.button):not(.anchor-tag)[href^=http]::after,.content h3 a:not(.button):not(.anchor-tag)[href^=http]::after,.content p a:not(.button):not(.anchor-tag)[href^=http]::after,.content li a:not(.button):not(.anchor-tag)[href^=http]::after,.content td a:not(.button):not(.anchor-tag)[href^=http]::after{color:oklch(.745 .185 341)}}.content .highlight code{padding:0!important}.content .highlight pre{overflow:auto;border-radius:5px;padding:12px;background:oklch(.924 .008 325)!important}.content .highlight a{background-image:none}.content .highlight a::after{content:""}.button{font-family:inherit;font-style:normal!important;text-decoration:none!important;height:25px;box-shadow:0 1px 1px rgba(12,13,14,.15),inset 0 1px #fff;display:inline-block;color:#2f2f2f;text-shadow:0 1px 0 #fff;background-color:oklch(.924 .008 325);border:1px solid oklch(.722 .012 325);border-radius:3px;padding:0 4px 4px}footer{padding:20px 0 0;text-align:center;line-height:30px;margin-top:auto;margin-bottom:0}footer a:not(.button){color:inherit;text-decoration:none;background-image:linear-gradient(120deg,#904e95 0%,#e96443 100%);background-repeat:no-repeat;background-size:100% 2px;background-position:0 100%;transition:background-size .15s ease-out}footer a:not(.button):hover{background-size:100% 4px}footer a:not(.button)[href^=http]::after{position:relative;content:"﻿°";margin-left:.1em;font-size:90%;top:-.1em;color:oklch(.48 .19 341);font-feature-settings:"caps";font-variant-numeric:normal}@media(prefers-color-scheme:dark){footer a:not(.button)[href^=http]::after{color:oklch(.745 .185 341)}}footer .ring{font-size:20px}footer .boring_stuff{font-style:italic}.tags{display:flex;flex-direction:row;flex-wrap:wrap;gap:5px;margin:10px 0 13px!important}.title-wrapper{max-width:800px;width:100%;margin:0 auto;padding-top:20px;padding-bottom:10px}.title-wrapper .title{font:700 37px Heliotrope}.title-wrapper .menu{float:right;margin-top:11px;font-size:29px}.title-wrapper .menu ul{list-style-type:none;margin:0;padding:0}.title-wrapper .menu li{display:inline-block;padding-left:15px}.title-wrapper a{text-decoration:none;color:inherit}.title-wrapper a.active{font-weight:700}.title-wrapper a:visited{color:inherit}.title-wrapper{border-bottom:2px solid}@media(max-width:835px){.title-wrapper{text-align:center}.title-wrapper .menu{float:none}.title-wrapper .menu ul{padding:5px 0}.title-wrapper .menu li{padding-left:0;padding-right:15px}}.list{max-width:600px;margin:0 auto;font-size:18px;line-height:30px}.list a{color:inherit}.categories a{text-decoration:none}.categories p{display:flex;flex-direction:row;flex-wrap:wrap;gap:5px}.posts a{text-decoration:none;color:inherit}.posts ul{list-style-type:none;margin:0;padding:0}.posts-item{border:1px solid oklch(.722 .012 325);border-radius:7px;box-shadow:0 1px 1px rgba(12,13,14,.15),inset 0 1px #fff}@media(prefers-color-scheme:dark){.posts-item{border-color:oklch(.455 .018 325);box-shadow:0 1px 1px rgba(0,0,0,.4),inset 0 1px hsla(0,0%,100%,8%)}}.posts-item{margin:40px -12px;padding:5px 10px}.posts-title{font-size:larger;font-weight:700;margin:5px 0}.posts-summary{margin:5px 0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.posts-meta{margin:5px 0 10px}.toc{padding-bottom:5px;border-bottom:2px solid #2f2f2f}.toc a{color:inherit;text-decoration:none;background-image:linear-gradient(120deg,#904e95 0%,#e96443 100%);background-repeat:no-repeat;background-size:100% 2px;background-position:0 100%;transition:background-size .15s ease-out}.toc a:hover{background-size:100% 4px}.toc a[href^=http]::after{position:relative;content:"﻿°";margin-left:.1em;font-size:90%;top:-.1em;color:oklch(.48 .19 341);font-feature-settings:"caps";font-variant-numeric:normal}@media(prefers-color-scheme:dark){.toc a[href^=http]::after{color:oklch(.745 .185 341)}}.frontmatter{padding:15px 0 7px;border-bottom:2px solid #2f2f2f}.frontmatter a:not(.button){color:inherit;text-decoration:none;background-image:linear-gradient(120deg,#904e95 0%,#e96443 100%);background-repeat:no-repeat;background-size:100% 2px;background-position:0 100%;transition:background-size .15s ease-out}.frontmatter a:not(.button):hover{background-size:100% 4px}.frontmatter a:not(.button)[href^=http]::after{position:relative;content:"﻿°";margin-left:.1em;font-size:90%;top:-.1em;color:oklch(.48 .19 341);font-feature-settings:"caps";font-variant-numeric:normal}@media(prefers-color-scheme:dark){.frontmatter a:not(.button)[href^=http]::after{color:oklch(.745 .185 341)}}.frontmatter .post-title{margin:10px 0}.frontmatter .post-title a{text-decoration:none;background-image:none}.frontmatter .post-title a::after{content:""}.frontmatter p{margin:0}.content h2,.content h3{margin-top:20px;margin-bottom:-10px}.content .highlight a{background-image:none}.content .highlight a::after{content:""}.commento-root-font *{font-family:Heliotrope!important}.commento-footer{display:none}@media(prefers-color-scheme:dark){#commento.commento-root input[type=text],#commento.commento-root textarea,#commento.commento-root .commento-login-box,#commento.commento-root .commento-login-box .commento-email,#commento.commento-root .commento-login-box .commento-input,#commento.commento-root .commento-login-box .commento-email-button{color:oklch(.96 .006 325);background:oklch(.265 .024 325);border-color:oklch(.455 .018 325)}#commento.commento-root input[type=text]::placeholder,#commento.commento-root textarea::placeholder,#commento.commento-root .commento-login-box .commento-input::placeholder{color:oklch(.722 .012 325)}#commento.commento-root a,#commento.commento-root .commento-sort-policy-buttons-container .commento-sort-policy-buttons .commento-sort-policy-button-selected{color:oklch(.745 .185 341)}#commento.commento-root .commento-login .commento-login-text,#commento.commento-root .commento-logged-container .commento-profile-button,#commento.commento-root .commento-anonymous-checkbox-container input[type=checkbox]+label,#commento.commento-root .commento-markdown-button,#commento.commento-root .commento-sort-policy-buttons-container .commento-sort-policy-buttons .commento-sort-policy-button,#commento.commento-root .commento-card .commento-subtitle,#commento.commento-root .commento-card .commento-timeago,#commento.commento-root .commento-card .commento-score{color:oklch(.722 .012 325)}#commento.commento-root .commento-card .commento-name,#commento.commento-root .commento-card .commento-body,#commento.commento-root .commento-card .commento-body *{color:oklch(.96 .006 325)}#commento.commento-root .commento-round-check input[type=checkbox]+label::before,#commento.commento-root .commento-round-check input[type=radio]+label::before{background:oklch(.325 .022 325);border-color:oklch(.455 .018 325)}#commento.commento-root .commento-markdown-help,#commento.commento-root .commento-card{border-color:oklch(.455 .018 325)}}.project-badge-groups{margin-bottom:20px}.project-badges{align-items:center;display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0}.project-badges+.project-badges{margin-top:6px}.project-badges img,.project-badges .project-badge-image,.project-badges .project-badge-image svg{display:block;height:20px;width:auto}.project-badges img,.project-badges .project-badge-image{border:1px solid oklch(.722 .012 325);border-radius:4px;box-shadow:0 1px 1px rgba(12,13,14,.15),inset 0 1px #fff}@media(prefers-color-scheme:dark){.project-badges img,.project-badges .project-badge-image{border-color:oklch(.455 .018 325);box-shadow:0 1px 1px rgba(0,0,0,.4),inset 0 1px hsla(0,0%,100%,8%)}}.project-badges a:visited img,.project-badges a:visited .project-badge-image{border-color:oklch(.722 .012 325)}@media(prefers-color-scheme:dark){.project-badges a:visited img,.project-badges a:visited .project-badge-image{border-color:oklch(.455 .018 325)}}.posts .project-list{align-items:start;display:grid;gap:40px 24px;grid-template-columns:repeat(auto-fill,minmax(min(100%,18rem),1fr));justify-content:center;margin:40px 0}.posts .project-list>.posts-item{display:grid;gap:10px;margin:0;padding:10px}.posts .project-list>.posts-item>.posts-title,.posts .project-list>.posts-item>.posts-summary{margin:0}.posts .project-list>.posts-item>.posts-summary{overflow-wrap:anywhere}.posts .project-list>.posts-item>.project-list-badges{margin:0;padding-block:5px}.project-start{color:oklch(.455 .018 325);font-size:.75em;font-weight:400;margin-left:.25em;white-space:nowrap}.project-description{margin-top:24px}.content img{border-radius:8px;width:100%;display:block;margin-left:auto;margin-right:auto;margin-top:15px;margin-bottom:20px;box-shadow:0 4px 8px rgba(0,0,0,.2),0 6px 20px rgba(0,0,0,.19)}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#ddd8dd}.chroma .lnt,.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .line{display:flex}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .kt,.chroma .ow{font-weight:700}.chroma .kd{font-style:italic}.chroma .nc,.chroma .no,.chroma .nn,.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi,.chroma .vm,.chroma .nf,.chroma .fm{color:#484648;font-weight:700;font-style:italic}.chroma .nb,.chroma .bp{font-weight:700;font-style:italic}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:#484648;font-style:italic}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1{color:#484648;font-style:italic}.chroma .cs,.chroma .cp,.chroma .cpf{color:#484648;font-weight:700}@media(prefers-color-scheme:dark){.chroma .hl{background-color:#453d46}.chroma .lnt,.chroma .ln{color:#b5b0b8}.chroma .nc,.chroma .no,.chroma .nn,.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi,.chroma .vm,.chroma .nf,.chroma .fm,.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:#cfcad2}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:#b5b0b8}}@media(prefers-color-scheme:dark){body{color:oklch(.96 .006 325);background:oklch(.205 .022 325)}hr{border:1px solid oklch(.96 .006 325)}.frontmatter .post-title a:hover{color:oklch(.96 .006 325)}.frontmatter,.toc{border-bottom:2px solid oklch(.96 .006 325)}.title-wrapper{border-bottom-color:oklch(.96 .006 325)}.admonition.note{border-color:#4576b4;background-color:#17273c;box-shadow:0 1px 1px rgba(0,0,0,.4),inset 0 1px hsla(0,0%,100%,8%)}.admonition.tip{border-color:#29885e;background-color:#0f2d1f;box-shadow:0 1px 1px rgba(0,0,0,.4),inset 0 1px hsla(0,0%,100%,8%)}.admonition.warn{border-color:#926e10;background-color:#302409;box-shadow:0 1px 1px rgba(0,0,0,.4),inset 0 1px hsla(0,0%,100%,8%)}.admonition.err{border-color:#ac5859;background-color:#3a1d1d;box-shadow:0 1px 1px rgba(0,0,0,.4),inset 0 1px hsla(0,0%,100%,8%)}details.admonition>summary{background-color:hsla(0,0%,100%,8%)}details.admonition>summary:hover{background-color:hsla(0,0%,100%,.13)}blockquote{color:oklch(.96 .006 325);background:oklch(.265 .024 325);border-left-color:oklch(.96 .006 325)}code{background:oklch(.265 .024 325)}code,pre{color:oklch(.96 .006 325)}.content .highlight pre{background:oklch(.265 .024 325)!important}summary:hover{background-color:oklch(.325 .022 325)}input{color:oklch(.96 .006 325);background-color:oklch(.325 .022 325);box-shadow:0 1px 1px rgba(0,0,0,.4),inset 0 1px hsla(0,0%,100%,8%)}input[type=text]{border-color:oklch(.455 .018 325)}input::placeholder{color:oklch(.722 .012 325)}.button{color:oklch(.96 .006 325);text-shadow:none;background-color:oklch(.325 .022 325);border-color:oklch(.455 .018 325);box-shadow:0 1px 1px rgba(0,0,0,.4),inset 0 1px hsla(0,0%,100%,8%)}.project-start{color:oklch(.722 .012 325)}}