@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.c1fdd6c2.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.799d8ef8.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.dbea232f.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_8d43a2aa-module__8Li5zG__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_8d43a2aa-module__8Li5zG__variable{--font-geist-mono:"Geist Mono","Geist Mono Fallback"}
*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#fff;--text:#000;--text-muted:#888;--text-subtle:#aaa;--border:#e0e0e0;--dot-active:#000;--dot-inactive:#ccc;--glow-color:#00000005}[data-theme=dark]{--bg:#000;--text:#fff;--text-muted:#888;--text-subtle:#444;--border:#222;--dot-active:#fff;--dot-inactive:#444;--glow-color:#ffffff08}html{scroll-behavior:smooth}html,body{cursor:none}body{font-family:var(--font-geist-mono),"Geist Mono","SF Mono","Fira Code","Fira Mono","Roboto Mono",monospace;background-color:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.7;transition:background-color .3s,color .3s}a,button{cursor:none}.container{max-width:900px;min-height:100vh;margin:0 auto;padding:80px 32px 60px}.header{justify-content:space-between;align-items:flex-start;margin-bottom:8px;display:flex}.header-actions{align-items:flex-start;gap:24px;display:flex}.header-nav-link{color:var(--text-muted);text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--text-subtle);text-decoration-color:var(--text-subtle);font-size:15px;transition:color .2s,text-decoration-color .2s}.header-nav-link:hover{color:var(--text);-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}.name{letter-spacing:-.02em;font-size:18px;font-weight:600}.subtitle{color:var(--text-muted);margin-top:2px;font-size:14px}.role{margin-top:6px;font-size:15px}.role a{color:var(--text-muted);text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--text-subtle);text-decoration-color:var(--text-subtle);transition:color .2s,text-decoration-color .2s}.role a:hover{color:var(--text);-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}.theme-toggle{color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:0;font-family:inherit;font-size:15px;transition:color .2s}.theme-toggle:hover{color:var(--text)}.mission{color:var(--text);margin-top:48px;margin-bottom:48px;font-size:15px}.cursor{background-color:var(--text);vertical-align:text-bottom;width:1px;height:1em;margin-left:2px;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.section-label{color:var(--text-muted);letter-spacing:.05em;text-transform:uppercase;margin-top:48px;margin-bottom:16px;font-size:13px}.timeline{flex-direction:column;margin-top:48px;padding-left:4px;display:flex;position:relative}.timeline:before{content:"";background-color:var(--border);width:1px;position:absolute;top:24px;bottom:24px;left:8px}.timeline-item{justify-content:space-between;align-items:center;padding:12px 0 12px 20px;display:flex;position:relative}.timeline-left{align-items:center;gap:12px;display:flex}.timeline-dot{background-color:var(--dot-inactive);z-index:1;border-radius:50%;flex-shrink:0;width:8px;height:8px;position:absolute;left:0}.timeline-item:first-child .timeline-dot{background-color:var(--dot-active);width:10px;height:10px;animation:2s ease-in-out infinite pulse;left:-1px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.timeline-company{font-size:15px;font-weight:500}.timeline-company a{color:var(--text);text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--text-subtle);text-decoration-color:var(--text-subtle);transition:text-decoration-color .2s}.timeline-company a:hover{-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}.timeline-meta{color:var(--text-muted);margin-left:4px;font-size:14px}.timeline-role{color:var(--text-muted);white-space:nowrap;text-align:right;min-width:180px;font-size:15px;transition:color .2s}.timeline-item:hover .timeline-role{color:var(--text)}.projects{margin-top:48px}.project-item{justify-content:space-between;align-items:baseline;padding:10px 0;display:flex}.project-name{font-size:15px;font-weight:500}.project-name a{color:var(--text);text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--text-subtle);text-decoration-color:var(--text-subtle);transition:text-decoration-color .2s}.project-name a:hover{-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}.project-desc{color:var(--text-muted);text-align:right;min-width:200px;font-size:14px}.skills{margin-top:48px}.skills-list{flex-wrap:wrap;gap:8px 16px;list-style:none;display:flex}.skills-list li{color:var(--text-muted);font-size:14px;transition:color .2s}.skills-list li:hover{color:var(--text)}.post-reader-reviews{border-top:1px solid var(--border);margin-top:48px;padding-top:36px}.post-reader-reviews-label{margin-top:0;margin-bottom:14px}.testimonial-carousel{border:1px solid var(--border);background-color:var(--bg);border-radius:6px;margin-top:4px;padding:24px 22px 20px;position:relative}.testimonial-carousel-viewport{min-height:0;position:relative}.testimonial-slide{width:100%}.testimonial-quote{border-left:2px solid var(--text-subtle);margin:0;padding:0 0 0 14px}.testimonial-quote>p{color:var(--text);margin:0;font-size:15px;line-height:1.7}.testimonial-quote>p:before{content:"“"}.testimonial-quote>p:after{content:"”"}.testimonial-attribution{flex-direction:column;gap:2px;margin-top:16px;padding:0;display:flex}.testimonial-quote footer{border:none}.testimonial-name{color:var(--text);font-size:14px;font-style:normal;font-weight:600}.testimonial-role{color:var(--text-muted);font-size:13px}.testimonial-carousel-controls{border-top:1px solid var(--border);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px 16px;width:100%;margin-top:22px;padding-top:18px;display:grid}.testimonial-dots-scroll{scrollbar-width:thin;-webkit-overflow-scrolling:touch;min-width:0;max-width:100%;padding:4px 2px;overflow:auto hidden}.testimonial-dots-scroll::-webkit-scrollbar{height:5px}.testimonial-dots-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.testimonial-nav{color:var(--text-muted);background:0 0;border:1px solid #0000;border-radius:4px;padding:8px 12px;font-family:inherit;font-size:15px;font-weight:500;line-height:1;transition:color .2s,border-color .2s,background-color .2s}.testimonial-nav:hover{color:var(--text);border-color:var(--border)}.testimonial-dots{flex-wrap:nowrap;justify-content:center;align-items:center;gap:8px;width:max-content;min-width:100%;margin:0 auto;padding:2px 0;display:flex}.testimonial-dot{background-color:var(--dot-inactive);cursor:pointer;border:none;border-radius:50%;width:7px;height:7px;padding:0;transition:transform .2s,background-color .2s}.testimonial-dot:hover{background-color:var(--text-muted);transform:scale(1.15)}.testimonial-dot.is-active{background-color:var(--dot-active);transform:scale(1.2)}@media (max-width:600px){.testimonial-carousel{padding:20px 16px 16px}.testimonial-carousel-controls{grid-template-columns:auto minmax(0,1fr) auto;gap:10px 12px}}.about{margin-top:48px}.about-row{align-items:baseline;gap:48px;padding:8px 0;display:flex}.about-label{color:var(--text-muted);letter-spacing:.05em;text-transform:uppercase;flex-shrink:0;min-width:140px;font-size:13px}.about-value{color:var(--text);font-size:15px}.social{flex-wrap:wrap;gap:24px;margin-top:64px;padding-top:24px;display:flex}.social a{color:var(--text-muted);font-size:15px;text-decoration:none;transition:color .2s}.social a:hover{color:var(--text)}@media (max-width:600px){.container{padding:48px 20px 40px}.timeline-item{flex-direction:column;align-items:flex-start;gap:4px}.timeline-role{margin-left:20px}.project-item{flex-direction:column;align-items:flex-start;gap:2px}.project-desc{text-align:left}.about-row{gap:24px}.about-label{min-width:100px}}.blog-index{--blog-meta:10.5rem;--blog-gutter:clamp(1.25rem,3.5vw,2.5rem);width:100%}.blog-shell .blog-header{margin-bottom:40px}.blog-home-link{color:var(--text);text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--text-subtle);text-decoration-color:var(--text-subtle);font-size:15px;font-weight:600;transition:text-decoration-color .2s}.blog-home-link:hover{-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}.blog-masthead{border-bottom:1px solid var(--border);margin-bottom:0;padding-bottom:32px}.blog-masthead-title{letter-spacing:-.02em;color:var(--text);margin-bottom:10px;font-size:20px;font-weight:600}.blog-masthead-kicker{color:var(--text-muted);max-width:34em;margin:0;font-size:14px;line-height:1.6}.blog-archive{padding-top:24px}.blog-archive-head{border-bottom:1px solid var(--border);grid-template-columns:1fr;align-items:baseline;gap:6px 16px;margin-bottom:0;padding-bottom:16px;display:grid}.blog-archive-heading{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);justify-self:start;margin:0;font-size:13px;font-weight:500}.blog-archive-count{color:var(--text-muted);letter-spacing:.02em;justify-self:start;margin:0;font-size:13px}.blog-empty{color:var(--text-muted);margin:28px 0 0;font-size:14px;line-height:1.6}.blog-list{margin:0;padding:0;list-style:none}.blog-list>li{margin:0;padding:0}.blog-list-item{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1fr);align-items:start;gap:12px 0;padding:24px 0;display:grid}.blog-list>li:first-child .blog-list-item{padding-top:20px}.blog-list>li:last-child .blog-list-item{border-bottom:none;padding-bottom:0}.blog-list-aside{color:var(--text-muted);flex-flow:wrap;align-items:center;gap:8px 14px;font-size:13px;line-height:1.4;display:flex}.blog-list-date,.blog-list-read{font-variant-numeric:tabular-nums}.blog-list-meta-gap{color:var(--text-subtle);-webkit-user-select:none;user-select:none}.blog-list-primary{min-width:0}.blog-list-category{letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);margin:0 0 8px;font-size:11px;font-weight:500}.blog-list-title-wrap{font-size:inherit;font-weight:inherit;line-height:inherit;margin:0}.blog-list-title{letter-spacing:-.02em;color:var(--text);text-underline-offset:4px;text-decoration:underline;-webkit-text-decoration-color:var(--text-subtle);text-decoration-color:var(--text-subtle);font-size:18px;font-weight:600;line-height:1.35;transition:text-decoration-color .2s,color .2s;display:inline}.blog-list-title:hover{-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}.blog-list-excerpt{color:var(--text-muted);max-width:none;margin:12px 0 0;font-size:14px;line-height:1.65}@media (min-width:640px){.blog-archive-head{grid-template-columns:var(--blog-meta)minmax(0,1fr);column-gap:var(--blog-gutter);row-gap:0}.blog-archive-count{justify-self:end}.blog-list-item{grid-template-columns:var(--blog-meta)minmax(0,1fr);column-gap:var(--blog-gutter);row-gap:12px;padding:28px 0}.blog-list-aside{text-align:right;flex-direction:column;align-self:start;align-items:flex-end;gap:6px;padding-top:2px}.blog-list-meta-gap{display:none}}.blog-post{padding-bottom:48px}.blog-back{color:var(--text-muted);text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--text-subtle);text-decoration-color:var(--text-subtle);margin-bottom:40px;font-size:14px;transition:color .2s,text-decoration-color .2s;display:inline-block}.blog-back:hover{color:var(--text);-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}.post-category{letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);margin-bottom:14px;font-size:12px;font-weight:500}.post-title{letter-spacing:-.035em;color:var(--text);margin-bottom:20px;font-size:clamp(30px,5.5vw,46px);font-weight:600;line-height:1.15}.post-meta-row{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:10px 22px;margin-bottom:28px;font-size:14px;display:flex}.post-meta-item{align-items:center;gap:8px;display:inline-flex}.post-meta-icon{opacity:.85;flex-shrink:0}.post-meta-read{color:var(--text-muted)}.post-meta-read:before{content:"";background-color:var(--text-subtle);vertical-align:middle;border-radius:50%;width:4px;height:4px;margin-left:2px;margin-right:10px;display:inline-block}.post-meta-item.post-meta-read:first-child:before{display:none}.post-meta{color:var(--text-muted);margin-bottom:28px;font-size:14px}.post-meta-sep{color:var(--text-muted)}.post-rule{border:none;border-top:1px solid var(--border);margin:0 0 28px}.post-cover-card{aspect-ratio:16/9;box-sizing:border-box;border-radius:14px;width:100%;max-height:380px;margin:0 0 40px;position:relative;overflow:hidden}.post-cover-svg{width:100%;height:100%;display:block;position:absolute;inset:0}.post-body{color:var(--text);font-size:16px;line-height:1.75}.post-body>:first-child{margin-top:0}.post-body p{margin:0 0 1.25em}.post-body h2{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin:2.25em 0 .85em;font-size:20px;font-weight:600;line-height:1.3}.post-body h3{color:var(--text);margin:1.75em 0 .65em;font-size:17px;font-weight:600;line-height:1.35}.post-body ul,.post-body ol{margin:0 0 1.25em;padding-left:1.35em}.post-body li{margin-bottom:.45em}.post-body li::marker{color:var(--text-muted)}.post-body a{color:var(--text);text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--text-subtle);text-decoration-color:var(--text-subtle);transition:text-decoration-color .2s}.post-body a:hover{-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}.post-body strong{font-weight:600}.post-body em{font-style:italic}.post-body blockquote{border-left:3px solid var(--border);color:var(--text-muted);margin:1.35em 0;padding-left:1em}.post-body code{background-color:var(--border);border-radius:2px;padding:.12em .4em;font-family:inherit;font-size:.92em}.post-pre-wrap{margin:1.35em 0;position:relative}.post-body .post-pre-wrap pre{background-color:var(--border);border-radius:4px;margin:0;padding:2.5rem 1.1rem 1rem;font-size:14px;line-height:1.6;overflow-x:auto}.post-code-copy{z-index:1;letter-spacing:.03em;border:1px solid var(--border);background-color:var(--bg);color:var(--text-muted);cursor:pointer;border-radius:4px;padding:6px 12px;font-family:inherit;font-size:12px;font-weight:500;transition:color .2s,border-color .2s,background-color .2s;position:absolute;top:10px;right:10px}.post-code-copy:hover{color:var(--text);border-color:var(--text-subtle)}.post-body pre code{background:0 0;padding:0}.post-body hr{border:none;border-top:1px solid var(--border);margin:2em 0}.post-body table{border-collapse:collapse;width:100%;margin:1.25em 0;font-size:14px}.post-body th,.post-body td{border:1px solid var(--border);text-align:left;padding:.5em .65em}.post-body th{color:var(--text-muted);font-weight:600}@media (max-width:600px){.post-title{font-size:clamp(26px,8vw,34px)}.post-cover-card{border-radius:12px;max-height:260px}}
