*{font-variant-numeric:lining-nums tabular-nums}body.page-wrapper:has(.resume-biography,.exp-timeline,.content-collection){min-height:100svh;display:flex;flex-direction:column}body.page-wrapper:has(.resume-biography,.exp-timeline,.content-collection) .page-body{flex:auto;display:flex;flex-direction:column}body.page-wrapper:has(.resume-biography,.exp-timeline,.content-collection) .page-body>section{flex:auto;display:flex;flex-direction:column;justify-content:center}body.page-wrapper:has(.exp-timeline,.content-collection) .page-body>section{justify-content:flex-start}body.page-wrapper:has(.resume-biography,.exp-timeline,.content-collection) .page-footer footer{margin-top:1rem}body.page-wrapper .page-body>section:has(.resume-biography){padding-top:2.5rem;padding-bottom:2.5rem}body.page-wrapper .resume-biography{padding-top:1rem;padding-bottom:1rem}body.page-wrapper .resume-biography .mb-12{margin-bottom:1.5rem}body.page-wrapper .resume-biography .mb-16{margin-bottom:2rem}#site-header .navbar-brand{margin-left:.75rem}.exp-timeline{--exp-accent:var(--color-primary-500, #3b82f6);--exp-dot:2.75rem;--exp-line:4px;--exp-gap:2.1rem;--exp-card-bg:color-mix(in srgb, currentColor 5%, var(--hb-color-background, #fff));--exp-card-border:color-mix(in srgb, currentColor 16%, var(--hb-color-background, #fff));--exp-line-color:color-mix(in srgb, var(--exp-accent) 55%, var(--hb-color-background, #fff));--exp-branch-w:2.25rem;--exp-fork-h:3rem;--exp-line-lead:4rem;--exp-branch-clear:6rem;--exp-branch-h:calc(var(--exp-fork-h) * 2 + var(--exp-dot) + 2.5rem);--exp-dot-offset:calc(0.5rem + var(--exp-dot) / 2);max-width:62rem;margin:0 auto;padding:0 1rem 3rem}.exp-timeline__list{position:relative;list-style:none;margin:0;padding:var(--exp-line-lead)0 0}.exp-timeline__list::before{content:"";position:absolute;top:0;bottom:0;left:calc(var(--exp-dot)/2);width:var(--exp-line);transform:translateX(-50%);border-radius:9999px;background:var(--exp-line-color)}.exp-item{position:relative;padding:0 0 2.5rem calc(var(--exp-dot)/2 + var(--exp-gap))}.exp-item:last-child{padding-bottom:0}.exp-item__dot{position:absolute;top:.5rem;left:0;z-index:2;width:var(--exp-dot);height:var(--exp-dot);display:flex;align-items:center;justify-content:center;border-radius:9999px;color:#fff;background:var(--exp-accent);box-shadow:0 0 0 5px color-mix(in srgb,var(--exp-accent) 25%,transparent)}.exp-item__icon{width:1.4rem;height:1.4rem}.exp-item__card{position:relative;text-align:left;padding:1rem 1.25rem;border-radius:.5rem;border:1px solid var(--exp-card-border);background:var(--exp-card-bg)}.exp-item__card::before{content:"";position:absolute;top:calc(.5rem + var(--exp-dot)/2 - .5rem - 1px);left:calc(-.5rem - 1px);width:1rem;height:1rem;transform:rotate(45deg);background:var(--exp-card-bg);border-left:1px solid var(--exp-card-border);border-bottom:1px solid var(--exp-card-border)}.exp-item__dates{margin:0 0 .25rem;font-size:.8rem;font-weight:600;letter-spacing:.03em;color:var(--exp-accent)}.exp-item__title{margin:0;font-size:1.15rem;font-weight:700;line-height:1.3}.exp-item__org{margin:.15rem 0 0;font-size:.95rem;opacity:.75}.exp-item__text{margin:.6rem 0 0;font-size:.95rem;line-height:1.55}@media(min-width:768px){.exp-timeline__list::before{left:50%}.exp-item{width:50%;padding-left:0}.exp-item--right{margin-left:50%;padding-left:var(--exp-gap)}.exp-item--left{padding-right:var(--exp-gap)}.exp-item--right>.exp-item__dot{left:calc(var(--exp-dot)/-2)}.exp-item--left>.exp-item__dot{left:auto;right:calc(var(--exp-dot)/-2)}.exp-item--left>.exp-item__card::before{left:auto;right:calc(-.5rem - 1px);border-left:0;border-bottom:0;border-top:1px solid var(--exp-card-border);border-right:1px solid var(--exp-card-border)}}.exp-item{--exp-line-x:calc(var(--exp-dot) / 2)}.exp-sub{position:relative;display:flex;align-items:center;min-height:var(--exp-branch-h);margin:1rem 0 5rem calc(var(--exp-dot)/-2 - var(--exp-gap));padding-left:calc(var(--exp-line-x) + var(--exp-branch-w) + var(--exp-gap))}.exp-sub .exp-item__card{width:100%}.exp-sub .exp-item__dot{top:50%;margin-top:calc(var(--exp-dot)/-2);left:calc(var(--exp-line-x) + var(--exp-branch-w) - var(--exp-dot)/2)}.exp-sub .exp-item__card::before{top:calc(50% - .5rem)}.exp-branch{position:absolute;top:0;bottom:0;left:var(--exp-line-x);width:var(--exp-branch-w);pointer-events:none}.exp-branch svg{position:absolute;left:0;width:100%;height:var(--exp-fork-h);overflow:visible;fill:none;stroke:var(--exp-line-color);stroke-width:var(--exp-line)}.exp-branch svg path{vector-effect:non-scaling-stroke}.exp-branch__merge{top:0}.exp-branch__fork{bottom:0}.exp-branch__rail{position:absolute;right:0;transform:translateX(50%);top:calc(var(--exp-fork-h) - 1px);bottom:calc(var(--exp-fork-h) - 1px);width:var(--exp-line);background:var(--exp-line-color)}@media(min-width:768px){.exp-timeline{--exp-branch-w:5rem;--exp-fork-h:3.5rem}.exp-item--has-branch{min-height:calc(var(--exp-branch-h) + var(--exp-branch-clear) * 2)}.exp-sub{--exp-line-x:0px;position:absolute;top:calc(50% + var(--exp-dot-offset));transform:translateY(-50%);width:100%;margin:0}.exp-sub--right{left:100%;padding-left:calc(var(--exp-branch-w) + var(--exp-gap))}.exp-sub--left{right:100%;padding-left:0;padding-right:calc(var(--exp-branch-w) + var(--exp-gap))}.exp-sub--left .exp-branch{left:auto;right:0}.exp-sub--left .exp-branch svg{transform:scaleX(-1)}.exp-sub--left .exp-item__dot{left:auto;right:calc(var(--exp-branch-w) - var(--exp-dot)/2)}.exp-sub--left .exp-item__card::before{left:auto;right:calc(-.5rem - 1px);border-left:0;border-bottom:0;border-top:1px solid var(--exp-card-border);border-right:1px solid var(--exp-card-border)}}.exp-link{color:inherit;text-decoration:none;border-bottom:1px solid color-mix(in srgb,currentColor 35%,transparent);transition:color .15s ease,border-color .15s ease}.exp-link:hover,.exp-link:focus-visible{color:var(--exp-accent);border-bottom-color:var(--exp-accent)}.exp-link__icon{display:inline-block;width:.85em;height:.85em;margin-left:.3em;vertical-align:-.1em}.exp-item__details{margin:.7rem 0 0;font-size:.85rem;font-weight:600;color:var(--exp-accent)}.resume-biography p.text-lg>a[target=_blank]::after{content:"";display:inline-block;width:.85em;height:.85em;margin-left:.3em;vertical-align:-.1em;background-color:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='black'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25'/%3E%3C/svg%3E")center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='black'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25'/%3E%3C/svg%3E")center/contain no-repeat}.resume-biography .mb-12:has(.bio-text)>div:first-child{display:none}.resume-biography .bio-text,.resume-biography .bio-text p{font-size:1.35rem;line-height:1.7}@media(min-width:1024px){.resume-biography .bio-text,.resume-biography .bio-text p{font-size:clamp(1.25rem,2.6vh,1.65rem);line-height:1.6}}.resume-biography .bio-text>:first-child{margin-top:0}.resume-biography p.text-lg:not(:has(a)){margin-top:.15rem}.resume-biography p.text-lg:not(:has(a))::before{content:"";display:inline-block;width:1.05em;height:1.05em;margin-right:.35em;vertical-align:-.2em;background-color:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='black'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M15 10.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z'/%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1 1 15 0Z'/%3E%3C/svg%3E")center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='black'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M15 10.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z'/%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1 1 15 0Z'/%3E%3C/svg%3E")center/contain no-repeat}.resume-biography p.text-lg:has(a)::before{content:"";display:inline-block;width:1.05em;height:1.05em;margin-right:.35em;vertical-align:-.2em;background-color:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='black'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M2.25 21h19.5m-18-18v18m10.5-18v18m6-13.5V21M6.75 6.75h.75m-.75 3h.75m-.75 3h.75m3-6h.75m-.75 3h.75m-.75 3h.75M6.75 21v-3.375c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21M3 3h12m-.75 4.5H21m-3.75 3.75h.008v.008h-.008v-.008Zm0 3h.008v.008h-.008v-.008Zm0 3h.008v.008h-.008v-.008Z'/%3E%3C/svg%3E")center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='black'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M2.25 21h19.5m-18-18v18m10.5-18v18m6-13.5V21M6.75 6.75h.75m-.75 3h.75m-.75 3h.75m3-6h.75m-.75 3h.75m-.75 3h.75M6.75 21v-3.375c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21M3 3h12m-.75 4.5H21m-3.75 3.75h.008v.008h-.008v-.008Zm0 3h.008v.008h-.008v-.008Zm0 3h.008v.008h-.008v-.008Z'/%3E%3C/svg%3E")center/contain no-repeat}.exp-timeline__header{text-align:center;margin:0 auto 1rem;padding:0 1rem}.exp-timeline__title{font-size:1.875rem;font-weight:700;line-height:1.2;letter-spacing:-.01em;margin:0}.exp-timeline__subtitle{margin:.6rem 0 0;font-size:1.15rem;line-height:1.5;color:color-mix(in srgb,currentColor 70%,transparent)}@media(min-width:768px){.exp-timeline__title{font-size:2.25rem}.exp-timeline__subtitle{font-size:1.25rem}}.exp-nowrap{white-space:nowrap}.page-heading{text-align:center;margin:0 auto 1rem;padding:0 1rem}.page-heading__title{font-size:1.875rem;font-weight:700;line-height:1.2;letter-spacing:-.01em;margin:0}.page-heading__subtitle{margin:.6rem 0 0;font-size:1.15rem;line-height:1.5;color:color-mix(in srgb,currentColor 70%,transparent)}@media(min-width:768px){.page-heading__title{font-size:2.25rem}.page-heading__subtitle{font-size:1.25rem}}.content-collection .container.max-w-\[500px\]{max-width:32rem}.content-collection .container.max-w-\[500px\]>.grid{grid-template-columns:minmax(0,1fr)}[role=article] .flex-wrap>div.min-w-0,[role=article] .flex-wrap>div.min-w-0+span.opacity-40{display:none}article main>div.mb-16>div.flex.items-center.flex-wrap>.group.inline-flex,article main>div.mb-16>div.flex.items-center.flex-wrap>.mr-1+.mx-1{display:none}html.dark section.hbb-section>div.absolute.inset-0.-z-10,html.dark .post-mesh{background:linear-gradient(135deg,rgb(59 130 246/.3),rgb(59 130 246/.12) 45%,rgb(45 212 191/.2))}.card-status{position:absolute;top:.75rem;left:.75rem;z-index:10;padding:.2rem .65rem;border-radius:9999px;font-size:.75rem;font-weight:600;letter-spacing:.02em;line-height:1.4;color:#111827;background:#facc15;border:1px solid rgb(0 0 0/.25);box-shadow:0 1px 4px rgb(0 0 0/.35);pointer-events:none}article.w-full time{margin-top:1.5rem;margin-bottom:.25rem}article.w-full main>div.container.prose{margin-top:0}article.w-full main>div.container.prose img{margin-top:0;margin-bottom:0}article.w-full main>div.container.prose .flex.pt-12{padding-top:1rem;padding-bottom:0}body:has(article.w-full) footer{margin-top:1rem}body:has(article.w-full) .page-body{position:relative;isolation:isolate;overflow:clip;margin:0;padding:2.5rem 0}.resume-biography h1{font-weight:700;letter-spacing:-.01em}.post-ext-link::after{content:"";display:inline-block;width:.8em;height:.8em;margin-left:.3em;vertical-align:-.05em;background-color:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='black'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25'/%3E%3C/svg%3E")center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='black'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25'/%3E%3C/svg%3E")center/contain no-repeat}.prose :not(pre)>code::before,.prose :not(pre)>code::after{content:none!important}.prose .chroma .c,.prose .chroma .c1,.prose .chroma .cm,.prose .chroma .cs,.prose .chroma .cp,.prose .chroma .cpf{color:#5b6472!important}html.dark .prose .chroma .c,html.dark .prose .chroma .c1,html.dark .prose .chroma .cm,html.dark .prose .chroma .cs,html.dark .prose .chroma .cp,html.dark .prose .chroma .cpf{color:#cbd5e1!important}details.poc{margin:1.5rem 0;border:1px solid rgb(148 163 184/.4);border-radius:.5rem;padding:.25rem 1rem}details.poc>summary{cursor:pointer;font-weight:600;padding:.6rem 0}details.poc[open]>summary{border-bottom:1px solid rgb(148 163 184/.3);margin-bottom:1rem}details.poc .highlight{margin-bottom:1rem}body:has(article.w-full) .hb-toc>.sticky{top:calc(var(--navbar-height) + 2.5rem)}details.poc{transition:border-color .2s ease,background-color .2s ease,box-shadow .2s ease}details.poc>summary{transition:color .2s ease}details.poc:hover{border-color:rgb(96 165 250/.8);background-color:rgb(96 165 250/8%);box-shadow:0 0 0 3px rgb(96 165 250/.15)}details.poc>summary:hover{color:#60a5fa}html:not(.dark) details.poc:hover{border-color:rgb(79 70 229/.7);background-color:rgb(79 70 229/6%);box-shadow:0 0 0 3px rgb(79 70 229/.12)}html:not(.dark) details.poc>summary:hover{color:#4f46e5}.exp-timeline{flex:auto;display:flex;flex-direction:column}.exp-timeline__list{flex:auto}.exp-timeline__list::before{bottom:calc(-1 * (3rem + 6rem))}div.p-8:has(>.card-desc--project){padding-left:1.5rem;padding-right:1.5rem}html:not(.dark) body.page-wrapper{background-color:#e4e9f1}