:root{--color-accent-50:255, 251, 235;--color-accent-100:254, 243, 199;--color-accent-200:253, 230, 138;--color-accent-300:252, 211, 77;--color-accent-400:251, 191, 36;--color-accent-500:245, 158, 11;--color-accent-600:217, 119, 6;--color-accent-700:180, 83, 9;--color-accent-800:146, 64, 14;--color-accent-900:120, 53, 15;--site-accent:rgb(var(--color-accent-600));--site-accent-text:rgb(var(--color-accent-800));--site-accent-soft:rgba(var(--color-accent-400), 0.18);--site-accent-border:rgba(var(--color-accent-500), 0.55);--site-link:rgb(var(--color-primary-700));--site-link-underline:rgba(var(--color-primary-400), 0.55);--site-selection:rgba(var(--color-accent-300), 0.6);--site-card-shadow:0 8px 24px -8px rgba(var(--color-neutral-900), 0.18)}html.dark{--site-accent:rgb(var(--color-accent-400));--site-accent-text:rgb(var(--color-accent-300));--site-accent-soft:rgba(var(--color-accent-400), 0.14);--site-accent-border:rgba(var(--color-accent-400), 0.45);--site-link:rgb(var(--color-primary-300));--site-link-underline:rgba(var(--color-primary-400), 0.5);--site-selection:rgba(var(--color-accent-500), 0.4);--site-card-shadow:0 8px 24px -8px rgba(0, 0, 0, 0.6)}@media(min-width:1024px){.max-w-7xl{max-width:88rem}.lg\:px-32{padding-left:4rem;padding-right:4rem}.max-w-prose{max-width:80ch}}@media(min-width:1536px){.max-w-prose{max-width:95ch}}#menu-blur{display:none!important}#menu-blur+div>.main-menu{margin-top:.5rem;padding:.125rem .75rem .125rem 1rem;border:1px solid rgba(255,255,255,.5);border-radius:.75rem;background-color:rgba(255,255,255,.6);box-shadow:0 1px 3px rgba(0,0,0,8%);-webkit-backdrop-filter:blur(12px)saturate(1.4);backdrop-filter:blur(12px)saturate(1.4);transition:background-color 200ms ease,border-color 200ms ease,box-shadow 200ms ease}.header-scrolled #menu-blur+div>.main-menu{border-color:rgba(var(--color-primary-300),.6);background-color:rgba(var(--color-primary-100),.95);box-shadow:0 6px 20px rgba(0,0,0,.15)}.dark #menu-blur+div>.main-menu{border-color:rgba(255,255,255,.15);background-color:rgba(var(--color-neutral-500),.3)}.dark.header-scrolled #menu-blur+div>.main-menu{border-color:rgba(var(--color-neutral-700),.9);background-color:rgba(var(--color-neutral-900),.92);box-shadow:0 6px 20px rgba(0,0,0,.45)}#menu-blur+div>.main-menu>a[href="/"]{font-size:1.05rem;font-weight:800;letter-spacing:.01em}section.prose:has(>.home-projects){max-width:none}section.prose:has(>.home-projects)>p{max-width:65ch;margin-left:auto;margin-right:auto;text-wrap:balance}.home-projects ul{padding-left:0;list-style:none}.home-projects li{position:relative;min-height:2rem;padding-left:2.75rem}.home-projects .project-icon{position:absolute;top:50%;left:0;width:2rem;height:2rem;margin:0;border-radius:.375rem;transform:translateY(-50%);object-fit:contain}.home-projects .project-icon--fallback{display:flex;align-items:center;justify-content:center;background-color:rgba(var(--color-neutral-500),.15);color:rgb(var(--color-neutral-600));font-size:1.1rem}.dark .home-projects .project-icon--fallback{color:rgb(var(--color-neutral-300))}.example-doc{background-color:#f3f4f6;border-radius:.375rem;padding:.25rem 1.25rem}.dark .example-doc{background-color:#262626}.placeholders{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:.5rem 1rem;margin:1.5rem 0;padding:.75rem 1.25rem 1rem;border-radius:.375rem;background-color:#f3f4f6}.dark .placeholders{background-color:#262626}.placeholders-title{grid-column:1/-1;margin:0;font-size:.875rem}.placeholders label{display:flex;flex-direction:column;gap:.25rem;font-size:.875rem}.placeholders input{padding:.25rem .5rem;border:1px solid #d1d5db;border-radius:.25rem;background-color:#fff;font-family:ui-monospace,monospace}.dark .placeholders input{border-color:#525252;background-color:#171717;color:inherit}.placeholder-value{text-decoration:underline dotted;text-underline-offset:.2em}.placeholder-filled{text-decoration-style:solid}.code-include{--code-include-border:rgb(var(--color-neutral-200));--code-include-header-bg:rgb(var(--color-neutral-50));--code-include-muted:rgb(var(--color-neutral-500));margin:1.75em 0;overflow:hidden;border:1px solid var(--code-include-border);border-radius:.5rem;box-shadow:0 1px 2px rgba(var(--color-neutral-900),.06)}.dark .code-include{--code-include-border:rgb(var(--color-neutral-700));--code-include-header-bg:rgb(var(--color-neutral-800));--code-include-muted:rgb(var(--color-neutral-400))}.code-include-header{display:flex;align-items:center;gap:.625rem;padding:.5rem .875rem;background-color:var(--code-include-header-bg);border-bottom:1px solid var(--code-include-border);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8125rem;line-height:1.25rem}.code-include-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:rgb(var(--color-neutral-800))}.dark .code-include-title{color:rgb(var(--color-neutral-100))}.code-include-lang{padding:0 .4rem;border:1px solid var(--code-include-border);border-radius:9999px;font-size:.6875rem;letter-spacing:.04em;text-transform:uppercase;color:var(--code-include-muted)}.prose .code-include-download{margin-left:auto;color:var(--code-include-muted);text-decoration:none;white-space:nowrap}.prose .code-include-download:hover,.prose .code-include-download:focus-visible{color:var(--site-accent);text-decoration:underline;text-underline-offset:.2em}.code-include .highlight-wrapper{margin:0;border-radius:0;box-shadow:none}.code-include pre{margin:0;border-radius:0}details.code-include>summary{cursor:pointer;list-style:none;user-select:none}details.code-include>summary::-webkit-details-marker{display:none}details.code-include>summary::before{content:"";flex:none;width:.4rem;height:.4rem;margin:0 .15rem 0 .05rem;border-right:1.5px solid var(--code-include-muted);border-bottom:1.5px solid var(--code-include-muted);transform:rotate(-45deg);transition:transform 150ms ease}details.code-include[open]>summary::before{transform:rotate(45deg)}details.code-include>summary:hover{background-color:rgb(var(--color-neutral-100))}.dark details.code-include>summary:hover{background-color:rgb(var(--color-neutral-700))}details.code-include>summary:focus-visible{outline:2px solid var(--site-accent);outline-offset:-2px}details.code-include:not([open])>summary{border-bottom:none}@media(prefers-reduced-motion:reduce){details.code-include>summary::before{transition:none}}.resume-page{--resume-accent:rgb(var(--color-primary-600));--resume-accent-soft:rgba(var(--color-primary-500), 0.12);--resume-accent-2:rgb(var(--color-secondary-600));--resume-border:rgba(var(--color-neutral-500), 0.25);--resume-card:rgba(var(--color-neutral-500), 0.06);--resume-muted:rgb(var(--color-neutral-500))}.dark .resume-page{--resume-accent:rgb(var(--color-primary-400));--resume-accent-2:rgb(var(--color-secondary-400));--resume-muted:rgb(var(--color-neutral-400))}.resume-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem}.resume-pdf-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.4rem 1rem .4rem .6rem;border:1px solid var(--resume-accent);border-radius:9999px;background-color:var(--resume-accent-soft);color:var(--resume-accent);font-weight:600;text-decoration:none;transition:background-color 150ms ease,transform 150ms ease}.resume-pdf-btn:hover{background-color:rgba(var(--color-primary-500),.15);transform:translateY(-1px)}.resume-pdf-btn img{margin:0}.resume.prose{max-width:none}.resume-intro{padding:1rem 1.25rem;border-left:4px solid var(--resume-accent);border-radius:0 .5rem .5rem 0;background-color:var(--resume-accent-soft)}.resume-intro p{margin:0}.resume-intro p:first-child{font-size:1.1rem}.resume-intro p:first-child strong{color:var(--resume-accent)}.resume-intro p+p{margin-top:.5rem;font-size:.9rem;color:var(--resume-muted)}.resume-section{margin-top:2.5rem}.resume-section>h2{display:flex;align-items:center;gap:.6rem;margin:0 0 1rem;padding-bottom:.4rem;border-bottom:2px solid var(--resume-accent);color:var(--resume-accent);font-size:1rem;letter-spacing:.1em;text-transform:uppercase}.resume-section>h2::before{content:"";width:.6rem;height:.6rem;border-radius:.15rem;background-color:var(--resume-accent-2)}.resume-section>h2>a{color:inherit;text-decoration:none}.resume-section>h2>a::after{content:" ↗"}.resume-entry{margin:1rem 0;padding:1rem 1.25rem;border:1px solid var(--resume-border);border-left:4px solid var(--resume-accent);border-radius:.5rem;background-color:var(--resume-card)}.resume-entry>h3{margin:0;font-size:1.2rem}.resume-entry>h3+p{margin:.15rem 0 .75rem;font-size:.85rem;color:var(--resume-muted)}.resume-entry em{color:var(--resume-accent-2)}.resume-entry ul{margin-bottom:0}.resume-entry h4{margin:1.25rem 0 0;padding-left:.75rem;border-left:3px solid var(--resume-accent-2);font-size:1rem}.resume-entry h4+p{margin:0 0 -.5rem;padding-left:.9rem;font-size:.8rem;color:var(--resume-muted)}.resume-section--core-skills>ul,.resume-section--open-source>ul{display:grid;grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:.75rem;margin:0;padding:0;list-style:none}.resume-section--core-skills>ul>li,.resume-section--open-source>ul>li{margin:0;padding:.75rem 1rem;border:1px solid var(--resume-border);border-top:3px solid var(--resume-accent);border-radius:.5rem;background-color:var(--resume-card);font-size:.9rem}.resume-section--core-skills>ul>li>strong:first-child{display:block;margin-bottom:.25rem;color:var(--resume-accent)}.resume-section--open-source>ul>li strong{color:var(--resume-accent)}.resume-columns{display:flex;flex-direction:column}.resume-main,.resume-side{display:contents}.resume-section--summary{order:1}.resume-section--core-skills{order:2}.resume-section--professional-experience{order:3}.resume-section--references{order:4}.resume-section--open-source{order:5}.resume-section--education{order:6}.resume-page{page:resume}@page resume{size:letter;margin:.45in .5in}@media print{body:has(.resume-page)>header,body:has(.resume-page) #hero,body:has(.resume-page) .single_hero_background,body:has(.resume-page) #scroll-to-top,body:has(.resume-page) #site-footer,.resume-pdf-btn{display:none!important}html:has(.resume-page){font-size:12.5px}body:has(.resume-page){max-width:none!important;padding:0!important}.resume-page,.resume-page *{-webkit-print-color-adjust:exact;print-color-adjust:exact}.resume-page .prose{line-height:1.4}.resume-header{margin-top:0}.resume-header h1{font-size:2rem}.resume.prose{margin:.5rem 0 0}.resume-intro{padding:.5rem .9rem}.resume-intro p:first-child{font-size:1.05rem}.resume-intro p+p{margin-top:.2rem}.resume-columns{display:grid;grid-template-columns:minmax(0,1fr)2.2in;gap:1.25rem;align-items:start}.resume-main,.resume-side{display:block}.resume-section{margin-top:.9rem}.resume-section>h2{margin-bottom:.5rem;padding-bottom:.2rem;font-size:.9rem}.resume-section>p{margin:0}.resume-page ul{margin:.25rem 0 0;padding-left:1.1rem}.resume-page li{margin:.1rem 0;padding-left:.2rem}.resume-page li>p{margin:0}.resume-entry{margin:.5rem 0;padding:.5rem .75rem}.resume-entry>h3{display:inline;font-size:1.05rem}.resume-entry>h3+p{display:inline;margin:0 0 0 .6rem;white-space:nowrap}.resume-entry>h3+p::after{content:"";display:block}.resume-entry em{display:block}.resume-entry p{margin:.2rem 0 0}.resume-entry h4{display:inline-block;margin:.45rem 0 0;padding-left:.5rem;font-size:.95rem}.resume-entry h4+p{display:inline-block;margin:0 0 0 .5rem;padding-left:0}.resume-section--core-skills>ul,.resume-section--open-source>ul{display:block;padding:0}.resume-section--core-skills>ul>li,.resume-section--open-source>ul>li{margin:0 0 .45rem;padding:.1rem 0 .1rem .55rem;border:none;border-left:3px solid var(--resume-accent);border-radius:0;background:0 0;font-size:.85rem}.resume-section--core-skills>ul>li>strong:first-child{margin-bottom:0}.resume-side .resume-entry{padding:.4rem .6rem}.resume-side .resume-entry>h3{display:block;font-size:.95rem}.resume-side .resume-entry>h3+p{display:block;margin:0}.resume-side .resume-entry li{font-size:.85rem}.resume-section--references{margin-top:.9rem}.resume-page h2,.resume-page h3,.resume-page h4{break-after:avoid}.resume-side .resume-entry,.resume-page li{break-inside:avoid}.resume-page .anchor,.resume-page h2>span,.resume-page h3>span,.resume-page h4>span{display:none}}body:not(:has(.resume-page)) ::selection{background-color:var(--site-selection)}body:not(:has(.resume-page)) :focus-visible{outline:2px solid var(--site-accent);outline-offset:2px;border-radius:2px}body:not(:has(.resume-page)) .prose :where(p,li,td,dd,blockquote) a:not(:where(.toc *,.not-prose *)){color:var(--site-link);text-decoration-line:underline;text-decoration-color:var(--site-link-underline);text-decoration-thickness:1px;text-underline-offset:3px;transition:color 150ms ease,text-decoration-color 150ms ease}body:not(:has(.resume-page)) .prose :where(p,li,td,dd,blockquote) a:not(:where(.toc *,.not-prose *)):hover{color:var(--site-accent-text);text-decoration-color:var(--site-accent);text-decoration-thickness:2px}body:not(:has(.resume-page)) .article-content h2::after{content:"";display:block;width:2.5rem;height:3px;margin-top:.35rem;border-radius:2px;background-color:var(--site-accent)}body:not(:has(.resume-page)) .article-content :is(h2,h3,h4) a[href^="#"]{color:var(--site-accent)}body:not(:has(.resume-page)) .article-content :is(ul,ol)>li::marker{color:var(--site-accent)}body:not(:has(.resume-page)) .prose :not(pre)>code{background-color:var(--site-accent-soft);color:var(--site-accent-text)}body:not(:has(.resume-page)) .prose blockquote{padding:.5rem 1rem;border-inline-start-color:var(--site-accent);border-radius:0 .5rem .5rem 0;background-color:var(--site-accent-soft)}body:not(:has(.resume-page)) span.rounded-md.border.border-primary-400{border-color:var(--site-accent-border);background-color:var(--site-accent-soft);color:var(--site-accent-text);transition:background-color 150ms ease}body:not(:has(.resume-page)) a:hover span.rounded-md.border.border-primary-400{background-color:rgba(var(--color-accent-400),.3)}body:not(:has(.resume-page)) .article-link--card{transition:border-color 150ms ease,box-shadow 150ms ease,transform 150ms ease}body:not(:has(.resume-page)) a:hover .article-link--card,body:not(:has(.resume-page)) .article-link--card:hover{border-color:var(--site-accent-border);box-shadow:var(--site-card-shadow);transform:translateY(-2px)}body:not(:has(.resume-page)) .toc .border-dotted{border-inline-start:2px solid var(--site-accent-border)}body:not(:has(.resume-page)) .toc a:hover{color:var(--site-accent-text)}body:not(:has(.resume-page)) #reading-progress{background-image:linear-gradient( 90deg,rgb(var(--color-primary-500)),var(--site-accent) )}body:not(:has(.resume-page)) #scroll-to-top a:hover{color:var(--site-accent)}@media(prefers-reduced-motion:reduce){body:not(:has(.resume-page)) .article-link--card{transition:none}body:not(:has(.resume-page)) a:hover .article-link--card,body:not(:has(.resume-page)) .article-link--card:hover{transform:none}}