:root{--color-primary-dark:#50fa7b;--color-primary-hover-dark:#3dd458;--color-border-dark:#0066ff;--color-text-dark:#ffffff;--color-text-muted-dark:#dddddd;--color-background-dark:#202124;--color-background-code-dark:#3a3a3a;--color-background-pre-dark:#272822;--color-background-toc-dark:#272822;--color-background-draft-dark:#0066ff;--content-max-width:55rem;--content-padding:1ch;--border-radius:5px;--font-size-base:1.1rem;--line-height-base:1.6;--line-height-content:1.5}*,*::before,*::after{box-sizing:border-box}@font-face{font-display:swap;font-family:ibm plex mono regular;src:url(/fonts/IBMPlexMono-Regular.woff2)format("woff2");font-style:normal;font-weight:400}html{color:var(--color-text,#232333);font-family:ibm plex mono regular,ui-monospace,monospace;font-size:var(--font-size-base,1.1rem);line-height:var(--line-height-base,1.6);scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{margin:8px;color:var(--color-text-dark,#ffffff);background-color:var(--color-background-dark,#202124);transition:background-color .2s ease,color .2s ease}*{-webkit-tap-highlight-color:transparent}::selection{background:var(--color-primary-dark,#50fa7b);color:#000;text-shadow:none}::-moz-selection{background:var(--color-primary-dark,#50fa7b);color:#000;text-shadow:none}p{font-family:ibm plex mono regular,system-ui,-apple-system,sans-serif;line-height:var(--line-height-content,1.5);margin-top:.5em;margin-bottom:.5em;line-height:1.5em}@supports(margin-block:0.5em){p{margin-top:unset;margin-bottom:unset;margin-block:.5em}}hr{border:0;border-block-start:3px dotted var(--color-border-dark,#0066ff);border-top:3px dotted var(--color-border-dark,#0066ff);margin-top:1em;margin-bottom:1em}@supports(border-block-start:3px dotted var(--color-border-dark,#0066ff)){hr{border-top:unset;margin-top:unset;margin-bottom:unset;border-block-start:3px dotted var(--color-border-dark,#0066ff);margin-block:1em}}blockquote{border-left:3px solid var(--color-border-dark,#0066ff);padding-left:1em;margin:0;font-style:italic;color:var(--color-text-muted-dark,#dddddd)}@supports(border-inline-start:3px solid var(--color-border-dark,#0066ff)){blockquote{border-left:unset;padding-left:unset;border-inline-start:3px solid var(--color-border-dark,#0066ff);padding-inline-start:1em;color:var(--color-text-muted-dark,#dddddd)}}a{border-bottom:3px solid var(--color-primary-dark,#50fa7b);border-block-end:3px solid var(--color-primary-dark,#50fa7b);color:inherit;text-decoration:none;transition:background-color .2s ease,color .2s ease}a:hover,a:focus{outline:2px solid var(--color-primary-dark,#50fa7b);outline-offset:2px;background-color:var(--color-primary-dark,#50fa7b);color:#000;outline-color:var(--color-primary-dark,#50fa7b)}a:focus{outline-style:solid}.list-item{line-height:2em}.list-item .title{margin-block:1em 0}ul{list-style:none;padding-left:2ch;padding-inline-start:2ch;line-height:1.8em}ul li{text-indent:-2ch}ul>li::before{content:'* ';font-weight:700;color:var(--color-primary-dark,#50fa7b)}img{border:3px solid var(--color-background-pre-dark,#272822);max-width:100%;height:auto;max-inline-size:100%;block-size:auto;border-radius:var(--border-radius,5px)}figure{display:inline-block;margin:0;max-width:100%;max-inline-size:100%}figure img{max-height:500px;max-block-size:500px}@media screen and (min-width:37.5em){figure{padding-left:2.5rem;padding-right:2.5rem;padding-inline:2.5rem}}figure h4{font-size:1rem;margin:0;margin-bottom:1em;margin-block-end:1em}figure h4::before{content:'↳ ';color:var(--color-primary-dark,#50fa7b)}code{background-color:var(--color-background-code-dark,#3a3a3a);color:var(--color-text-dark,#ffffff);font-family:ibm plex mono regular,ui-monospace,monospace;padding:.1em .2em;border-radius:3px;font-size:.9em}pre{background-color:var(--color-background-pre-dark,#272822);line-height:1.4;overflow-x:auto;padding:1em;border-radius:var(--border-radius,5px);border:1px solid var(--color-border-dark,#0066ff)}.highlight pre ::selection{background:rgba(255,255,255,.2);color:inherit}pre code{background-color:transparent;color:inherit;font-size:100%;padding:0}.content{margin-bottom:4em;margin-left:auto;margin-right:auto;max-width:var(--content-max-width,55rem);padding-left:var(--content-padding,1ch);padding-right:var(--content-padding,1ch);margin-block-end:4em;margin-inline:auto;max-inline-size:var(--content-max-width,55rem);padding-inline:var(--content-padding,1ch);word-wrap:break-word;overflow-wrap:break-word}header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;margin-top:1em;margin-bottom:1em;margin-block:1em;line-height:2.5em;gap:1rem}header .main{font-size:1.5rem;font-weight:700}h1,h2,h3,h4,h5,h6{color:var(--color-text-muted-dark,#dddddd);font-size:1.2rem;margin-top:2em;margin-bottom:.5em;margin-block-start:2em;margin-block-end:.5em;line-height:1.6em}h1::before{color:var(--color-primary-dark,#50fa7b);content:'# '}h2::before{color:var(--color-primary-dark,#50fa7b);content:'## '}h3::before{color:var(--color-primary-dark,#50fa7b);content:'### '}h4::before{color:var(--color-primary-dark,#50fa7b);content:'#### '}h5::before{color:var(--color-primary-dark,#50fa7b);content:'##### '}h6::before{color:var(--color-primary-dark,#50fa7b);content:'###### '}.meta{color:var(--color-text-muted-dark,#dddddd);letter-spacing:-.5px;font-size:.9em}.post-container{display:flex;flex-wrap:wrap;gap:1.25rem;align-items:flex-start}@supports(display:grid){.post-container{display:grid;grid-template-columns:1fr}}@media screen and (min-width:60em){.post-container{flex-wrap:nowrap}@supports(display:grid){.post-container{grid-template-columns:1fr auto}}}.post-content{flex:1;min-width:0;min-inline-size:0;overflow-wrap:break-word}.toc{background-color:var(--color-background-toc-dark,#272822);color:var(--color-text-dark,#ffffff);border-radius:var(--border-radius,5px);max-width:18.75rem;flex:none;max-inline-size:18.75rem;overflow-y:auto;padding:.75rem;border:1px solid var(--color-border-dark,#0066ff)}@media screen and (min-width:60em){.toc{position:sticky;top:1.25rem;inset-block-start:1.25rem}}@media screen and (max-width:59.99em){.toc{margin-bottom:1.5rem;margin-block-end:1.5rem;order:-1}}.header nav,footer{display:flex;align-items:center;border-top:.4rem dotted var(--color-border-dark,#0066ff);padding-top:2rem;padding-bottom:2rem;margin-top:2rem;border-block-start:.4rem dotted var(--color-border-dark,#0066ff);padding-block:2rem;margin-block-start:2rem;gap:.5rem;flex-wrap:wrap}.soc{display:flex;align-items:center;border-bottom:none;border-block-end:none;transition:color .2s ease}.soc:hover,.soc:focus{color:#000;outline:2px solid var(--color-primary-dark,#50fa7b);outline-offset:2px}.border{margin-inline:.5rem;border:1px solid var(--color-border-dark,#0066ff)}.title h1{margin-bottom:0;margin-block-end:0}time{color:var(--color-text-muted-dark,#dddddd);font-size:.9em}article .title{margin-bottom:1em;margin-block-end:1em}.callout{background-color:var(--color-background-pre-dark,#272822);color:var(--color-text-dark,#ffffff);padding:1em;border-radius:var(--border-radius,5px);margin-top:1em;margin-bottom:1em;margin-block:1em}.callout p{font-family:ibm plex mono regular,ui-monospace,monospace;margin:0}.callout a{border-bottom:3px solid #fff;border-block-end:3px solid #ffffff;color:inherit}.callout a:hover,.callout a:focus{background-color:#fff;color:var(--color-callout,#1e90ff)}.callout-alert{border:3px solid #842029;color:#f8d7da;background-color:#2d1b1d}.callout-tip{border:3px solid #0f5132;color:#d1ecf1;background-color:#0c2428}.callout-warning{border:3px solid #997404;color:#fff3cd;background-color:#332701}.callout-custom{color:var(--color-text-dark,#ffffff)}.site-description{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}.site-description a{color:var(--color-text-muted-dark,#dddddd)}.site-description a:hover,.site-description a:focus{color:#000}.site-title a{color:var(--color-text-dark,#ffffff);text-decoration:none!important}.tags{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;padding:0}.tags li::before{content:"🏷 ";margin-inline-start:2rem}.tags a{border-bottom:3px solid var(--color-primary-dark,#50fa7b);border-block-end:3px solid var(--color-primary-dark,#50fa7b);padding:.25rem .5rem;border-radius:3px;transition:all .2s ease}.tags a:hover,.tags a:focus{background-color:var(--color-primary-dark,#50fa7b);color:#000}svg{max-height:1rem;max-width:1rem;max-block-size:1rem;max-inline-size:1rem}.feather{width:1.5rem;height:1.5rem;inline-size:1.5rem;block-size:1.5rem;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none;display:inline-block;vertical-align:middle}.draft-label{color:var(--color-text-dark,#ffffff);text-decoration:none;padding:.125rem .25rem;border-radius:4px;margin-left:.375rem;margin-inline-start:.375rem;background-color:var(--color-background-draft-dark,#0066ff);font-size:.8em;font-weight:700}.highlight{background-color:var(--color-background-pre-dark,#272822);position:relative;-webkit-overflow-scrolling:touch;border-radius:var(--border-radius,5px);overflow:inherit}.highlight pre code[class*=language-]{-webkit-overflow-scrolling:touch}.highlight pre code[class*=language-]::before{background:#000;border-radius:0 0 .25rem .25rem;color:#fff;font-size:.75rem;font-weight:700;letter-spacing:.025rem;padding:.1rem .5rem;position:absolute;right:1rem;top:0;inset-inline-end:1rem;inset-block-start:0;text-align:right;text-transform:uppercase}.highlight pre code[class*=language-js]::before,.highlight pre code[class=language-javascript]::before{content:"js";background:#f7df1e;color:#000}.highlight pre code[class*=language-ts]::before{content:"ts";background:#3178c6;color:#fff}.highlight pre code[class*=language-py]::before,.highlight pre code[class*=language-python]::before{content:"python";background:#3776ab;color:#fff}.highlight pre code[class*=language-go]::before{content:"go";background:#00add8;color:#fff}.highlight pre code[class*=language-css]::before{content:"css";background:#1572b6;color:#fff}.highlight pre code[class*=language-html]::before{content:"html";background:#e34f26;color:#fff}.highlight pre code[class*=language-json]::before{content:"json";background:#000;color:#fff}.highlight pre code[class*=language-yml]::before,.highlight pre code[class*=language-yaml]::before{content:"yaml";background:#cc1018;color:#fff}.highlight pre code[class*=language-shell]::before,.highlight pre code[class*=language-bash]::before,.highlight pre code[class*=language-sh]::before{content:"shell";background:#4eaa25;color:#fff}.highlight pre code[class*=language-md]::before,.highlight pre code[class*=language-markdown]::before{content:"markdown";background:#083fa1;color:#fff}table{border-spacing:0;border-collapse:collapse;width:100%;margin-top:1rem;margin-bottom:1rem;inline-size:100%;margin-block:1rem;overflow:auto;display:block;box-shadow:0 1px 3px rgba(0,0,0,.1)}table th{padding:.75rem;border:1px solid var(--color-border-dark,#0066ff);font-weight:700;text-align:start;background-color:var(--color-background-pre-dark,#272822);color:var(--color-text-dark,#ffffff)}table td{padding:.75rem;border:1px solid var(--color-border-dark,#0066ff);color:var(--color-text-dark,#ffffff)}table tr:nth-child(even){background-color:var(--color-background-code-dark,#3a3a3a)}nav{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.nav-toggle{appearance:none;-webkit-appearance:none;-moz-appearance:none;border:none;background:0 0;margin:0;font:inherit;cursor:pointer;padding:.5rem;border-radius:4px;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center}.nav-toggle{color:var(--color-text-dark,#ffffff)}.nav-toggle:hover,.nav-toggle:focus{outline:2px solid var(--color-primary-dark,#50fa7b);outline-offset:2px;background-color:var(--color-primary-dark,#50fa7b);color:#000}.nav-toggle:focus{outline-style:solid}.nav-toggle:active{transform:scale(.95)}@media(max-width:37.4em){.content{padding-left:.5rem;padding-right:.5rem;padding-inline:.5rem}header{flex-direction:column;align-items:flex-start;gap:.5rem}.site-description{flex-direction:column;align-items:flex-start}}