:root{--measure: 70ch;--ratio: 1.5;--s-5: calc(var(--s-4) / var(--ratio));--s-4: calc(var(--s-3) / var(--ratio));--s-3: calc(var(--s-2) / var(--ratio));--s-2: calc(var(--s-1) / var(--ratio));--s-1: calc(var(--s0) / var(--ratio));--s0: 1rem;--s1: calc(var(--s0) * var(--ratio));--s2: calc(var(--s1) * var(--ratio));--s3: calc(var(--s2) * var(--ratio));--s4: calc(var(--s3) * var(--ratio));--s5: calc(var(--s4) * var(--ratio));--font-xs: clamp(.7813rem, .7736rem + .0341vw, .8rem);--font-sm: clamp(.9375rem, .9119rem + .1136vw, 1rem);--font-base: clamp(1.125rem, 1.0739rem + .2273vw, 1.25rem);--font-md: clamp(1.35rem, 1.2631rem + .3864vw, 1.5625rem);--font-lg: clamp(1.62rem, 1.4837rem + .6057vw, 1.9531rem);--font-xl: clamp(1.944rem, 1.7405rem + .9044vw, 2.4414rem);--font-2xl: clamp(2.3328rem, 2.0387rem + 1.3072vw, 3.0518rem);--font-3xl: clamp(2.7994rem, 2.384rem + 1.8461vw, 3.8147rem);--font-antique: Superclarendon, "Bookman Old Style", "URW Bookman", "URW Bookman L", "Georgia Pro", Georgia, serif;--font-classical-humanist: Optima, Candara, "Noto Sans", source-sans-pro, sans-serif;--font-didone: Didot, "Bodoni MT", "Noto Serif Display", "URW Palladio L", P052, Sylfaen, serif;--font-geohumanist: "Avenir", "Montserrat", "Corbel", "URW Gothic", "source-sans-pro", "sans-serif";--font-handwritten: "Segoe Print", "Bradley Hand", Chilanka, TSCu_Comic, casual, cursive;--font-humanist: Seravek, "Gill Sans Nova", Ubuntu, Calibri, "DejaVu Sans", source-sans-pro, sans-serif;--font-industrial: Bahnschrift, "DIN Alternate", "Franklin Gothic Medium", "Nimbus Sans Narrow", sans-serif-condensed, sans-serif;--font-mono-code: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, "DejaVu Sans Mono", monospace;--font-mono-slab: "Nimbus Mono PS", "Courier New", monospace;--font-neogrotesque: Inter, Roboto, "Helvetica Neue", "Arial Nova", "Nimbus Sans", Arial, sans-serif;--font-old-style: "Iowan Old Style", "Palatino Linotype", "URW Palladio L", P052, serif;--font-rounded-sans: ui-rounded, "Hiragino Maru Gothic ProN", Quicksand, Comfortaa, Manjari, "Arial Rounded MT", "Arial Rounded MT Bold", Calibri, source-sans-pro, sans-serif;--font-slab-serif: Rockwell, "Rockwell Nova", "Roboto Slab", "DejaVu Serif", "Sitka Small", serif;--font-system-ui: system-ui, sans-serif;--font-transitional: Charter, "Bitstream Charter", "Sitka Text", Cambria, serif;--font-body: var(--gh-font-body, var(--font-transitional, sans-serif));--font-display: var(--gh-font-heading, Inter, sans-serif);--font-mono: var(--font-mono-code, monospace);--font-display-weight-base: 300;--font-display-weight-bold: 500;--color-neutral-50: #f4f3f2;--color-neutral-100: #e2e1df;--color-neutral-200: #c8c4c0;--color-neutral-300: #a8a29c;--color-neutral-400: #8f8780;--color-neutral-500: #79716b;--color-neutral-600: #6e6460;--color-neutral-700: #59524f;--color-neutral-800: #4d4846;--color-neutral-900: #453f3e;--color-neutral-950: #262322;--color-accent-light: #abf0c5;--color-accent-med-light: #5e9c73;--color-accent-med: #395042;--color-accent-dark: #222f27;--color-border: var(--color-neutral-300)}@supports (font-variation-settings: normal){:root{--font-display: var(--gh-font-heading, InterVariable, sans-serif)}}*,*:before,*:after{box-sizing:border-box}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none;hanging-punctuation:first allow-end last;word-break:break-word}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin-inline:0;margin-block-end:0}ul[role=list],ol[role=list]{list-style:none}body{min-height:100vh;line-height:1.5}h1,h2,h3,h4,button,input,label{line-height:1.1}h1,h2,h3,h4,h5,h6{margin-block-start:0;text-wrap:balance}a{text-decoration-skip-ink:auto;color:currentColor}img,picture{max-inline-size:100%;display:block}input,button,textarea,select{font-family:inherit;font-size:inherit}input,select,textarea,button{font:inherit}label{display:block}input:not(:where([type=submit],[type=checkbox],[type=radio],[type=button],[type=reset])){inline-size:100%}button,input:where([type=submit],[type=reset],[type=button]){background:CanvasText;color:Canvas;border:1px solid transparent}textarea:not([rows]){min-height:10em}:target{scroll-margin-block:5ex}table{caption-side:bottom;border-collapse:collapse}table td,table th{word-break:normal;border:1px solid gray;padding:.5rem}[role=region][aria-labelledby][tabindex]{overflow:auto}caption{font-size:90%}@media (prefers-reduced-motion: no-preference){html{interpolate-size:allow-keywords}html:focus-within{scroll-behavior:smooth}}body{display:flex;flex-wrap:wrap;gap:2rem;padding:2vw}body>header{flex-basis:20rem;flex-grow:1}body>main{flex-basis:0;flex-grow:999;min-inline-size:50%}body>footer{min-inline-size:100%;border-block-start:thin solid var(--color-border);padding-block:var(--s2)}article-list>*+*{margin-block-start:var(--s2)}article-list article:not(:last-child){padding-bottom:var(--s2);border-block-end:thin solid var(--color-neutral-100)}@media (prefers-color-scheme: dark){article-list article:not(:last-child){border-block-end:thin solid var(--color-neutral-700)}}:root{font-family:var(--font-body);font-size:var(--font-base);font-feature-settings:"zero","tnum","case","cpsp","dlig","ss01","ss02","ss03","cv10"}h1,h2,h3,h4,h5,h6,body>footer,article footer,article post-meta{font-family:var(--font-display);font-weight:var(--font-display-weight-base)}h1{font-size:var(--font-2xl)}h2{font-size:var(--font-lg)}h3{font-size:var(--font-md)}h4{font-size:var(--font-base)}h5{font-size:var(--font-sm)}h6{font-size:var(--font-xs)}article>content{font-size:var(--font-base)}article>content pre{font-size:var(--font-xs)}.sr-only{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.underline{text-decoration:underline!important}code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:none;font-family:Fira Code,Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2e3440}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#636f88}.token.punctuation{color:#81a1c1}.namespace{opacity:.7}.token.property,.token.tag,.token.constant,.token.symbol,.token.deleted{color:#81a1c1}.token.number{color:#b48ead}.token.boolean{color:#81a1c1}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#a3be8c}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string,.token.variable{color:#81a1c1}.token.atrule,.token.attr-value,.token.function,.token.class-name{color:#88c0d0}.token.keyword{color:#81a1c1}.token.regex,.token.important{color:#ebcb8b}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.prose pre code{text-shadow:none;font-size:inherit}.content{--card-bg-white: #ffffff;--card-bg-grey: #abb4be33;--card-bg-blue: #14b8ff33;--card-bg-green: #30cf4333;--card-bg-yellow: #ffb41f33;--card-bg-red: #f50b2333;--card-bg-pink: #fb2d8d33;--card-bg-purple: #8e42ff33}.content .kg-width-wide{position:relative;width:70vw;margin-left:calc(var(--spacing) * -12);margin-right:0}.content .kg-width-full{position:relative;width:99vw;margin-left:calc(var(--spacing) * -12);margin-right:0}.content .kg-callout-bg-white,.content .kg-cta-bg-white{background-color:var(--card-bg-white)}.content .kg-callout-bg-grey,.content .kg-cta-bg-grey{background-color:var(--card-bg-grey)}.content .kg-callout-bg-blue,.content .kg-cta-bg-blue{background-color:var(--card-bg-blue)}.content .kg-callout-bg-green,.content .kg-cta-bg-green{background-color:var(--card-bg-green)}.content .kg-callout-bg-yellow,.content .kg-cta-bg-yellow{background-color:var(--card-bg-yellow)}.content .kg-callout-bg-red,.content .kg-cta-bg-red{background-color:var(--card-bg-red)}.content .kg-callout-bg-pink,.content .kg-cta-bg-pink{background-color:var(--card-bg-pink)}.content .kg-calloiut-bg-purple,.content .kg-cta-bg-purple{background-color:var(--card-bg-purple)}.content .kg-header-card{margin-top:3rem;margin-bottom:3rem}.content .kg-header-card.kg-width-wide,.content .kg-header-card.kg-width-full{padding:calc(var(--spacing) * 12)}.content .kg-header-card.kg-layout-split{padding:0}.content .kg-header-card.kg-layout-split picture{margin-top:0;margin-bottom:0}.content .kg-image-card figcaption{text-align:center}.content .kg-code-card pre{border-radius:.375rem .375rem 0 0}.content .kg-code-card figcaption{font-size:.7rem;font-family:var(--font-display);margin-top:0;background-color:#2e3440;color:var(--color-neutral-200);border-radius:0 0 .375rem .375rem;padding-left:1em;padding-bottom:.5em}.content .kg-code-card figcaption p{margin:0}:root{color-scheme:light dark}:root :focus-visible{outline:3px solid var(--color-accent-light);box-shadow:0 0 0 6px var(--color-accent-dark)}body{background-attachment:fixed;background-image:url(./grain-BZeuK0h3.svg);color:var(--color-neutral-900)}@media (prefers-color-scheme: dark){body{background-image:url(./grain-light-Ct2wqvdV.svg);color:var(--color-neutral-100)}}body>header h1{font-size:var(--font-lg)}body>header a{text-decoration:none}body>header nav ul{list-style:none;padding:0;font-family:var(--font-display);font-weight:var(--font-display-weight-base);font-size:var(--font-md);line-height:var(--font-lg)}body>header nav a:hover{text-decoration:underline}body>header nav menu{display:flex;flex-wrap:wrap;gap:var(--s-1);justify-content:flex-start;list-style:none;padding:0}body>header nav menu svg{font-size:var(--font-lg)}body>header nav search button{background:none;color:inherit;padding:0}masthead a{display:flex;flex-wrap:wrap;gap:1rem;justify-content:flex-start;align-items:center}masthead h1{flex:1}masthead img{max-width:6rem;border-radius:50%}body>main h1{padding-block-end:var(--s-1);border-block-end:thin solid var(--color-border)}article[card] h2{margin-block-start:var(--s-4)}article[card] a{text-decoration:none;position:relative;display:inline-block}article[card] a:hover{color:var(--color-accent-dark)}article[card] a:after{content:"";position:absolute;width:100%;height:100%;inset:0;background:var(--color-accent-light);border:3px solid var(--color-accent-light);transform:scaleX(0);transform-origin:left;transition:transform .1s ease-out;z-index:-10}article[card] a:hover:after{transform:scaleX(1)}article post-meta{font-size:var(--font-xs);color:var(--color-neutral-600)}@media (prefers-color-scheme: dark){article post-meta{color:var(--color-neutral-300)}}article tag-list{display:flex;flex-wrap:wrap;gap:var(--s-2);justify-content:flex-start;margin-block:var(--s0);padding:0;list-style:none}article tag-list>*{color:var(--color-accent-light);background-color:var(--color-accent-med);border-radius:var(--s-4);padding-inline:var(--s-1);padding-block-start:var(--s-5);padding-block-end:var(--s-5)}article tag-list a{text-decoration-style:dotted}article excerpt{margin-top:var(--s-2);max-inline-size:var(--measure)}article picture[feature]{aspect-ratio:2.35 / 1}article picture[feature]>img,article picture[feature]>video{inline-size:100%;block-size:100%;object-fit:cover}article>content h1,article>content h2,article>content h3,article>content h4,article>content h5,article>content h6{margin-block-start:var(--s3)}article>content p{max-inline-size:var(--measure)}article>content p>code{font-size:var(--font-sm)}article>content pre{margin-block-start:var(--s1);width:100%;font-size:var(--font-xs)}article footer{border-block-start:thin solid var(--color-border);margin-block-start:var(--s3)}article footer nav ul{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;align-items:center;border-block-end:thin solid var(--color-border);padding-block:var(--s3);padding-inline:0;list-style:none}article footer nav ul svg{height:1cap;width:1cap}article footer aside[comments]{padding-block:var(--s3);color:#000}@media (prefers-color-scheme: dark){article footer aside[comments]{color:#fff}}#ghost-portal-root,#sodo-search-root{margin-block-start:0}@media (prefers-color-scheme: dark){.ghost-display{background-color:#0f0f0f}}
