@font-face{font-family:ibm plex sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-sans/ibm-plex-sans-400.ttf)format('truetype')}@font-face{font-family:ibm plex sans;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-sans/ibm-plex-sans-400-italic.ttf)format('truetype')}@font-face{font-family:ibm plex sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-sans/ibm-plex-sans-500.ttf)format('truetype')}@font-face{font-family:ibm plex sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-sans/ibm-plex-sans-600.ttf)format('truetype')}@font-face{font-family:ibm plex sans;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/ibm-plex-sans/ibm-plex-sans-700.ttf)format('truetype')}@font-face{font-family:ibm plex mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono/ibm-plex-mono-400.ttf)format('truetype')}@font-face{font-family:ibm plex mono;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono/ibm-plex-mono-400-italic.ttf)format('truetype')}:root{--complimentary:#815205;--text:#d8d8d8;--code:#cbcbcb;--text-dim:#a7a7a7;--link:#88a9e9;--link-visited:#a390ca;--code-background:#272727;--code-border:transparent;--code-hl:#5a5a5a;--border-general:#495057;--table-th:#414141;--table-tr:#343434;--toc-background:#343434;--toc-border:#495057;--font-body:'IBM Plex Sans', system-ui, sans-serif;--font-heading:'IBM Plex Sans', system-ui, sans-serif;--font-mono:'IBM Plex Mono', monospace;--text-base:clamp(1rem, 0.95rem + 0.25vw, 1.125rem);--text-h1:clamp(1.75rem, 1.5rem + 1.25vw, 2.5rem);--text-h2:clamp(1.4rem, 1.2rem + 1vw, 2rem);--text-h3:clamp(1.15rem, 1.05rem + 0.5vw, 1.4rem);--text-h4:clamp(1rem, 0.95rem + 0.25vw, 1.15rem);--text-small:clamp(0.85rem, 0.82rem + 0.15vw, 0.9375rem);--text-code:clamp(0.85rem, 0.82rem + 0.15vw, 0.925rem)}#gitinfo-date{color:var(--text-dim);filter:opacity(40%);font-style:italic;font-size:.9em;white-space:nowrap}@media screen and (min-width:760px){#gitinfo-date{margin-left:30px}}html{color:var(--text);scroll-behavior:smooth}body{margin:0;padding:0;font-family:var(--font-body);font-size:var(--text-base);line-height:1.6;text-align:justify}.page-content{margin:0 auto;padding:0 1em 2em}@media screen and (min-width:760px){.page-content{max-width:68vw}}@media screen and (min-width:1150px){.page-content{max-width:62vw}}main{hyphens:none}p{margin:.7em 0}h1{font-family:var(--font-heading);font-weight:400;margin-bottom:0;font-size:var(--text-h1);margin-top:0}h2{font-family:var(--font-heading);border-bottom:1px solid;border-color:var(--text-dim);margin-bottom:.5em;font-weight:400;font-size:var(--text-h2)}h3{font-family:var(--font-heading);font-size:var(--text-h3);font-weight:700;margin-bottom:.5em;margin-top:1.2em;padding-bottom:0}h4{font-family:var(--font-heading);font-size:var(--text-h4);margin-bottom:0;padding-bottom:0;font-style:oblique;font-weight:400}a{text-decoration:none;color:var(--link)}em{margin:0;padding:0}a:hover{text-decoration:underline}a:visited{color:var(--link-visited)}hr{border-style:dashed;color:var(--text-dim)}blockquote{border-left:.3rem solid var(--complimentary);font-style:oblique;margin:1.6rem 0;padding:0 1.4rem 0 1rem;line-height:1.6}blockquote p{margin:0}details{width:100%;border:2px solid var(--code-border);background:var(--code-background);padding-left:10px;padding-top:10px;padding-bottom:10px;border:none;margin-top:5px;margin-bottom:5px}summary{font-family:var(--font-heading);font-weight:600;padding-bottom:5px;padding-top:5px;width:100%}mark{padding:0 2px}ul{padding-left:2rem}strong{font-weight:600}th{font-weight:500}.section-title{border:0}.post-list{color:var(--complimentary);padding-left:1em}@media screen and (min-width:760px){.post-list{max-width:60vw}}.bold-post-in-list{font-weight:600}@media screen and (max-width:760px){.katex{font-size:1.05em!important}}.footnotes{margin-top:60px}.terms{padding-left:16px}footer{font-family:var(--font-heading);border-top:1px solid var(--border-general)}.main-nav{margin-bottom:16pt}.post-grid{display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr));margin:1rem 0;text-align:left}.post-card{padding:1rem;border:1px solid var(--border-general);background:var(--code-background);transition:border-color .2s ease}.post-card>img{display:block;width:100%;height:auto}.post-date{font-family:var(--font-heading);color:var(--text-dim);font-size:var(--text-small);font-style:italic}.post-title{font-family:var(--font-heading);margin:.5rem 0;font-size:1.25rem;font-weight:400;border:none}.post-title a{color:var(--text);text-decoration:none}.post-title a:hover{color:var(--link);text-decoration:none}.post-title a:visited{color:var(--link-visited)}.post-description{margin:.7em 0;color:var(--text-dim);line-height:1.54;max-height:200px;hyphens:none}.post-meta{font-family:var(--font-heading);margin-top:1rem;font-size:var(--text-small);color:var(--text-dim);display:flex;gap:1rem}.post-category{color:var(--complimentary)}@media screen and (max-width:760px){.post-grid{gap:1rem}.post-card{padding:.75rem}.post-meta{flex-direction:column;gap:.5rem}}.dialog-close{padding-top:5px;padding-bottom:5px;padding-left:7px;padding-right:7px;border-radius:0%;box-shadow:none;border-radius:0;border:0}.post-card .imgp img{max-height:200px;max-width:100%;width:100%;object-fit:cover}td{text-align:left}table{width:99%;table-layout:fixed;overflow-wrap:break-word}.software-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem;margin:1rem 0;text-align:left}.software-card{display:flex;flex-direction:column;padding:1rem;border:1px solid var(--border-general);background:var(--code-background)}.software-card-img{height:160px;overflow:hidden;margin-bottom:.8rem}.software-card-img img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}.software-card-body{flex:1;display:flex;flex-direction:column;justify-content:center}.software-card-title{font-family:var(--font-heading);margin:0 0 .4rem;font-size:1.25rem;font-weight:400;border:none}.software-card-title a{color:var(--text);text-decoration:none}.software-card-title a:hover{color:var(--link)}.software-card-title a:visited{color:var(--link-visited)}.software-card-desc{margin:0 0 .6rem;color:var(--text-dim);font-size:.95em;line-height:1.5}.software-card-meta{font-family:var(--font-heading);display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.software-label{font-family:var(--font-heading);display:inline-block;font-size:.8em;padding:.15em .5em;border:1px solid var(--border-general);color:var(--text-dim)}.software-status--active{border-color:#2a7d2a;color:#2a7d2a}.software-status--archived{border-color:var(--text-dim);color:var(--text-dim)}.software-status--experimental{border-color:#b8860b;color:#b8860b}.software-status--wip{border-color:#4a7fb5;color:#4a7fb5}.software-status--maintenu{border-color:#5a8a5a;color:#5a8a5a}.software-status--abandoned{border-color:#a04040;color:#a04040}.software-link{color:var(--text-dim);line-height:0}.software-link:visited{color:var(--text-dim)}.software-link:hover{color:var(--link)}.software-link svg{width:16px;height:16px}@media screen and (max-width:760px){.software-grid{grid-template-columns:1fr}}.toc a{color:var(--text-dim)}.toc a:visited{color:var(--text-dim)}@media screen and (min-width:1150px){#tableOfContentContainer{position:fixed;left:20px;top:46px;max-width:15vw;width:15vw}#TableOfContents{opacity:.6;transition-duration:1s}#TableOfContents:hover{opacity:1}}.toc{font-family:var(--font-heading);font-size:var(--text-small);animation-duration:1s;background:var(--toc-background)repeat;border:1px solid var(--toc-border);display:table;margin-bottom:1em;padding:.4em 1.5em .4em .2em;width:auto;margin-top:auto}@media screen and (min-width:1150px){.toc{padding:0;background-color:transparent;font-size:80%;line-height:1.3;border-right:0;border-top:0;border-bottom:0;border-left:0}#TableOfContents{max-height:85vh;overflow-y:auto}#TableOfContents li{max-width:13vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.toc li,.toc ul,.toc ul li{list-style:outside none none}.toc ul li a{transition-duration:50ms}.active-toc{font-weight:700;transition-duration:50ms}@media screen and (min-width:1150px){#TableOfContents{margin-left:-32px}}#TableOfContents ul{padding-left:20px}.toc h3{margin-left:20px;margin-top:.5em;margin-bottom:.5em;font-weight:400}@keyframes images{from{opacity:0}to{opacity:1}}img{max-height:70vh;margin:.5em 0;animation-duration:1s;animation-name:images}.imgp{margin:auto;text-align:center}figure{margin:auto;text-align:center}.imgp img,figure img{border-radius:0}figcaption{color:var(--text-dim);font-size:var(--text-small);text-align:center}figcaption h4{margin-top:0;font-weight:400}img,iframe,video{max-width:100%}.image-gallery,.image-gallery-img{list-style-type:none;display:flex;flex-wrap:wrap;justify-content:center;gap:10px;padding-left:0}.image-gallery{margin:0 0 1.2rem}.image-gallery-img{margin:0 0 2.6rem}.image-gallery>li,.image-gallery-img>li{flex-basis:440px}.image-gallery li img,.image-gallery-img li img{object-fit:cover;width:100%;height:100%;border-radius:0;vertical-align:middle}.three-image-gallery>li{flex-basis:290px}#single-header{padding:0 8px 4px 0;margin-bottom:20px;margin-top:10px}.date{font-family:var(--font-heading);color:var(--text-dim);padding-top:.1em;font-size:var(--text-small)}#single-meta{font-family:var(--font-heading);margin-top:0;margin-bottom:0;padding-top:0;font-size:var(--text-small)}#single-meta a:visited{color:var(--link)}#subtitle{font-family:var(--font-body);margin-top:-8px;margin-bottom:.3em;font-size:var(--text-h3);color:var(--text-dim)}.datesub{font-weight:400;color:var(--text-dim)}#tags{font-weight:400;color:var(--text-dim)}#tags a{filter:brightness(80%)}#tags a:visited{filter:brightness(80%)}@keyframes code-fade-in{from{opacity:0}to{opacity:1}}.highlight div,pre{background-color:var(--code-background);padding:.7em;overflow-x:auto;margin:0;border:1px solid var(--code-border);line-height:1.3}.highlight{margin:.8em 0}.highlight div pre{border:0;padding:0 5px;margin:0;box-shadow:0 0}code{font-family:var(--font-mono);color:var(--code);background:var(--code-background);padding:1px 4px;border:1px solid var(--code-border);font-size:var(--text-code)}pre code{font-size:var(--text-code);border:none;background:0 0;padding:0;margin:0;tab-size:4}.fs95{font-size:90%}.fs90{font-size:90%}.fs85{font-size:85%}.fs80{font-size:80%}.fs75{font-size:75%}.fs70{font-size:75%}.fs50{font-size:50%}.ln{user-select:none;margin-right:14px;color:#969696}.hl{background-color:var(--code-hl);outline-style:solid;outline-color:var(--code-hl);outline-width:.5px}.copy-code-button{display:none}@media screen and (min-width:760px){.copy-code-button{animation-duration:1s;animation-name:code-fade-in;margin-top:-22px;float:right;display:block;background-color:var(--code-background);border-color:var(--code-border);border-style:solid;border-width:1px 1px 0;color:var(--text-dim)}}table{border-collapse:collapse;display:block;overflow:auto}@media screen and (min-width:760px){table{display:table!important}}table thead th{border:1px solid var(--border-general)}th,td{padding:4px 8px;border:1px solid #c8c8c8;border:1px solid var(--border-general)}th{background-color:var(--table-th)}tr{background-color:var(--table-tr)}.attachments-files{display:block;font-size:1rem;margin:0}.attachment-size{display:inline-block;color:var(--text-dim)}.attachments ul{margin-top:4px}.attachments label{font-weight:400;margin:0}.md-columns{display:flex;flex-wrap:wrap;gap:1.5rem;align-items:flex-start;margin:1rem 0}.md-columns>div{flex:1 1;min-width:100px}.md-columns>div[style*=width]{flex:none}.md-columns img{max-width:100%;height:auto}.md-columns .markdown-inner{margin-top:0;margin-bottom:0}.md-tabs{margin-top:1rem;margin-bottom:1rem;border:1px solid var(--border-general);overflow:hidden;display:flex;flex-wrap:wrap}.md-tabs label{display:inline-block;padding:.6rem .2rem .3rem;border-bottom:1px transparent;cursor:pointer}.md-tabs .md-tabs-content{order:999;width:100%;border-top:1px solid var(--border-general);padding:.5rem 1rem 1rem;display:none}.md-tabs input[type=radio]{margin-left:1.1rem}.md-tabs input[type=radio]:checked+label+.md-tabs-content{display:block}.zebra-list ul{list-style:none;padding-left:0;margin:0}.zebra-list ul li{padding:.5em .75em;line-height:1.5}.zebra-list ul li:nth-child(odd){background-color:var(--table-tr)}