code[class*=language-],pre[class*=language-]{color:#f8f8f2;text-shadow:0 1px #0000004d;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;background:0 0;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;line-height:1.5}pre[class*=language-]{border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{white-space:normal;border-radius:.3em;padding:.1em}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#8292a2}.token.punctuation{color:#f8f8f2}.token.namespace{opacity:.7}.token.property,.token.tag,.token.constant,.token.symbol,.token.deleted{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#a6e22e}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.function,.token.class-name{color:#e6db74}.token.keyword{color:#66d9ef}.token.regex,.token.important{color:#fd971f}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}pre[class*=language-diff-]{--eleventy-code-padding:1.25rem;padding-left:var(--eleventy-code-padding);padding-right:var(--eleventy-code-padding)}.token.deleted{color:inherit;background-color:#8e2e2e}.token.inserted{color:inherit;background-color:#45824b}.token.prefix.unchanged,.token.prefix.inserted,.token.prefix.deleted{-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding-top:2px;padding-bottom:2px;display:inline-flex}.token.prefix.inserted,.token.prefix.deleted{width:var(--eleventy-code-padding);background-color:#0003}.token.inserted:not(.prefix),.token.deleted:not(.prefix){margin-left:calc(-1 * var(--eleventy-code-padding));margin-right:calc(-1 * var(--eleventy-code-padding));color:inherit;text-decoration:none;display:block}@layer page{.links-nextprev{border-top:1px dashed var(--color-gray-20);justify-content:space-between;gap:.5rem 1rem;padding:1rem 0;font-size:.75rem;list-style:"";display:flex}.links-nextprev>*{flex-grow:1}.links-nextprev-next{text-align:right}p img{margin-inline:auto;display:block}blockquote{border-left:solid 5px var(--color-gray-50);margin:2rem 0;padding-inline:2rem 1rem;font-style:italic}.post-tag{text-transform:capitalize;justify-content:center;align-items:center;display:inline-flex;&:before{content:"";background:url(/blog/img/tag.svg) 0 0/cover;width:12px;height:12px;margin-right:6px;display:inline-block}}.post-metadata{flex-wrap:wrap;gap:.5rem;margin-top:0;padding:0;font-size:.75rem;list-style:none;display:inline-flex}.post-metadata time{margin-right:1rem}h1{view-transition-name:title;margin-block:0 3rem}}body code[class*=language-],body pre[class*=language-]{font-family:var(--font-family-monospace);font-size:.8rem}:root{--font-family:Rubik, -apple-system, system-ui, sans-serif;--font-family-title:"Fjalla One", sans-serif;--font-family-monospace:Consolas, Menlo, Monaco, Andale Mono WT, Andale Mono, Lucida Console, Lucida Sans Typewriter, DejaVu Sans Mono, Bitstream Vera Sans Mono, Liberation Mono, Nimbus Mono L, Courier New, Courier, monospace;--color-gray-10:#ecebe8;--color-gray-20:#e0e0e0;--color-gray-50:#868686;--color-gray-90:#222;--color-gray-95:#15202b;--color-blue-accent:#4974c4;--color-blue-bright:#88bfec;--bg-color:light-dark(var(--color-gray-10),var(--color-gray-95));--bg-color-inverted:light-dark(var(--color-gray-95),var(--color-gray-10));--text-color:light-dark(var(--color-gray-90),var(--color-gray-20));--text-color-inverted:light-dark(var(--color-gray-20),var(--color-gray-90));--text-color-link:var(--text-color);--text-color-link-active:light-dark(var(--color-blue-accent),var(--color-blue-bright));--text-color-link-visited:light-dark(#888,#a6a6f8);--syntax-tab-size:2;interpolate-size:allow-keywords;color-scheme:light dark}@layer layout{*{box-sizing:border-box}html,body{height:100%;font-family:var(--font-family);color:var(--text-color);background-color:var(--bg-color);margin:0;padding:0}html{overflow-y:scroll}body{flex-direction:column;display:flex}img{max-width:100%}img[width][height]{height:auto}img[src$=\.svg]{width:100%;max-width:none;height:auto}video,iframe{width:100%;height:auto}iframe{aspect-ratio:16/9}p:last-child{margin-bottom:0}p{line-height:1.5}li{margin-bottom:.5rem;line-height:1.5}a[href]{color:var(--text-color-link);text-underline-position:from-font;text-underline-offset:2px;text-decoration-color:#0000;text-decoration-thickness:1px;transition:color .15s,text-decoration-color .15s linear}a[href]:hover{text-decoration-color:inherit}a[href]:hover,a[href]:active{color:var(--text-color-link-active)}main,footer{padding:1rem}main{flex:1;padding-top:2rem}main :where(:first-child){margin-top:0}h1,h2,h3{font-family:var(--font-family-title)}h1{text-shadow:5px 5px color-mix(in srgb, var(--text-color), transparent 80%)}h2{text-shadow:3px 3px color-mix(in srgb, var(--text-color), transparent 80%)}table{margin:1rem 0}table td,table th{padding-right:1rem}pre,code{font-family:var(--font-family-monospace)}pre:not([class*=language-]){-moz-tab-size:var(--syntax-tab-size);-o-tab-size:var(--syntax-tab-size);tab-size:var(--syntax-tab-size);-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;direction:ltr;margin:.5rem 0;line-height:1.375;overflow-x:auto}code{word-break:break-all}.section{max-width:40rem;margin:0 auto}header{background-color:var(--bg-color-inverted);border-bottom:4px dashed var(--bg-color);padding:1rem;& a[href]{--text-color-link:var(--text-color-inverted);--text-color-link-active:light-dark(var(--color-blue-bright),var(--color-blue-accent));text-decoration:none}& .section{@media screen and (width>=480px){flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}}}.home-link{font-size:1.2rem;font-weight:700;display:inline-flex;& img{margin-left:10px;position:relative;top:-2px}}footer{text-align:center;border-top:dashed 4px var(--bg-color-inverted);margin-top:3rem;font-size:.8rem;& p{margin:0}}.footer-sep{margin-inline:.5rem}@media screen and (width<=480px){nav{height:0;transition:height .15s;overflow:hidden}nav:has(>.nav-menu:focus){height:auto}}.nav{gap:.5rem 1rem;margin:0;padding:0;list-style:none;display:flex;@media screen and (width<=480px){padding-top:1rem}}.nav-item{align-items:center;gap:5px;margin-bottom:0;display:inline-flex;&:last-child{@media screen and (width<=480px){flex:1;position:relative}}}.nav-item-icon{width:16px;height:16px;fill:var(--text-color-inverted)}.nav-menu{fill:var(--text-color-inverted);appearance:none;background:0 0;border:0;padding:.5rem .9rem;position:absolute;top:8px;right:0;@media screen and (width>=480px){display:none}&:focus{& span{&:after{background-color:var(--text-color-inverted)}}}& span{line-height:0;display:inline-block;position:relative;&:after{content:"";border-radius:5px;transition:background-color .15s linear;position:absolute;inset:0}}}.nav-theme-btn{font-size:1.5rem;line-height:0;@media screen and (width<=480px){position:absolute;right:10px}&:after{content:"☽"}}html[style*=dark]{& .nav-theme-btn:after{content:"☀"}}@media (prefers-color-scheme:dark){.nav-item:has(>.nav-theme-btn){display:none}}}@layer module;.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}html[style*=dark]{& .invert-dark,& .invert-dark-b:before{filter:invert()}}@media (prefers-color-scheme:dark){.invert-dark,.invert-dark-b:before{filter:invert()}}@view-transition{navigation:auto}header{view-transition-name:header}footer{view-transition-name:footer}@keyframes fade-in{0%{opacity:0}}@keyframes fade-out{to{opacity:0}}@keyframes slide-forwards-in{0%{transform:translateY(30px)}}@keyframes slide-forwards-out{to{transform:translateY(-30px)}}@keyframes slide-backwards-in{0%{transform:translateY(-30px)}}@keyframes slide-backwards-out{to{transform:translateY(30px)}}html:active-view-transition-type(backwards){&::view-transition-old(root){animation:90ms cubic-bezier(.4,0,1,1) both fade-out,.3s cubic-bezier(.4,0,.2,1) both slide-backwards-out}&::view-transition-new(root){animation:.21s cubic-bezier(0,0,.2,1) 90ms both fade-in,.3s cubic-bezier(.4,0,.2,1) both slide-backwards-int}}&::view-transition-old(root){animation:90ms cubic-bezier(.4,0,1,1) both fade-out,.3s cubic-bezier(.4,0,.2,1) both slide-forwards-out}&::view-transition-new(root){animation:.21s cubic-bezier(0,0,.2,1) 90ms both fade-in,.3s cubic-bezier(.4,0,.2,1) both slide-forwards-in}