:root{--active-brightness:0.85;--border-radius:5px;--box-shadow:2px 2px 10px;--color-accent:#118bee15;--color-bg:#fff;--color-bg-secondary:#e9e9e9;--color-link:#118bee;--color-secondary:#920de9;--color-secondary-accent:#920de90b;--color-shadow:#f4f4f4;--color-table:#118bee;--color-text:#000;--color-text-secondary:#999;--color-scrollbar:#cacae8;--font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;--hover-brightness:1.2;--justify-important:center;--justify-normal:left;--line-height:1.5;--width-card:285px;--width-card-medium:460px;--width-card-wide:800px;--width-content:1080px}@media(prefers-color-scheme:dark){:root[color-mode=user]{--color-accent:#0097fc4f;--color-bg:#333;--color-bg-secondary:#555;--color-link:#0097fc;--color-secondary:#e20de9;--color-secondary-accent:#e20de94f;--color-shadow:#bbbbbb20;--color-table:#0097fc;--color-text:#f7f7f7;--color-text-secondary:#aaa}}html{scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}article aside{background:var(--color-secondary-accent);border-left:4px solid var(--color-secondary);padding:.01rem .8rem}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-family);line-height:var(--line-height);margin:0;overflow-x:hidden;padding:0}footer,header,main{margin:0 auto;max-width:var(--width-content);padding:3rem 1rem}hr{background-color:var(--color-bg-secondary);border:none;height:1px;margin:4rem 0;width:100%}section{display:flex;flex-wrap:wrap;justify-content:var(--justify-important)}section img,article img{max-width:100%}section pre{overflow:auto}section aside{border:1px solid var(--color-bg-secondary);border-radius:var(--border-radius);box-shadow:var(--box-shadow)var(--color-shadow);margin:1rem;padding:1.25rem;width:var(--width-card)}section aside:hover{box-shadow:var(--box-shadow)var(--color-bg-secondary)}[hidden]{display:none}article header,div header,main header{padding-top:0}header{text-align:var(--justify-important)}header a b,header a em,header a i,header a strong{margin-left:.5rem;margin-right:.5rem}header nav img{margin:1rem 0}section header{padding-top:0;width:100%}nav{align-items:center;display:flex;font-weight:700;justify-content:space-between;margin-bottom:7rem}nav ul{list-style:none;padding:0}nav ul li{display:inline-block;margin:0 .5rem;position:relative;text-align:left}nav ul li:hover ul{display:block}nav ul li ul{background:var(--color-bg);border:1px solid var(--color-bg-secondary);border-radius:var(--border-radius);box-shadow:var(--box-shadow)var(--color-shadow);display:none;height:auto;left:-2px;padding:.5rem 1rem;position:absolute;top:1.7rem;white-space:nowrap;width:auto;z-index:1}nav ul li ul::before{content:"";position:absolute;left:0;right:0;top:-.5rem;height:.5rem}nav ul li ul li,nav ul li ul li a{display:block}code,samp{background-color:var(--color-accent);border-radius:var(--border-radius);color:var(--color-text);display:inline-block;margin:0 .1rem;padding:0 .5rem}details{margin:1.3rem 0}details summary{font-weight:700;cursor:pointer}h1,h2,h3,h4,h5,h6{line-height:var(--line-height);text-wrap:balance}mark{padding:.1rem}ol li,ul li{padding:.2rem 0}p{margin:.75rem 0;padding:0;width:100%}pre{margin:1rem 0;max-width:var(--width-card-wide);padding:1rem 0}pre code,pre samp{display:block;max-width:var(--width-card-wide);padding:.5rem 2rem;white-space:pre-wrap}small{color:var(--color-text-secondary)}sup{background-color:var(--color-secondary);border-radius:var(--border-radius);color:var(--color-bg);font-size:xx-small;font-weight:700;margin:.2rem;padding:.2rem .3rem;position:relative;top:-2px}a{color:var(--color-link);display:inline-block;font-weight:700;text-decoration:underline}a:hover{filter:brightness(var(--hover-brightness))}a:active{filter:brightness(var(--active-brightness))}a b,a em,a i,a strong,button,input[type=submit]{border-radius:var(--border-radius);display:inline-block;font-size:medium;font-weight:700;line-height:var(--line-height);margin:.5rem 0;padding:1rem 2rem}button,input[type=submit]{font-family:var(--font-family)}button:hover,input[type=submit]:hover{cursor:pointer;filter:brightness(var(--hover-brightness))}button:active,input[type=submit]:active{filter:brightness(var(--active-brightness))}a b,a strong,button,input[type=submit]{background-color:var(--color-link);border:2px solid var(--color-link);color:var(--color-bg)}a em,a i{border:2px solid var(--color-link);border-radius:var(--border-radius);color:var(--color-link);display:inline-block;padding:1rem 2rem}article aside a{color:var(--color-secondary)}figure{margin:0;padding:0}figure img{max-width:100%}figure figcaption{color:var(--color-text-secondary)}button:disabled,input:disabled{background:var(--color-bg-secondary);border-color:var(--color-bg-secondary);color:var(--color-text-secondary);cursor:not-allowed}button[disabled]:hover,input[type=submit][disabled]:hover{filter:none}form{border:1px solid var(--color-bg-secondary);border-radius:var(--border-radius);box-shadow:var(--box-shadow)var(--color-shadow);display:block;max-width:var(--width-card-wide);min-width:var(--width-card);padding:1.5rem;text-align:var(--justify-normal)}form header{margin:1.5rem 0;padding:1.5rem 0}input,label,select,textarea{display:block;font-size:inherit;max-width:var(--width-card-wide)}input[type=checkbox],input[type=radio]{display:inline-block}input[type=checkbox]+label,input[type=radio]+label{display:inline-block;font-weight:400;position:relative;top:1px}input[type=range]{padding:.4rem 0}input,select,textarea{border:1px solid var(--color-bg-secondary);border-radius:var(--border-radius);margin-bottom:1rem;padding:.4rem .8rem}input[type=text],textarea{width:calc(100% - 1.6rem)}input[readonly],textarea[readonly]{background-color:var(--color-bg-secondary)}label{font-weight:700;margin-bottom:.2rem}dialog{border:1px solid var(--color-bg-secondary);border-radius:var(--border-radius);box-shadow:var(--box-shadow)var(--color-shadow);position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:50%;z-index:999}table{border:1px solid var(--color-bg-secondary);border-radius:var(--border-radius);border-spacing:0;display:inline-block;max-width:100%;overflow-x:auto;padding:0;white-space:nowrap}table td,table th,table tr{padding:.4rem .8rem;text-align:var(--justify-important)}table thead{background-color:var(--color-table);border-collapse:collapse;border-radius:var(--border-radius);color:var(--color-bg);margin:0;padding:0}table thead tr:first-child th:first-child{border-top-left-radius:var(--border-radius)}table thead tr:first-child th:last-child{border-top-right-radius:var(--border-radius)}table thead th:first-child,table tr td:first-child{text-align:var(--justify-normal)}table tr:nth-child(even){background-color:var(--color-accent)}blockquote{display:block;font-size:x-large;line-height:var(--line-height);margin:1rem auto;max-width:var(--width-card-medium);padding:1.5rem 1rem;text-align:var(--justify-important)}blockquote footer{color:var(--color-text-secondary);display:block;font-size:small;line-height:var(--line-height);padding:1.5rem 0}*{scrollbar-width:thin;scrollbar-color:var(--color-scrollbar)transparent}*::-webkit-scrollbar{width:5px;height:5px}*::-webkit-scrollbar-track{background:0 0}*::-webkit-scrollbar-thumb{background-color:var(--color-scrollbar);border-radius:10px}@font-face{font-family:open sans;font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(/fonts/open-sans-v17-latin-700.woff2)format('woff2'),url(/fonts/open-sans-v17-latin-700.woff)format('woff');font-display:swap}@font-face{font-family:open sans;font-style:normal;font-weight:800;src:local('Open Sans ExtraBold'),local('OpenSans-ExtraBold'),url(/fonts/open-sans-v17-latin-800.woff2)format('woff2'),url(/fonts/open-sans-v17-latin-800.woff)format('woff');font-display:swap}@font-face{font-family:lora;font-style:normal;font-weight:400;src:url(/fonts/Lora-VariableFont_wght.ttf)format('truetype')}:root{--width-content:800px;--width-card:310px;--font-family:"Lora", serif;--font-family-sans:"Open Sans", -apple-system, BlinkMacSystemFont, Roboto, Cantarell, "Helvetica Neue", sans-serif;--font-size-normal:18.5px;--font-size-small:14px;--line-height-text:1.8;--hover-brightness:4;--color-text:#2C3531;--color-link:#18181B;--color-secondary:#3F4D47;--color-secondary-accent:#2B7A78;--color-bg:#FEFFFF;--color-bg-secondary:#E4E4E7;--color-mark:mark}:root[color-mode=dark]{--color-accent:#27272A;--color-bg:#1D1E20;--color-bg-secondary:#FFFFFF20;--color-link:#FAFAFA;--color-text:#F0F0F0;--color-text-secondary:#A1A1AA;--color-shadow:#BBBBBB10;--color-mark:#303030;--box-shadow:2px 2px 6px;--hover-brightness:0.8}main{padding:0 1rem 1rem}nav a,header a,footer a,main.list a{text-decoration:none}a{font-weight:inherit;text-underline-offset:4px}.bottom-margin{margin-bottom:7rem}.feather{width:.8em;height:.8em;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}div.social{margin-top:4em;margin-bottom:4em}div.social>a{margin:8px;font-size:30px;text-decoration:none}.highlight>pre{max-width:100%;border-radius:var(--border-radius)}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-sans);font-weight:800}p,article li{font-size:var(--font-size-normal);line-height:var(--line-height-text)}code{line-height:1.4}pre code{font-size:var(--font-size-normal);white-space:unset;scrollbar-color:#e6edf3 #0d1117;overflow:auto;background:0 0}code{color:inherit}pre code::-webkit-scrollbar{background:#0d1117;width:8px;height:8px}pre code::-webkit-scrollbar-thumb{background:#e6edf3;border-radius:5px}small{font-size:var(--font-size-small)}header{padding-bottom:0}header.left-aligned h1,header.left-aligned p{text-align:left}h1{font-size:2.3em;letter-spacing:-.04em}h2{font-size:1.8em;letter-spacing:-.03em}h3{font-size:1.6em;letter-spacing:-.02em}h4{font-size:1.4em}h5{font-size:1.2em}h6{font-size:1em;font-weight:700}aside h6{margin-top:16px;margin-bottom:4px}a.anchor{display:none;text-decoration:none;font-size:.8em;opacity:.4}h2:hover a.anchor{display:inline-block;-webkit-animation:fadeInFromNone .1s ease-out;-moz-animation:fadeInFromNone .1s ease-out;-o-animation:fadeInFromNone .1s ease-out;animation:fadeInFromNone .1s ease-out}nav{font-family:var(--font-family-sans);font-size:var(--font-size-small);text-transform:uppercase;margin-bottom:2rem}nav ul{display:flex;align-items:center}nav.list-nav{display:flex;margin-top:4rem;margin-bottom:0;justify-content:center}nav.list-nav a{display:inline-block}.tagline{font-size:var(--font-size-small)}.no-bottom-margin{margin-bottom:0}p img,figure img{max-width:75%;display:block;margin-left:auto;margin-right:auto;border-radius:6px}figure figcaption{text-align:center}figure figcaption h4{font-size:inherit;font-weight:inherit;font-family:inherit}mark{font-size:var(--font-size-normal);line-height:var(--line-height-text);color:var(--color-text);background-color:var(--color-mark)}hr{margin:0}.center{text-align:center}.post{margin-top:3em}.mode-toggles{font-size:24px}.mode-toggles a{cursor:pointer}:root[color-mode=light] .light--hidden{display:none}:root[color-mode=dark] .dark--hidden{display:none}:root[color-mode=user] .user--hidden{display:none}@-webkit-keyframes fadeInFromNone{0%{display:none;opacity:0}1%{display:block;opacity:0}100%{display:block;opacity:.4}}@-moz-keyframes fadeInFromNone{0%{display:none;opacity:0}1%{display:block;opacity:0}100%{display:block;opacity:.4}}@-o-keyframes fadeInFromNone{0%{display:none;opacity:0}1%{display:block;opacity:0}100%{display:block;opacity:.4}}@keyframes fadeInFromNone{0%{display:none;opacity:0}1%{display:block;opacity:0}100%{display:block;opacity:.4}}.bg{color:#e6edf3;background-color:#0d1117}.chroma{color:#e6edf3;background-color:#0d1117}.chroma .x{}.chroma .err{color:#f85149}.chroma .cl{}.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:#6e7681}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}.chroma .line{display:flex}.chroma .k{color:#ff7b72}.chroma .kc{color:#79c0ff}.chroma .kd{color:#ff7b72}.chroma .kn{color:#ff7b72}.chroma .kp{color:#79c0ff}.chroma .kr{color:#ff7b72}.chroma .kt{color:#ff7b72}.chroma .n{}.chroma .na{}.chroma .nb{}.chroma .bp{}.chroma .nc{color:#f0883e;font-weight:700}.chroma .no{color:#79c0ff;font-weight:700}.chroma .nd{color:#d2a8ff;font-weight:700}.chroma .ni{color:#ffa657}.chroma .ne{color:#f0883e;font-weight:700}.chroma .nf{color:#d2a8ff;font-weight:700}.chroma .fm{}.chroma .nl{color:#79c0ff;font-weight:700}.chroma .nn{color:#ff7b72}.chroma .nx{}.chroma .py{color:#79c0ff}.chroma .nt{color:#7ee787}.chroma .nv{color:#79c0ff}.chroma .vc{}.chroma .vg{}.chroma .vi{}.chroma .vm{}.chroma .l{color:#a5d6ff}.chroma .ld{color:#79c0ff}.chroma .s{color:#a5d6ff}.chroma .sa{color:#79c0ff}.chroma .sb{color:#a5d6ff}.chroma .sc{color:#a5d6ff}.chroma .dl{color:#79c0ff}.chroma .sd{color:#a5d6ff}.chroma .s2{color:#a5d6ff}.chroma .se{color:#79c0ff}.chroma .sh{color:#79c0ff}.chroma .si{color:#a5d6ff}.chroma .sx{color:#a5d6ff}.chroma .sr{color:#79c0ff}.chroma .s1{color:#a5d6ff}.chroma .ss{color:#a5d6ff}.chroma .m{color:#a5d6ff}.chroma .mb{color:#a5d6ff}.chroma .mf{color:#a5d6ff}.chroma .mh{color:#a5d6ff}.chroma .mi{color:#a5d6ff}.chroma .il{color:#a5d6ff}.chroma .mo{color:#a5d6ff}.chroma .o{color:#ff7b72;font-weight:700}.chroma .ow{color:#ff7b72;font-weight:700}.chroma .p{}.chroma .c{color:#8b949e;font-style:italic}.chroma .ch{color:#8b949e;font-style:italic}.chroma .cm{color:#8b949e;font-style:italic}.chroma .c1{color:#8b949e;font-style:italic}.chroma .cs{color:#8b949e;font-weight:700;font-style:italic}.chroma .cp{color:#8b949e;font-weight:700;font-style:italic}.chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}.chroma .g{}.chroma .gd{color:#ffa198;background-color:#490202}.chroma .ge{font-style:italic}.chroma .gr{color:#ffa198}.chroma .gh{color:#79c0ff;font-weight:700}.chroma .gi{color:#56d364;background-color:#0f5323}.chroma .go{color:#8b949e}.chroma .gp{color:#8b949e}.chroma .gs{font-weight:700}.chroma .gu{color:#79c0ff}.chroma .gt{color:#ff7b72}.chroma .gl{text-decoration:underline}.chroma .w{color:#6e7681}}