:root{--base-font-family: "Figtree", system-ui, -apple-system, "Segoe UI", roboto, "Helvetica Neue", arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--color-bg: #090909;--color-bg-light: #191919;--color-text: #ffffffde;--color-code-bg: #191919;--border-color: #adadad4f;--dark-border-color: #4f4f4f;--color-extra-light: #f7f7f7;--border-radius: .5rem;--site-max: 90rem;--site-edge: 1.2rem}@media screen and (min-width: 37.5em){:root{--site-edge: 2rem}}@media screen and (min-width: 60em){:root{--site-edge: 3rem}}@font-face{font-family:Figtree;font-style:normal;font-weight:300;src:url(/_astro/figtree-300.C9xDoCWy.woff2) format("woff2")}@font-face{font-family:Figtree;font-style:italic;font-weight:300;src:url(/_astro/figtree-300italic.D0UD_gmA.woff2) format("woff2")}@font-face{font-family:Figtree;font-style:normal;font-weight:400;src:url(/_astro/figtree-regular.g7Dtegnw.woff2) format("woff2")}@font-face{font-family:Figtree;font-style:italic;font-weight:400;src:url(/_astro/figtree-italic.BSc-2xHp.woff2) format("woff2")}*,*:before,*:after{box-sizing:border-box}body,h1,h2,h3,h4,h5,h6,p,blockquote,pre,hr,dl,dd,ol,ul,figure{margin:0;padding:0}body{font:300 100% var(--base-font-family);color:var(--color-text);-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--color-bg);background-size:2.5rem}h1,h2,h3,h4,h5,h6,p,blockquote,pre,ul,ol,dl,figure{margin-bottom:1rem;overflow-wrap:break-word}img{max-width:100%;vertical-align:middle;height:auto}ul,ol{margin-left:1.8em}li>ul,li>ol{margin-bottom:0}h1,h2,h3,h4,h5,h6{font-weight:400}a{color:var(--color-text);text-decoration:none}a:hover{color:var(--color-text)}blockquote{border-left:.25em solid var(--color-text);padding-left:1.3rem;font-style:italic}blockquote>:last-child{margin-bottom:0}.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;width:1px;word-wrap:normal!important}pre.astro-code{padding:1.2rem 1.6rem;margin:1.8rem 0;border-radius:.3em}.site-header{padding:1.2rem 0;margin:0 auto;width:100%}@media screen and (min-width: 37.5em){.site-header{padding:1.5rem 0 1.3rem}}.site-header .contain{display:flex;align-items:center;margin:0 auto;max-width:var(--site-max);width:calc(100% - var(--site-edge) * 2)}.site-header .logotype{transition:opacity .15s cubic-bezier(.65,.05,.36,1);will-change:opacity;position:relative;display:inline-flex;font-size:1.2rem;font-weight:300;color:inherit;text-transform:uppercase;letter-spacing:.19em}@media screen and (min-width: 25em){.site-header .logotype{font-size:1.3rem}}.site-header .logotype:hover{opacity:.5}.site-nav{margin:0 0 0 auto}.site-nav ul{list-style:none;margin:0;padding:0;display:flex;gap:.9rem}@media screen and (min-width: 25em){.site-nav ul{gap:1.3rem}}.site-nav li{font-size:.875rem}.site-nav li a{display:block;font-weight:400;transition:opacity .15s cubic-bezier(.65,.05,.36,1);color:inherit}.site-nav li a:hover{opacity:.5}.page{min-height:calc(100vh - 10.5rem);color:var(--color-text)}@media screen and (min-width: 37.5em){.page{min-height:calc(100vh - 11.1875rem)}}.page .contain{max-width:48rem;margin:0 auto;padding:2rem 0 7rem;width:90%}@media screen and (min-width: 37.5em){.page .contain{padding:3rem 0 7rem}}.page-title{font-weight:400;font-size:2rem;line-height:1.2}@media screen and (min-width: 60em){.page-title{font-size:1.5rem}}a.external:after{content:"";width:.6em;height:.6em;display:inline-block;background:url(/img/out.svg) no-repeat;background-size:100%;margin:0 0 .03em .4em}.site-footer{box-sizing:border-box;padding:1.5rem 0 3rem;margin:0;position:relative}.site-footer .contain{display:flex;flex-wrap:wrap;justify-content:space-between;margin:0 auto;max-width:var(--site-max);width:calc(100% - var(--site-edge) * 2)}.site-footer .copyright{font-size:.9rem;margin-bottom:0}.site-footer .pride svg{display:block;width:2.2rem;height:auto;border-radius:.3rem}.social{margin:0 0 0 auto}.social ul{list-style:none;margin:0;padding:0;display:flex;align-items:center}.social li{margin-left:1.25em}.social li:first-child{margin-left:0}.social li svg{width:1.4em;height:auto;display:block}.social li a{transition:opacity .15s cubic-bezier(.65,.05,.36,1);will-change:opacity;display:block;color:inherit}.social li a:hover{opacity:.5}.page-not-found .page{text-align:center;display:flex;align-items:center;justify-content:center;flex-direction:column}.page-not-found .page h1{font-size:6rem;line-height:1;margin:0 0 1rem}@media screen and (min-width: 45.625em){.page-not-found .page h1{font-size:10rem}}.page-not-found .page p{line-height:1.5;margin-bottom:3rem}.page-not-found .page a{text-decoration:underline}.page-home .site-header{border-bottom:0}.page-home h2{font-size:1.2rem;font-weight:400;margin:0}@media screen and (min-width: 37.5em){.page-home h2{font-size:1.5rem}}.page-home .more{align-self:flex-start;display:inline-block;font-size:1.125rem;font-weight:400;color:inherit}.page-home .more:hover{text-decoration:underline}.page-home .more .more-icon{display:inline-block;width:.5em;height:.8em;margin-left:.5rem;margin-bottom:-.06rem}.home-intro{padding:0 0 4rem}.home-intro .intro{margin:0 auto;max-width:var(--site-max);width:calc(100% - var(--site-edge) * 2);padding:25vh 0 0}.home-intro .intro p{font-size:2.5rem;font-weight:400;margin:0}@media screen and (min-width: 37.5em){.home-intro .intro p{font-size:3rem}}@media screen and (min-width: 60em){.home-intro .intro p{font-size:3.5rem}}.home-contain{display:flex;flex-direction:column;margin:0 auto;max-width:var(--site-max);width:calc(100% - var(--site-edge) * 2);gap:1rem}@media screen and (min-width: 37.5em){.home-contain{gap:1.5rem}}.home-posts,.home-projects,.home-writing{background-color:var(--color-bg-light);border:1px solid #ffffff0f;border-radius:.7rem;padding:1.5rem}@media screen and (min-width: 37.5em){.home-posts,.home-projects,.home-writing{padding:2.5rem 2.8rem}}.home-posts .wrapper,.home-projects .wrapper,.home-writing .wrapper{display:grid;gap:2rem;margin:0 auto;max-width:var(--site-max)}@media screen and (min-width: 60em){.home-posts .wrapper,.home-projects .wrapper,.home-writing .wrapper{gap:5rem;grid-template-columns:3fr 5fr}}.home-section-header{display:flex;flex:0 0 40%;margin:0}@media screen and (min-width: 60em){.home-section-header{margin:0 0 2rem}}.home-section-header svg{display:block;width:1.3rem;height:1.3rem}.home-posts .home-section-header{padding-bottom:1rem;border-bottom:1px solid var(--border-color)}@media screen and (min-width: 60em){.home-posts .home-section-header{border-bottom:0}}.home-post-list{display:flex;flex-direction:column;max-width:43.75rem}.home-post-list .post-list{margin:0 0 2rem}.home-post-list .post-list>li{padding-bottom:2rem;border-bottom:1.5px solid var(--border-color);margin-bottom:2rem}.home-projects{background-color:transparent;border-width:0;padding:5rem 0}.home-projects .wrapper{grid-template-columns:none;grid-gap:0}.home-projects .home-section-header{margin-bottom:2rem}.home-project-list{display:flex;flex-direction:column;flex-grow:1}.home-project-list .project-list{margin-bottom:2rem;grid-template-columns:1fr}@media screen and (min-width: 48em){.home-project-list .project-list{grid-template-columns:1fr 1fr 1fr}}.home-project-list .project-list li{background-color:var(--color-bg-light);border:1px solid #ffffff0f}@media screen and (min-width: 48em){.home-project-list .project-list li{padding:2rem}}.home-writing{margin-bottom:4rem}.home-writing .series-list{margin-bottom:2rem}.year-group:not(:last-child){margin-bottom:3rem}.year-group h2{position:sticky;top:0;background-color:var(--color-bg-light);border-bottom:1px solid var(--border-color);padding:1rem 0 .75rem;margin:0}.year-group .posts-subheading+ul{margin-top:2rem}.post-list{list-style:none;padding:0;margin:1rem 0 0}@media screen and (min-width: 60em){.post-list{margin:0}}.post-list li{margin-bottom:4rem;display:flex;flex-direction:column}.post-list li:last-child{margin-bottom:0}.post-list .post-title{font-size:1.3rem;font-weight:400;line-height:1.25;margin:0 0 .6rem}@media screen and (min-width: 28.125em){.post-list .post-title{font-size:1.45rem}}@media screen and (min-width: 37.5em){.post-list .post-title{font-size:1.6rem}}.post-list .post-title a{text-decoration:none;color:inherit}.post-list .post-title a:hover{text-decoration:underline}.posts-subheading{font-size:1.5rem;font-weight:400}@media screen and (min-width: 28.125em){.posts-subheading{font-size:1.6rem}}.post-list a:hover{text-decoration:underline}.post-meta{color:#c9a74f;display:flex;flex-wrap:wrap;gap:.3rem}.post-tags-container{display:flex;align-items:flex-end}.post-tags-container svg{margin-right:.5rem}.post-tags{display:flex;flex-wrap:wrap;margin:0;padding:0;list-style:none}.post-tags li{margin:0 .6rem 0 0;font-size:.9rem}.post-tags li:last-child{margin-right:0}.post-tags li a{color:inherit;font-weight:400;text-decoration:underline}.post-date{font-size:.9rem;font-weight:400;display:block;margin:0 1.5rem 0 0}.post-list-pagination{padding:3rem 0 0}.post-list-pagination ul{list-style:none;border-top:1.5px solid var(--border-color);margin:0;padding:2rem 0 0;display:flex;justify-content:space-between;gap:1.5rem;position:relative}.post-list-pagination li{font-size:1.125rem;font-weight:400}.post-list-pagination li a{align-self:flex-start;display:inline-block;color:inherit}.post-list-pagination li a:hover{text-decoration:underline}.post-list-pagination li a .more-icon{display:inline-block;width:.5em;height:.8em;margin-left:.5rem;margin-bottom:-.06rem}.post-list-pagination li.pagination-previous .more-icon{margin-left:0;margin-right:.5rem;transform:rotate(180deg)}.post-list-pagination .pagination-spacer{min-width:4rem}.type-post .site-header,.type-post .site-footer{border:0}.type-post .page{--color-text: #1d1d1d;margin:0 auto;max-width:var(--site-max);background-color:#eee;padding:0 var(--site-edge)}@media screen and (min-width: 62.5em){.type-post .page{border-radius:.7rem;padding:0;width:calc(100% - var(--site-edge) * 2)}}.post{margin:0 auto;max-width:48rem;padding:2.5rem 0 5rem}@media screen and (min-width: 62.5em){.post{padding:4rem 0 10rem}}.post .post-header{display:flex;flex-direction:column;padding-bottom:1.5rem;border-bottom:1px solid #0f262136;margin-bottom:2rem}.post .post-meta{color:#946a00}.post-title{font-size:1.8rem;line-height:1.2;margin:0 0 1.2rem;font-weight:400}@media screen and (min-width: 37.5em){.post-title{font-size:2.2rem}}.post-content h2,.page-content h2{font-size:1.4em;font-weight:400;margin:2em 0 1em}@media screen and (min-width: 37.5em){.post-content h2,.page-content h2{font-size:1.6em}}.post-content h2.margin-bottom-zero,.page-content h2.margin-bottom-zero{margin-bottom:.2rem}.post-content h3,.page-content h3{font-size:1.3em;font-weight:400}.post-content h4,.page-content h4{font-size:1.05em;font-weight:400}@media screen and (min-width: 37.5em){.post-content h4,.page-content h4{font-size:1.1em}}@media screen and (min-width: 62.5em){.post-content h4,.page-content h4{font-size:1.25em}}.post-content p,.page-content p{font-size:1.125rem;line-height:1.6;margin-bottom:1.8rem}@media screen and (min-width: 37.5em){.post-content p,.page-content p{font-size:1.3rem}}.post-content p.subhead,.page-content p.subhead{font-size:1.6rem;font-weight:400;line-height:1.3}@media screen and (min-width: 60em){.post-content p.subhead,.page-content p.subhead{font-size:2rem}}.post-content p code,.post-content li code,.page-content p code,.page-content li code{font-size:1rem;font-weight:500;background:#ffffffe6;border:1px solid #bebebe;padding:.2em .5em;border-radius:.2em;word-wrap:break-word}.post-content ul,.post-content ol,.page-content ul,.page-content ol{margin-bottom:1.8rem;font-size:1.1rem}@media screen and (min-width: 37.5em){.post-content ul,.post-content ol,.page-content ul,.page-content ol{font-size:1.25rem}}.post-content ul>li,.post-content ol>li,.page-content ul>li,.page-content ol>li{margin-bottom:0;line-height:1.6}.post-content a,.page-content a{text-decoration:underline}.post-content strong,.page-content strong{font-weight:400}.post-content hr,.page-content hr{margin:3rem auto;border:0;height:2px;border-radius:1px;background:currentColor;max-width:6rem}.post-content .last-updated{text-transform:uppercase;font-size:.8em;margin:3em 0 0}.post-content ul{margin-left:0;padding-left:1.3em}.post-content ul>li{margin-bottom:0;line-height:1.6}.post-content ul>li pre{margin-top:.625em}.post-content code{font-size:.875rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;line-height:1.7}.page-container{display:grid;gap:2rem;background-color:var(--color-bg-light);border:1px solid #ffffff0f;border-radius:.7rem;padding:1.5rem;margin:0 auto 1rem;max-width:var(--site-max);width:calc(100% - var(--site-edge) * 2)}@media screen and (min-width: 60em){.page-container{gap:5rem;grid-template-columns:3fr 5fr;padding:2.5rem 2.8rem 5rem}}.page-container .page-header{flex:0 0 40%}.page-container .page-content-contain{flex-grow:1}@media screen and (min-width: 60em){.page-container .page-content-contain{max-width:43.75rem}}.project-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:2rem;grid-auto-rows:1fr}@media screen and (min-width: 37.5em){.project-list{grid-template-columns:1fr 1fr;grid-auto-rows:max-content}}.page-projects .project-list{margin:0 0 4rem}@media screen and (min-width: 37.5em){.page-projects .project-list{margin-bottom:5rem}}.project-list li{align-items:center;border:1px solid rgba(255,255,255,.15);border-radius:.625rem;padding:1.5rem}.project-list .project-info{display:flex;flex-direction:column}.project-list .project-title{font-size:1.3em;font-weight:400;line-height:1.25;margin:0 0 .5rem}@media screen and (min-width: 28.125em){.project-list .project-title{font-size:1.45em}}@media screen and (min-width: 37.5em){.project-list .project-title{font-size:1.7em}}.project-list .project-title a{text-decoration:none;color:inherit}.project-list .project-title a:hover{text-decoration:underline}.project-list .project-desc{margin-bottom:2rem;color:#c9a74f}.project-list .project-github{width:1.7rem;display:block;color:inherit;margin-top:auto}.project-list .project-github svg{width:1.7rem;height:auto;display:block;transition:opacity .15s cubic-bezier(.65,.05,.36,1);will-change:opacity}.project-list .project-github svg:hover{opacity:.5}.past-project-list{list-style:none;margin:0;padding:0}.past-project-list li{margin-bottom:2rem}.past-project-list .project-title{font-weight:400;margin:0 0 .25rem}.past-project-list .project-title a{text-decoration:none}.past-project-list .project-title a:hover{text-decoration:underline}.past-project-heading{font-size:1.3em;font-weight:400;margin:0 0 3rem}@media screen and (min-width: 37.5em){.past-project-heading{font-size:1.5em}}.series-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:2rem;grid-auto-rows:1fr}@media screen and (min-width: 31.25em){.series-list{grid-template-columns:1fr 1fr}}.series-item{border-radius:.625rem;overflow:hidden;display:flex;flex-direction:column;position:relative;max-height:22rem}@media screen and (min-width: 31.25em){.series-item{max-height:100%}}.series-item a{color:inherit}.series-item a:hover{text-decoration:underline}.series-item .series-image{order:-1;height:100%}.series-item .series-image img{aspect-ratio:1/1;object-fit:cover;object-position:center;width:100%;height:100%}@media screen and (min-width: 31.25em){.series-item .series-image img{aspect-ratio:3/4}}.series-item .series-info{position:absolute;bottom:0;width:100%;background:linear-gradient(to bottom,#0000,#0009);color:#fff;padding:1.2rem 5% 8%;text-align:center}@media screen and (min-width: 37.5em){.series-item .series-info{padding-left:10%;padding-right:10%}}.series-item .series-title{margin:0 0 .6rem}.series-item .series-title a{display:inline-block}.series-item .series-description{color:#efefef;margin-bottom:0;line-height:1.35;text-wrap:balance}
