@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-cyrillic-ext-wght-normal.460bdf14.woff2) format("woff2-variations");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-cyrillic-wght-normal.491cbc05.woff2) format("woff2-variations");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-greek-ext-wght-normal.23aae568.woff2) format("woff2-variations");unicode-range:u+1f??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-greek-wght-normal.4449bf7a.woff2) format("woff2-variations");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-vietnamese-wght-normal.113a630f.woff2) format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-latin-ext-wght-normal.3835a68e.woff2) format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-latin-wght-normal.6c596dfc.woff2) format("woff2-variations");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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_next/static/media/jetbrains-mono-cyrillic-ext-wght-normal.0d2c2f66.woff2) format("woff2-variations");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_next/static/media/jetbrains-mono-cyrillic-wght-normal.23645aad.woff2) format("woff2-variations");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_next/static/media/jetbrains-mono-greek-wght-normal.c6c31cb1.woff2) format("woff2-variations");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_next/static/media/jetbrains-mono-vietnamese-wght-normal.93fc40a8.woff2) format("woff2-variations");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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_next/static/media/jetbrains-mono-latin-ext-wght-normal.9c9751ca.woff2) format("woff2-variations");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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_next/static/media/jetbrains-mono-latin-wght-normal.a865edea.woff2) format("woff2-variations");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}:root{color-scheme:light;--accent:#2b61ff;--canvas:#faf9f6;--surface:#f7f5f1;--ink:#171717;--muted:#6b6b6b;--rule:#e7e2da;--terminal-green:#4f7629;--runner-blue:#2b61ff;--font-sans:"Inter Variable",sans-serif;--font-mono:"JetBrains Mono Variable",monospace;--text-tiny:0.625rem;--text-small:0.6875rem;--text-content:0.875rem;--text-body:1rem;--text-lede:1.125rem;--text-title:clamp(2.25rem,6vw,2.75rem);--text-title-compact:1.875rem;--s1:0.25rem;--s2:0.5rem;--s3:0.75rem;--s4:1rem;--s5:1.5rem;--s6:2rem;--s7:3rem;--s8:4rem;--s9:6rem;--rule-space-above:4.5rem;--rule-space-below:2.5rem;--page-width:41rem;--page-gutter:clamp(1.25rem,5vw,2rem);--radius-sm:0.25rem;--radius-round:999px;--hit-target:2.75rem;--fast:150ms;--ease:cubic-bezier(0.2,0.8,0.2,1)}:root[data-theme=light]{color-scheme:light;--canvas:#faf9f6;--surface:#f7f5f1;--ink:#171717;--muted:#6b6b6b;--rule:#e7e2da;--terminal-green:#4f7629;--accent:#2b61ff;--runner-blue:#2b61ff}@media (max-width:42rem){:root{--rule-space-above:3.5rem;--rule-space-below:2rem}}:root[data-theme=dark]{color-scheme:dark;--canvas:#191919;--surface:#202020;--ink:#e9e7e2;--muted:#929292;--rule:#383838;--terminal-green:#95c85a;--accent:#5b81f1;--runner-blue:#5b81f1}@layer reset, base, layout, components, responsive;@layer reset{*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth}body,dd,dl,h1,h2,h3,p{margin:0}img{display:block;max-width:100%;height:auto}button,input{font:inherit}}@layer base{body{min-width:20rem;padding-bottom:6.5rem;background:var(--canvas);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-body);line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{color:var(--canvas);background:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}a{color:inherit;-webkit-text-decoration-color:color-mix(in srgb,currentColor 45%,transparent);text-decoration-color:color-mix(in srgb,currentColor 45%,transparent);text-underline-offset:.24em}a,button{transition:color var(--fast) var(--ease),border-color var(--fast) var(--ease),opacity var(--fast) var(--ease),transform var(--fast) var(--ease)}a:hover,button:hover{color:var(--accent)}strong{font-weight:600}}@layer layout{.site-shell{width:min(100%,calc(var(--page-width) + 2 * var(--page-gutter)));margin:0 auto;padding:0 var(--page-gutter)}.topline{position:-webkit-sticky;position:sticky;z-index:10;top:0;height:4rem;gap:var(--s4);background:var(--canvas);border-bottom:1px solid var(--rule)}.header-nav,.topline{display:flex;align-items:center}.header-nav{--nav-gap:clamp(0.75rem,2vw,1.25rem);min-width:0;padding-block:.375rem;flex:1 1;gap:var(--nav-gap);overflow-x:auto;font-family:var(--font-mono);scrollbar-width:none}.header-nav::-webkit-scrollbar{display:none}.article-nav{min-width:0;display:flex;flex:1 1;align-items:center;gap:var(--s3);font-family:var(--font-mono)}.article-nav a{min-height:var(--hit-target);display:inline-flex;flex:0 0 auto;align-items:center;font-size:var(--text-small);text-decoration:none}.article-nav span{min-width:0;overflow:hidden;color:var(--muted);font-size:var(--text-tiny);text-overflow:ellipsis;white-space:nowrap}.reference-hero{margin:0;padding:var(--s7) 0 var(--rule-space-above)}.identity{margin-bottom:var(--s5);display:flex;align-items:flex-start;gap:var(--s5)}.identity img{width:7rem;height:7rem;flex:0 0 7rem;object-fit:cover;object-position:50% 42%;border:1px solid var(--rule);border-radius:var(--radius-round);filter:none}.reference-section{padding:var(--rule-space-below) 0 var(--rule-space-above);border-top:1px solid var(--rule);border-color:color-mix(in srgb,var(--rule) 70%,transparent);scroll-margin-top:5.5rem}.section-title{margin-bottom:var(--s5);display:flex;align-items:baseline;gap:var(--s2)}.section-content{font-size:var(--text-content);line-height:1.625}.post{padding-top:var(--s8)}.post-header{padding-bottom:var(--s8);border-bottom:1px solid color-mix(in srgb,var(--rule) 70%,transparent)}.post-header h1{max-width:42rem;font-size:var(--text-title);font-weight:600;line-height:1.08;letter-spacing:-.035em}.post-header time+h1{margin-top:var(--s3)}.post-date{display:block;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-small);line-height:1.45}.post-dek{max-width:40rem;margin-top:var(--s5);color:var(--muted);font-size:var(--text-lede);line-height:1.6}.post-body{width:min(100%,38rem);padding:var(--s8) 0}.markdown-content{counter-reset:article-section;font-size:var(--text-body);line-height:1.8}.markdown-content h2{counter-increment:article-section;margin:var(--s8) 0 var(--s5);display:flex;align-items:baseline;gap:var(--s2);font-family:var(--font-mono);font-size:var(--text-content);font-weight:400;line-height:1.25rem;letter-spacing:.025em}.markdown-content h2:first-child{margin-top:0}.markdown-content h2:before{content:counter(article-section,decimal-leading-zero);color:var(--muted);font-size:var(--text-tiny)}.markdown-content h3{margin:var(--s7) 0 var(--s4);font-size:var(--text-body);font-weight:600;line-height:1.4}.markdown-content p+p{margin-top:var(--s5)}.markdown-content :is(ul,ol){margin:var(--s5) 0 0;padding-left:var(--s6)}.markdown-content li+li{margin-top:var(--s2)}.markdown-content li>:is(ul,ol){margin-top:var(--s2)}.markdown-content blockquote{margin:var(--s6) 0 0;padding-left:var(--s5);color:color-mix(in srgb,var(--ink) 88%,transparent);border-left:2px solid var(--accent);font-size:var(--text-lede);font-weight:500;line-height:1.65}.markdown-content blockquote p{margin:0}.markdown-content hr{margin:var(--s8) 0;border:0;border-top:1px solid color-mix(in srgb,var(--rule) 70%,transparent)}.markdown-content img{margin:var(--s6) auto 0;border:1px solid var(--rule)}.markdown-content :not(pre)>code{padding:.1em .3em}.markdown-content :not(pre)>code,.markdown-content pre{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--text-content)}.markdown-content pre{margin:var(--s6) 0 0;overflow-x:auto;padding:var(--s4);line-height:1.65}.markdown-content pre code{font:inherit}.markdown-content table{width:100%;margin-top:var(--s6);display:block;overflow-x:auto;border-collapse:collapse;font-size:var(--text-content)}.markdown-content td,.markdown-content th{padding:var(--s2) var(--s3);border-bottom:1px solid var(--rule);text-align:left}.markdown-content th{font-weight:600}.post-footer{width:min(100%,38rem);padding:var(--s5) 0;display:flex;justify-content:space-between;gap:var(--s4);border-top:1px solid color-mix(in srgb,var(--rule) 70%,transparent);font-family:var(--font-mono);font-size:var(--text-small)}.post-footer a{min-height:var(--hit-target);display:inline-flex;align-items:center}.post-empty{min-height:32rem;padding:var(--s9) 0;display:flex;flex-direction:column;align-items:flex-start;justify-content:center}.post-empty>p{color:var(--accent);font-family:var(--font-mono);font-size:var(--text-small)}.post-empty h1{margin-top:var(--s3);font-size:var(--text-title);line-height:1.12;letter-spacing:-.03em}.post-empty a{margin-top:var(--s6);font-family:var(--font-mono);font-size:var(--text-small)}.writing-index{padding:var(--s8) 0 var(--s9)}.writing-index>h1{font-family:var(--font-mono);font-size:var(--text-title);font-weight:500;line-height:1.08;letter-spacing:-.035em}.writing-index>.writing-list{margin-top:var(--s7)}}@layer components{.site-controls{flex:0 0 auto;display:flex}.theme-toggle{min-height:1.75rem;padding:var(--s1) var(--s2);color:var(--muted);background:transparent;border:1px solid var(--rule);border-radius:.25rem;cursor:pointer;font-family:var(--font-mono);font-size:var(--text-small);line-height:1.65}.theme-toggle:hover{border-color:var(--accent)}.identity h1{font-family:var(--font-sans);font-size:var(--text-title);font-weight:600;line-height:2.5rem;letter-spacing:-.025em}.identity>div>p{margin-top:var(--s3);color:var(--muted);font-size:var(--text-body);line-height:1.5}.terminal{min-height:16.125rem;overflow:hidden;border:1px solid var(--rule);border-radius:.5rem;background:var(--surface);font-family:var(--font-mono);font-size:var(--text-content);line-height:1.25rem}.terminal-title{height:2.09375rem;padding:var(--s2) var(--s3);display:flex;align-items:center;justify-content:space-between;gap:var(--s3);color:var(--muted);border-bottom:1px solid var(--rule);font-size:var(--text-tiny);line-height:1.03125rem}.terminal-title strong{display:inline-flex;align-items:center;gap:var(--s1);color:var(--terminal-green);font-size:inherit;font-weight:500;letter-spacing:.06em;text-transform:uppercase}.terminal-title strong i{width:.375rem;height:.375rem;background:currentColor;border-radius:var(--radius-round);animation:blink 1.4s steps(1) infinite}.terminal-body{min-height:0;padding:var(--s4)}.eval-row{min-height:1.25rem;display:grid;grid-template-columns:7.5rem minmax(0,1fr);grid-column-gap:var(--s3);column-gap:var(--s3)}.eval-row dt{color:var(--muted);animation:eval-key-highlight 28s linear infinite;animation-delay:var(--eval-delay)}.eval-row dd{color:color-mix(in srgb,var(--ink) 85%,transparent)}.eval-loop{margin-top:var(--s3);padding-top:var(--s3);border-top:1px solid var(--rule)}.header-nav a{min-height:var(--hit-target);display:inline-flex;flex:0 0 auto;align-items:center;font-size:var(--text-small);line-height:1.25rem;text-decoration:none}.section-title>span{color:var(--muted);font-family:var(--font-mono);font-size:var(--text-tiny)}.section-title h2{font-family:var(--font-mono);font-size:var(--text-content);font-weight:400;line-height:1.25rem;letter-spacing:.025em}.section-content>p+p{margin-top:var(--s5)}.lede{color:color-mix(in srgb,var(--ink) 80%,transparent);font-size:var(--text-content);font-weight:400;line-height:1.625}.plain-list,.stack-list{display:grid;grid-gap:var(--s5);gap:var(--s5)}.plain-row,.stack-list article{padding:0 0 1.25rem}.plain-row:last-child,.stack-list article:last-child{padding-bottom:0}.stack-list article header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s4)}.stack-list article header>div{min-width:0;display:flex;align-items:baseline;gap:var(--s2);white-space:nowrap}.work-date{flex:0 0 auto;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-small);line-height:1.45;white-space:nowrap}.plain-row h3,.stack-list h3,.writing-list h3{font-size:var(--text-content);font-weight:500;line-height:1.375rem}.plain-row span,.stack-list header p{color:var(--accent);font-family:var(--font-mono);font-size:var(--text-small)}.stack-list article>div{margin-top:var(--s1);color:color-mix(in srgb,var(--ink) 80%,transparent)}.plain-row{display:block}.plain-row>div{display:flex;align-items:baseline;gap:var(--s2)}.plain-row>div span{display:inline;line-height:1.45}.plain-row p{margin-top:var(--s1);color:color-mix(in srgb,var(--ink) 80%,transparent);line-height:1.625}.writing-list{display:grid}.writing-list>a{display:grid;grid-template-columns:minmax(0,1fr) 1rem;grid-gap:var(--s4);gap:var(--s4);padding:1.25rem 0;text-decoration:none}.writing-list time{display:block;margin-bottom:var(--s2);color:var(--muted);font-family:var(--font-mono);font-size:var(--text-small);line-height:1.45}.writing-list p{margin-top:var(--s1);color:color-mix(in srgb,var(--ink) 80%,transparent);line-height:1.625}.writing-list b{color:var(--accent);font-weight:400}.writing-all-link{min-height:var(--hit-target);margin-top:var(--s5);display:inline-flex;align-items:center;color:var(--accent);font-family:var(--font-mono);font-size:var(--text-small);text-decoration:none}.email-link{display:inline-block;margin-top:var(--s4);overflow-wrap:anywhere}.resume-link{display:block;width:-moz-fit-content;width:fit-content;margin-top:var(--s3)}.contact-links,.resume-link{font-size:var(--text-content)}.contact-links{margin-top:var(--s6);display:flex;flex-wrap:wrap;gap:var(--s3) var(--s5)}.reference-footer{padding:var(--rule-space-below) 0 var(--s6);display:flex;justify-content:space-between;gap:var(--s4);color:var(--muted);border-top:1px solid var(--rule);border-color:color-mix(in srgb,var(--rule) 70%,transparent);font-size:var(--text-small)}.article-nav a,.contact-links a,.email-link,.header-nav a,.post-empty a,.post-footer a,.reference-footer a,.resume-link,.theme-toggle,.writing-all-link{position:relative}.article-nav a:after,.contact-links a:after,.email-link:after,.header-nav a:after,.post-empty a:after,.post-footer a:after,.reference-footer a:after,.resume-link:after,.theme-toggle:after,.writing-all-link:after{content:"";position:absolute;top:50%;left:50%;width:100%;height:100%;min-width:var(--hit-target);min-height:var(--hit-target);transform:translate(-50%,-50%)}.header-nav a:after{width:calc(100% + var(--nav-gap));min-width:0;height:100%}.email-link:after,.resume-link:after{height:calc(100% + var(--s3));min-height:0}@keyframes blink{50%{opacity:0}}@keyframes eval-key-highlight{0%,14.285%,to{color:var(--muted)}10.714%,3.571%{color:var(--runner-blue)}}}@layer responsive{@media (max-width:42rem){.topline{height:3.5rem;gap:var(--s3)}.header-nav{--nav-gap:var(--s4)}.reference-section{scroll-margin-top:4.5rem}.reference-hero{padding-top:var(--s6)}.identity{flex-direction:column;align-items:flex-start;gap:1.25rem}.identity img{width:6.25rem;height:6.25rem;flex-basis:6.25rem}.identity h1{font-size:var(--text-title-compact);line-height:2.34375rem;letter-spacing:-.025em;white-space:nowrap}.identity>div>p{font-size:var(--text-body)}.terminal{width:100%;min-height:0}.terminal-body{min-height:0;padding:var(--s3);font-size:var(--text-small);line-height:1rem}.eval-row{min-height:1rem;grid-template-columns:5.25rem minmax(0,1fr);column-gap:var(--s2)}.post{padding-top:var(--s7)}.writing-index{padding:var(--s7) 0 var(--s8)}.writing-index>h1{font-size:var(--text-title-compact);line-height:1.12}.writing-index>.writing-list{margin-top:var(--s6)}.post-header{padding-bottom:var(--s7)}.post-header h1{line-height:1.12}.post-dek{margin-top:var(--s4);font-size:var(--text-lede)}.post-body{padding:var(--s7) 0}.markdown-content{line-height:1.75}.markdown-content h2{margin-top:var(--s7)}.markdown-content blockquote{padding-left:var(--s4);font-size:var(--text-body)}.writing-list>a{grid-template-columns:minmax(0,1fr) .875rem;gap:var(--s3)}}@media (max-width:25rem){.eval-row{grid-template-columns:minmax(0,1fr);column-gap:0}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.eval-row dt,.terminal-title strong i{animation:none!important}}}