html{-webkit-text-size-adjust:100%}pre>code.sourceCode{white-space:pre;position:relative}pre>code.sourceCode>span{display:inline-block;line-height:1.25}pre>code.sourceCode>span:empty{height:1.2em}.sourceCode{overflow:visible}code.sourceCode>span{color:inherit;text-decoration:inherit}div.sourceCode{margin:1em 0}pre.sourceCode{margin:0}@media screen{div.sourceCode{overflow:auto}}@media print{pre>code.sourceCode{white-space:pre-wrap}pre>code.sourceCode>span{text-indent:-5em;padding-left:5em}}pre.numberSource code{counter-reset:source-line 0}pre.numberSource code>span{position:relative;left:-4em;counter-increment:source-line}pre.numberSource code>span>a:first-child::before{content:counter(source-line);position:relative;left:-1em;text-align:right;vertical-align:baseline;border:none;display:inline-block;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:0 4px;width:4em;color:#aaa}pre.numberSource{margin-left:3em;border-left:1px solid #aaa;padding-left:4px}@media screen{pre>code.sourceCode>span>a:first-child::before{text-decoration:underline}}code span.al{color:var(--red);font-weight:bold}code span.an{color:var(--grey1);font-weight:bold;font-style:italic}code span.at{color:var(--yellow)}code span.bn{color:var(--aqua)}code span.bu{color:var(--aqua)}code span.cf{color:var(--green)}code span.ch{color:var(--blue)}code span.cn{color:var(--bg_visited)}code span.co{color:var(--grey1);font-style:italic}code span.cv{color:var(--grey1);font-weight:bold;font-style:italic}code span.do{color:var(--red);font-style:italic}code span.dt{color:var(--red)}code span.dv{color:var(--aqua)}code span.er{color:var(--red)}code span.fl{color:var(--aqua)}code span.fu{color:var(--blue)}code span.im{color:var(--green);font-weight:bold}code span.in{color:var(--fg-date);font-weight:bold;font-style:italic}code span.kw{color:var(--green);font-weight:bold}code span.op{color:var(--grey1)}code span.ot{color:var(--green)}code span.pp{color:var(--orange)}code span.sc{color:var(--aqua)}code span.ss{color:var(--purple)}code span.st{color:var(--aqua)}code span.va{color:var(--blue)}code span.vs{color:var(--aqua)}code span.wa{color:var(--red)}pre{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch}:not(pre)>code{white-space:normal;word-break:normal;overflow-wrap:anywhere}@font-face{font-display:swap;font-family:"Roboto Condensed";font-style:normal;font-weight:400;src:url("../fonts/roboto-condensed-v31-latin-regular.woff2") format("woff2")}@font-face{font-display:swap;font-family:"Roboto Condensed";font-style:italic;font-weight:400;src:url("../fonts/roboto-condensed-v31-latin-italic.woff2") format("woff2")}@font-face{font-display:swap;font-family:"Epunda Slab";font-style:normal;font-weight:600;src:url("../fonts/epunda-slab-v2-latin-600.woff2") format("woff2")}:root{--bg:#1E2326;--bg0:#272E33;--bg1:#2E383C;--bg2:#374145;--bg3:#414B50;--bg4:#495156;--bg5:#4F5B58;--bg_visual:#4C3743;--bg_red:#493B40;--bg_yellow:#45443c;--bg_green:#3C4841;--bg_blue:#384B55;--bg_purple:#463F48;--fg:#D3C6AA;--red:#E67E80;--yellow:#DBBC7F;--green:#A7C080;--blue:#7FBBB3;--purple:#D699B6;--aqua:#83C092;--orange:#E69875;--grey0:#7A8478;--grey1:#859289;--grey2:#9DA9A0;--statusline1:#A7C080;--statusline2:#D3C6AA;--statusline3:#E67E80;--bg_border:#384B55;--bg_visited:#3C4841;--bg_vignette:#272E33;--fg_date:#495156}[data-theme=light]{--bg:#F2EFDF;--bg0:#FFFBEF;--bg1:#F8F5E4;--bg2:#F2EFDF;--bg3:#EDEADA;--bg4:#E8E5D5;--bg5:#BEC5B2;--bg_visual:#F0F2D4;--bg_red:#FFE7DE;--bg_yellow:#FEF2D5;--bg_green:#F3F5D9;--bg_blue:#ECF5ED;--bg_purple:#FCECED;--fg:#2E383C;--red:#F85552;--yellow:#DFA000;--green:hsl(66.5976773469,144.427076839%,23.8242444496%);--blue:#3A94C5;--purple:#DF69BA;--aqua:#35A77C;--orange:#F57D26;--grey0:#A6B0A0;--grey1:#939F91;--grey2:#829181;--statusline1:#93B259;--statusline2:#708089;--statusline3:#E66868;--bg_border:#384B55;--bg_visited:#3C4841;--bg_vignette:#FEF2D5;--fg_date:#939F91}*{box-sizing:border-box}html{height:100%}body{background-color:var(--bg);color:var(--fg);font-family:"Roboto Condensed","Arial Narrow","Helvetica Neue Condensed","Segoe UI",system-ui,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:400;font-size:1.25rem;line-height:1.5;align-items:stretch;display:flex;flex-direction:column;min-height:100vh}body main{flex:1;width:100%}h1,h2,h3,h4,h5,h6{font-family:"Epunda Slab","Roboto Slab","Georgia","Times New Roman",serif;font-weight:600}h1{font-size:2.5rem}h2{font-size:2rem}h3{font-size:1.75rem}h4{font-size:1.5rem}h5{font-size:1.25rem}h6{font-size:1.25rem}a,a:visited{text-decoration:underline}a{color:var(--green)}a:visited{color:var(--bg_visited)}svg{vertical-align:middle}.header{border-bottom:1px solid var(--bg_border)}.header a,.header a:visited{color:var(--fg);text-decoration:none}.header{font-size:2.5rem}.header__inner{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:stretch;gap:2rem;padding:0 1rem;max-width:64rem;margin:0 auto}.header__nav{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem 2rem;text-decoration:underline}@media(width <= 40rem){.header__home{display:none}}.header__logo{display:none;padding:.5rem;margin:0}@media(width <= 40rem){.header__logo{display:block}}#theme-dropdown{border:1px solid var(--bg_border);color:var(--fg);background-color:var(--bg_vignette)}.main{padding:0 1rem;max-width:64rem;margin:0 auto}.main__title{margin-bottom:0}.main__subtitle{margin-top:0}.introduction__title{margin-bottom:0}.introduction__subtitle{margin-top:0}.introduction__subtitle{margin-bottom:2rem}.footer{border-top:1px solid var(--bg_border)}.footer a,.footer a:visited{color:var(--fg);text-decoration:none}.footer{padding:1rem 0}.footer__inner{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:stretch;gap:2rem;padding:0 1rem;max-width:64rem;margin:0 auto}.footer__copyright a,.footer__copyright a:visited{text-decoration:underline}.footer__copyright a{color:var(--green)}.footer__copyright a:visited{color:var(--bg_visited)}.footer__copyright p{margin:0}.vignette{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:flex-start;align-items:stretch;gap:1rem;border:2px solid var(--yellow);border-radius:1rem;background-color:var(--bg_vignette);padding:1rem;margin:2rem 0}.vignette p{margin:0}.vignette__figure{display:flex;flex-direction:column;flex-wrap:nowrap;justify-content:center;align-items:center}.vignette__figure img{height:100%;max-height:6rem}@media(width <= 40rem){.vignette__figure{display:none}}.vignette__caption{margin-top:1rem}.special-link a,.special-link a:visited{color:var(--green)}.skills{border:2px solid var(--yellow);border-radius:1rem;background-color:var(--bg_vignette);padding:1rem;min-inline-size:0}.skills .tag-list{margin-top:-2rem}.main>#toc{margin-top:1rem}#toc{border:2px solid var(--yellow);border-radius:1rem;background-color:var(--bg_vignette);padding:1rem;display:inline-block}#toc ul{list-style:none}#toc>ul{margin:0;padding:0}.post__date{color:var(--fg_date);margin:0}.post__description{margin:1rem 0}.post__meta{margin-bottom:2rem}.tag-list{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:stretch;gap:.5rem;list-style:none;margin:0;padding:0}.tag-list li{padding:.25rem;font-size:1rem}.post-list{border:1px solid var(--bg_border);list-style:none;padding:1rem}.post-list .post__date{color:var(--fg_date);margin:0}.post-list .post__inner{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:.5rem}@media(width <= 40rem){.post-list .post__inner{margin-bottom:.5rem}}.post-list .post__title{margin:0}.post-list .post__description{margin-top:0;margin-bottom:.5rem}@media(width <= 40rem){.post-list .post__description{display:none}}.Web{border:1px solid var(--green);background-color:var(--bg_green);color:var(--green);font-weight:900}.Web a,.Web a:visited{color:var(--green)}.Haskell{border:1px solid var(--blue);background-color:var(--bg_blue);color:var(--blue);font-weight:900}.Haskell a,.Haskell a:visited{color:var(--blue)}.CSS,.SCSS{border:1px solid var(--purple);background-color:var(--bg_purple);color:var(--purple);font-weight:900}.CSS a,.CSS a:visited,.SCSS a,.SCSS a:visited{color:var(--purple)}.HTML{border:1px solid var(--yellow);background-color:var(--bg_yellow);color:var(--yellow);font-weight:900}.HTML a,.HTML a:visited{color:var(--yellow)}