:root{--color-background:#252525;--color-text-primary:#e0e0e0;--color-accent:#6ab0f3;--color-accent-hover:#8ec4f6;--color-surface:#1e1e1e;--color-text-secondary:#b0b0b0;--color-text-inverse:#ffffff;--color-border-light:rgba(255, 255, 255, 0.1);--color-border-medium:rgba(255, 255, 255, 0.25);--color-border-strong:rgba(255, 255, 255, 0.5);--color-accent-transparent:rgba(106, 176, 243, 0.3);--color-highlight:rgba(255, 255, 255, 0.1);--font-size-big:2.7em;--font-size-medium:2.0em;--font-size-small:1.0em;--font-size-h1:var(--font-size-big);--font-size-h2:1.8em;--font-size-h3:1.5em;--font-size-h4:1.3em;--font-size-h5:1.2em;--font-size-h6:1.1em;--font-size-body:1.1em;--font-size-note:1.05em;--font-size-base:18px}*,*::before,*::after{box-sizing:inherit}html{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Helvetica,Arial,sans-serif,apple color emoji,segoe ui emoji,noto color emoji;font-size:var(--font-size-base);font-weight:400;line-height:1.65}body{margin:0;display:block;color:var(--color-text-primary);background-color:var(--color-background);word-break:normal;word-wrap:break-word;hyphens:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;text-size-adjust:100%;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}p{margin:0}hr{margin:0;border:none;border-top:1px inset}ol,ul{margin:0;padding:0}dl{margin:0}dd{margin-left:0}blockquote{margin:0;quotes:none}h1,h2,h3,h4,h5,h6{margin:0;font-weight:600;line-height:1.25;color:var(--color-text-primary)}strong,b{font-weight:600}pre{margin:0;white-space:pre;word-break:normal;word-wrap:normal}tt,code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,sf mono,cascadia code,jetbrains mono,source code pro,Menlo,Consolas,liberation mono,monospace}svg,img{max-width:100%;border:none}table{border-spacing:0;border-collapse:collapse;line-height:inherit;font-weight:400;font-size:inherit}th{font-weight:600}td,th{padding:0}mark{color:currentColor;background-color:#515b70;padding-left:.15em;padding-right:.15em;border-radius:3px}h1{font-size:var(--font-size-h1)}h2{font-size:var(--font-size-h2)}h3{font-size:var(--font-size-h3)}h4{font-size:var(--font-size-h4)}h5{font-size:var(--font-size-h5)}h6{font-size:var(--font-size-h6)}code,tt,kbd,samp{font-weight:400;font-size:85%;background-color:var(--color-highlight);color:var(--color-text-primary);padding:.2em .4em;margin:0;border-radius:3px;hyphens:none}pre{display:block;text-align:left;font-size:80%;line-height:1.5em;padding:16px;border-radius:3px;background-color:var(--color-surface);color:var(--color-text-primary);tab-size:4;overflow:auto}pre code,pre kbd,pre tt,pre samp{display:inline;font-size:inherit;color:inherit;padding:0;border-radius:0;background-color:initial}a{color:var(--color-accent);text-decoration:none;-webkit-tap-highlight-color:transparent;text-decoration-skip:objects}a:hover{color:var(--color-accent-hover);text-decoration:underline}del{opacity:.5}abbr,acronym{cursor:help}table thead{color:var(--color-text-primary)}table tr:nth-child(even){background-color:rgba(51,54,58,.35)}*{scrollbar-width:auto;scrollbar-color:var(--color-border-medium)transparent}*::-webkit-scrollbar{width:12px;height:12px}*::-webkit-scrollbar-track-piece{background:0 0}*::-webkit-scrollbar-track{background:0 0}*::-webkit-scrollbar-thumb{background-color:var(--color-border-medium);background-clip:padding-box;border-radius:6px;border:2px solid transparent}*::-webkit-scrollbar-thumb:hover{background-color:var(--color-border-strong)}#header{padding-top:32px;padding-bottom:32px;background-color:var(--color-surface)}#header>*{max-width:930px;margin-left:auto;margin-right:auto;padding-left:24px;padding-right:24px}#content{display:block;margin:0 auto;max-width:930px}#footer{font-size:.75em;margin-top:48px;margin-bottom:30px;padding-left:15px;padding-right:15px}.footer-wrap{display:block;text-align:center}.site.home:hover{opacity:.5;text-decoration:none}.site.logo{height:42px;border-radius:3px;vertical-align:middle;margin-right:8px}.site.name{font-size:var(--font-size-big);font-family:space mono,monospace;font-weight:600;color:var(--color-text-primary);text-decoration:underline;text-decoration-color:var(--color-accent)}.site.slogan{margin-top:0;text-align:left}.site-slogan-text{font-size:.9em;color:var(--color-text-secondary);margin-left:.75em}.header-nav{text-align:left;margin-top:8px}.nav.item{display:inline-block;padding:6px 14px;font-size:1.05em;letter-spacing:.01em;border-left:1px solid var(--color-border-medium);text-decoration:underline}.nav.item:first-child{border-left:none;padding-left:0}.nav.item:last-child{padding-right:0}.nav.item:hover{opacity:1;color:var(--color-accent);text-decoration:none}.nav.item[target=_blank]::after{content:" ↗";font-size:.75em;vertical-align:super;text-decoration:none;display:inline-block}.note.list{margin:0;padding:0;list-style:none}.note.list .item{width:100%;margin-top:16px;padding:24px;background-color:initial;border-radius:0;box-shadow:none}.note.list .item a.note{border-left:3px solid var(--color-accent);padding-left:16px}.note{display:block;text-decoration:none}.note:hover{text-decoration:none}.note.title,.note.date,.note.content{margin:5px 0}.note.title{font-size:1.125em;font-weight:600;color:var(--color-text-primary)}.note.date{font-size:var(--font-size-small);color:var(--color-accent)}.note.content{font-size:var(--font-size-note);color:var(--color-text-primary)}.date{font-size:.875em;color:var(--color-accent)}.slogan,.license{color:var(--color-accent)}.title{color:var(--color-text-primary)}.article-container{padding:24px;border-radius:6px;background-color:initial;box-shadow:none}.article.header{text-align:left;margin-top:4px;margin-bottom:24px}.article.header .article.title{margin-bottom:0}.article.header .article.date{margin-top:.25em}.article.date{margin-top:24px}.article-title,h1.article-title,.article h1{font-size:var(--font-size-big)}.article-author{color:var(--color-text-secondary);text-decoration:underline;text-decoration-color:var(--color-accent)}.article-date-value{color:var(--color-text-secondary)}.cover{width:100%}.article{font-size:var(--font-size-body)}.article.markdown-body{display:block;margin-top:20px;margin-bottom:20px}.article.markdown-body h1,.article.markdown-body h2,.article.markdown-body h3,.article.markdown-body h4,.article.markdown-body h5,.article.markdown-body h6{color:var(--color-text-primary);margin-top:24px;margin-bottom:20px}.article.markdown-body img{border-radius:3px}.article.markdown-body blockquote,.article.markdown-body q{color:var(--color-text-secondary)}.article.markdown-body blockquote{padding:0 1em;border-left:.25em solid var(--color-border-light)}.article.markdown-body q::before,.article.markdown-body q::after{opacity:.6}.article.markdown-body q::before{content:"\275D"}.article.markdown-body q::after{content:"\275E"}.article.markdown-body ol,.article.markdown-body ul{margin-bottom:20px;padding-left:40px}.article.markdown-body hr{opacity:.4;border-top-style:dashed;border-top-color:inherit}.article.markdown-body table{display:block;width:100%;overflow:auto}.article.markdown-body table tr{border:0}.article.markdown-body table th{font-weight:600}.article.markdown-body table td,.article.markdown-body table th{min-width:86px;padding:6px 13px;border:1px solid var(--color-border-light)}.article.markdown-body table th:empty{padding:0;border:0}.article.markdown-body .plstable th{max-width:25%}.article.markdown-body li+li{margin-top:.5em}.article.markdown-body>*,.article.markdown-body li>*,.article.markdown-body blockquote>*,.article.markdown-body .footnotes>*{margin-top:20px;margin-bottom:20px}.article.markdown-body>:first-child,.article.markdown-body li>:first-child,.article.markdown-body blockquote>:first-child{margin-top:20px}.article.markdown-body>:last-child,.article.markdown-body li>:last-child,.article.markdown-body blockquote>:last-child{margin-bottom:0}.image-container,.image-container .link,.image-container .caption{display:block}.image-container{text-align:center}.image-container .title{display:inline-block;opacity:.6;font-size:.875em;text-align:initial;min-height:22px;padding:10px 5px}.pagination{display:block;text-align:center;margin:30px 0}.pagination ul{display:inline-block;list-style:none;font-weight:600;padding:0;margin:0}.pagination ul li{display:inline}.pagination ul li a{color:var(--color-accent);float:left;padding:8px 16px;text-decoration:none}.pagination ul li a.active{background-color:var(--color-accent);color:var(--color-background)}.pagination ul li a:hover:not(.active){background-color:var(--color-accent-transparent)}.callout{margin:1.5em 0;padding:1em 1.5em;border-left:4px solid var(--color-accent);border-radius:0 4px 4px 0;font-style:italic;background-color:var(--color-highlight)}.callout a{color:var(--color-accent)}.callout a:hover{color:var(--color-accent-hover)}.heading-anchor{color:var(--color-border-medium);text-decoration:none;margin-left:.3em;font-weight:400;opacity:0;transition:opacity .15s ease}h1:hover .heading-anchor,h2:hover .heading-anchor,h3:hover .heading-anchor,h4:hover .heading-anchor,h5:hover .heading-anchor,h6:hover .heading-anchor{opacity:1}.heading-anchor:hover{color:var(--color-accent);text-decoration:none}.article.markdown-body img[alt="Kelby Ludwig"]{width:128px;height:128px;border-radius:50%;float:left;margin:0 1.5em 1em 0}@media(max-width:768px){#content{max-width:100%;padding:0 16px}.note.list .item,.article-container{padding:20px;border-radius:0}.article.bottom{padding-left:8px;padding-right:8px}.site-slogan-text{display:block;margin-left:0;margin-top:.1em}.nav.item{font-size:.85em;padding:6px 10px}}.bg{color:#f8f8f2;background-color:#2b2b2b}.chroma{color:#f8f8f2;background-color:#2b2b2b}.chroma .err{}.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:#3d3d3d}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.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 .ch{color:#d4d0ab}.chroma .cm{color:#d4d0ab}.chroma .c1{color:#d4d0ab}.chroma .cs{color:#d4d0ab}.chroma .cp{color:#d4d0ab}.chroma .cpf{color:#d4d0ab}.chroma .c{color:#d4d0ab}.chroma .nt{color:#ffa07a}.chroma .nc{color:#ffa07a}.chroma .nx{color:#ffa07a}.chroma .gd{color:#ffa07a}.chroma .m{color:#f5ab35}.chroma .mb{color:#f5ab35}.chroma .mf{color:#f5ab35}.chroma .mh{color:#f5ab35}.chroma .mi{color:#f5ab35}.chroma .il{color:#f5ab35}.chroma .mo{color:#f5ab35}.chroma .nb{color:#f5ab35}.chroma .bp{color:#f5ab35}.chroma .l{color:#f5ab35}.chroma .ld{color:#f5ab35}.chroma .kc{color:#f5ab35}.chroma .kt{color:#f5ab35}.chroma .nd{color:#f5ab35}.chroma .na{color:gold}.chroma .s{color:#abe338}.chroma .sa{color:#abe338}.chroma .sb{color:#abe338}.chroma .sc{color:#abe338}.chroma .dl{color:#abe338}.chroma .sd{color:#abe338}.chroma .s2{color:#abe338}.chroma .se{color:#abe338}.chroma .sh{color:#abe338}.chroma .si{color:#abe338}.chroma .sx{color:#abe338}.chroma .sr{color:#abe338}.chroma .s1{color:#abe338}.chroma .ss{color:#abe338}.chroma .gi{color:#abe338}.chroma .nf{color:#00e0e0}.chroma .fm{color:#00e0e0}.chroma .gu{color:#00e0e0}.chroma .no{color:#00e0e0}.chroma .ne{color:#00e0e0}.chroma .nn{color:#00e0e0}.chroma .k{color:#dcc6e0}.chroma .kd{color:#dcc6e0}.chroma .kn{color:#dcc6e0}.chroma .kp{color:#dcc6e0}.chroma .kr{color:#dcc6e0}.chroma .o{color:#dcc6e0}.chroma .ow{color:#dcc6e0}.chroma .ge{font-style:italic}.chroma .gs{font-weight:700}