@font-face{font-family:Inconsolata;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(../media/fa5aae2beadb79bb-s.0wmljci~j6.yy.woff2?dpl=dpl_2QDa6JA49GMNULoddWTXcaAw5z5b)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inconsolata;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(../media/28de84e0e7d4cb57-s.0nrd6q_b.qkot.woff2?dpl=dpl_2QDa6JA49GMNULoddWTXcaAw5z5b)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:Inconsolata;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(../media/c50f3c9c65fbdb75-s.p.0q9vn6c7d6pvt.woff2?dpl=dpl_2QDa6JA49GMNULoddWTXcaAw5z5b)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:Inconsolata;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/fa5aae2beadb79bb-s.0wmljci~j6.yy.woff2?dpl=dpl_2QDa6JA49GMNULoddWTXcaAw5z5b)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inconsolata;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/28de84e0e7d4cb57-s.0nrd6q_b.qkot.woff2?dpl=dpl_2QDa6JA49GMNULoddWTXcaAw5z5b)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:Inconsolata;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/c50f3c9c65fbdb75-s.p.0q9vn6c7d6pvt.woff2?dpl=dpl_2QDa6JA49GMNULoddWTXcaAw5z5b)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:Inconsolata;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/fa5aae2beadb79bb-s.0wmljci~j6.yy.woff2?dpl=dpl_2QDa6JA49GMNULoddWTXcaAw5z5b)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inconsolata;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/28de84e0e7d4cb57-s.0nrd6q_b.qkot.woff2?dpl=dpl_2QDa6JA49GMNULoddWTXcaAw5z5b)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:Inconsolata;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/c50f3c9c65fbdb75-s.p.0q9vn6c7d6pvt.woff2?dpl=dpl_2QDa6JA49GMNULoddWTXcaAw5z5b)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:Inconsolata;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/fa5aae2beadb79bb-s.0wmljci~j6.yy.woff2?dpl=dpl_2QDa6JA49GMNULoddWTXcaAw5z5b)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inconsolata;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/28de84e0e7d4cb57-s.0nrd6q_b.qkot.woff2?dpl=dpl_2QDa6JA49GMNULoddWTXcaAw5z5b)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:Inconsolata;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/c50f3c9c65fbdb75-s.p.0q9vn6c7d6pvt.woff2?dpl=dpl_2QDa6JA49GMNULoddWTXcaAw5z5b)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:Inconsolata;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/fa5aae2beadb79bb-s.0wmljci~j6.yy.woff2?dpl=dpl_2QDa6JA49GMNULoddWTXcaAw5z5b)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inconsolata;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/28de84e0e7d4cb57-s.0nrd6q_b.qkot.woff2?dpl=dpl_2QDa6JA49GMNULoddWTXcaAw5z5b)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:Inconsolata;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/c50f3c9c65fbdb75-s.p.0q9vn6c7d6pvt.woff2?dpl=dpl_2QDa6JA49GMNULoddWTXcaAw5z5b)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:Inconsolata Fallback;src:local(Arial);ascent-override:76.59%;descent-override:16.94%;line-gap-override:0.0%;size-adjust:112.16%}.inconsolata_20c28379-module__OZ5vHW__className{font-family:Inconsolata,Inconsolata Fallback;font-style:normal}.inconsolata_20c28379-module__OZ5vHW__variable{--font-inconsolata:"Inconsolata", "Inconsolata Fallback"}
*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#fff;--fg:#111;--muted:#6b6b6b;--faint:#a3a3a3;--border:#e5e5e5;--surface:#f5f5f5;--surface-soft:#fafafa;--surface-hover:#efefef;--icon-hover:#f7f7f7;--code-bg:#f6f6f6;--inverse:#fff;--selection:#e3e8f0;--font:var(--font-inconsolata), "Courier New", monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#0f1114;--fg:#eceef1;--muted:#a1a7b0;--faint:#5d636c;--border:#262a31;--surface:#171a1f;--surface-soft:#14171c;--surface-hover:#1c2027;--icon-hover:#1a1e24;--code-bg:#161a20;--inverse:#0f1114;--selection:#2a3342;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html{scroll-behavior:smooth}body{font-family:var(--font);background:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:15px;line-height:1.6;transition:background-color .2s,color .2s}::selection{background:var(--selection)}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--fg);outline-offset:3px;border-radius:4px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important}}main{max-width:680px;margin:0 auto}section{padding:4.5rem 2rem;scroll-margin-top:1rem}section+section{border-top:1px solid var(--border)}#hero{padding-top:6rem;padding-bottom:4rem}h1{letter-spacing:-.03em;margin-bottom:1.25rem;font-size:clamp(2rem,5vw,2.75rem);font-weight:700;line-height:1.15}.hero-bio{color:var(--muted);max-width:480px;margin-bottom:2rem;font-size:1.05rem;line-height:1.7}.hero-highlight{color:var(--fg);border-bottom:1px solid var(--faint);font-weight:700;transition:border-color .15s}.hero-highlight:hover{border-color:var(--fg)}.hero-stat{color:var(--fg)}.hero-links{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.icon-link{border:1px solid var(--border);width:36px;height:36px;color:var(--muted);border-radius:8px;justify-content:center;align-items:center;transition:color .15s,border-color .15s,background .15s,transform .15s;display:inline-flex}.icon-link:hover{color:var(--fg);border-color:var(--muted);background:var(--icon-hover);transform:translateY(-1px)}.theme-toggle{cursor:pointer;font:inherit;background:0 0}.theme-icon-sun,:root[data-theme=dark] .theme-icon-moon{display:none}:root[data-theme=dark] .theme-icon-sun{display:block}.section-title{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:1.75rem;font-size:.72rem}.blog-list{flex-direction:column;list-style:none;display:flex}.blog-list li{border-bottom:1px solid var(--border)}.blog-list li:first-child{border-top:1px solid var(--border)}.blog-item{border-radius:6px;justify-content:space-between;align-items:baseline;gap:1rem;margin:0 -.5rem;padding:.95rem .5rem;transition:background .15s;display:flex}.blog-item:hover{background:var(--surface-soft)}.blog-item-title{flex:1;font-size:.95rem;font-weight:500}.blog-item-meta{align-items:center;gap:.5rem;display:inline-flex}.blog-item-arrow{color:var(--muted);opacity:0;transition:opacity .15s,transform .15s;transform:translate(-4px)}.blog-item:hover .blog-item-arrow{opacity:1;transform:translate(0)}.blog-date{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:.78rem}.view-all-btn{font-family:var(--font);color:var(--muted);cursor:pointer;letter-spacing:.04em;background:0 0;border:none;align-items:center;gap:.3rem;margin-top:1.25rem;padding:0;font-size:.8rem;transition:color .15s;display:inline-flex}.view-all-btn:hover{color:var(--fg)}.empty-state{color:var(--muted);padding:1rem 0;font-size:.875rem}.card-arrow{vertical-align:-1px;color:var(--faint);margin-left:.3rem;transition:color .15s,transform .15s;display:inline-block}.work-card:hover .card-arrow,.project-item:hover .card-arrow{color:var(--fg);transform:translate(2px,-2px)}.works-grid{background:var(--border);border:1px solid var(--border);border-radius:8px;grid-template-columns:1fr 1fr;gap:1px;display:grid;overflow:hidden}.work-card{background:var(--bg);flex-direction:column;padding:1.5rem;transition:background .15s;display:flex}.work-card:hover{background:var(--surface-soft)}.work-title{margin-bottom:.15rem;font-size:.95rem;font-weight:600}.work-role{color:var(--fg);opacity:.8;margin-bottom:.6rem;font-size:.8rem}.work-desc{color:var(--muted);flex:1;margin-bottom:1rem;font-size:.83rem;line-height:1.55}.work-tag{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:var(--surface);border-radius:3px;align-self:flex-start;padding:.2rem .5rem;font-size:.68rem}.project-list{flex-direction:column;gap:.25rem;display:flex}.project-item{border-radius:6px;align-items:flex-start;gap:1.25rem;margin:0 -.5rem;padding:.85rem .5rem;transition:background .15s;display:flex}.project-item:hover{background:var(--surface-soft)}.project-num{color:var(--faint);font-variant-numeric:tabular-nums;min-width:1.5rem;padding-top:.2rem;font-size:.72rem;font-weight:600}.project-content{flex:1}.project-name{margin-bottom:.25rem;font-size:.95rem;font-weight:600}.project-desc{color:var(--muted);font-size:.875rem;line-height:1.6}.portrait-section{padding-top:3.5rem;padding-bottom:5rem}.portrait-frame{border:1px solid var(--border);background:radial-gradient(circle at 20% 18%, #9db2d038, transparent 44%), radial-gradient(circle at 82% 86%, #c5b39a33, transparent 46%), var(--surface-soft);border-radius:18px;max-width:420px;margin:0 auto;padding:.65rem;position:relative;box-shadow:0 20px 52px #0000001a}.portrait-image{border:1px solid var(--border);object-fit:cover;border-radius:12px;width:100%;height:auto;display:block}:root[data-theme=dark] .portrait-frame{box-shadow:0 24px 58px #0000006b}.site-footer{border-top:1px solid var(--border);max-width:680px;color:var(--muted);justify-content:space-between;align-items:center;margin:0 auto;padding:1.75rem 2rem;font-size:.78rem;display:flex}.footer-links{align-items:center;gap:1rem;display:flex}.footer-links a{color:var(--muted);transition:color .15s}.footer-links a:hover{color:var(--fg)}@media (max-width:600px){section{padding:3rem 1.25rem}#hero{padding-top:4rem}.portrait-section{padding-top:2.5rem;padding-bottom:4rem}.works-grid{grid-template-columns:1fr}.site-footer{text-align:center;flex-direction:column;gap:1rem}}.blog-page{max-width:680px;margin:0 auto;padding:2rem 2rem 5rem}.blog-page-header{justify-content:space-between;align-items:center;margin-bottom:3.5rem;display:flex}.blog-back{color:var(--muted);font-size:.8rem;transition:color .15s}.blog-back:hover{color:var(--fg)}.blog-article-meta{color:var(--muted);font-variant-numeric:tabular-nums;gap:.5rem;margin-bottom:.75rem;font-size:.8rem;display:flex}.blog-article-title{letter-spacing:-.03em;border-bottom:1px solid var(--border);margin-bottom:2.5rem;padding-bottom:2rem;font-size:clamp(1.6rem,4.5vw,2.25rem);font-weight:700;line-height:1.2}.blog-page-footer{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;gap:1rem;margin-top:4rem;padding-top:1.5rem;display:flex}.blog-content{color:var(--fg);overflow-wrap:break-word;font-size:1.02rem;line-height:1.8}.blog-content>:first-child{margin-top:0}.blog-content h1,.blog-content h2,.blog-content h3,.blog-content h4{letter-spacing:-.02em;margin:2.5rem 0 .75rem;scroll-margin-top:1.5rem;font-weight:700;line-height:1.3}.blog-content h1{font-size:1.4rem}.blog-content h2{font-size:1.2rem}.blog-content h3{font-size:1.05rem}.blog-content h4{font-size:1rem}.blog-content p{margin-bottom:1.25rem}.blog-content strong{font-weight:700}.blog-content a{border-bottom:1px solid var(--faint);transition:border-color .15s}.blog-content a:hover{border-color:var(--fg)}.blog-content ul,.blog-content ol{margin:0 0 1.25rem 1.5rem}.blog-content li{margin-bottom:.35rem;padding-left:.25rem}.blog-content li::marker{color:var(--muted)}.blog-content li>p{margin-bottom:.35rem}.blog-content code{font-family:var(--font);background:var(--code-bg);border:1px solid var(--border);border-radius:4px;padding:.1em .35em;font-size:.9em}.blog-content pre{background:var(--code-bg);border:1px solid var(--border);border-radius:8px;margin:1.5rem 0;padding:1rem 1.25rem;line-height:1.6;overflow-x:auto}.blog-content pre code{background:0 0;border:none;padding:0;font-size:.88rem}.blog-content blockquote{border-left:2px solid var(--fg);color:var(--muted);margin:1.75rem 0;padding:.1rem 0 .1rem 1.1rem}.blog-content blockquote p:last-child{margin-bottom:0}.blog-content hr{border:none;border-top:1px solid var(--border);margin:2.5rem 0}.blog-content img{border:1px solid var(--border);border-radius:8px;max-width:100%;height:auto;margin:.5rem auto;display:block}.blog-content p:has(>img:only-child)+p>em:only-child{text-align:center;color:var(--muted);margin-top:-.75rem;font-size:.85rem;display:block}.blog-content table{border-collapse:collapse;width:max-content;max-width:100%;margin:1.5rem 0;font-size:.92rem;display:block;overflow-x:auto}.blog-content th,.blog-content td{border:1px solid var(--border);text-align:left;padding:.45rem .9rem}.blog-content th{background:var(--surface-soft);font-weight:600}@media (max-width:600px){.blog-page{padding:1.5rem 1.25rem 4rem}.blog-page-header{margin-bottom:2.5rem}.blog-content{font-size:1rem}}
