@font-face{font-family:phosphor;src:url(../fonts/Phosphor.woff2)format("woff2");font-weight:400;font-style:normal;font-display:block}.ph{font-family:phosphor !important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;letter-spacing:0;-webkit-font-feature-settings:"liga";-moz-font-feature-settings:"liga=1";-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga" 1;font-feature-settings:"liga";-webkit-font-variant-ligatures:discretionary-ligatures;font-variant-ligatures:discretionary-ligatures;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ph.ph-mastodon-logo:before{content:"\ed68"}.ph.ph-envelope-open:before{content:"\e216"}.ph.ph-github-logo:before{content:"\e576"}.ph.ph-rss:before{content:"\e400"}@font-face{font-family:gtw;font-display:swap;src:url(../fonts/GT-W-Regular.woff2)format('woff2');font-weight:400}@font-face{font-family:gtw;font-display:swap;src:url(../fonts/GT-W-Regular-Oblique.woff2)format('woff2');font-style:italic;font-weight:400}@font-face{font-family:gtw;font-display:swap;src:url(../fonts/GT-W-Bold.woff2)format('woff2');font-weight:700}@font-face{font-family:gtw;font-display:swap;src:url(../fonts/GT-W-Bold-Oblique.woff2)format('woff2');font-style:italic;font-weight:700}:root{color-scheme:light dark;--primary-font:GTW, -apple-system, system-ui, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;--mono-space-font:SFMono-Regular, ui-monospace, Consolas, "Liberation Mono", Menlo, Courier, monospace;--font-weight-normal:400;--font-weight-bold:700;--base-line-height:1.8;--max-width:68rem;--header-width:68rem;--border-radius:3px}@media(prefers-color-scheme:light){:root{color-scheme:light;--background:#fff;--text:#424242;--link:#0d88d8;--link-hover:#000;--accent-1:#f0f0f0;--accent-2:#ddd;--accent-3:#888}}@media(prefers-color-scheme:dark){:root{color-scheme:dark;--background:#16181d;--text:#ece9e6;--link:#45c8f7;--link-hover:#ffffff;--accent-1:#2a2c32;--accent-2:#53565d;--accent-3:#d4d4d6}}*,*::before,*::after{box-sizing:border-box}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none;font-size:10px;scroll-behavior:smooth}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd{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{text-wrap:auto}a:not([class]){text-decoration-skip-ink:auto}img,picture{display:block}input,button,textarea,select{font-family:inherit;font-size:inherit}textarea:not([rows]){min-height:10em}:target{scroll-margin-block:5ex}body{color:var(--text);background:var(--background);padding:0 2rem;font-size:1.8rem;font-family:var(--primary-font);font-weight:var(--font-weight-normal);font-stretch:normal;font-variant-ligatures:none !important;line-height:var(--base-line-height);-ms-word-wrap:break-word;word-wrap:break-word;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:geometricPrecision;-moz-font-feature-settings:"kern" 1;-ms-font-feature-settings:"kern" 1;-o-font-feature-settings:"kern" 1;-webkit-font-feature-settings:"kern" 1;font-feature-settings:"kern" 1;font-kerning:auto}a:link,a:visited{color:var(--link);text-decoration:none;transition:color .15s ease-in-out,background .15s ease-in-out,border .15s ease-in-out}a:hover,a:active{text-decoration:underline;color:var(--link-hover)}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-bold);text-wrap:balance;text-wrap:pretty}h1{font-size:2.4rem}h2{font-size:2.2rem}h3{font-size:2}h4,h5,h6{font-size:1.8rem}blockquote{padding:1px 0 1px 2rem;margin:3rem 0 3rem -1rem;font-style:italic;color:var(--text);width:100%;border-left:5px solid var(--accent-2)}blockquote p{margin:.5rem 0 !important}b,strong{font-weight:var(--font-weight-bold)}code,pre{font-size:1.4rem;background:var(--accent-2);font-family:var(--mono-space-font)}code{padding:2px 4px;border-radius:var(--border-radius);background:#f9f2f4;color:#c7254e;text-shadow:0 1px 1px #fff}pre{background-color:#161616;color:#f8f8f8;line-height:1.5;margin:4rem 0;overflow-x:auto;padding:2.5rem;white-space:pre;width:100%;scrollbar-color:#666 #161616}pre::-webkit-scrollbar{width:8px;height:8px;background-color:#161616}pre::-webkit-scrollbar-thumb{background:#666;border-radius:var(--border-radius)}pre code{background:0 0;border:none;color:inherit;padding:0;tab-size:4;white-space:pre;text-shadow:none}.gist{border:1px solid var(--accent-2);margin:4rem 0;width:100%;scrollbar-color:#999 #fff}.gist .gist-file{margin-bottom:0 !important}.gist .gist-file tr{background:#fff}.gist::-webkit-scrollbar{width:8px;height:8px;background-color:#fff}.gist::-webkit-scrollbar-thumb{background:#999;border-radius:var(--border-radius)}s,strike,del{color:var(--accent-3)}table{border-collapse:collapse;width:100%;margin:3rem 0}tbody tr{background:var(--background)}tbody tr:nth-child(even){background:var(--accent-1)}th,td{border-right:1px solid var(--accent-2);border-bottom:1px solid var(--accent-2);padding:10.5px 12px;text-align:left;line-height:1.2}th{background:var(--accent-1);border-bottom:2px solid var(--accent-2);border-top:1px solid var(--accent-2)}th:last-child,td:last-child{border-right:none}hr{border:0;height:1px;border-top:1px solid var(--accent-2);margin:4rem 0;line-height:1}highlight,mark{background-color:var(--accent-3);color:var(--text);padding:0 3px;margin-left:-3px}input[type=button],input[type=submit]{background-color:var(--text);border-radius:var(--border-radius);border:none;color:var(--background);cursor:pointer;margin:5px 0;padding:1rem 1.5rem;text-decoration:none;transition:color .15s ease-in-out,background .15s ease-in-out,border .15s ease-in-out}input[type=button]:hover,input[type=button]:active,input[type=submit]:hover,input[type=submit]:active{background:var(--link);color:var(--background)}input[type=date],input[type=email],input[type=number],input[type=search],input[type=tel],input[type=text],input[type=url],input[type=search],textarea{background:var(--background);border-radius:var(--border-radius);border:1px solid var(--accent-2);color:var(--text);font-size:1.8rem;margin:4px 1px;padding:1.6rem;width:100%}input[type=email]:active,input[type=email]:focus,input[type=text]:active,input[type=text]:focus,input[type=search]:active,input[type=search]:focus,textarea:active,textarea:focus{border-color:var(--accent-3);outline:none}header{margin:6rem auto;max-width:var(--header-width)}header a:link,header a:visited{color:var(--link);text-decoration:none;margin:0;padding:0}header a:hover,header a:active{text-decoration:underline}.navbar{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:baseline}header .site-title{margin:0;line-height:2;font-size:1.8rem;text-align:left;font-weight:var(--font-weight-bold)}header .site-title a{color:var(--text)}header .site-title a:hover,header .site-title a:active{color:var(--link);text-decoration:none}.site-nav{margin:0;padding:0;font-size:1.6rem;text-align:left}.site-nav li{display:inline;margin:0}.site-nav a:link,.site-nav a:visited{margin:0 0 0 1.5rem;color:var(--accent-3);line-height:2}.site-nav a:hover,.site-nav a:active{color:var(--link);text-decoration:none}main{max-width:var(--max-width);margin:0 auto}article{margin:0 0 8rem}article:last-of-type{margin-bottom:4rem}article h2,article h3{margin-top:5rem}.page-title,.post-title{font-size:3rem;margin-top:3rem;text-wrap:balance;text-wrap:pretty}.post-title a:link,.post-title a:visited{color:var(--text)}.post-title a:hover,.post-title a:active{color:var(--link)}.post-date{color:var(--accent-3);font-size:1.4rem;flex-shrink:0;margin-left:1rem}time{margin:1rem 0 3rem;display:block;font-size:1.6rem;color:var(--accent-3)}main p,main ol,main ul{margin:2rem 0}main ol,main ul{padding:0 0 0 .25rem;margin-left:2rem;margin-right:2rem}main ol li,main ul li{padding-left:.5rem}main img{padding:0;margin:4rem auto;max-width:100%;height:auto;border-radius:var(--border-radius)}.last-mod{color:var(--accent-3);font-style:italic;font-size:1.6rem}sup a:link,sup a:visited{background:var(--link);color:var(--background);padding:1px 4px;margin:0 1px 0 3px;border-radius:3px;font-size:85%}sup a:hover,sup a:active{background:var(--link-hover);color:var(--background);text-decoration:none}.footnotes{font-size:1.6rem;margin:4rem 0 0;color:var(--accent-3)}.footnotes hr{margin-bottom:3.5rem;display:none}.footnotes p{margin:0;line-height:1.2;margin-bottom:.8rem}.main-nav{margin:4rem 0 0;padding:2rem 0}.main-nav ul{list-style:none;margin:0;margin-top:-2rem;padding:0;display:flex;flex-direction:row;justify-content:space-between;align-items:start}.main-nav li{margin:0;padding:0;text-align:left;width:45%;line-height:1.3;text-wrap:balance;text-wrap:pretty}.main-nav li.newer{text-align:right}.main-nav h4{color:var(--text);margin-bottom:1rem}.year-filter{font-size:1.6rem;color:var(--text);margin:4rem 0 2rem}.year-filter label{color:var(--text);margin-right:.5rem}.year-filter select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--accent-1);background-repeat:no-repeat;background-position:calc(100% - 3px);background-size:2rem;border:1px solid var(--accent-2);border-radius:var(--border-radius);color:var(--accent-3);cursor:pointer;padding:.5rem 1rem;padding-right:2.5rem}@media(prefers-color-scheme:light){.year-filter select{background-image:url(/arrow-dark.svg)}}@media(prefers-color-scheme:dark){.year-filter select{background-image:url(/arrow-light.svg)}}select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}.archive-list{list-style:none;margin:4rem 0;padding:0;border-top:1px solid var(--accent-1)}.archive-list li{margin:0;border-bottom:1px solid var(--accent-1);line-height:1.2;padding:1.4rem .2rem;display:flex;justify-content:space-between;align-items:center}h4.post-group{color:var(--text);margin-bottom:-2rem;margin-top:4rem;font-size:2.4rem}.archives h4.post-group:first-of-type{margin-top:3rem}#search-input{width:100%;color:var(--text);outline:none;margin:2rem 0 0}#search-input:active,#search-input:focus{border-color:var(--accent-3)}.search-results{margin-top:6rem}.search-results h4{font-size:2rem}ul.search-list{list-style:none;margin:3rem 0;padding:0;border-top:1px solid var(--accent-1)}ul.search-list li{margin:0;border-bottom:1px solid var(--accent-1);line-height:1.2;padding:1rem 0}footer{max-width:var(--max-width);margin:4rem auto 6rem;font-size:1.6rem;text-align:center;color:var(--accent-3)}footer a:link,footer a:visited{color:var(--accent-3);margin:0 3px}footer a:hover,footer a:active{color:var(--link);text-decoration:none}footer .social{font-size:1.8rem;display:inline-block}.highlight{position:relative}.highlight button{position:absolute;top:0;right:0;cursor:pointer;font-size:1.2rem;background:#272727;border:none;padding:2px 4px;color:#777;transition:color .15s ease-in-out,background .15s ease-in-out,border .15s ease-in-out;border:2px solid #161616;border-radius:6px}.highlight button:hover{background:#494949;color:#fff}.gist .highlight button{display:none}.letterbird-embed{max-width:100% !important}#guestbooks___guestbook-made-with{color:var(--accent-3)}#guestbooks___guestbook-messages-container blockquote{border:none;color:var(--text);font-style:normal;margin:0;padding:0}#guestbooks___guestbook-messages-container>div{background:var(--background);border:1px solid var(--accent-2);border-radius:var(--border-radius);margin:1rem 0;padding:.1rem 2rem 2.5rem}.guestbook-message blockquote{background:var(--background)}#guestbooks___challenge-answer-container br,.guestbooks___input-container label[for=challengeQuestionAnswer]{display:none}#challengeQuestionAnswer{margin-top:.6rem}@media only screen and (max-width:700px){header{margin:4rem 0 2rem}.navbar{display:block;text-align:center;font-size:2rem;margin-bottom:4rem}header .site-title,.site-nav{width:100%;text-align:center;font-size:2rem;margin-top:1rem}.site-nav{font-size:1.8rem}.site-nav a:link,.site-nav a:visited{margin:0 .75rem;display:inline-block}.post-date{display:none}.main-nav ul{flex-direction:column}.main-nav li,.main-nav li.newer{text-align:left;width:100%}input[type=button],input[type=submit]{width:100%;padding:12px}}.bg{color:#d8dee9;background-color:#000}.chroma{color:#d8dee9;background-color:#000}.chroma .err{color:#bf616a}.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:#424853}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6c6f74}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6c6f74}.chroma .k{color:#81a1c1;font-weight:700}.chroma .kc{color:#81a1c1;font-weight:700}.chroma .kd{color:#81a1c1;font-weight:700}.chroma .kn{color:#81a1c1;font-weight:700}.chroma .kp{color:#81a1c1}.chroma .kr{color:#81a1c1;font-weight:700}.chroma .kt{color:#81a1c1}.chroma .na{color:#8fbcbb}.chroma .nc{color:#8fbcbb}.chroma .no{color:#8fbcbb}.chroma .nd{color:#d08770}.chroma .ni{color:#d08770}.chroma .ne{color:#bf616a}.chroma .nl{color:#8fbcbb}.chroma .nn{color:#8fbcbb}.chroma .py{color:#8fbcbb}.chroma .nt{color:#81a1c1}.chroma .nb{color:#81a1c1}.chroma .bp{color:#81a1c1}.chroma .nf{color:#88c0d0}.chroma .fm{color:#88c0d0}.chroma .s{color:#a3be8c}.chroma .sa{color:#a3be8c}.chroma .sb{color:#a3be8c}.chroma .sc{color:#a3be8c}.chroma .dl{color:#a3be8c}.chroma .sd{color:#616e87}.chroma .s2{color:#a3be8c}.chroma .se{color:#ebcb8b}.chroma .sh{color:#a3be8c}.chroma .si{color:#a3be8c}.chroma .sx{color:#a3be8c}.chroma .sr{color:#ebcb8b}.chroma .s1{color:#a3be8c}.chroma .ss{color:#a3be8c}.chroma .m{color:#b48ead}.chroma .mb{color:#b48ead}.chroma .mf{color:#b48ead}.chroma .mh{color:#b48ead}.chroma .mi{color:#b48ead}.chroma .il{color:#b48ead}.chroma .mo{color:#b48ead}.chroma .o{color:#81a1c1}.chroma .ow{color:#81a1c1;font-weight:700}.chroma .p{color:#eceff4}.chroma .c{color:#616e87;font-style:italic}.chroma .ch{color:#616e87;font-style:italic}.chroma .cm{color:#616e87;font-style:italic}.chroma .c1{color:#616e87;font-style:italic}.chroma .cs{color:#616e87;font-style:italic}.chroma .cp{color:#5e81ac;font-style:italic}.chroma .cpf{color:#5e81ac;font-style:italic}.chroma .gd{color:#bf616a}.chroma .ge{font-style:italic}.chroma .gr{color:#bf616a}.chroma .gh{color:#88c0d0;font-weight:700}.chroma .gi{color:#a3be8c}.chroma .gp{color:#4c566a;font-weight:700}.chroma .gs{font-weight:700}.chroma .gu{color:#88c0d0;font-weight:700}.chroma .gt{color:#bf616a}