#about .resume-biography{padding-top:2.5rem;padding-bottom:1.5rem}#about .resume-biography .mb-16:last-child{margin-bottom:0}#about .resume-biography a[href$="/hire-me/"] svg{display:none}.post-figure{margin:1.5rem auto;text-align:center}.post-figure img{display:inline-block;max-width:100%;height:auto;border-radius:.375rem}.post-figure figcaption{margin-top:.5rem;font-size:.9rem;opacity:.8}.post-gallery{display:flex;flex-wrap:wrap;gap:.75rem;margin:1.5rem 0}.post-gallery img{height:220px;width:auto;margin:0;border-radius:.375rem}.share-prompt{margin-right:.5rem;font-size:1rem}.share-kofi{margin-left:.5rem}.share-kofi img{height:36px;width:auto;margin:0}.newsletter{max-width:560px;margin:2rem auto;text-align:center}.newsletter label{display:block;margin-bottom:.5rem;font-weight:700}.newsletter-row{display:flex;gap:.5rem}.newsletter input[type=email]{flex:1;min-width:0;padding:.5rem .75rem;border:1px solid #9ca3af;border-radius:.375rem;background:0 0;color:inherit}.newsletter button{padding:.5rem 1rem;border-radius:.375rem;background:var(--color-primary-600,#4f46e5);color:#fff;font-weight:600;cursor:pointer}.newsletter button:hover{background:var(--color-primary-700,#4338ca)}div.flex.pt-12.pb-4>img{flex:none;align-self:flex-start;width:6rem;height:6rem;object-fit:cover}.prose :not(pre)>code::before,.prose :not(pre)>code::after{content:none}article main .prose,article main .max-w-prose{max-width:56rem}main .max-w-3xl,section .max-w-3xl{max-width:56rem}article main>.mt-4.mb-16{margin-bottom:1.5rem}#about .resume-biography{padding-bottom:3.5rem}section .mt-16.w-fit{margin-top:1.5rem}time.text-zinc-400{color:#52525b}.dark time.text-zinc-400{color:#a1a1aa}article main .grid.max-w-prose{display:block}article main .grid.max-w-prose>.font-bold{margin-top:1.25rem;margin-bottom:.25rem;font-size:1.125rem}#contact .max-w-2xl{max-width:56rem}.post-tags-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.75rem}.post-tags-row>.flex{flex-wrap:wrap;gap:.5rem 0}.post-tags-row .github-star{margin:0;line-height:0}html:root .prose .chroma,html:root .prose pre{color:#f8f8f2;background-color:#272822}html:root .highlight .chroma .err{color:#960050;background-color:#1e0010}html:root .highlight .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}html:root .highlight .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}html:root .highlight .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}html:root .highlight .chroma .hl{background-color:#3c3d38}html:root .highlight .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}html:root .highlight .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}html:root .highlight .chroma .line{display:flex}html:root .highlight .chroma .k{color:#66d9ef}html:root .highlight .chroma .kc{color:#66d9ef}html:root .highlight .chroma .kd{color:#66d9ef}html:root .highlight .chroma .kn{color:#f92672}html:root .highlight .chroma .kp{color:#66d9ef}html:root .highlight .chroma .kr{color:#66d9ef}html:root .highlight .chroma .kt{color:#66d9ef}html:root .highlight .chroma .na{color:#a6e22e}html:root .highlight .chroma .nc{color:#a6e22e}html:root .highlight .chroma .no{color:#66d9ef}html:root .highlight .chroma .nd{color:#a6e22e}html:root .highlight .chroma .ne{color:#a6e22e}html:root .highlight .chroma .nx{color:#a6e22e}html:root .highlight .chroma .nt{color:#f92672}html:root .highlight .chroma .nf{color:#a6e22e}html:root .highlight .chroma .fm{color:#a6e22e}html:root .highlight .chroma .l{color:#ae81ff}html:root .highlight .chroma .ld{color:#e6db74}html:root .highlight .chroma .s{color:#e6db74}html:root .highlight .chroma .sa{color:#e6db74}html:root .highlight .chroma .sb{color:#e6db74}html:root .highlight .chroma .sc{color:#e6db74}html:root .highlight .chroma .dl{color:#e6db74}html:root .highlight .chroma .sd{color:#e6db74}html:root .highlight .chroma .s2{color:#e6db74}html:root .highlight .chroma .se{color:#ae81ff}html:root .highlight .chroma .sh{color:#e6db74}html:root .highlight .chroma .si{color:#e6db74}html:root .highlight .chroma .sx{color:#e6db74}html:root .highlight .chroma .sr{color:#e6db74}html:root .highlight .chroma .s1{color:#e6db74}html:root .highlight .chroma .ss{color:#e6db74}html:root .highlight .chroma .m{color:#ae81ff}html:root .highlight .chroma .mb{color:#ae81ff}html:root .highlight .chroma .mf{color:#ae81ff}html:root .highlight .chroma .mh{color:#ae81ff}html:root .highlight .chroma .mi{color:#ae81ff}html:root .highlight .chroma .il{color:#ae81ff}html:root .highlight .chroma .mo{color:#ae81ff}html:root .highlight .chroma .o{color:#f92672}html:root .highlight .chroma .ow{color:#f92672}html:root .highlight .chroma .or{color:#f92672}html:root .highlight .chroma .p{color:#f8f8f2}html:root .highlight .chroma .c{color:#75715e}html:root .highlight .chroma .ch{color:#75715e}html:root .highlight .chroma .cm{color:#75715e}html:root .highlight .chroma .c1{color:#75715e}html:root .highlight .chroma .cs{color:#75715e}html:root .highlight .chroma .cp{color:#75715e}html:root .highlight .chroma .cpf{color:#75715e}html:root .highlight .chroma .gd{color:#f92672}html:root .highlight .chroma .ge{font-style:italic}html:root .highlight .chroma .gi{color:#a6e22e}html:root .highlight .chroma .gs{font-weight:700}html:root .highlight .chroma .gu{color:#75715e}@media(min-width:1280px){.page-body aside.hb-sidebar-container{display:none}}@media(min-width:768px){.container.grid.grid-cols-1.max-w-\[65ch\]{max-width:72rem;grid-template-columns:repeat(2,minmax(0,1fr))}}article main>.mt-4.mb-16{display:flex;flex-wrap:wrap;align-items:center;column-gap:1rem;row-gap:.5rem}article main>.mt-4.mb-16>.mt-3{margin-top:0}article main>.mt-4.mb-16>.mt-3>div{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.table-scroll{overflow-x:auto}.aspect-\[16\/9\]:has(>a>.bg-gradient-to-br.from-primary-600\/40){display:none}@media(max-width:639px){[role=article] .border-t>.flex>span.opacity-40{display:none}}.prose :not(pre)>code{color:#c7254e;background-color:#f9f2f4;font-weight:500}.dark .prose :not(pre)>code{color:#f48fb1;background-color:rgb(244 143 177/.12)}