/*! Copyright Steph Ango, stephango.com
    Please do not reproduce without permission.

    Credits:
    normalize.css (MIT License), github.com/necolas/normalize.css
    Flexoki (MIT License), github.com/kepano/flexoki

*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:600}code,kbd,samp{font-size:1em}small{font-size:80%}sub,sup{font-size:85%;line-height:0;position:relative;vertical-align:baseline;font-variant-numeric:tabular-nums}sub{bottom:-.25em}sup{top:-.35em}img{border-style:none}button,input,optgroup,select,textarea{font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:root{--font-content: -apple-system, BlinkMacSystemFont, "Inter", "IBM Plex Sans", Segoe UI, Helvetica, Arial, sans-serif;--font-ui: var(--font-content);--font-mono: ui-monospace, SFMono-Regular, "Cascadia Code", "IBM Plex Mono", "Roboto Mono", "DejaVu Sans Mono", "Liberation Mono", Menlo, Monaco, "Consolas", "Source Code Pro", monospace;--border-radius: 4px;--font-small: .875em;--font-smaller: .8em;--wrap-wide: 54em;--wrap-normal: 37em;--heading-weight: 500;--input-width: 20em;--image-radius: 1px;--line-height: 1.5}@media (max-width: 860px){:root{--wrap-normal: 88vw;--wrap-wide: 100vw;--input-width: 100%;--heading-weight: 600}:root .wide,:root .wider{--border-radius: 0;--image-radius: 0}}:root{--flexoki-black: #100f0f;--flexoki-black-rgb: 16, 15, 15;--flexoki-paper: #fffcf0;--flexoki-paper-rgb: 254, 252, 240;--flexoki-200-rgb: 206, 205, 195;--flexoki-50: #f2f0e5;--flexoki-100: #e6e4d9;--flexoki-150: #dad8ce;--flexoki-200: #cecdc3;--flexoki-300: #b7b5ac;--flexoki-400: #9f9d96;--flexoki-500: #878580;--flexoki-600: #6f6e69;--flexoki-700: #575653;--flexoki-800: #403e3c;--flexoki-850: #343331;--flexoki-900: #282726;--flexoki-950: #1c1b1a;--flexoki-red-50: #ffe1d5;--flexoki-red-100: #ffcabb;--flexoki-red-150: #fdb2a2;--flexoki-red-200: #f89a8a;--flexoki-red-300: #e8705f;--flexoki-red-400: #d14d41;--flexoki-red-500: #c03e35;--flexoki-red-600: #af3029;--flexoki-red-700: #942822;--flexoki-red-800: #6c201c;--flexoki-red-850: #551b18;--flexoki-red-900: #3e1715;--flexoki-red-950: #261312;--flexoki-orange-50: #ffe7ce;--flexoki-orange-100: #fed3af;--flexoki-orange-150: #fcc192;--flexoki-orange-200: #f9ae77;--flexoki-orange-300: #ec8b49;--flexoki-orange-400: #da702c;--flexoki-orange-500: #cb6120;--flexoki-orange-600: #bc5215;--flexoki-orange-700: #9d4310;--flexoki-orange-800: #71320d;--flexoki-orange-850: #59290d;--flexoki-orange-900: #40200d;--flexoki-orange-950: #27180e;--flexoki-yellow-50: #faeec6;--flexoki-yellow-100: #f6e2a0;--flexoki-yellow-150: #f1d67e;--flexoki-yellow-200: #eccb60;--flexoki-yellow-300: #dfb431;--flexoki-yellow-400: #d0a215;--flexoki-yellow-500: #be9207;--flexoki-yellow-600: #ad8301;--flexoki-yellow-700: #8e6b01;--flexoki-yellow-800: #664d01;--flexoki-yellow-850: #503d02;--flexoki-yellow-900: #3a2d04;--flexoki-yellow-950: #241e08;--flexoki-green-50: #edeecf;--flexoki-green-100: #dde2b2;--flexoki-green-150: #cdd597;--flexoki-green-200: #bec97e;--flexoki-green-300: #a0af54;--flexoki-green-400: #879a39;--flexoki-green-500: #768d21;--flexoki-green-600: #66800b;--flexoki-green-700: #536907;--flexoki-green-800: #3d4c07;--flexoki-green-850: #313d07;--flexoki-green-900: #252d09;--flexoki-green-950: #1a1e0c;--flexoki-cyan-50: #ddf1e4;--flexoki-cyan-100: #bfe8d9;--flexoki-cyan-150: #a2dece;--flexoki-cyan-200: #87d3c3;--flexoki-cyan-300: #5abdac;--flexoki-cyan-400: #3aa99f;--flexoki-cyan-500: #2f968d;--flexoki-cyan-600: #24837b;--flexoki-cyan-700: #1c6c66;--flexoki-cyan-800: #164f4a;--flexoki-cyan-850: #143f3c;--flexoki-cyan-900: #122f2c;--flexoki-cyan-950: #101f1d;--flexoki-blue-50: #e1eceb;--flexoki-blue-100: #c6dde8;--flexoki-blue-150: #abcfe2;--flexoki-blue-200: #92bfdb;--flexoki-blue-300: #66a0c8;--flexoki-blue-400: #4385be;--flexoki-blue-500: #3171b2;--flexoki-blue-600: #205ea6;--flexoki-blue-700: #1a4f8c;--flexoki-blue-800: #163b66;--flexoki-blue-850: #133051;--flexoki-blue-900: #12253b;--flexoki-blue-950: #101a24;--flexoki-purple-50: #f0eaec;--flexoki-purple-100: #e2d9e9;--flexoki-purple-150: #d3cae6;--flexoki-purple-200: #c4b9e0;--flexoki-purple-300: #a699d0;--flexoki-purple-400: #8b7ec8;--flexoki-purple-500: #735eb5;--flexoki-purple-600: #5e409d;--flexoki-purple-700: #4f3685;--flexoki-purple-800: #3c2a62;--flexoki-purple-850: #31234e;--flexoki-purple-900: #261c39;--flexoki-purple-950: #1a1623;--flexoki-magenta-50: #fee4e5;--flexoki-magenta-100: #fccfda;--flexoki-magenta-150: #f9b9cf;--flexoki-magenta-200: #f4a4c2;--flexoki-magenta-300: #e47da8;--flexoki-magenta-400: #ce5d97;--flexoki-magenta-500: #b74583;--flexoki-magenta-600: #a02f6f;--flexoki-magenta-700: #87285e;--flexoki-magenta-800: #641f46;--flexoki-magenta-850: #4f1b39;--flexoki-magenta-900: #39172b;--flexoki-magenta-950: #24131d}:root,.theme-light{--color-bg-primary: var(--flexoki-paper);--color-bg-primary-rgb: var(--flexoki-paper-rgb);--color-inverted-rgb: var(--flexoki-black-rgb);--color-bg-secondary: var(--flexoki-50);--color-tx-normal: var(--flexoki-black);--color-tx-normal-rgb: var(--flexoki-black-rgb);--color-tx-muted: var(--flexoki-600);--color-tx-faint: var(--flexoki-300);--color-ui-normal: var(--flexoki-100);--color-ui-hover: var(--flexoki-150);--color-ui-active: var(--flexoki-200);--color-highlight: var(--flexoki-yellow-100);--color-action: var(--flexoki-blue-600);--color-bg-hover: var(--flexoki-blue-50);--color-selection: rgba(187, 220, 206, .3);--color-re: var(--flexoki-red-600);--color-re-hover: var(--flexoki-red-400);--color-or: var(--flexoki-orange-600);--color-or-hover: var(--flexoki-orange-400);--color-ye: var(--flexoki-yellow-600);--color-ye-hover: var(--flexoki-yellow-400);--color-gr: var(--flexoki-green-600);--color-gr-hover: var(--flexoki-green-400);--color-cy: var(--flexoki-cyan-600);--color-cy-hover: var(--flexoki-cyan-400);--color-bl: var(--flexoki-blue-600);--color-bl-hover: var(--flexoki-blue-400);--color-pu: var(--flexoki-purple-600);--color-pu-hover: var(--flexoki-purple-400);--color-ma: var(--flexoki-magenta-600);--color-ma-hover: var(--flexoki-magenta-400)}.theme-dark{--color-bg-primary: var(--flexoki-black);--color-bg-primary-rgb: var(--flexoki-black-rgb);--color-inverted-rgb: var(--flexoki-paper-rgb);--color-bg-secondary: var(--flexoki-950);--color-tx-normal: var(--flexoki-200);--color-tx-normal-rgb: var(--flexoki-200-rgb);--color-tx-muted: var(--flexoki-500);--color-tx-faint: var(--flexoki-700);--color-ui-normal: var(--flexoki-900);--color-ui-hover: var(--flexoki-850);--color-ui-active: var(--flexoki-800);--color-highlight: var(--flexoki-yellow-900);--color-action: var(--flexoki-blue-400);--color-bg-hover: var(--flexoki-blue-950);--color-selection: rgba(67, 133, 190, .3);--color-re: var(--flexoki-red-400);--color-re-hover: var(--flexoki-red-600);--color-or: var(--flexoki-orange-400);--color-or-hover: var(--flexoki-orange-600);--color-ye: var(--flexoki-yellow-400);--color-ye-hover: var(--flexoki-yellow-600);--color-gr: var(--flexoki-green-400);--color-gr-hover: var(--flexoki-green-600);--color-cy: var(--flexoki-cyan-400);--color-cy-hover: var(--flexoki-cyan-600);--color-bl: var(--flexoki-blue-400);--color-bl-hover: var(--flexoki-blue-600);--color-pu: var(--flexoki-purple-400);--color-pu-hover: var(--flexoki-purple-600);--color-ma: var(--flexoki-magenta-400);--color-ma-hover: var(--flexoki-magenta-600)}.bg{background-color:var(--color-bg-primary)}.bg-2{background-color:var(--color-bg-secondary)}.bg-tx{background-color:var(--color-tx-normal)}.bg-tx-2{background-color:var(--color-tx-muted)}.bg-tx-3{background-color:var(--color-tx-faint)}.bg-ui{background-color:var(--color-ui-normal)}.bg-ui-2{background-color:var(--color-ui-hover)}.bg-ui-3{background-color:var(--color-ui-active)}.bg-black{background-color:var(--flexoki-black)}.bg-paper{background-color:var(--flexoki-paper)}.bg-flexoki-950{background-color:var(--flexoki-950)}.bg-flexoki-900{background-color:var(--flexoki-900)}.bg-flexoki-850{background-color:var(--flexoki-850)}.bg-flexoki-800{background-color:var(--flexoki-800)}.bg-flexoki-700{background-color:var(--flexoki-700)}.bg-flexoki-600{background-color:var(--flexoki-600)}.bg-flexoki-500{background-color:var(--flexoki-500)}.bg-flexoki-300{background-color:var(--flexoki-300)}.bg-flexoki-200{background-color:var(--flexoki-200)}.bg-flexoki-150{background-color:var(--flexoki-150)}.bg-flexoki-100{background-color:var(--flexoki-100)}.bg-flexoki-50{background-color:var(--flexoki-50)}.bg-re{background-color:var(--color-re)}.bg-or{background-color:var(--color-or)}.bg-ye{background-color:var(--color-ye)}.bg-gr{background-color:var(--color-gr)}.bg-cy{background-color:var(--color-cy)}.bg-bl{background-color:var(--color-bl)}.bg-pu{background-color:var(--color-pu)}.bg-ma{background-color:var(--color-ma)}.bg-re-2{background-color:var(--color-re-hover)}.bg-or-2{background-color:var(--color-or-hover)}.bg-ye-2{background-color:var(--color-ye-hover)}.bg-gr-2{background-color:var(--color-gr-hover)}.bg-cy-2{background-color:var(--color-cy-hover)}.bg-bl-2{background-color:var(--color-bl-hover)}.bg-pu-2{background-color:var(--color-pu-hover)}.bg-ma-2{background-color:var(--color-ma-hover)}.bg-red-600{background-color:var(--flexoki-red-600)}.bg-orange-600{background-color:var(--flexoki-orange-600)}.bg-yellow-600{background-color:var(--flexoki-yellow-600)}.bg-green-600{background-color:var(--flexoki-green-600)}.bg-cyan-600{background-color:var(--flexoki-cyan-600)}.bg-blue-600{background-color:var(--flexoki-blue-600)}.bg-purple-600{background-color:var(--flexoki-purple-600)}.bg-magenta-600{background-color:var(--flexoki-magenta-600)}.bg-red-400{background-color:var(--flexoki-red-400)}.bg-orange-400{background-color:var(--flexoki-orange-400)}.bg-yellow-400{background-color:var(--flexoki-yellow-400)}.bg-green-400{background-color:var(--flexoki-green-400)}.bg-cyan-400{background-color:var(--flexoki-cyan-400)}.bg-blue-400{background-color:var(--flexoki-blue-400)}.bg-purple-400{background-color:var(--flexoki-purple-400)}.bg-magenta-400{background-color:var(--flexoki-magenta-400)}.gap1{gap:1rem}.pa{padding:1rem}.pt{padding-top:1rem}.pr{padding-right:1rem}.pb{padding-bottom:1rem}.pl{padding-left:1rem}.ppa{padding:2rem}.ppt{padding-top:2rem}.ppr{padding-right:2rem}.ppb{padding-bottom:2rem}.ppl{padding-left:2rem}.pn1{padding-top:2rem}.pn2{padding-top:4rem}.pn3{padding-top:6rem}.pn4{padding-top:8rem}.ps1{padding-bottom:2rem}.ps2{padding-bottom:4rem}.ps3{padding-bottom:6rem}.ps4{padding-bottom:8rem}.st{margin-top:1rem}.sr{margin-right:1rem}.sb{margin-bottom:1rem}.sl{margin-left:1rem}.sst{margin-top:2rem}.ssr{margin-right:2rem}.ssb{margin-bottom:2rem}.ssl{margin-left:2rem}.mn1{margin-top:2rem}.mn2{margin-top:4rem}.mn3{margin-top:6rem}.mn4{margin-top:8rem}.ms1{margin-bottom:2rem}.ms2{margin-bottom:4rem}.ms3{margin-bottom:6rem}.ms4{margin-bottom:8rem}*,*:before,*:after{box-sizing:inherit}::selection{background:var(--color-selection)}::-moz-selection{background:var(--color-selection)}html{box-sizing:border-box;width:100%;height:100%;font-size:62.5%}body{color-scheme:light dark;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;background-color:var(--color-bg-primary);font-family:var(--font-content);margin:2vw auto 0;line-height:var(--line-height);padding:2rem 0 4rem;overflow-x:hidden;font-size:1.8rem;font-size:calc(1.5rem + .25vw);color:var(--color-tx-normal)}small,.small{font-size:var(--font-small);line-height:1.4}.smaller{font-size:var(--font-smaller);line-height:1.4}.font-ui{font-family:var(--font-ui)}.font-content{font-family:var(--font-content)}.font-mono{font-family:var(--font-mono)}mark{background-color:var(--color-highlight);color:var(--color-tx-normal)}footer{margin:2em auto;max-width:var(--wrap-wide);width:var(--wrap-normal);padding-top:1em}iframe,video{border-radius:var(--image-radius);display:block}p{max-width:var(--wrap-normal)}blockquote{padding-left:1.5em;margin:1.5em 0;border-left:2px solid var(--color-tx-normal)}blockquote p{margin:0}.l{text-align:left}.r{text-align:right}.c{text-align:center}.cc{margin-left:auto;margin-right:auto}.vt{vertical-align:top}.ba{border:1px solid var(--color-ui-normal)}.bt{border-top:1px solid var(--color-ui-normal)}.br{border-right:1px solid var(--color-ui-normal)}.bb{border-bottom:1px solid var(--color-ui-normal)}.bl{border-left:1px solid var(--color-ui-normal)}.ra{border-radius:var(--border-radius);overflow:hidden}hr{width:100%;border:0;height:1px;margin:1.5em 0;background:var(--color-ui-normal)}main>hr{margin:4em 0}heading{display:block;max-width:var(--wrap-wide);width:var(--wrap-normal);margin-left:auto;margin-right:auto}article{display:block;max-width:var(--wrap-wide);width:var(--wrap-normal);margin-left:auto;margin-right:auto}article img{margin-bottom:.5em}article .wide{padding:1.5em 0;max-width:Min(100vw,var(--wrap-wide));width:Min(100vw,var(--wrap-wide));margin-left:calc((Min(100vw,var(--wrap-wide)) - 100%)/-2)}figure{margin:0;padding:1.5em 0;text-align:center}figcaption{font-size:var(--font-smaller);line-height:1.4;color:var(--color-tx-muted);padding:1em}figcaption a{color:var(--color-tx-muted)}img+em{display:block;text-align:center;font-size:var(--font-smaller);line-height:1.4;color:var(--color-tx-muted);padding:1em;font-style:normal}img+em a{color:var(--color-tx-muted)}.fr{float:right}flex,.flex{display:flex}.align-center{align-items:center}.align-baseline{align-items:baseline}.flex-grow{flex-grow:1}.flex-shrink{flex-shrink:1}.grid{display:grid}.grid-columns{grid-auto-flow:column;grid-auto-columns:1fr}.nowrap{white-space:nowrap}.font-normal{font-weight:400}.tabular-nums{font-variant-numeric:tabular-nums}.line-height-loose{line-height:1.6}.line-height-tight{line-height:1.3}.wrap{max-width:var(--wrap-normal);margin-left:auto;margin-right:auto}article hr{margin-top:3rem;margin-bottom:1rem;margin-top:calc(2em + 2vh);margin-bottom:calc(2em + 2vh);display:block;border:0;background:none;text-align:center;overflow:visible}article hr:before{content:"•••";display:inline-block;font-size:.5em;font-size:calc(.8em + .2vw);margin-left:.6em;letter-spacing:1.25em;color:var(--color-tx-faint);position:relative;top:-.75em}.muted,.muted a{color:var(--color-tx-muted)}.faint{color:var(--color-tx-faint)}.action{color:var(--color-action)}.font-medium{font-weight:500}nav{margin:0 auto 3em;width:var(--wrap-normal);max-width:var(--wrap-wide)}@media (min-width: 600px){.dkh{display:none}}@media (max-width: 54em){.wide{border:none}.wide img,.wide iframe,.wide video{border-radius:0}}@media (max-width: 600px){.mh{display:none}.mobile-grid-rows{grid-auto-flow:row}}.backlinks{display:grid;gap:.5em;grid-template-columns:repeat(2,1fr)}.backlink{border:1px solid var(--color-ui-normal);padding:.75em;border-radius:var(--border-radius);line-height:1.3}.backlink:hover{border-color:var(--color-ui-hover)}.backlink .small,.backlink .smaller{line-height:1.3}@media (max-width: 600px){.backlinks{grid-template-columns:repeat(1,1fr)}}code,kbd{font-family:var(--font-mono);background:var(--color-bg-secondary);padding:.1em .2em;border-radius:4px;font-size:90%}kbd{font-weight:600;border:1px solid var(--color-ui-hover)}pre{font-family:var(--font-mono);border-radius:4px;padding:1em;font-size:90%;border:1px solid var(--color-ui-normal);white-space:pre-wrap}pre code{background-color:transparent}div.highlight{display:grid}.highlight{border-radius:4px;overflow:auto;margin:1em 0}.highlight .c{color:var(--color-tx-faint)}.highlight .err{color:var(--color-re)}.highlight .k{color:var(--color-gr)}.highlight .p{color:var(--color-tx-muted)}.highlight .cm,.highlight .cp,.highlight .c1,.highlight .cs{color:var(--color-tx-faint)}.highlight .ge{font-style:italic}.highlight .gr{color:var(--color-re)}.highlight .gh{color:var(--color-tx-faint)}.highlight .go,.highlight .gp,.highlight .gu{color:var(--color-tx-muted)}.highlight .gt{color:var(--color-re)}.highlight .kc,.highlight .kd,.highlight .kp,.highlight .kr,.highlight .kt{color:var(--color-bl)}.highlight .m{color:var(--color-pu)}.highlight .s{color:var(--color-gr)}.highlight .na{color:var(--color-or)}.highlight .nb{color:var(--color-gr)}.highlight .nc{color:var(--color-bl)}.highlight .no{color:var(--color-cy)}.highlight .nn{color:var(--color-tx-muted)}.highlight .nv{color:var(--color-cy)}.highlight .o{color:var(--color-re)}.highlight .w{color:var(--color-tx-faint)}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:var(--color-pu)}.highlight .sb,.highlight .sc,.highlight .sd{color:var(--color-gr)}.highlight .s2{color:var(--color-cy)}.highlight .se{color:var(--color-re)}.highlight .sh,.highlight .si,.highlight .sx{color:var(--color-gr)}.highlight .sr{color:var(--color-re)}.highlight .s1{color:var(--color-cy)}.highlight .ss{color:var(--color-re)}.highlight .bp{color:var(--color-tx-faint)}.highlight .vc,.highlight .vg,.highlight .vi{color:var(--color-cy)}.highlight .il{color:var(--color-pu)}.footnote{color:var(--color-tx-muted);text-decoration:none;font-weight:500;padding-left:.1em}.reversefootnote{color:var(--color-tx-muted);text-decoration:none}.footnotes{padding-top:4em}.footnotes:before{content:"Footnotes";padding-bottom:.25em;color:var(--color-tx-muted);display:block}.footnotes li p{margin-block-start:.5em;margin-block-end:.5em}h1,h2,h3,h4,h5,h6{line-height:1.3;margin-bottom:0;padding-bottom:0}h1{font-weight:500;font-size:2em;font-size:calc(1.35em + .55vw);letter-spacing:-.02em;line-height:1.25;margin-top:1.5em;margin-bottom:.25em}h2{font-weight:var(--heading-weight);font-size:1.4em;font-size:calc(1em + .2vw);letter-spacing:-.015em;margin-top:1em;margin-bottom:.5em;line-height:1.3}h3{font-weight:var(--heading-weight);font-size:1.2em;font-size:1em;line-height:1.3;margin-top:1em;margin-bottom:.5em}h4{font-size:1em;font-weight:600;line-height:1.3;margin-top:1em}h5{font-weight:700;line-height:1.25;text-transform:uppercase;margin-bottom:1em;letter-spacing:.05em;font-size:1.4rem}article h2{margin-top:2em}article h1+h2,article h2+h3{margin-top:1em}article h3{margin-top:1.5em}h1 a,h1 a:visited,h1 a:link{color:var(--color-tx-normal)}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:var(--color-tx-normal);text-decoration:none}h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{color:var(--color-action)}h1 a .muted:hover,h2 a .muted:hover,h3 a .muted:hover,h4 a .muted:hover,h5 a .muted:hover,h6 a .muted:hover{color:var(--color-tx-muted);text-decoration:none}h1,h2,h3,h4,h5,h6{position:relative}h1:hover .anchor,h2:hover .anchor,h3:hover .anchor,h4:hover .anchor,h5:hover .anchor,h6:hover .anchor{opacity:1;transition:opacity 0s ease-in-out .25s}h1 .anchor,h2 .anchor,h3 .anchor,h4 .anchor,h5 .anchor,h6 .anchor{color:transparent;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-link'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/svg%3E");mask-size:.75em;mask-repeat:no-repeat;mask-position:center;transition:opacity .1s ease-in-out;background-color:var(--color-tx-faint);z-index:0;user-select:none;position:absolute;left:-1.5em;padding-right:1em;opacity:0;color:var(--color-tx-faint);text-decoration:none}h1 .anchor:hover,h2 .anchor:hover,h3 .anchor:hover,h4 .anchor:hover,h5 .anchor:hover,h6 .anchor:hover{background-color:var(--color-tx-muted)}h1 .anchor:active,h1 .anchor:focus,h2 .anchor:active,h2 .anchor:focus,h3 .anchor:active,h3 .anchor:focus,h4 .anchor:active,h4 .anchor:focus,h5 .anchor:active,h5 .anchor:focus,h6 .anchor:active,h6 .anchor:focus{background-color:var(--color-tx-normal)}img{max-width:100%;display:block;border-radius:var(--image-radius)}body:not(.theme-dark) .multiply{mix-blend-mode:multiply}.desaturate{filter:grayscale(100%)}.theme-dark .invert{filter:invert(1)}.theme-dark .invert.multiply{mix-blend-mode:screen}.hover-color{filter:grayscale(100%);transition:filter .2s ease-in-out}.hover-color:hover{filter:grayscale(0%);transition:filter .2s ease-in-out}img.outline{border:1px solid var(--color-ui-normal)}.aspect-square{aspect-ratio:1 / 1;object-fit:cover}*{-webkit-tap-highlight-color:rgba(0,0,0,0)}a{color:var(--color-tx-normal);text-decoration:underline}a:hover{color:var(--color-action);border-color:var(--color-action)}a:focus{outline:none;background-color:var(--color-bg-hover)}a.plain,a.muted{text-decoration:none}article a:not(.plain):not(.tag):not(.internal-link):not(.footnote):not(.reversefootnote):not([href^="#"]):not([href^="/"]){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='2.5' stroke='gray' class='w-6 h-6'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M4.5 19.5l15-15m0 0H8.25m11.25 0v11.25' /%3E%3C/svg%3E%0A");background-position:right 33%;background-repeat:no-repeat;background-size:.7em;padding-right:.75em}.invalid-link{color:var(--color-tx-muted);text-decoration:underline;text-decoration-color:var(--color-ui-normal);cursor:not-allowed}ul>li{list-style:disc}ol,ul{padding:.5rem 0 1rem 1em;margin:0 0 0 .5em}ol>li,ul>li{padding:.15rem 0}ol>li::marker,ul>li::marker{color:var(--color-tx-faint)}ul>li::marker{font-size:85%}@media (min-width: 600px){ul.list-plain{padding-inline-start:0;margin-left:0}ul.list-plain>li{list-style:none}}@media (max-width: 600px){ol>li,ul>li{padding:.25rem 0}}table{margin-top:1.5em;margin-bottom:2.5em;width:100%;border-collapse:collapse;border-spacing:0;font-size:90%}tr{border-bottom:1px solid var(--color-ui-normal)}td{padding:.5em 1em .5em 0;line-height:1.3}th:not(:last-child){padding-right:1em}td:last-child{padding-right:0}th{text-align:left;font-weight:600;padding-bottom:.5em}.table-top td{vertical-align:top}.table-col-first-md td:first-child{width:12em}.table-col-last-md td:last-child{width:12em}.table-nowrap table{white-space:nowrap}.table-tabular table{font-variant-numeric:tabular-nums}.table-small table{font-size:var(--font-small)}@media (max-width: 600px){.table-mobile-wide table{width:106%}.table-mobile-wide table td{min-width:16em}.table-col-first-md td:first-child{min-width:9em}}.tag{border:1px solid var(--color-ui-normal);padding:.1em .5em .15em;border-radius:1em;font-size:var(--font-smaller);color:var(--color-tx-muted);line-height:2;text-decoration:none}.tag:hover{box-shadow:none;border-radius:1em}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;color:var(--color-tx-normal)}label{color:var(--color-tx-normal);display:block;padding:0 0 .2em}input:focus{outline:none}::-webkit-input-placeholder{color:var(--color-tx-muted)}::-moz-placeholder{color:var(--color-tx-muted)}::-ms-placeholder{color:var(--color-tx-muted)}::placeholder{color:var(--color-tx-muted)}input[type=text],input[type=email],input[type=password],textarea{border-radius:0;background-color:transparent;border:1px solid transparent;border-bottom:1px solid var(--color-ui-normal);margin-bottom:1.5em;padding:.5em 0}input[type=text]:focus,input[type=email]:focus,input[type=password]:focus,textarea:focus{border-bottom:1px solid var(--color-action)}input[type=text],input[type=email],input[type=password]{width:var(--input-width)}input[type=submit],button,.button{-webkit-appearance:none;border-radius:3px;background-color:var(--color-tx-normal);border:1px solid var(--color-tx-normal);color:var(--color-bg-primary);font-weight:400;padding:.5em 1em;text-decoration:none;display:inline-block;cursor:pointer}input[type=submit]:hover,button:hover,.button:hover{border:1px solid var(--color-tx-normal);background-color:transparent;color:var(--color-tx-normal)}select{-webkit-appearance:none;appearance:none;cursor:pointer;max-width:100%;margin:0;border:1px solid var(--color-ui-normal);border-radius:3px;background-color:transparent;padding:.25em 1.5em .25em .5em;background-repeat:no-repeat;background-position:right .5em top 50%;background-size:1em auto}select:hover{border-color:var(--color-ui-hover);background-color:var(--color-bg-secondary)}select:focus{border-color:var(--color-ui-active);outline:none}select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23B7B5AC' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='m7 15 5 5 5-5'/%3E%3Cpath d='m7 9 5-5 5 5'/%3E%3C/svg%3E")}.theme-dark select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23575653' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='m7 15 5 5 5-5'/%3E%3Cpath d='m7 9 5-5 5 5'/%3E%3C/svg%3E")}#popover-wrapper{color-scheme:light dark;background:var(--color-bg-primary);padding:1.5em;border:1px solid var(--color-ui-hover);border-radius:6px;overflow:auto;position:absolute;width:380px;max-width:80vw;height:250px;max-height:70vh;font-size:.825em;box-shadow:0 5px 20px 2px rgba(var(--flexoki-black-rgb),.2);z-index:9999;transition:opacity .25s ease-in-out;animation:fadein .25s ease-in-out forwards}#popover-wrapper:hover{animation:fadein .25s ease-in-out backwards}@keyframes fadein{0%{margin-top:20px;opacity:0;pointer-events:none}to{margin-top:0;opacity:1;pointer-events:auto}}#popover-content>h1{margin-top:0;font-size:1.25em}#popover-content .ms2{margin-bottom:2rem}.theme-dark #popover-wrapper{background:var(--color-bg-secondary);box-shadow:0 5px 20px 2px rgba(var(--flexoki-black-rgb),1)}#theme-toggle{height:20px;width:36px;display:block;position:relative;border:none;cursor:pointer;float:right}#theme-toggle:hover .theme-toggle-switch{background-color:var(--color-action)}.theme-toggle-slide{height:20px;border:1px solid var(--color-ui-normal);border-radius:24px;width:100%;position:absolute}.theme-toggle-switch{position:absolute;z-index:9;top:1px;left:1px;right:auto;width:18px;height:18px;transition:left .1s linear;background-color:var(--color-tx-muted);-webkit-mask-size:18px;-webkit-mask-position:50% 50%;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor' %3E%3Cpath fill-rule='evenodd' d='M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z' clip-rule='evenodd' /%3E%3C/svg%3E")}.theme-dark .theme-toggle-switch{left:16px;background-color:var(--color-tx-normal);transition:left .1s linear;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24' %3E%3Cpath d='M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z' /%3E%3C/svg%3E")}.page-projects[data-astro-cid-sckkx6r4] .wrap[data-astro-cid-sckkx6r4]{max-width:none}.hamburger[data-astro-cid-sckkx6r4]{display:none;background:none;border:none;cursor:pointer;padding:0;z-index:1000}.hamburger[data-astro-cid-sckkx6r4] svg[data-astro-cid-sckkx6r4]{stroke:var(--color-tx-normal)}.hamburger[data-astro-cid-sckkx6r4] .close-icon[data-astro-cid-sckkx6r4]{display:none;stroke:var(--color-tx-normal)}.hamburger[data-astro-cid-sckkx6r4].is-open .hamburger-icon[data-astro-cid-sckkx6r4]{display:none}.hamburger[data-astro-cid-sckkx6r4].is-open .close-icon[data-astro-cid-sckkx6r4]{display:block;stroke:var(--color-tx-normal)}.nav-links[data-astro-cid-sckkx6r4]{display:flex;align-items:center;gap:1rem}@media (max-width: 768px){nav[data-astro-cid-sckkx6r4]{position:relative;flex-direction:row;align-items:center;flex-wrap:wrap}nav[data-astro-cid-sckkx6r4]>span[data-astro-cid-sckkx6r4].flex-grow{display:flex;flex-grow:1;justify-content:flex-start;order:1}.hamburger[data-astro-cid-sckkx6r4]{display:block;margin-left:auto;order:2}.nav-links[data-astro-cid-sckkx6r4]{display:none;order:3;flex-basis:100%;background:var(--color-bg-primary);flex-direction:column;padding:2rem 1.25rem;gap:1.5rem;align-items:flex-end;width:100%}.nav-links[data-astro-cid-sckkx6r4].is-open{display:flex}.nav-links[data-astro-cid-sckkx6r4] a[data-astro-cid-sckkx6r4]{margin:0;font-size:inherit;text-align:right;padding:.5rem 0;color:var(--color-tx-normal)!important;transition:color .2s ease}.nav-links[data-astro-cid-sckkx6r4] a[data-astro-cid-sckkx6r4]:hover,.nav-links[data-astro-cid-sckkx6r4] a[data-astro-cid-sckkx6r4]:active{color:var(--color-action)!important}@media (hover: none) and (pointer: coarse){.nav-links[data-astro-cid-sckkx6r4] a[data-astro-cid-sckkx6r4]:active{color:var(--color-action)!important;background-color:var(--color-bg-hover);border-radius:4px;padding:.75rem .5rem;margin:-.25rem -.5rem}}}
