@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-cyrillic-ext-400-normal.2xgjnt7tqh9_7.woff2)format("woff2"),url(../media/jetbrains-mono-cyrillic-ext-400-normal.2k9shvy03yibn.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-cyrillic-400-normal.0qoulnxh80yge.woff2)format("woff2"),url(../media/jetbrains-mono-cyrillic-400-normal.0-x1dsk872q42.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-greek-400-normal.0_-0tsqse47zs.woff2)format("woff2"),url(../media/jetbrains-mono-greek-400-normal.3y1-6__cta0i8.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-vietnamese-400-normal.2_8hwz_kagcew.woff2)format("woff2"),url(../media/jetbrains-mono-vietnamese-400-normal.1lu2dr36-r4uv.woff)format("woff");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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-latin-ext-400-normal.1y03up-y7l7i4.woff2)format("woff2"),url(../media/jetbrains-mono-latin-ext-400-normal.02j2uvbtesu5k.woff)format("woff");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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-latin-400-normal.3crsbyy6lh6yf.woff2)format("woff2"),url(../media/jetbrains-mono-latin-400-normal.2-1gwgi1uvl-u.woff)format("woff");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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(../media/jetbrains-mono-cyrillic-ext-500-normal.2ry3kp_o4otap.woff2)format("woff2"),url(../media/jetbrains-mono-cyrillic-ext-500-normal.10q4hyu_x8s5h.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(../media/jetbrains-mono-cyrillic-500-normal.3o7914csi1phi.woff2)format("woff2"),url(../media/jetbrains-mono-cyrillic-500-normal.3h99zp-wt8-ur.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(../media/jetbrains-mono-greek-500-normal.0w8tylf7bnwsx.woff2)format("woff2"),url(../media/jetbrains-mono-greek-500-normal.3g5x6uo9cqznt.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(../media/jetbrains-mono-vietnamese-500-normal.3u6u4bveorfwx.woff2)format("woff2"),url(../media/jetbrains-mono-vietnamese-500-normal.1t3tg1-szi7a0.woff)format("woff");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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(../media/jetbrains-mono-latin-ext-500-normal.0qg_8rqgwzn72.woff2)format("woff2"),url(../media/jetbrains-mono-latin-ext-500-normal.0lszauu02dx6r.woff)format("woff");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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(../media/jetbrains-mono-latin-500-normal.2h52d08o60qht.woff2)format("woff2"),url(../media/jetbrains-mono-latin-500-normal.2uxjaecu1qvdf.woff)format("woff");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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(../media/jetbrains-mono-cyrillic-ext-700-normal.3_re1_vi8smkt.woff2)format("woff2"),url(../media/jetbrains-mono-cyrillic-ext-700-normal.0n74mzw-xkcf_.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(../media/jetbrains-mono-cyrillic-700-normal.03lqm2majmr0o.woff2)format("woff2"),url(../media/jetbrains-mono-cyrillic-700-normal.3to38b2det_08.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(../media/jetbrains-mono-greek-700-normal.1umspahawg74g.woff2)format("woff2"),url(../media/jetbrains-mono-greek-700-normal.2sl-f5vk9r2uz.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(../media/jetbrains-mono-vietnamese-700-normal.0ae5b7qyx6wef.woff2)format("woff2"),url(../media/jetbrains-mono-vietnamese-700-normal.02oh1r7_ym-l4.woff)format("woff");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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(../media/jetbrains-mono-latin-ext-700-normal.2hg34p-yvum_k.woff2)format("woff2"),url(../media/jetbrains-mono-latin-ext-700-normal.45a02o0qapeir.woff)format("woff");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:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(../media/jetbrains-mono-latin-700-normal.1ydlpv6k6mttm.woff2)format("woff2"),url(../media/jetbrains-mono-latin-700-normal.3rj35zxzh_fh4.woff)format("woff");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}
:root{--bg:#0b0b0b;--panel:#111;--ink:#c9c9c9;--dim:#6f6f6f;--faint:#242424;--bright:#f5f5f5;--art:#c9c9c9}:root[data-theme=light]{--bg:#f2f1ec;--panel:#e7e6df;--ink:#262623;--dim:#6b6b64;--faint:#d3d2c8;--bright:#0c0c0b;--art:#4a4a44}html{background:var(--bg)}body{background:var(--bg);color:var(--ink);margin:0;font-family:JetBrains Mono,monospace;transition:opacity .16s}html.lang-fade body{opacity:0}a{color:var(--ink);text-decoration:none}a:hover{color:var(--bright)}::selection{background:var(--ink);color:var(--bg)}input::placeholder{color:var(--dim);opacity:1}@keyframes blink{50%{opacity:0}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.25}}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.shell{background:var(--bg);flex-direction:column;min-height:100vh;display:flex}.page{flex:1;padding:64px 0;animation:.55s cubic-bezier(.22,1,.36,1) both fadeUp}.header{border-bottom:1px solid var(--faint);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:18px 40px;display:flex}.nav{flex-wrap:wrap;align-items:center;gap:28px;font-size:12px;display:flex}.nav-btn{cursor:pointer;color:var(--dim);background:0 0;border:none;padding:0;font-family:inherit;font-size:12px;transition:color .18s}.nav-btn:hover,.nav-btn.is-active{color:var(--bright)}.nav-home .tilde{color:var(--dim)}.pill{border:1px solid var(--faint);color:var(--dim);cursor:pointer;background:0 0;padding:4px 10px;font-family:inherit;font-size:11px;transition:all .18s}.pill:hover{color:var(--bright);border-color:var(--dim)}.hero{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:30px;padding:72px 40px;animation:.55s cubic-bezier(.22,1,.36,1) both fadeUp;display:flex}.hero-role{color:var(--dim);text-align:center;font-size:12px}.hero-title{color:var(--bright);letter-spacing:1px;text-align:center;margin:0;font-size:40px;font-weight:500;line-height:1.3}.hero-cursor{background:var(--bright);width:10px;height:26px;margin-left:8px;animation:1.1s step-end infinite blink;display:inline-block}.hero-tag{color:var(--dim);text-align:center;margin:0;font-size:13px}.globe{color:var(--art);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;height:416px;margin:0;font-size:13px;line-height:13px;overflow:hidden}.list-wrap{flex-direction:column;max-width:760px;margin:0 auto;display:flex}.section-label{letter-spacing:4px;color:var(--dim);padding:0 24px 18px;font-size:10px}.list-end{border-top:1px solid var(--faint)}.post-row{border:none;border-top:1px solid var(--faint);cursor:pointer;text-align:left;color:var(--ink);background:0 0;grid-template-columns:130px 1fr auto;gap:24px;padding:18px 24px;font-family:inherit;font-size:13px;transition:all .18s;display:grid}.post-row:hover{background:var(--panel);color:var(--bright);padding-left:40px}.post-row .dim{color:var(--dim)}.row-soon{cursor:default}.row-soon:hover{color:var(--ink);background:0 0;padding-left:24px}.row-soon .soon-title{color:var(--dim);animation:2.4s infinite pulse}.project-row{border-top:1px solid var(--faint);grid-template-columns:1fr auto;align-items:center;gap:8px 20px;padding:26px 24px;transition:all .18s;display:grid}.project-row:hover{background:var(--panel);padding-left:40px}.project-name{color:var(--bright);font-size:15px}.project-cta{border:1px solid var(--faint);color:var(--dim);grid-row:span 2;padding:7px 14px;font-size:11px;transition:all .18s}.project-desc{color:var(--dim);font-size:12px}.project-row.row-soon:hover{padding-left:24px}.soon-cursor{color:var(--dim);grid-row:span 2;font-size:13px}.about-wrap{flex-direction:column;gap:14px;max-width:760px;margin:0 auto;padding:64px 24px 0;display:flex}.about-card{border:1px solid var(--faint);flex-direction:column;gap:22px;padding:30px 32px;transition:border-color .25s;display:flex}.about-card:hover{border-color:var(--dim)}.about-name{letter-spacing:.5px;color:var(--bright);font-size:22px;font-weight:500}.about-cursor{background:var(--bright);width:9px;height:17px;margin-left:8px;animation:1.1s step-end infinite blink;display:inline-block}.about-rows{border-top:1px solid var(--faint);flex-direction:column;gap:9px;margin:0;padding-top:22px;display:flex}.about-row{grid-template-columns:96px 1fr;gap:16px;font-size:13px;animation:.45s cubic-bezier(.22,1,.36,1) both fadeUp;display:grid}.about-row:first-child{animation-delay:50ms}.about-row:nth-child(2){animation-delay:.11s}.about-row:nth-child(3){animation-delay:.17s}.about-row:nth-child(4){animation-delay:.23s}.about-row:nth-child(5){animation-delay:.29s}.about-row dt{color:var(--dim);margin:0}.about-row dd{color:var(--ink);margin:0}.about-bio{max-width:58ch;color:var(--ink);margin:0;font-size:13px;line-height:1.9}.lang-tag{color:var(--dim);margin-left:10px;font-size:11px}.post-wrap{flex-direction:column;gap:24px;max-width:680px;margin:0 auto;padding:0 24px;display:flex}.back-btn{cursor:pointer;color:var(--dim);text-align:left;background:0 0;border:none;padding:0;font-family:inherit;font-size:12px;transition:color .18s}.back-btn:hover{color:var(--bright)}.post-meta{letter-spacing:3px;color:var(--dim);font-size:10px}.post-title{color:var(--bright);font-size:26px;font-weight:700;line-height:1.3}.post-par{color:var(--ink);font-size:14px;line-height:1.9}.post-sep{text-align:center;color:var(--dim);padding:8px 0;font-size:12px}.post-sig{color:var(--dim);font-size:12px}.contact-wrap{flex-direction:column;gap:40px;max-width:620px;margin:0 auto;padding:0 24px;display:flex}.contact-block{flex-direction:column;gap:16px;display:flex}.contact-block-sm{flex-direction:column;gap:12px;display:flex}.contact-block-md{flex-direction:column;gap:14px;display:flex}.contact-label{letter-spacing:4px;color:var(--dim);font-size:10px}.contact-head{color:var(--bright);font-size:30px;font-weight:500;line-height:1.4}.shell-line{color:var(--dim);font-size:12px}.mail-row{border-bottom:1px solid var(--faint);color:var(--bright);justify-content:space-between;align-items:baseline;gap:16px;padding:6px 0 16px;font-size:20px;transition:all .22s;display:flex}.mail-row:hover{border-color:var(--dim);padding-left:14px}.mail-row .addr{overflow-wrap:anywhere}.mail-row .arrow{color:var(--dim)}.contact-sub{color:var(--dim);font-size:11px}.social-row{flex-wrap:wrap;gap:10px;display:flex}.social-chip{border:1px solid var(--faint);color:var(--ink);padding:8px 16px;font-size:12px;transition:all .18s}.social-chip:hover{color:var(--bright);border-color:var(--dim);transform:translateY(-2px)}.compose{border:1px solid var(--faint);align-items:center;gap:12px;padding:12px 16px;transition:border-color .18s;display:flex}.compose:focus-within{border-color:var(--dim)}.compose .prompt{color:var(--dim);font-size:13px}.compose input{min-width:0;color:var(--bright);background:0 0;border:none;outline:none;flex:1;padding:0;font-family:inherit;font-size:13px}.compose-send{color:var(--dim);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:0;font-family:inherit;font-size:11px;transition:color .18s}.compose-send:hover{color:var(--bright)}.compose-send:disabled{cursor:default;color:var(--dim)}.hp-field{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.footer{border-top:1px solid var(--faint);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;padding:18px 40px;font-size:12px;display:flex}.footer-links{gap:10px;display:flex}.footer-chip{border:1px solid var(--faint);color:var(--dim);cursor:pointer;background:0 0;padding:6px 14px;font-family:inherit;font-size:11px;transition:all .18s}.footer-chip:hover{color:var(--bg);background:var(--bright);border-color:var(--bright)}.footer-bars{color:var(--dim);letter-spacing:-1px;font-size:11px}.footer-copy{color:var(--dim);font-size:11px}.cmd{background:var(--panel);border:1px solid var(--faint);z-index:50;flex-direction:column;gap:6px;min-width:min(380px,86vw);max-width:92vw;padding:14px 22px;font-size:13px;animation:.2s both fadeUp;display:flex;position:fixed;bottom:32px;left:50%;transform:translate(-50%);box-shadow:0 12px 40px #00000073}.cmd-line{align-items:center;gap:8px;display:flex}.cmd .ps1{color:var(--dim)}.cmd .typed{color:var(--bright)}.cmd input{min-width:0;color:var(--bright);background:0 0;border:none;outline:none;flex:1;padding:0;font-family:inherit;font-size:13px}.cmd-cursor{background:var(--bright);vertical-align:text-bottom;width:8px;height:15px;animation:1s step-end infinite blink;display:inline-block}.cmd-msg{color:var(--dim);font-size:12px}.cmd-fab{z-index:60;border:1px solid var(--faint);background:var(--panel);width:44px;height:44px;color:var(--dim);cursor:pointer;font-family:inherit;font-size:16px;position:fixed;bottom:18px;right:18px;box-shadow:0 8px 24px #00000059}.matrix{background:var(--bg);z-index:99;cursor:pointer;opacity:0;transition:opacity .5s;position:fixed;inset:0;overflow:hidden}.matrix.is-visible{opacity:1}.matrix pre{margin:0;font-size:12px;line-height:12px;position:absolute;inset:0;overflow:hidden}.matrix .rain{color:var(--art);opacity:.45}.matrix .keys{color:var(--bright)}.matrix-hint{color:var(--dim);font-size:11px;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.nf{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:18px;padding:72px 24px;animation:.55s cubic-bezier(.22,1,.36,1) both fadeUp;display:flex}.nf-code{color:var(--bright);letter-spacing:1px;font-size:40px;font-weight:500}.nf-msg{color:var(--dim);font-size:13px}@media (max-width:719px){.header,.footer{padding:14px 20px}.nav{gap:16px}.hero{padding:48px 20px}.hero-title{font-size:26px}.globe{height:312px}.post-row{grid-template-columns:92px 1fr auto}.mail-row{font-size:15px}.contact-head{font-size:22px}.about-card{padding:22px 20px}.about-row{grid-template-columns:72px 1fr;gap:12px}}
