/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
html{-webkit-text-size-adjust:100%;line-height:1.15}body{margin:0}main{display:block}h1{margin:.67em 0;font-size:2em}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace;font-size:1em}a{background-color:#0000}abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner{border-style:none;padding:0}[type=button]::-moz-focus-inner{border-style:none;padding:0}[type=reset]::-moz-focus-inner{border-style:none;padding:0}[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring{outline:1px dotted buttontext}[type=button]:-moz-focusring{outline:1px dotted buttontext}[type=reset]:-moz-focusring{outline:1px dotted buttontext}[type=submit]:-moz-focusring{outline:1px dotted buttontext}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;white-space:normal;max-width:100%;padding:0;display:table}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button{height:auto}[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template,[hidden]{display:none}@font-face{font-family:Berkeley Mono;src:url(/fonts/TX-02-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Berkeley Mono;src:url(/fonts/TX-02-Bold.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--font-family:"Berkeley Mono", monospace;--line-height:1.5rem;--text-color:#e0e0e8;--secondary-text-color:#8a8a9a;--muted-text-color:#4a4a5a;--accent-color:#6ee7b7;--accent-hover:#a7f3d0;--background-color:#0a0a0f;--surface-color:#12121a;--border-color:#1a1a2e;--avatar-size:15ch;--font-weight-normal:normal;--font-weight-bold:bold;font-family:var(--font-family);font-weight:var(--font-weight-normal);font-size:14px;font-style:normal}html{background:var(--background-color);color:var(--text-color);flex-direction:column;align-items:center;margin:0;padding:0;display:flex}body{width:100%;margin:calc(4 * var(--line-height)) 0;padding:var(--line-height) 2ch;box-sizing:border-box;max-width:calc(min(80ch,round(down,100%,1ch)));position:relative}.about,.essays,.projects,.experience,.links{margin:calc(3 * var(--line-height)) 0;padding-top:calc(2 * var(--line-height));border-top:1px solid var(--border-color)}.about-title,.essays-title p,.projects-title p,.experience-title p,.links-title p{color:var(--accent-color);font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:.15em;font-size:.85rem}.about-title:before,.essays-title p:before,.projects-title p:before,.experience-title p:before,.links-title p:before{content:"> ";color:var(--muted-text-color)}.header{height:var(--avatar-size);align-items:center;display:flex}.avatar{width:var(--avatar-size);height:var(--avatar-size);float:left;margin-right:2ch}.avatar img{object-fit:contain;border-radius:50%;width:100%;display:block;overflow:hidden}.name{margin:0}.description{margin:.25rem 0 0}.blog-entry,.project-description,.social-handle{margin-bottom:calc(2 * var(--line-height))}a{color:var(--text-color);text-decoration:none;transition:color .2s}a:after{content:" ->";color:var(--muted-text-color);transition:color .2s}a[href^=http]:after,a[href^=mailto\:]:after{content:" ↗"}a:hover,a:hover:after{color:var(--accent-color)}a:visited,a:active,a:focus{color:var(--text-color)}a:visited:hover,a:active:hover,a:focus:hover{color:var(--accent-color)}.blog-archive{font-size:.8rem}.blog-archive a{color:var(--muted-text-color);transition:color .2s}.blog-archive a:hover{color:var(--accent-color)}.blog-archive a:after{content:" ->";color:var(--muted-text-color)}.blog-archive a:hover:after{color:var(--accent-color)}.back-home{margin-top:calc(3 * var(--line-height));padding-top:calc(1.5 * var(--line-height));border-top:1px solid var(--border-color)}.back-home a{color:var(--muted-text-color);font-size:.85rem}.back-home a:after,.blog-header a:after{content:""}.back-home a:hover{color:var(--accent-color)}.description,.about-content,.project-description,.job-description,.blog-content p{color:var(--secondary-text-color)}.project-entry,.blog-date,.job-date,.social-entry,.blog-header{color:var(--muted-text-color)}.blog-date{font-size:.85rem}.blog a,.projects .project-entry a{color:var(--text-color)}.blog a:hover,.projects .project-entry a:hover{color:var(--accent-color)}.blog-header{color:var(--muted-text-color);align-items:center;margin-left:0;padding-left:0;font-size:.8rem;list-style:none;display:flex}.blog-header li:nth-child(2){margin-left:1ch;margin-right:1ch}.blog-header a{color:var(--muted-text-color)}.blog-header a:hover{color:var(--accent-color)}.blog-content img{width:100%;margin:var(--line-height) 0;border-radius:6px;display:block}.blog-title{margin-bottom:.25rem}.date{color:var(--muted-text-color);margin-top:0;font-size:.85rem}.job-stack{flex-wrap:wrap;gap:.5ch;margin-top:.75rem;padding:0;list-style:none;display:flex}.job-stack li{color:var(--accent-color);background:#6ee7b714;border:1px solid #6ee7b726;border-radius:3px;padding:.15rem .75ch;font-size:.75rem}.job-title{color:var(--text-color);font-weight:var(--font-weight-bold);margin-bottom:.25rem}@media screen and (min-width:480px){:root{font-size:16px}.essays,.projects,.experience,.links{grid-template-columns:1fr 3fr;place-items:baseline left;display:grid}.essays-title,.blog-archive,.projects-title,.experience-title,.links-title{grid-column:1/3}.blog-entry,.project-description,.social-handle{margin-bottom:0}.job-stack{margin-bottom:var(--line-height)}}
