@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{--bg:#0b0d10;--bg-raised:#12151a;--bg-glass:rgba(18,21,26,0.7);--line:#1f242c;--text:#e8e6e1;--muted:#9aa1ad;--dim:#6b7280;--accent:#ffb454;--accent-dim:rgba(255,180,84,0.12);--mono:"JetBrains Mono Variable",ui-monospace,Menlo,Consolas,monospace;--sans:"Inter Variable",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--sans);line-height:1.65;-webkit-font-smoothing:antialiased;background-image:radial-gradient(ellipse 900px 600px at 0 0,rgba(255,180,84,.07),transparent 60%),radial-gradient(ellipse 700px 500px at 100% 100%,rgba(255,180,84,.04),transparent 60%);background-attachment:fixed}::selection{background:var(--accent);color:var(--bg)}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}.topbar{position:fixed;inset:0 0 auto 0;z-index:50;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:14px 24px;pointer-events:none}.topbar .clock,.topbar .loc{font-family:var(--mono);font-size:12.5px;color:var(--muted)}.topbar .clock{text-align:right}.pillnav{pointer-events:auto;gap:4px;background:var(--bg-glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--line);padding:5px}.pillnav,.pillnav a{display:flex;align-items:center;border-radius:999px}.pillnav a{font-family:var(--mono);font-size:13px;color:var(--muted);padding:7px 16px;transition:all .15s;gap:7px}.pillnav a:hover{color:var(--text);background:rgba(255,255,255,.05)}.pillnav a.active{color:var(--accent);background:var(--accent-dim)}.pillnav .sep{width:1px;height:18px;background:var(--line);margin:0 2px}.page{max-width:1120px;margin:0 auto;padding:120px 24px 0}.cols{display:grid;grid-template-columns:130px 200px minmax(0,1fr);grid-gap:42px;gap:42px}.cols>main{min-width:0}.toc{position:-webkit-sticky;position:sticky;top:120px;align-self:start}.toc a{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--muted);padding:6px 0;transition:color .15s}.toc a:before{content:"";width:18px;height:1.5px;background:var(--line);transition:background .15s}.toc a:hover{color:var(--text)}.toc a:hover:before{background:var(--accent)}.side{position:-webkit-sticky;position:sticky;top:120px;align-self:start;text-align:left}.avatar{width:160px;height:160px;border-radius:50%;border:1px solid var(--line);object-fit:cover;box-shadow:0 0 60px rgba(255,180,84,.12)}.side .loc-line{display:flex;align-items:center;gap:8px;margin-top:18px;font-size:14.5px;color:var(--muted)}.side .langs{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.chip{font-size:12.5px;color:var(--muted);padding:4px 12px;background:var(--bg-raised)}.chip,.cta{border:1px solid var(--line);border-radius:999px}.cta{display:inline-flex;align-items:center;gap:10px;font-size:13.5px;color:var(--text);background:var(--bg-glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:9px 18px;margin-bottom:26px;transition:border-color .15s}.cta:hover{border-color:var(--accent)}.cta .dot{width:8px;height:8px;border-radius:50%;background:#4ade80;box-shadow:0 0 8px #4ade80}.cta .arrow{color:var(--accent)}h1.name{font-size:clamp(44px,6.5vw,68px);line-height:1.05;letter-spacing:-.025em;font-weight:800}.subtitle{margin-top:12px;font-size:17px;color:var(--muted)}.subtitle span{color:var(--dim);padding:0 8px}.socials{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}.socials a{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:13px;color:var(--text);border:1px solid var(--line);border-radius:999px;padding:8px 16px;background:var(--bg-raised);transition:all .15s}.socials a:hover{border-color:var(--accent);color:var(--accent)}.intro{margin-top:30px;font-size:16.5px;color:var(--text);max-width:640px}.intro p+p{margin-top:14px}section{padding:56px 0 8px}section h2{font-size:30px;letter-spacing:-.01em;margin-bottom:28px}section h2 a{color:inherit}.xp{margin-bottom:34px}.xp-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap}.xp-head h3{font-size:19px;font-weight:700}.xp-head .date{font-family:var(--mono);font-size:13px;color:var(--dim);white-space:nowrap}.xp .role{color:var(--accent);font-size:14.5px;margin:2px 0 10px}.xp ul{list-style:none}.xp li{color:var(--muted);font-size:15px;padding-left:20px;position:relative;margin:8px 0}.xp li:before{content:"—";position:absolute;left:0;color:var(--accent)}.xp .proj-label{font-family:var(--mono);font-size:12.5px;color:var(--text);margin:14px 0 4px}.xp .proj-label a{border-bottom:1px dashed var(--line)}.xp .proj-label a:hover{color:var(--accent);border-color:var(--accent)}.skillgroup{margin-bottom:26px}.skillgroup h4{font-size:16px;margin-bottom:6px}.skillgroup p{color:var(--muted);font-size:14.5px;max-width:620px}.skillgroup .tags{margin-top:10px}.tags{display:flex;flex-wrap:wrap;gap:8px}.tags span{font-family:var(--mono);font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:5px;padding:3px 10px;background:var(--bg-raised)}.repos{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));grid-gap:14px;gap:14px}.repo{border:1px solid var(--line);border-radius:10px;padding:18px;background:var(--bg-raised);transition:border-color .15s,transform .15s;display:flex;flex-direction:column;gap:8px}.repo:hover{border-color:var(--accent);transform:translateY(-2px)}.repo h4{font-family:var(--mono);font-size:14px;color:var(--accent);font-weight:600}.repo p{font-size:13.5px;color:var(--muted);flex:1 1}.repo .meta{font-family:var(--mono);font-size:12px;color:var(--dim);display:flex;gap:14px}.workhero{padding:20px 0 30px}.workhero h1{font-size:clamp(34px,5vw,52px);letter-spacing:-.02em;line-height:1.1}.workhero p{margin-top:14px;color:var(--muted);font-size:16.5px;max-width:560px}.pcard{border-top:1px solid var(--line);padding:42px 0;display:grid;grid-gap:10px;gap:10px}.pcard .p-top{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap}.pcard h2{font-size:26px;margin:0}.pcard .period{color:var(--dim)}.pcard .period,.pcard .role{font-family:var(--mono);font-size:12.5px}.pcard .role{color:var(--accent)}.pcard p.desc{color:var(--muted);font-size:15.5px;max-width:700px}.pcard .links{gap:18px;margin-top:6px}.pcard .links a{color:var(--text);border-bottom:1px solid var(--line);transition:all .15s}.pcard .links a:hover{color:var(--accent);border-color:var(--accent)}.pcard .tags{margin-top:10px}article.case{max-width:720px;margin:0 auto;padding-bottom:40px}.case .crumb{font-family:var(--mono);font-size:13px;color:var(--dim);margin-bottom:18px;display:block}.case .crumb:hover{color:var(--accent)}.case h1{font-size:clamp(30px,4.5vw,44px);line-height:1.12;letter-spacing:-.02em}.case .meta-row{display:flex;flex-wrap:wrap;gap:10px 22px;margin:16px 0 8px;font-family:var(--mono);font-size:13px;color:var(--dim)}.case .meta-row a{color:var(--accent)}.case .tags{margin:14px 0 8px}.case h2{font-size:22px;margin:34px 0 12px}.case p{color:var(--muted);font-size:15.5px;margin:12px 0}.case ul{list-style:none;margin:12px 0}.case li{color:var(--muted);font-size:15.5px;padding-left:22px;position:relative;margin:9px 0}.case li:before{content:"→";position:absolute;left:0;color:var(--accent);font-family:var(--mono)}.case .pager{display:flex;justify-content:space-between;margin-top:50px;padding-top:22px;border-top:1px solid var(--line)}.case .pager a{font-family:var(--mono);font-size:13px;color:var(--muted)}.case .pager a:hover{color:var(--accent)}.contact-blk p{font-size:18px;color:var(--muted);max-width:560px}.mailbtn{display:inline-flex;margin-top:22px;font-family:var(--mono);font-size:14.5px;color:var(--accent);border:1px solid var(--accent);border-radius:8px;padding:12px 22px;transition:all .15s}.mailbtn:hover{background:var(--accent);color:var(--bg)}footer{border-top:1px solid var(--line);margin-top:70px;padding:26px 0 90px}footer .inner{max-width:1120px;margin:0 auto;padding:0 24px;display:flex;flex-wrap:wrap;gap:12px 28px;justify-content:space-between;font-family:var(--mono);font-size:12.5px;color:var(--dim)}footer a:hover{color:var(--accent)}@media (max-width:1020px){.cols{grid-template-columns:200px minmax(0,1fr)}.toc{display:none}}@media (max-width:720px){.cols{grid-template-columns:1fr;gap:28px}.side{position:static;display:flex;align-items:center;gap:20px;flex-wrap:wrap}.avatar{width:96px;height:96px}.topbar .clock,.topbar .loc{display:none}.topbar{grid-template-columns:1fr;justify-items:center}.page{padding-top:100px}}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.case>*,.fade,.workhero,section{animation:fadeUp .55s cubic-bezier(.2,.7,.3,1) both}.d1{animation-delay:.05s}.d2{animation-delay:.12s}.d3{animation-delay:.19s}.d4{animation-delay:.26s}@media (prefers-reduced-motion:reduce){.case>*,.fade,.workhero,section{animation:none}}.cover{display:block;border-radius:14px;border:1px solid var(--line)}.coverlink{display:block;position:relative;overflow:hidden;border-radius:14px;transition:transform .25s cubic-bezier(.2,.7,.3,1)}.coverlink:hover{transform:translateY(-3px)}.coverlink:hover .cover{border-color:rgba(255,180,84,.5)}.featured{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px;gap:16px}.featured .flabel{margin-top:12px}.featured h3{font-size:17px;margin-top:10px}.featured p{font-size:14px;color:var(--muted);margin-top:2px}@media (max-width:720px){.featured{grid-template-columns:1fr}}section h2{display:flex;align-items:baseline;gap:12px}section h2:before{content:attr(data-idx);font-family:var(--mono);font-size:13px;font-weight:500}.socials a svg,section h2:before{color:var(--accent)}.flinks{display:flex;gap:16px}.flinks a{color:var(--muted);transition:color .15s;display:flex}.flinks a:hover{color:var(--accent)}h1.name{background:linear-gradient(135deg,#ffffff 30%,#d9d2c5 70%,var(--accent) 130%);-webkit-background-clip:text;background-clip:text;color:transparent;padding-bottom:4px}.pcard{grid-template-columns:1fr}.pcard .coverlink{margin-bottom:14px}.case .coverwrap{margin:26px 0 8px}.pcard{border-top:none;padding:40px 0 52px;display:flex;flex-direction:column;align-items:center;text-align:center}.pcard+.pcard{border-top:1px solid var(--line)}.pcard h2{font-size:clamp(24px,3.5vw,32px);line-height:1.2;letter-spacing:-.015em;max-width:700px}.pcard h2 a:hover{color:var(--accent)}.pmeta{display:flex;gap:18px;align-items:baseline;margin:10px 0 22px;justify-content:center;flex-wrap:wrap}.pcard .coverlink{width:100%}.pcard .desc{margin-top:22px;max-width:640px}.pcard .links{display:flex;gap:26px;margin-top:16px;justify-content:center}.pcard .links a{font-family:var(--mono);font-size:13px;color:var(--accent);display:inline-flex;align-items:center;gap:7px}.pcard .links a:hover{text-decoration:underline;text-underline-offset:4px}.pcard .tags{margin-top:16px;justify-content:center}.contrib{min-width:0;border:1px solid var(--line);border-radius:10px;background:var(--bg-raised);padding:18px;margin-bottom:18px}.contrib-head{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;font-family:var(--mono);font-size:12.5px;color:var(--muted);margin-bottom:14px}.contrib-head a{color:var(--accent)}.contrib-grid{overflow-x:auto;scrollbar-width:thin}.fig{font-family:var(--mono);font-size:11.5px;color:var(--dim);letter-spacing:.04em;display:block;margin-top:10px}.pcard .fig{margin-top:12px}section{scroll-margin-top:85px}.proof-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:14px;gap:14px;margin-top:28px;padding:20px 0;border-block:1px solid var(--line)}.proof-strip div{display:flex;flex-direction:column;gap:5px}.proof-strip strong{color:var(--accent);font-size:22px}.proof-strip span,.section-lede{color:var(--muted);font-size:14px}.section-lede{margin-bottom:16px}.evidence-label,.text-link{display:inline-block;color:var(--accent);font-size:14px;margin-top:18px}.text-link:hover{text-decoration:underline;text-underline-offset:4px}.contact-blk .contact-note{margin-top:16px;font-size:15px}.case-contact{border-top:1px solid var(--line);margin-top:36px}a:focus-visible{outline:2px solid var(--accent);outline-offset:5px}@media (max-width:420px){.proof-strip{grid-template-columns:1fr}.cta{border-radius:14px}.pillnav a{padding-inline:11px}}@media (min-width:1021px){.page{position:relative}.page:after,.page:before{content:"";position:absolute;top:0;bottom:0;width:1px;background:linear-gradient(to bottom,transparent,var(--line) 120px,var(--line) calc(100% - 60px),transparent)}.page:before{left:0}.page:after{right:0}}