*{box-sizing:border-box}html,body,#__next{min-height:100%;margin:0}body{font-family:Georgia,serif}button,input,select{font:inherit}button{cursor:pointer}a{color:inherit}.site-shell{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--paper:#fbfbfa;--text:#28292a;--muted:#65676b;--rule:#d3d4d1;--panel:#f1f2ef;--mascot-shadow:#000;--mascot-highlight:#fff;background:var(--paper);color:var(--text);overflow-wrap:anywhere;min-height:100vh;padding:46px 48px 30px;font:15px/1.7 Bitter,Georgia,serif}@media (prefers-color-scheme:dark){.site-shell{--lightningcss-light: ;--lightningcss-dark:initial}}.journal[data-appearance=Dark]{--paper:#202020;--text:#dcdcd7;--muted:#a3a3a0;--rule:#484845;--panel:#292a28;--mascot-shadow:#202020;--mascot-highlight:#dcdcd7}@media (prefers-color-scheme:dark){.journal[data-appearance=System]{--paper:#202020;--text:#dcdcd7;--muted:#a3a3a0;--rule:#484845;--panel:#292a28;--mascot-shadow:#202020;--mascot-highlight:#dcdcd7}}.wrap{max-width:780px;margin:auto}.journal .window-bar,.journal .retro-nav,.cs .masthead>.nav,.cs .section-heading>h2{display:none}@keyframes secret-theme-out{0%{opacity:1}to{opacity:0}}@keyframes secret-theme-in{0%{opacity:0}to{opacity:1}}.site-shell[data-theme-transition=out]>.wrap{animation:.12s ease-in both secret-theme-out}.site-shell[data-theme-transition=in]>.wrap{animation:.18s ease-out both secret-theme-in}.site-shell[data-theme-transition=in]{transition:background-color .18s ease-out}@media (prefers-reduced-motion:reduce){.site-shell[data-theme-transition]>.wrap{animation:none}.site-shell[data-theme-transition]{transition:none}}.cs-inside{flex-direction:column;min-height:calc(100vh - 76px);display:flex}h1,h2,h3,p{margin:0}h1{letter-spacing:-.65px;font-size:25px;font-weight:600;line-height:1.25}h2{letter-spacing:-.2px;font-size:18px;font-weight:600;line-height:1.4}h3{font-size:16px;font-weight:500;line-height:1.5}p+p{margin-top:14px}a{text-underline-offset:3px;text-decoration-thickness:1px;-webkit-text-decoration-color:color-mix(in srgb,currentColor 45%,transparent);text-decoration-color:color-mix(in srgb,currentColor 45%,transparent)}a:hover{text-decoration-color:currentColor}button{color:inherit;background:0 0;border:0;border-radius:0;padding:0}:focus-visible{outline-offset:4px;outline:2px solid}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.skip-link{background:var(--paper);z-index:10;padding:6px 10px;position:absolute;top:10px;left:10px;transform:translateY(-180%)}.skip-link:focus{transform:none}.muted{color:var(--muted)}.masthead{border-bottom:1px solid var(--text);justify-content:space-between;align-items:center;gap:24px;padding-bottom:18px;display:flex}.identity h1 a{text-decoration:none}.role{color:var(--muted);margin-top:5px;font-size:13px}.nav{flex-wrap:wrap;align-items:center;gap:20px;font-size:13px;line-height:1.5;display:flex}.nav a{color:var(--muted);padding:4px 0;text-decoration:none}.nav a[aria-current=page]{color:var(--text);text-underline-offset:5px;text-decoration:underline}.intro-grid{grid-template-columns:minmax(0,1fr) 150px;gap:38px;margin-top:30px;display:grid}.intro{max-width:600px}.contact{border-left:1px solid var(--rule);padding-left:20px;font-size:12px}.contact a{margin-top:6px;display:block}.content{min-width:0;margin-top:40px}.section-heading{border-bottom:1px solid var(--rule);align-items:flex-end;min-height:40px;margin-top:10px;padding:0 150px 12px 0;display:flex;position:relative}.mascot{flex:none;width:128px;height:71px;position:absolute;bottom:0;right:8px}.mascot picture,.mascot img{pointer-events:none;width:128px;height:71px;display:block}.mascot img{image-rendering:auto}@media (resolution:1x),(resolution:2x),(resolution:3x),(resolution:4x){.mascot img{image-rendering:pixelated}}.mascot:before,.mascot:after{image-rendering:pixelated;pointer-events:none;position:absolute;inset:0;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:128px 71px;mask-size:128px 71px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-source-type:alpha;mask-mode:alpha}.mascot:before{-webkit-mask-image:var(--waddle-shadow-mask);-webkit-mask-image:var(--waddle-shadow-mask);mask-image:var(--waddle-shadow-mask);background:var(--mascot-shadow)}.mascot:after{-webkit-mask-image:var(--waddle-highlight-mask);-webkit-mask-image:var(--waddle-highlight-mask);mask-image:var(--waddle-highlight-mask);background:var(--mascot-highlight)}.journal[data-appearance=Light] .mascot:before{-webkit-mask-image:var(--waddle-light-shadow-mask,var(--waddle-shadow-mask));-webkit-mask-image:var(--waddle-light-shadow-mask,var(--waddle-shadow-mask));mask-image:var(--waddle-light-shadow-mask,var(--waddle-shadow-mask))}.journal[data-appearance=Light] .mascot:after{-webkit-mask-image:var(--waddle-light-highlight-mask,var(--waddle-highlight-mask));-webkit-mask-image:var(--waddle-light-highlight-mask,var(--waddle-highlight-mask));mask-image:var(--waddle-light-highlight-mask,var(--waddle-highlight-mask))}@media (prefers-color-scheme:light){.journal[data-appearance=System] .mascot:before{-webkit-mask-image:var(--waddle-light-shadow-mask,var(--waddle-shadow-mask));-webkit-mask-image:var(--waddle-light-shadow-mask,var(--waddle-shadow-mask));mask-image:var(--waddle-light-shadow-mask,var(--waddle-shadow-mask))}.journal[data-appearance=System] .mascot:after{-webkit-mask-image:var(--waddle-light-highlight-mask,var(--waddle-highlight-mask));-webkit-mask-image:var(--waddle-light-highlight-mask,var(--waddle-highlight-mask));mask-image:var(--waddle-light-highlight-mask,var(--waddle-highlight-mask))}}.entries{flex-direction:column;display:flex}.entry{padding:19px 0}.entry-top{justify-content:space-between;align-items:baseline;gap:24px;display:flex}.entry h3{min-width:0}.entry time{white-space:nowrap;color:var(--muted);flex:none;font-size:11px}.entry p{color:var(--muted);max-width:650px;margin-top:5px;font-size:13px;line-height:1.6}.tags{color:var(--muted);flex-wrap:wrap;gap:10px;margin-top:7px;font:11px/1.5 IBM Plex Mono,monospace;display:flex}.tags span{background:var(--panel);padding:1px 5px}.profile-link{color:var(--muted);margin-top:8px;font-size:12px}.about-text{max-width:650px;margin-top:24px}.about-text .about-credits{color:var(--muted);margin-top:28px;font-size:12px}.about-credits a{align-items:center;min-height:44px;display:inline-flex}.prose h3{margin:24px 0 10px}.prose>h3:first-child{margin-top:0}.post-content .prose{max-width:650px}.prose ul{padding-left:22px}.prose li{margin-bottom:8px}.prose details{border-bottom:1px solid var(--rule);padding:10px 0}.prose summary{cursor:pointer}.footer{color:var(--muted);margin-top:auto;padding-top:40px}.footer-inner{border-top:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;padding-top:18px;display:flex}.footer a,.footer button{align-items:center;min-height:44px;display:inline-flex}.footer-identity{color:var(--text);align-items:center;gap:16px;font-size:13px;display:flex}.footer .footer-identity .mascot{display:block;position:relative;inset:auto}.theme-button{color:var(--muted);margin-left:auto;font-size:12px}.theme-button:hover{color:var(--text);text-underline-offset:3px;text-decoration:underline}.to-light,[data-appearance=Dark] .to-dark{display:none}[data-appearance=Dark] .to-light{display:inline}@media (prefers-color-scheme:dark){[data-appearance=System] .to-dark{display:none}[data-appearance=System] .to-light{display:inline}}.article-content .content-panel{padding-top:24px}.article-content>.section-heading{padding-right:0}.journal .post-content>.section-heading{display:none}.journal .post-content>.content-panel{padding-top:0}.blogTitle{letter-spacing:-.4px;font-size:28px;line-height:1.4}.article-meta{color:var(--muted);margin-top:12px;margin-bottom:30px;font-size:12px}.main-content{min-width:0;line-height:1.85}.main-content h1,.main-content h2,.main-content h3,.main-content h4{margin:32px 0 14px;scroll-margin-top:24px;line-height:1.5}.main-content h1{font-size:25px}.main-content h2{font-size:22px}.main-content h3{font-size:18px}.main-content p{margin:16px 0}.main-content img,.main-content video{max-width:100%;height:auto}.main-content p:has(>img:only-child):has(+.caption){margin:24px 0 0}.main-content p:has(+.caption)>img:only-child{margin-inline:auto;display:block}.main-content .caption{max-width:65ch;color:var(--muted);text-align:center;margin:8px auto 28px;font-size:13px;font-style:italic;line-height:1.55}.main-content pre{color:#dcdcdc;overflow-wrap:normal;background:#1e1e1e;max-width:100%;padding:16px;font:13px/1.65 IBM Plex Mono,monospace;overflow:auto}.main-content pre code{font:inherit;white-space:pre}.main-content :not(pre)>code{background:var(--panel);overflow-wrap:anywhere;padding:2px 4px;font:.9em IBM Plex Mono,monospace}.main-content blockquote{border-left:2px solid var(--rule);color:var(--muted);margin:20px 0;padding-left:18px}.main-content .table-scroll{overscroll-behavior-x:contain;max-width:100%;margin:20px 0;overflow-x:auto}.main-content table{border-collapse:collapse;overflow-wrap:normal;word-break:normal;width:100%;font-size:13px}.main-content th,.main-content td{border:1px solid var(--rule);vertical-align:top;min-width:120px;padding:10px}.main-content .instruction-trace{border-block:1px solid var(--rule);margin:24px 0}.instruction-trace summary{cursor:pointer;padding:12px 0;font-weight:600}.instruction-trace summary:focus-visible,.table-scroll:focus-visible{outline-offset:4px;outline:2px solid}.main-content .instruction-trace .table-scroll{margin:4px 0 16px}.instruction-trace table{width:100%;min-width:640px;display:table}.instruction-trace th:first-child,.instruction-trace td:first-child{width:48px;min-width:48px}.main-content iframe{max-width:100%}.back-link{margin-top:24px;display:inline-block}@font-face{font-family:MitchCSArial;src:url(https://cdn.jsdelivr.net/gh/ekmas/cs16.css@main/ArialPixel.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}.cs{--paper:#242820;--text:#dedfd6;--muted:#c0c8b8;--rule:#8c9284;--panel:#4a5942;--cs-inset:#3e4637;--cs-edge:#292c21;--cs-accent:#c4b550;--cs-selection:#626c4e;--cs-ui:MitchCSArial,Tahoma,Arial,sans-serif;--mascot-shadow:var(--panel);--mascot-highlight:var(--text);padding:56px 40px 30px;font:14px/1.65 Tahoma,Arial,sans-serif}.cs .wrap{max-width:820px}.cs .cs-window{border:1px solid;border-color:var(--rule) var(--cs-edge) var(--cs-edge) var(--rule);background:var(--panel);padding:5px;box-shadow:1px 1px #151a12}.cs .window-bar{font:16px/20px var(--cs-ui);justify-content:space-between;gap:16px;padding:3px 6px 7px;display:flex}.cs .cs-inside{min-height:0;padding:25px 23px 17px}.cs .masthead{border:0;padding:0}.cs h1{letter-spacing:-.3px;font:400 24px/1.3 Tahoma,Arial,sans-serif}.cs .role{margin-top:6px;font:13px/1.5 Tahoma,Arial,sans-serif}.cs .intro-grid{margin-top:20px;display:block}.cs .intro{max-width:590px;font:13px/1.75 Tahoma,Arial,sans-serif}.cs .contact{border:0;flex-wrap:wrap;gap:7px;margin-top:18px;padding:0;display:flex}.cs .contact>span{display:none}.cs .contact a,.cs .cs-button{border:1px solid;border-color:var(--rule) var(--cs-edge) var(--cs-edge) var(--rule);background:var(--panel);min-width:86px;min-height:27px;color:var(--text);font:16px/18px var(--cs-ui);text-align:left;justify-content:flex-start;align-items:center;margin:0;padding:4px 9px 3px;text-decoration:none;display:inline-flex}.cs .contact a[href="/resume.pdf"]{font-family:Tahoma,Arial,sans-serif;font-size:13px}.cs .contact a:hover,.cs .cs-button:hover{color:#fff;background:#52614a}.cs .contact a:active,.cs .cs-button:active{border-color:var(--cs-edge) var(--rule) var(--rule) var(--cs-edge)}.cs .content{margin-top:calc(69px + var(--secret-align-y,0px))}.cs main.article-content{margin-top:32px}.cs .section-heading{border:0;min-height:30px;margin-top:0;padding:0}.cs .mascot{right:calc(12px + var(--secret-align-x,0px));bottom:0}.retro-nav{align-items:flex-end;gap:2px;padding-right:150px;display:flex;position:relative}.retro-nav a{text-align:left;background:var(--cs-inset);min-width:83px;min-height:28px;font:16px/20px var(--cs-ui);color:var(--text);border:1px solid;border-color:var(--rule) var(--cs-edge) transparent var(--rule);z-index:1;padding:3px 13px 4px;text-decoration:none;position:relative}.retro-nav a[aria-current=page]{background:var(--panel);min-height:30px;color:var(--cs-accent);border-bottom-color:var(--panel);margin-bottom:-1px;padding-bottom:6px}.retro-nav a:hover{color:#fff}.cs .content-panel{border:1px solid;border-color:var(--rule) var(--cs-edge) var(--cs-edge) var(--rule);min-height:363px;padding:13px 12px 12px}.cs-list-well{background:var(--cs-inset);border:1px solid;border-color:var(--cs-edge) var(--rule) var(--rule) var(--cs-edge);min-height:209px;padding:1px}.cs-list{border-collapse:collapse;table-layout:fixed;width:100%;font:16px/19px var(--cs-ui);color:var(--text)}.cs-list th{text-align:left;background:var(--panel);border:1px solid;border-color:var(--rule) var(--cs-edge) var(--cs-edge) var(--rule);height:26px;padding:2px 9px;font-weight:400}.cs-list th:nth-child(2){width:31%}.cs-list th:last-child{width:112px}.cs-list td{vertical-align:middle;overflow-wrap:anywhere;height:40px;padding:4px 10px}.cs-list td:first-child{padding:0}.cs-list td button{text-align:left;width:100%;min-height:40px;font:inherit;overflow-wrap:anywhere;padding:6px 10px;display:block}.cs-list tr.is-selected{background:var(--cs-selection);color:var(--cs-accent)}.cs-list tbody tr:hover{background:#556047}.cs-selection-detail{min-height:56px;color:var(--muted);padding-top:14px;font:12px/1.65 Tahoma,Arial,sans-serif}.cs-actions{font:16px/20px var(--cs-ui);justify-content:space-between;align-items:center;gap:18px;margin-top:14px;display:flex}.cs .footer{padding-top:28px;font:13px/1.5 Tahoma,Arial,sans-serif}.cs .prose{margin-top:4px;font-size:13px}.cs .main-content{font-size:14px}.cs .main-content a,.cs .prose a{color:#d2c363}.cs .tags span{background:var(--cs-inset)}@media (max-width:700px){.site-shell{padding:32px 28px 24px}.cs-inside{min-height:calc(100vh - 56px)}.masthead{flex-direction:column;align-items:flex-start;gap:17px}.intro-grid{grid-template-columns:minmax(0,1fr);gap:20px}.contact{border:0;flex-wrap:wrap;align-items:center;gap:18px;padding:0;display:flex}.contact a{margin:0}.cs{padding:30px 20px}.cs .cs-inside{padding:20px 15px 15px}.cs-list th:nth-child(2){width:26%}.cs-list th:last-child{width:100px}.cs .cs-project-list th:last-child{width:80px}}@media (max-width:500px){.site-shell{padding:28px 21px 22px}.cs-inside{min-height:calc(100vh - 50px)}.intro-grid{margin-top:24px}.intro{font-size:14px}.nav{gap:25px}.nav a{align-items:center;min-height:44px;display:inline-flex}.masthead{gap:8px;padding-bottom:10px}.content{margin-top:40px}.entry-top{flex-direction:column;gap:4px}.entry{padding:17px 0}.entry time{font-size:11px}.section-heading{padding-right:138px}.mascot{right:0}.contact{gap:17px}.contact a{align-items:center;min-height:44px;display:inline-flex}.theme-button{min-height:44px;padding:8px 0}.footer-with-mascot .footer-inner{grid-template-columns:minmax(0,1fr) 128px;gap:0 16px;display:grid}.footer-with-mascot .footer-identity{display:contents}.footer-with-mascot .footer-identity>span{grid-area:1/1;align-self:end}.footer-with-mascot .footer-identity .mascot{grid-area:1/2/span 2;align-self:center}.footer-with-mascot .theme-button{grid-area:2/1;place-self:start;margin-left:0}.cs .footer-with-mascot .footer-identity>span{grid-row:1/span 2;align-self:center}.blogTitle{font-size:25px}.main-content{font-size:14px}.main-content h1{font-size:23px}.main-content h2{font-size:20px}.main-content pre{padding:12px}.cs{padding:18px 12px}.cs .cs-inside{padding:18px 9px 12px}.cs .window-bar{padding-left:3px;padding-right:3px;font-size:14px}.cs .content{margin-top:calc(91px + var(--secret-align-y,0px))}.cs .mascot{bottom:44px;right:calc(5px + var(--secret-align-x,0px))}.retro-nav{gap:2px;width:100%;padding:0}.retro-nav a,.retro-nav a[aria-current=page]{flex:1;align-items:center;min-width:0;min-height:44px;padding:7px 10px;display:flex}.cs .content-panel{min-height:0;padding:10px 7px}.cs-list th,.cs-list td{padding-left:6px;padding-right:6px}.cs-list td button{min-height:44px;padding:9px 6px}.cs-list:not(.cs-project-list) th:nth-child(2),.cs-list:not(.cs-project-list) td:nth-child(2){display:none}.cs-list:not(.cs-project-list) th:last-child{width:91px}.cs .cs-project-list th:last-child{width:79px}.cs .cs-button,.cs .contact a{min-height:44px}.cs .contact a{flex:1;min-width:0}.cs-selection-detail{min-height:0}.cs .main-content pre{font-size:12px}}@media (forced-colors:active){.mascot picture{visibility:hidden}.mascot:before,.mascot:after{content:""}.mascot:before{background:canvastext}.mascot:after{background:canvas}}
