@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2)format("woff2-variations");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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-I4S5GZfc.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-BmXc_FBt.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-GZpp1pK2.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-D8KDMBhC.woff2)format("woff2-variations");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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-DrnZ1wKl.woff2)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-B_7UjwxQ.woff2)format("woff2-variations");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}pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}:root{--bg:#fafafa;--surface:#f4f4f4;--text:#111;--text-2:#44403c;--text-muted:#78716c;--text-subtle:#a8a29e;--border:#d6d3d1;--rule:#111;--rule-w:2px;--accent:#e8442e;--font-sans:"Geist Variable", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-mono:"Geist Mono Variable", ui-monospace, "Cascadia Code", "Fira Code", monospace;--font-display:"Archivo", ui-sans-serif, sans-serif;--display-weight:900;--display-transform:uppercase;--display-tracking:-.04em;--display-leading:.95;--hero-size:104px;--stat-size:52px;--label-transform:uppercase;--label-tracking:.08em;--row-weight:700;--row-transform:uppercase;--card-radius:0px;--card-hover:#111;--project-title-color:#111;--max-width:1080px;--page-x:40px;--transition-fast:.15s;--space-hero-pad:72px;--space-section-pad:56px;--space-label:30px;--row-pad:16px;--code-bg:#0d1117;--code-border:#21262d;--code-text:#e6edf3}@media (prefers-color-scheme:dark){:root{--bg:#0a0a0a;--surface:#141414;--text:#fafafa;--text-2:#a8a29e;--text-muted:#78716c;--text-subtle:#525252;--border:#262626;--rule:#262626;--rule-w:1px;--accent:#34d399;--font-display:"Geist Mono Variable", ui-monospace, monospace;--display-weight:700;--display-transform:none;--display-tracking:-.03em;--display-leading:1.12;--hero-size:52px;--stat-size:30px;--label-transform:lowercase;--label-tracking:0em;--row-weight:500;--row-transform:none;--card-radius:8px;--card-hover:#34d399;--project-title-color:#34d399}}:root[data-theme=light]{--bg:#fafafa;--surface:#f4f4f4;--text:#111;--text-2:#44403c;--text-muted:#78716c;--text-subtle:#a8a29e;--border:#d6d3d1;--rule:#111;--rule-w:2px;--accent:#e8442e;--font-display:"Archivo", ui-sans-serif, sans-serif;--display-weight:900;--display-transform:uppercase;--display-tracking:-.04em;--display-leading:.95;--hero-size:104px;--stat-size:52px;--label-transform:uppercase;--label-tracking:.08em;--row-weight:700;--row-transform:uppercase;--card-radius:0px;--card-hover:#111;--project-title-color:#111}:root[data-theme=dark]{--bg:#0a0a0a;--surface:#141414;--text:#fafafa;--text-2:#a8a29e;--text-muted:#78716c;--text-subtle:#525252;--border:#262626;--rule:#262626;--rule-w:1px;--accent:#34d399;--font-display:"Geist Mono Variable", ui-monospace, monospace;--display-weight:700;--display-transform:none;--display-tracking:-.03em;--display-leading:1.12;--hero-size:52px;--stat-size:30px;--label-transform:lowercase;--label-tracking:0em;--row-weight:500;--row-transform:none;--card-radius:8px;--card-hover:#34d399;--project-title-color:#34d399}.only-dark{display:none}@media (prefers-color-scheme:dark){.only-light{display:none}.only-dark{display:inline}}:root[data-theme=light] .only-light{display:inline}:root[data-theme=light] .only-dark,:root[data-theme=dark] .only-light{display:none}:root[data-theme=dark] .only-dark{display:inline}*,:before,:after{box-sizing:border-box}html{font-size:16px}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;line-height:1.65}a{color:inherit}.page{max-width:var(--max-width);padding:0 var(--page-x);flex-direction:column;min-height:100vh;margin:0 auto;display:flex}main{flex:1}.nav{border-bottom:var(--rule-w) solid var(--rule);justify-content:space-between;align-items:center;padding:26px 0;display:flex}.nav-logo{font-family:var(--font-display);font-weight:var(--display-weight);letter-spacing:.02em;color:var(--text);font-size:16px;text-decoration:none;transition:opacity .15s}.nav-logo:hover{opacity:.65}.nav-logo-tld{color:var(--accent)}.nav-logo-host{color:var(--text-subtle)}.nav-links{align-items:center;gap:32px;display:flex}.nav-link{font-family:var(--font-mono);letter-spacing:var(--label-tracking);text-transform:var(--label-transform);color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;text-decoration:none;transition:color .15s}.nav-link:hover{color:var(--text)}.hero{padding:var(--space-hero-pad) 0 56px;border-bottom:var(--rule-w) solid var(--rule)}.hero-kicker{font-family:var(--font-mono);color:var(--accent);letter-spacing:var(--label-tracking);text-transform:var(--label-transform);margin:0 0 28px;font-size:13px}.hero-title{font-family:var(--font-display);font-weight:var(--display-weight);font-size:var(--hero-size);line-height:var(--display-leading);letter-spacing:var(--display-tracking);text-transform:var(--display-transform);color:var(--text);margin:0}.hero-title .accent{color:var(--accent)}.cursor-block{background:var(--accent);vertical-align:-.06em;width:.5em;height:.8em;margin-left:.15em;display:inline-block}.hero-foot{justify-content:space-between;align-items:flex-end;gap:40px;margin-top:40px;display:flex}.hero-sub{color:var(--text-2);max-width:540px;margin:0;font-size:1.0625rem;line-height:1.65}.hero-meta{font-family:var(--font-mono);color:var(--text-muted);letter-spacing:var(--label-tracking);text-transform:var(--label-transform);white-space:nowrap;font-size:12px}.stat-grid{border-bottom:var(--rule-w) solid var(--rule);grid-template-columns:repeat(4,1fr);display:grid}.stat-cell{border-right:1px solid var(--rule);padding:30px 24px 30px 0}.stat-cell+.stat-cell{padding-left:28px}.stat-cell:last-child{border-right:none}.stat-value{font-family:var(--font-display);font-weight:var(--display-weight);font-size:var(--stat-size);letter-spacing:-.03em;color:var(--text);line-height:1}.stat-value.accent{color:var(--accent)}.stat-label{font-family:var(--font-mono);letter-spacing:var(--label-tracking);text-transform:var(--label-transform);color:var(--text-muted);margin-top:10px;font-size:11px}.section-block{padding:var(--space-section-pad) 0;border-bottom:var(--rule-w) solid var(--rule)}.section-block.flush{border-bottom:none}.section-label{margin:0 0 var(--space-label)}.label-light{font-family:var(--font-display);letter-spacing:-.01em;text-transform:uppercase;color:var(--text);font-size:20px;font-weight:900}.label-light .slash{color:var(--accent)}.label-dark{font-family:var(--font-mono);color:var(--accent);font-size:13px}.career-row{padding:var(--row-pad) 0;border-bottom:1px solid var(--border);align-items:baseline;gap:28px;display:flex}.career-row:last-child{border-bottom:none;padding-bottom:0}.career-year{font-family:var(--font-mono);width:52px;color:var(--text-subtle);flex-shrink:0;font-size:12px}.career-year.current{color:var(--accent)}.career-role{font-size:15px;font-weight:var(--row-weight);text-transform:var(--row-transform);width:340px;color:var(--text);flex-shrink:0}.career-role-link{text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--muted);text-decoration-color:var(--muted)}.career-role-link:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);color:var(--accent)}.career-note{color:var(--text-muted);font-size:14px}.project-grid{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.project-card{border:1px solid var(--border);border-radius:var(--card-radius);padding:26px;text-decoration:none;transition:border-color .15s;display:block}.project-card:hover{border-color:var(--card-hover)}.project-name{font-family:var(--font-mono);color:var(--project-title-color);margin:0 0 12px;font-size:15px;font-weight:700}.project-name .arrow{color:var(--accent)}.project-desc{color:var(--text-muted);margin:0;font-size:13.5px;line-height:1.6}.section-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.section-title{font-family:var(--font-mono);letter-spacing:var(--label-tracking);text-transform:var(--label-transform);color:var(--text-muted);margin:0;font-size:13px;font-weight:500}.section-link{font-family:var(--font-mono);color:var(--text-subtle);text-transform:var(--label-transform);letter-spacing:var(--label-tracking);font-size:12px;text-decoration:none;transition:color .15s}.section-link:hover{color:var(--text-muted)}.project-list{margin:0;padding:0;list-style:none}.project-item{padding:var(--row-pad) 0;border-bottom:1px solid var(--border);align-items:baseline;gap:12px;display:flex}.project-item:last-child{border-bottom:none}.project-link{font-family:var(--font-mono);color:var(--text);white-space:nowrap;flex-shrink:0;font-size:.9375rem;font-weight:500;text-decoration:none;transition:color .15s}.project-link:hover{color:var(--accent)}.project-summary{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.875rem;overflow:hidden}.project-arrow{color:var(--text-subtle);flex-shrink:0;font-size:.875rem;text-decoration:none;transition:color .15s}.project-arrow:hover{color:var(--accent)}.post-list{margin:0;padding:0;list-style:none}.post-item{padding:var(--row-pad) 0;border-bottom:1px solid var(--border)}.post-item:last-child{border-bottom:none}.post-item-top{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.post-link{color:var(--text);flex:1;min-width:0;font-size:.9375rem;text-decoration:none;transition:color .15s}.post-link:hover{color:var(--accent)}.post-date{color:var(--text-subtle);font-size:12px;font-family:var(--font-mono);white-space:nowrap;flex-shrink:0}.post-description{color:var(--text-muted);margin:6px 0 0;font-size:.875rem;line-height:1.55}.list-aside{font-family:var(--font-mono);color:var(--text-subtle);text-transform:var(--label-transform);letter-spacing:var(--label-tracking);padding-top:var(--row-pad);margin:0;font-size:12px}.page-title{font-family:var(--font-display);font-weight:var(--display-weight);letter-spacing:var(--display-tracking);text-transform:var(--display-transform);margin:64px 0 44px;font-size:2.5rem}.year-group{margin-bottom:44px}.year-heading{font-family:var(--font-mono);color:var(--text-subtle);margin:0 0 12px;font-size:13px;font-weight:500}.back-link{font-family:var(--font-mono);letter-spacing:var(--label-tracking);text-transform:var(--label-transform);color:var(--text-muted);white-space:nowrap;align-items:center;gap:6px;margin:48px 0 44px;font-size:13px;text-decoration:none;transition:color .15s;display:inline-flex}.back-link:hover{color:var(--text)}.post-header{margin-bottom:44px}.post-title{font-family:var(--font-display);font-weight:var(--display-weight);font-size:2.25rem;line-height:var(--display-leading);letter-spacing:var(--display-tracking);text-transform:var(--display-transform);margin:0 0 16px}.post-meta{color:var(--text-subtle);font-size:.8125rem;font-family:var(--font-mono);align-items:center;gap:10px;display:flex}.prose{color:var(--text);max-width:680px;font-size:1rem;line-height:1.85}.prose h1,.prose h2,.prose h3,.prose h4{letter-spacing:-.015em;margin:2.25em 0 .65em;font-weight:600;line-height:1.3}.prose h1{font-size:1.5rem}.prose h2{font-size:1.25rem}.prose h3{font-size:1.0625rem}.prose p{margin:0 0 1.4em}.prose a{color:var(--accent);text-underline-offset:3px;text-decoration:underline}.prose strong{font-weight:600}.prose ul,.prose ol{margin:0 0 1.4em;padding-left:1.5em}.prose li{margin-bottom:.35em}.prose blockquote{border-left:2px solid var(--accent);color:var(--text-muted);margin:0 0 1.4em;padding:0 0 0 1.35em}.prose hr{border:none;border-top:1px solid var(--border);margin:2.5em 0}.prose img{border-radius:var(--card-radius);max-width:100%;height:auto}.prose code{font-family:var(--font-mono);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.1em .35em;font-size:.875em}.prose pre{background:var(--code-bg);border:1px solid var(--code-border);border-radius:10px;margin:0 0 1.6em;padding:1.375rem;overflow-x:auto}.prose pre code{color:var(--code-text);background:0 0;border:none;padding:0;font-size:.875rem}.project-detail-header{margin-bottom:36px}.project-detail-title{font-family:var(--font-mono);letter-spacing:-.02em;margin:0 0 10px;font-size:2rem;font-weight:700}.project-detail-tagline{color:var(--text-muted);margin:0 0 24px;font-size:1rem;line-height:1.6}.project-detail-actions{flex-wrap:wrap;gap:10px;margin-bottom:18px;display:flex}.btn{font-family:var(--font-mono);letter-spacing:var(--label-tracking);text-transform:var(--label-transform);border-radius:var(--card-radius);border:1px solid var(--rule);color:var(--text);cursor:pointer;white-space:nowrap;background:0 0;align-items:center;gap:6px;padding:10px 18px;font-size:12px;font-weight:500;text-decoration:none;transition:border-color .15s,opacity .15s;display:inline-flex}.btn:hover{border-color:var(--card-hover)}.btn-primary{background:var(--text);color:var(--bg);border-color:var(--text)}.btn-primary:hover{opacity:.85}.tech-chips{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.tech-chip{font-size:.75rem;font-family:var(--font-mono);color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:var(--card-radius);white-space:nowrap;padding:3px 9px}.screenshots{flex-direction:column;gap:12px;margin-bottom:40px;display:flex}.screenshot{border-radius:var(--card-radius);border:1px solid var(--border);width:100%;max-width:800px;height:auto}.why-heading{font-family:var(--font-mono);color:var(--accent);letter-spacing:var(--label-tracking);text-transform:var(--label-transform);margin:40px 0 18px;font-size:13px}.not-found{padding:96px 0}.not-found h1{font-family:var(--font-display);font-size:1.5rem;font-weight:var(--display-weight);text-transform:var(--display-transform);margin:0 0 10px}.not-found p{color:var(--text-muted);margin:0}.not-found a{color:var(--accent);text-underline-offset:3px;text-decoration:underline}.empty-state{color:var(--text-muted);margin:0;font-size:.9375rem}.footer{border-top:var(--rule-w) solid var(--rule);font-family:var(--font-mono);letter-spacing:var(--label-tracking);text-transform:var(--label-transform);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:26px 0 44px;font-size:12px;display:flex}.footer-location{color:var(--text-muted)}.footer-links{gap:22px;display:flex}.footer-link{color:var(--text-muted);text-decoration:none;transition:color .15s}.footer-link:hover{color:var(--text)}@media (width<=760px){.stat-grid{grid-template-columns:1fr 1fr}.stat-cell:nth-child(2){border-right:none}.project-grid{grid-template-columns:1fr}.career-row{flex-wrap:wrap;gap:8px 20px}.career-role{width:auto}.hero-foot,.footer{flex-direction:column;align-items:flex-start}.page-title{font-size:2rem}}@media (width<=480px){:root{--hero-size:56px;--page-x:20px}.post-item-top{flex-direction:column;align-items:flex-start;gap:3px}}
