:root{--background:222 38% 11%;--foreground:212 45% 90%;--muted:222 32% 16%;--muted-foreground:214 26% 70%;--border:221 26% 24%;--primary:226 80% 78%;--on-media:222 45% 16%;--media-scrim:0 0% 100%;--diagram-surface:0 0% 8%;--signal-cyan:186 70% 76%;--signal-green:142 52% 74%;--signal-amber:40 75% 78%;--signal-magenta:320 60% 80%;--signal-violet:264 65% 82%;--font-display:var(--font-space-grotesk),ui-sans-serif,system-ui,sans-serif;--font-prose:var(--font-inter),ui-sans-serif,system-ui,sans-serif;--font-mono:var(--font-ibm-plex-mono),ui-monospace,SFMono-Regular,monospace;--text-2xs:0.625rem;--text-xs:0.6875rem;--text-sm:0.75rem;--text-base:0.8125rem;--text-md:0.875rem;--text-lg:1rem;--text-xl:1.125rem;--text-2xl:clamp(1.25rem,2vw,1.5rem);--text-3xl:clamp(1.5rem,3vw,1.8rem);--text-4xl:clamp(1.8rem,4.5vw,2.55rem);--text-display:clamp(2.75rem,9vw,5.25rem);--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4rem;--radius-sm:0.375rem;--radius-md:0.5rem;--radius-lg:0.75rem;--radius-pill:999px;--dur-fast:160ms;--dur-base:200ms;--dur-slow:300ms;--dur-slower:500ms;--ease-out:cubic-bezier(0.16,1,0.3,1);--ease-in-out:cubic-bezier(0.65,0,0.35,1)}.light{--background:206 74% 90%;--foreground:219 42% 21%;--muted:205 60% 84%;--muted-foreground:215 28% 36%;--border:205 48% 79%;--primary:227 58% 47%;--signal-cyan:190 62% 38%;--signal-green:145 48% 38%;--signal-amber:36 75% 42%;--signal-magenta:322 55% 48%;--signal-violet:264 50% 54%}*{box-sizing:border-box;border-color:hsl(var(--border))}html{color-scheme:dark;background:hsl(var(--background))}html.light{color-scheme:light}body{margin:0;background:hsl(var(--background));color:hsl(var(--foreground));font-family:var(--font-display);font-size:16px;line-height:1.5}a{color:inherit;text-decoration:none}button,input{font:inherit}button{background:transparent;border:0;cursor:pointer}img,svg{display:block}.min-screen{display:flex;flex-direction:column;min-height:100vh}.min-screen,.skip-link{background:hsl(var(--background))}.skip-link{border:1px solid hsl(var(--border));border-radius:var(--radius-sm);color:hsl(var(--foreground));left:.75rem;padding:.5rem .7rem;position:absolute;top:-4rem;text-decoration:none;transform:translateY(-4px);transition:top .14s ease;z-index:120}.skip-link:focus-visible{top:.75rem;transform:translateY(0)}.skip-link:hover{border-color:hsl(var(--muted-foreground))}.route-transition-shell{flex:1 0 auto}html.js .featured-card,html.js .initiative-copy,html.js .initiative-heading,html.js .intro>*,html.js .photo-frame,html.js .profile,html.js .project-card,html.js .section-title,html.js .work-list>*{visibility:hidden}.container{width:100%}.container,.page{max-width:42rem;margin:0 auto}.page{padding:6rem 1.5rem 0}.stack-12>*+*{margin-top:clamp(3.5rem,8vw,5.5rem)}.section-stack>*+*{margin-top:1.75rem}.muted{color:hsl(var(--muted-foreground))}.link-underline{text-decoration:underline;text-underline-offset:2px}.blue-hover:hover,.group:hover .blue-hover,.link-underline:hover{color:hsl(var(--primary))}.section-title{color:hsl(var(--muted-foreground));font-family:var(--font-display);font-size:var(--text-md);font-weight:500;letter-spacing:0;line-height:1.3;margin:0;text-transform:lowercase}.kbd{align-items:center;background:hsl(var(--muted));border:1px solid hsl(var(--border));border-radius:var(--radius-sm);display:inline-flex;font-family:var(--font-mono);font-size:10px;font-weight:500;gap:.25rem;height:1.25rem;padding:0 .375rem}.site-header{position:fixed;inset:0 0 auto;z-index:50;background:hsl(var(--background)/.8);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid hsl(var(--muted)/.2)}.header-inner{align-items:center;display:flex;height:3.5rem;justify-content:space-between;padding:0 1rem}.nav{display:flex;gap:1.5rem;font-size:var(--text-md)}.footer-link,.header-action,.nav a,.social-link{color:hsl(var(--muted-foreground));transition:color var(--dur-fast) ease,background var(--dur-fast) ease,border-color var(--dur-fast) ease}.footer-link:hover,.header-action:hover,.nav a.active,.nav a:hover,.social-link:hover{color:hsl(var(--foreground))}.header-actions{gap:1rem}.header-action,.header-actions{align-items:center;display:flex}.header-action{gap:.5rem;color:hsl(var(--muted-foreground));padding:0;background:transparent;border:0;cursor:pointer;font:inherit}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.profile{align-items:center;display:flex;gap:1.5rem;margin-bottom:2rem}.avatar{border-radius:var(--radius-pill);height:88px;width:88px}.avatar-fx{display:inline-block;flex-shrink:0}.page-title{font-size:1.5rem;font-weight:500;letter-spacing:0;line-height:2rem;margin:0}.profile h1{font-size:var(--text-4xl);font-weight:700;letter-spacing:-.035em;line-height:1.05;margin:0}.socials{display:flex;flex-wrap:wrap;gap:1rem;margin-top:.5rem}.social-link{align-items:center;display:flex;font-size:var(--text-md);gap:.5rem}.intro>*+*{margin-top:1rem}.initiative-copy,.intro p,.project-summary{color:hsl(var(--muted-foreground));font-family:var(--font-prose);line-height:1.625;margin:0}.work-list>*+*{margin-top:.5rem}.work-row{border-radius:var(--radius-md);color:hsl(var(--foreground));display:flex;justify-content:space-between;padding:1rem;text-align:left;width:100%}.work-row.open,.work-row:hover{background:hsl(var(--muted)/.4)}.footer-inner,.initiative-heading,.project-heading,.work-left,.work-meta,.work-title{align-items:center;display:flex}.work-left{gap:1rem}.work-initial{align-items:center;background:hsl(var(--muted));border:1px solid hsl(var(--muted-foreground)/.25);border-radius:var(--radius-pill);color:hsl(var(--muted-foreground));display:inline-flex;font-family:var(--font-mono);font-size:var(--text-2xs);height:20px;justify-content:center;text-transform:uppercase;width:20px}.skill-group-icon svg{height:13px;width:13px}.work-title{gap:.5rem}.project-date,.work-meta span,.work-title span{font-size:var(--text-md)}.project-date,.work-meta span,.work-title .company{color:hsl(var(--muted-foreground))}.work-meta{gap:1rem}.chevron{color:hsl(var(--muted-foreground));transition:transform var(--dur-base) ease}.work-row.open .chevron{transform:rotate(180deg)}.work-detail{color:hsl(var(--muted-foreground));font-size:var(--text-md);line-height:1.625;margin:0 1rem 1rem;overflow:hidden;padding-left:0}.work-detail a{color:hsl(var(--foreground));text-decoration:underline}.skill-list{display:grid;grid-gap:.5rem;gap:.5rem}.skill-dropdown-detail{height:0;margin-top:-.25rem;opacity:0;overflow:hidden;padding-top:0;visibility:hidden}.skill-dropdown-detail .skill-list{padding-top:.5rem}.skill-dropdown-row{transition:background .18s ease,border-color .18s ease,color .18s ease}.skill-dropdown-row .work-initial{transition:background .18s ease,color .18s ease,border-color .18s ease}.skill-dropdown-row.open .work-initial{background:hsl(var(--foreground));border-color:hsl(var(--foreground));color:hsl(var(--background))}.skill-row{align-items:center;background:hsl(var(--background)/.48);border:1px solid hsl(var(--border)/.72);border-radius:var(--radius-md);display:grid;grid-gap:.625rem;gap:.625rem;grid-template-columns:1.5rem minmax(5rem,1fr);min-height:2.75rem;padding:.625rem .75rem}.skill-row:hover{background:hsl(var(--muted)/.34);border-color:hsl(var(--muted-foreground)/.28)}.skill-icon{align-items:center;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius-sm);display:inline-flex;height:1.5rem;justify-content:center;width:1.5rem}.skill-icon svg{color:hsl(var(--foreground))}.skill-icon img{display:block;height:1rem;max-width:1rem;object-fit:contain;width:1rem}.skill-name{font-size:var(--text-base);color:hsl(var(--foreground));font-weight:500;min-width:0;overflow-wrap:anywhere}.featured-card{display:block;margin:0 -1rem;padding:0 1rem}.initiative-heading,.project-heading{justify-content:space-between;margin-bottom:.5rem}.project-title{font-size:var(--text-xl);font-weight:600;letter-spacing:-.01em;margin:0;transition:color var(--dur-fast) ease}.project-date{align-items:center;display:flex;gap:.5rem}.home-profile-section{position:relative}.home-intro-copy{max-width:40rem;padding-left:0}.home-intro-copy p{color:hsl(var(--foreground)/.72);font-size:1.025rem;line-height:1.7}.home-section>.section-title,.stack-skills>.section-title{display:block}.selected-work-layout{display:grid;grid-gap:0;gap:0}.work-category{color:hsl(var(--signal-cyan));display:block;font-family:var(--font-mono);font-size:var(--text-2xs);line-height:1.25rem;margin-bottom:.35rem;text-transform:uppercase}.index-row{display:grid;grid-gap:1rem;gap:1rem;grid-template-columns:2.25rem minmax(0,1fr) auto;margin:0}.index-row:nth-child(3n+1) .home-item-index{color:hsl(var(--signal-cyan))}.index-row:nth-child(3n+2) .home-item-index{color:hsl(var(--signal-green))}.index-row:nth-child(3n) .home-item-index{color:hsl(var(--signal-amber))}.selected-work-secondary .home-item-index{padding-top:.2rem}.selected-work-secondary{align-items:start;border-bottom:1px solid hsl(var(--border));border-top:1px solid hsl(var(--border));padding:1.1rem .25rem;position:relative}.selected-work-title:after{content:"";inset:0;position:absolute}.selected-work-title:focus-visible:after{outline:2px solid hsl(var(--primary));outline-offset:-2px}.selected-work-code{align-items:center;color:hsl(var(--muted-foreground));display:inline-flex;font-family:var(--font-mono);font-size:var(--text-xs);gap:.25rem;margin-top:.55rem;position:relative;transition:color var(--dur-fast) ease;z-index:1}.selected-work-code:hover{color:hsl(var(--primary))}.home-item-index{color:hsl(var(--muted-foreground));font-family:var(--font-mono);font-size:var(--text-xs)}.selected-work-secondary+.selected-work-secondary{border-top:0}.selected-work-secondary-copy{min-width:0}.selected-work-secondary .project-summary{display:-webkit-box;margin-top:.45rem;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.selected-work-secondary-arrow{color:hsl(var(--muted-foreground));margin-top:.15rem;transition:color var(--dur-fast) ease,transform var(--dur-fast) ease}.selected-work-secondary:hover .selected-work-secondary-arrow{color:hsl(var(--foreground));transform:translate(2px,-2px)}.stack-skills .skill-dropdowns{border-top:1px solid hsl(var(--border));display:block}.stack-skills .skill-dropdown{border-bottom:1px solid hsl(var(--border))}.stack-skills .skill-dropdown+.skill-dropdown{margin-top:0}.stack-skills .work-row{background:transparent;border:0;border-radius:0;min-height:0;padding:1.15rem 0;transition:none}.stack-skills .work-row.open,.stack-skills .work-row:hover{background:transparent}.stack-skills .work-left,.stack-skills .work-title{min-width:0}.stack-skills .work-title{align-items:baseline;flex-direction:row;gap:.75rem}.stack-skills .skill-group-name{font-family:var(--font-display);font-size:var(--text-lg);font-weight:500;transition:color var(--dur-base) ease}.stack-skills .work-row.open .skill-group-name,.stack-skills .work-row:hover .skill-group-name{color:hsl(var(--group-accent))}.stack-skills .work-title .company{align-self:baseline;border:0;border-radius:0;color:hsl(var(--muted-foreground));font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:.1em;margin-top:0;padding:0;text-transform:uppercase}.skill-toggle{display:block;height:11px;position:relative;width:11px}.skill-toggle:after,.skill-toggle:before{background:hsl(var(--muted-foreground));content:"";height:1px;left:0;position:absolute;right:0;top:50%;transition:transform var(--dur-base) var(--ease-out),background var(--dur-base) ease}.skill-toggle:after{transform:rotate(90deg)}.stack-skills .work-row.open .skill-toggle:after{transform:rotate(0deg)}.stack-skills .work-row.open .skill-toggle:after,.stack-skills .work-row.open .skill-toggle:before,.stack-skills .work-row:hover .skill-toggle:after,.stack-skills .work-row:hover .skill-toggle:before{background:hsl(var(--group-accent))}.stack-skills .skill-dropdown-detail{margin-top:0}.stack-skills .skill-dropdown-detail .skill-list{border:0;border-radius:0;padding:0 0 1.35rem}.stack-skills .skill-list{display:flex;flex-wrap:wrap;gap:.6rem 1.85rem}.stack-skills .skill-row{align-items:center;background:transparent;border:0;border-radius:0;display:flex;gap:.55rem;grid-template-columns:none;min-height:0;padding:0}.stack-skills .skill-row:hover{background:transparent;border-color:transparent}.stack-skills .skill-icon{background:transparent;border:0;border-radius:0;height:1rem;width:1rem}.stack-skills .skill-icon img,.stack-skills .skill-icon svg{height:1rem;width:1rem}.stack-skills .skill-name{color:hsl(var(--foreground)/.86);font-family:var(--font-prose);font-size:var(--text-md)}.stack-skills .skill-dropdown:nth-child(5n+1){--group-accent:var(--signal-cyan)}.stack-skills .skill-dropdown:nth-child(5n+2){--group-accent:var(--signal-green)}.stack-skills .skill-dropdown:nth-child(5n+3){--group-accent:var(--signal-amber)}.stack-skills .skill-dropdown:nth-child(5n+4){--group-accent:var(--signal-magenta)}.stack-skills .skill-dropdown:nth-child(5n+5){--group-accent:var(--signal-violet)}.stack-skills .work-detail{margin-left:0;margin-right:0}.open-source-list{border-top:1px solid hsl(var(--border));display:block}.os-row{align-items:start;border-bottom:1px solid hsl(var(--border));display:grid;grid-gap:.3rem 2rem;gap:.3rem 2rem;grid-template-columns:minmax(0,10rem) minmax(0,1fr);padding:1.35rem 1rem}.os-name{align-items:center;display:flex;font-family:var(--font-display);font-size:var(--text-lg);font-weight:500;gap:.3rem;margin:0;transition:color var(--dur-fast) ease}.os-name svg{color:hsl(var(--muted-foreground));transition:transform var(--dur-fast) ease}.os-row:hover .os-name svg{transform:translate(2px,-2px)}.os-summary{color:hsl(var(--muted-foreground));font-family:var(--font-prose);line-height:1.625;margin:0}@media (max-width:640px){.os-row{grid-template-columns:minmax(0,1fr);gap:.45rem}}.home-section-heading{align-items:center;border-bottom:1px solid hsl(var(--border));display:flex;justify-content:space-between;padding-bottom:.75rem}.home-all-link{align-items:center;color:hsl(var(--muted-foreground));display:inline-flex;font-size:var(--text-sm);gap:.35rem;transition:color var(--dur-fast) ease}.home-all-link:hover{color:hsl(var(--foreground))}.home-all-link:focus-visible,.open-source-card:focus-visible,.selected-work-code:focus-visible{outline:2px solid hsl(var(--primary));outline-offset:3px}.photo-frame{aspect-ratio:4/3;border-radius:var(--radius-md);overflow:hidden;position:relative}.photo-frame img{height:100%;object-fit:cover;width:100%}.footer{border-top:1px solid hsl(var(--muted)/.2);margin-top:4rem;padding:1.5rem 0}.footer-inner{justify-content:space-between;padding:0 1rem}.footer-copy{color:hsl(var(--muted-foreground));font-size:var(--text-md)}.footer-links{display:flex;gap:1rem}.project-card{border:1px solid hsl(var(--border));border-radius:var(--radius-md);display:block;margin:0 -1.5rem;padding:1.5rem;transition:background var(--dur-fast) ease,border-color var(--dur-fast) ease}.project-card.selected,.project-card:hover{border-color:hsl(var(--primary));background:hsl(var(--primary)/.05)}.project-card h2{font-size:1.25rem;font-weight:500;line-height:1.75rem;margin:0}.badges{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.badge{background:hsl(var(--muted)/.5);border:1px solid hsl(var(--muted-foreground)/.2);border-radius:var(--radius-sm);color:hsl(var(--foreground));font-size:var(--text-sm);font-weight:600;padding:.125rem .625rem}h2 .badge{margin-left:.5rem;vertical-align:middle}.blog-list>*+*{margin-top:1.5rem}.blog-card{aspect-ratio:16/9;border:1px solid hsl(var(--border));border-radius:var(--radius-lg);display:block;overflow:hidden;position:relative;transition:border-color var(--dur-base) ease}.blog-card[hidden]{display:none}.blog-card:hover{border-color:hsl(var(--primary)/.6)}.blog-card-media{inset:0;position:absolute}.blog-card-media canvas,.blog-card-media img,.blog-card-media svg{height:100%;object-fit:cover;transition:transform var(--dur-slower) ease,filter var(--dur-slow) ease;width:100%;display:block;transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.blog-card:hover .blog-card-media canvas,.blog-card:hover .blog-card-media img,.blog-card:hover .blog-card-media svg{filter:brightness(1.05);transform:scale(1.04)}.blog-card-overlay{background:linear-gradient(to top,hsl(var(--media-scrim)/.55) 0,hsl(var(--media-scrim)/.3) 36%,hsl(var(--media-scrim)/.1) 62%,hsl(var(--media-scrim)/0) 88%);bottom:0;display:flex;flex-direction:column;inset:0;left:0;padding:1rem 1.25rem 1.25rem;position:absolute;right:0}.blog-card-top{align-items:flex-start;display:flex;justify-content:flex-end}.blog-card-arrow{color:hsl(var(--on-media));opacity:0;transform:translate(-4px,4px);transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out)}.blog-card:focus-visible .blog-card-arrow,.blog-card:hover .blog-card-arrow{opacity:1;transform:translate(0)}.blog-card-title{color:hsl(var(--on-media));display:block;font-size:var(--text-xl);font-weight:600;letter-spacing:-.01em;line-height:1.25;margin-top:auto;text-wrap:balance}.blog-filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}.filter-chip{align-items:center;background:transparent;border:1px solid hsl(var(--border));border-radius:var(--radius-pill);color:hsl(var(--muted-foreground));cursor:pointer;display:inline-flex;font:inherit;font-size:var(--text-base);gap:.4rem;padding:.35rem .7rem;transition:color var(--dur-fast) ease,border-color var(--dur-fast) ease,background var(--dur-fast) ease}.filter-chip:hover{border-color:hsl(var(--muted-foreground)/.5);color:hsl(var(--foreground))}.filter-chip.active{background:hsl(var(--primary)/.12);border-color:hsl(var(--primary)/.6);color:hsl(var(--foreground))}.filter-chip-count{background:hsl(var(--muted)/.6);border-radius:var(--radius-pill);color:hsl(var(--muted-foreground));font-size:var(--text-xs);padding:.05rem .4rem}.filter-chip.active .filter-chip-count{color:hsl(var(--foreground))}.reading-progress{position:fixed;inset:0 0 auto 0;height:2px;z-index:300;pointer-events:none;background:transparent}.reading-progress-bar{height:100%;width:100%;transform:scaleX(0);transform-origin:left center;background:hsl(var(--foreground)/.45);will-change:transform}.reading{max-width:58rem;margin:0 auto;padding:6rem 1.5rem}.reading-back{align-items:center;color:hsl(var(--muted-foreground));display:flex;font-family:var(--font-display);font-size:var(--text-base);gap:.35rem;margin:0 auto;max-width:42rem;transition:color var(--dur-fast) ease;width:100%}.reading-back:hover{color:hsl(var(--foreground))}.reading-header{border-bottom:1px solid hsl(var(--border));margin:1.75rem auto 2.75rem;max-width:42rem;padding-bottom:1.75rem}.reading-cat{color:hsl(var(--muted-foreground));display:inline-block;font-size:var(--text-md);font-weight:500;letter-spacing:0;margin-bottom:.9rem;text-transform:lowercase}.reading-cat,.reading-title{font-family:var(--font-display)}.reading-title{color:hsl(var(--foreground));font-size:var(--text-4xl);font-weight:700;letter-spacing:-.02em;line-height:1.12;margin:0}.rf-diagram{width:100%;margin:1.5rem 0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain}.rf-diagram-canvas{min-width:620px;height:300px;border:1px solid hsl(var(--border));border-radius:var(--radius-lg);overflow:hidden;background:hsl(var(--diagram-surface))}.rf-diagram .react-flow__attribution{display:none}@media (pointer:coarse){.rf-diagram .react-flow,.rf-diagram .react-flow__pane,.rf-diagram .react-flow__renderer{touch-action:auto}}.video-embed{position:relative;width:100%;aspect-ratio:16/9;border-radius:var(--radius-lg);overflow:hidden;border:1px solid hsl(var(--muted)/.25);margin:.25rem 0 1.5rem}.video-embed iframe{position:absolute;inset:0;height:100%;width:100%;border:0}.command-overlay{align-items:flex-start;background:rgb(0 0 0/.8);display:flex;inset:0;justify-content:center;padding:6rem 1rem;position:fixed;z-index:100}.command-dialog{background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius-md);box-shadow:0 24px 80px rgb(0 0 0/.45);max-width:36rem;overflow:hidden;width:100%}.command-input{background:transparent;border:0;border-bottom:1px solid hsl(var(--border));color:hsl(var(--foreground));padding:.875rem 1rem;width:100%}.command-input:focus-visible{border-color:hsl(var(--primary));box-shadow:0 0 0 3px hsl(var(--primary)/.22);outline:2px solid hsl(var(--primary));outline-offset:2px}.command-list{max-height:24rem;overflow:auto;padding:.5rem}.command-group,[cmdk-group-heading]{color:hsl(var(--muted-foreground));font-size:var(--text-sm);padding:.5rem}.command-option{border-radius:var(--radius-sm);cursor:pointer;display:block;padding:.625rem .75rem;width:100%}.command-option:hover,.command-option[data-selected=true]{background:hsl(var(--muted))}.article{color:hsl(var(--foreground));font-family:var(--font-prose);font-size:var(--text-lg);line-height:1.7;display:grid;grid-template-columns:[wide-start] minmax(0,1fr) [content-start] min(42rem,100%) [content-end] minmax(0,1fr) [wide-end];width:100%}.article>*{grid-column:content;min-width:0;margin-top:1.25rem;margin-bottom:0}.article>:first-child{margin-top:0}.article>.rf-diagram,.article>.table-wrap,.article>.video-embed,.article>figure{grid-column:wide}.article>.rf-diagram,.article>.table-wrap,.article>.video-embed,.article>figure,.article>p:has(>img),.article>pre{margin-top:2rem;margin-bottom:2rem}.article h1,.article h2,.article h3,.article h4,.article h5,.article h6{color:hsl(var(--foreground));font-family:var(--font-display);letter-spacing:-.01em;line-height:1.25}.article h2{border-bottom:1px solid hsl(var(--border));font-size:var(--text-3xl);font-weight:700;margin-top:3rem;margin-bottom:0;padding-bottom:.5rem}.article h3{font-size:var(--text-2xl);margin-top:2.25rem}.article h3,.article h4{font-weight:600;margin-bottom:0}.article h4{color:hsl(var(--foreground));font-size:var(--text-xl);margin-top:1.85rem}.article h5,.article h6{color:hsl(var(--muted-foreground));font-size:var(--text-lg);font-weight:600;letter-spacing:0;margin-top:1.7rem;margin-bottom:0}.article a{color:hsl(var(--primary));text-decoration:underline;-webkit-text-decoration-color:hsl(var(--primary)/.35);text-decoration-color:hsl(var(--primary)/.35);text-underline-offset:2px;transition:-webkit-text-decoration-color var(--dur-fast) ease;transition:text-decoration-color var(--dur-fast) ease;transition:text-decoration-color var(--dur-fast) ease,-webkit-text-decoration-color var(--dur-fast) ease}.article a:hover{-webkit-text-decoration-color:hsl(var(--primary));text-decoration-color:hsl(var(--primary))}.article img{border:1px solid hsl(var(--border));border-radius:var(--radius-md);display:block;height:auto;margin:0;max-width:100%;width:100%}.article figcaption{color:hsl(var(--muted-foreground));font-size:var(--text-base);margin-top:.6rem;text-align:center}.article code{background:hsl(var(--muted));border-radius:var(--radius-sm);color:hsl(var(--foreground));font-family:var(--font-mono);font-size:.85em;padding:.08rem .34rem}.article details{background:hsl(var(--muted)/.25);border:1px solid hsl(var(--border));border-radius:var(--radius-md);margin:1.5rem 0;padding:0 1rem}.article details[open]{padding-bottom:.5rem}.article summary{color:hsl(var(--foreground));cursor:pointer;font-size:.9rem;font-weight:500;list-style:none;padding:.875rem 0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.article summary::-webkit-details-marker{display:none}.article summary:before{content:"▸";color:hsl(var(--muted-foreground));display:inline-block;margin-right:.5rem;transition:transform var(--dur-fast) ease}.article details[open] summary:before{transform:rotate(90deg)}.article pre{background:hsl(0 0% 7%);border:1px solid hsl(var(--border));border-radius:var(--radius-md);font-size:.9rem;overflow-x:auto;padding:1.15rem 1.25rem}.article .pre-wrap{position:relative}.article .pre-lang{color:hsl(var(--muted-foreground)/.85);font-family:var(--font-mono);font-size:.62rem;font-weight:600;letter-spacing:.12em;pointer-events:none;position:absolute;right:.8rem;text-transform:uppercase;top:.65rem;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1}.article .pre-wrap[data-language=text] pre{color:hsl(var(--muted-foreground))}.article pre code{background:transparent;border:0;color:inherit;padding:0}.article [data-rehype-pretty-code-figure] pre{background:var(--shiki-bg,hsl(var(--muted)/.45))}.article [data-rehype-pretty-code-figure] code span{color:var(--shiki-default)}.article :not([data-rehype-pretty-code-figure])>pre{background:hsl(0 0% 6%);color:hsl(0 0% 88%)}.article ol,.article ul{margin-top:1.3rem;padding-left:1.5rem}.article ul{list-style:disc}.article li{margin-top:.4rem}.article li::marker{color:hsl(var(--muted-foreground))}.article blockquote{border-left:3px solid hsl(var(--border));color:hsl(var(--muted-foreground));margin-top:1.6rem;margin-bottom:1.6rem;padding-left:1.15rem}.article blockquote>:first-child{margin-top:0}.article hr{background:hsl(var(--border));border:0;height:1px;margin:2.75rem 0}.article .table-wrap{border:1px solid hsl(var(--border));border-radius:var(--radius-md);overflow-x:auto;overflow-y:hidden}.article table{border-collapse:collapse;font-size:.9rem;width:100%}.article td,.article th{border-bottom:1px solid hsl(var(--foreground)/.08);padding:.6rem .9rem;text-align:left;white-space:nowrap}.article th{background:hsl(var(--muted));border-bottom:1px solid hsl(var(--foreground)/.2);font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.article td,.article th{color:hsl(var(--muted-foreground));font-family:var(--font-mono)}.article td strong{color:hsl(var(--signal-green))}.article tr:last-child td{border-bottom:0}.name-cycle{cursor:default}.name-cycle-word{display:inline-block;white-space:nowrap}.name-cycle-char{display:inline-block;transition:color var(--dur-base) ease}.name-cycle-char.is-settling{animation:name-settle .32s var(--ease-out)}@keyframes name-settle{0%{filter:blur(2px);transform:translateY(-.06em) scale(1.05)}to{filter:blur(0);transform:translateY(0) scale(1)}}.grain-overlay{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='grain'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23grain)'/%3E%3C/svg%3E");inset:0;opacity:.05;pointer-events:none;position:fixed;z-index:90}.light .grain-overlay{opacity:.07}@media (max-width:767px){.hide-mobile{display:none}.page{padding-left:1.5rem;padding-right:1.5rem}.reading{padding:5rem 1.25rem 4rem}.article{font-size:.9375rem}.blog-card-title{font-size:1.0625rem}.blog-card-overlay{padding:1.5rem 1.25rem 1rem}.work-row{gap:.75rem}.work-title{align-items:flex-start;flex-direction:column;gap:0}.home-intro-copy{padding-left:0}.home-intro-copy p{font-size:var(--text-lg)}.index-row{gap:.75rem;grid-template-columns:1.75rem minmax(0,1fr) auto}.open-source-list{margin-top:.5rem}}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Inter Fallback;src:local("Arial");ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.00%;size-adjust:107.12%}.__className_f367f3{font-family:Inter,Inter Fallback;font-style:normal}.__variable_f367f3{--font-inter:"Inter","Inter Fallback"}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(/_next/static/media/e1aab0933260df4d-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(/_next/static/media/b7387a63dd068245-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(/_next/static/media/36966cca54120369-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Space Grotesk Fallback;src:local("Arial");ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.00%;size-adjust:109.69%}.__className_dd5b2f{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.__variable_dd5b2f{--font-space-grotesk:"Space Grotesk","Space Grotesk Fallback"}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/58f386aa6b1a2a92-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/011e180705008d6f-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/7ba5fb2a8c88521c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/92eeb95d069020cc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/d3ebbfd689654d3a-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ef4d5661765d0e49-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/d29838c109ef09b4-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/e40af3453d7c920a-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/99dcf268bda04fe5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/98e207f02528a563-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/73cb51aac9c97f90-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/d26bbd13d6b70f89-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/20535187d867b7b9-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/5356a6a4f2c8c8d8-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/db96af6b531dc71f-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono Fallback;src:local("Arial");ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.00%;size-adjust:134.59%}.__className_595324{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.__variable_595324{--font-ibm-plex-mono:"IBM Plex Mono","IBM Plex Mono Fallback"}