@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.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(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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)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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.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}:root{--bg:#0a0d12;--surface:#10141b;--surface-2:#151a23;--ink:#e6edf3;--muted:#8b97a7;--dim:#5c6777;--line:#1e2530;--green:#7ee787;--blue:#79c0ff;--purple:#d2a8ff;--orange:#ffa657;--red:#ff7b72;--accent:var(--green);--accent-soft:#7ee7871a;--sans:"Inter Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"JetBrains Mono Variable", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--gutter:clamp(20px, 5vw, 48px);--max:1120px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{background-color:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;background-image:radial-gradient(900px 520px at 85% -10%,#79c0ff17,#0000 70%),radial-gradient(700px 480px at 0 8%,#7ee78712,#0000 70%),linear-gradient(#ffffff06 1px,#0000 1px),linear-gradient(90deg,#ffffff06 1px,#0000 1px);background-repeat:no-repeat,no-repeat,repeat,repeat;background-size:auto,auto,44px 44px,44px 44px;margin:0;font-size:16.5px;line-height:1.65;overflow-x:hidden}h1,h2,h3,p,ul,ol,dl,dd,pre{margin:0}ul,ol{padding:0;list-style:none}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}svg{flex:none}::selection{background:var(--accent);color:var(--bg)}:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:6px}[id]{scroll-margin-top:88px}.dim{color:var(--dim)}.skip{z-index:30;background:var(--ink);color:var(--bg);border-radius:8px;padding:10px 14px;position:absolute;top:-60px;left:16px}.skip:focus{top:12px}.header{z-index:20;border-bottom:1px solid #0000;transition:background-color .3s,border-color .3s;position:fixed;inset:0 0 auto}.header.solid{-webkit-backdrop-filter:blur(14px);border-bottom-color:var(--line);background:#0a0d12d1}.header-inner{max-width:var(--max);padding:0 var(--gutter);justify-content:space-between;align-items:center;gap:24px;height:60px;margin:0 auto;display:flex}.brand{font-family:var(--mono);align-items:center;gap:9px;font-size:14.5px;font-weight:600;display:inline-flex}.brand svg{color:var(--accent)}.nav{font-family:var(--mono);color:var(--muted);gap:6px;font-size:13.5px;display:flex}.nav a{border-radius:8px;justify-content:center;align-items:center;height:32px;padding:0 12px;transition:color .2s,background-color .2s;display:inline-flex}.nav a:before{content:"./";color:var(--dim)}.nav a:hover{color:var(--ink);background:var(--surface-2)}.lang{border:1px solid var(--line);background:var(--surface);font-family:var(--mono);border-radius:9px;align-items:center;padding:3px;font-size:12.5px;display:flex}.lang button{min-width:34px;height:26px;color:var(--muted);border-radius:6px;place-items:center;transition:color .2s,background-color .2s;display:grid}.lang button.on{background:var(--accent);color:var(--bg);font-weight:700}.menu-button{border:1px solid var(--line);background:var(--surface);width:40px;height:40px;color:var(--ink);border-radius:9px;place-items:center;transition:border-color .2s,color .2s;display:none}.menu-button:hover,.menu-button[aria-expanded=true]{border-color:var(--accent);color:var(--accent)}.mobile-menu{border-top:1px solid var(--line);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(14px);background:#0a0d12f7;position:absolute;top:100%;left:0;right:0;box-shadow:0 24px 40px -20px #000c}.mobile-menu ul{padding:12px var(--gutter) 16px;gap:6px;display:grid}.mobile-menu a{border:1px solid var(--line);background:var(--surface);height:48px;font-family:var(--mono);border-radius:10px;align-items:center;padding:0 14px;font-size:15px;display:flex}.mobile-menu a svg{color:var(--dim);margin-left:auto}.mobile-menu a:active{border-color:var(--accent);color:var(--accent)}.progress{background:linear-gradient(90deg, var(--green), var(--blue));transform-origin:0;height:2px;position:absolute;bottom:-1px;left:0;right:0}.hero{max-width:var(--max);padding:clamp(112px, 16vh, 168px) var(--gutter) 0;margin:0 auto}.hero-inner{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:center;gap:clamp(28px,5vw,64px);display:grid}.prompt{font-family:var(--mono);color:var(--muted);font-size:14px}.ps{color:var(--accent);margin-right:6px}.hero h1{font-family:var(--mono);letter-spacing:-.04em;margin-top:14px;font-size:clamp(2.5rem,7vw,4.6rem);font-weight:800;line-height:1.02}.role{min-height:1.9em;font-family:var(--mono);color:var(--blue);align-items:center;margin-top:14px;font-size:clamp(1rem,2.2vw,1.3rem);display:flex}.gt{color:var(--dim);margin-right:10px}.caret{background:var(--accent);width:.58em;height:1.15em;margin-left:3px;animation:1.05s step-end infinite blink}@keyframes blink{50%{opacity:0}}.lede{max-width:520px;color:var(--muted);margin-top:18px;font-size:1.08rem}.actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:30px;display:flex}.actions.center{justify-content:center}.button{background:var(--surface);border:1px solid var(--line);height:44px;font-family:var(--mono);border-radius:10px;justify-content:center;align-items:center;gap:9px;padding:0 18px;font-size:14px;font-weight:500;transition:border-color .2s,background-color .2s,color .2s,transform .2s;display:inline-flex}.button:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}.button.primary{background:var(--accent);border-color:var(--accent);color:#06130a;font-weight:700}.button.primary:hover{color:#06130a;background:#a2f2a9;border-color:#a2f2a9}.button.icon{width:44px;padding:0}.button.small{height:36px;padding:0 12px;font-size:13px}.window{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 30px 60px -30px #000c,inset 0 0 0 1px #ffffff05}.window-bar{background:var(--surface-2);border-bottom:1px solid var(--line);align-items:center;gap:7px;height:38px;padding:0 14px;display:flex}.window-bar i{background:#2b3340;border-radius:50%;width:11px;height:11px}.window-bar i:first-child{background:#ff5f57}.window-bar i:nth-child(2){background:#febc2e}.window-bar i:nth-child(3){background:#28c840}.window-bar span{font-family:var(--mono);color:var(--muted);margin-left:8px;font-size:12.5px}.code{font-family:var(--mono);padding:16px 16px 18px 0;font-size:13.5px;line-height:1.75;overflow-x:auto}.code-line{white-space:pre;display:flex}.ln{text-align:right;width:44px;color:var(--dim);-webkit-user-select:none;user-select:none;flex:none;padding-right:16px}.t-k{color:var(--red)}.t-v{color:var(--blue)}.t-s{color:#a5d6ff}.t-n{color:var(--green)}.t-p{color:var(--ink)}.t-c{color:var(--dim);font-style:italic}.t-b{color:var(--orange)}.facts{border:1px solid var(--line);background:var(--surface);border-radius:14px;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:clamp(40px,7vw,72px);display:grid;overflow:hidden}.facts>div{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:20px 16px;display:flex}.facts>div+div{border-left:1px solid var(--line)}.facts dt{font-family:var(--mono);color:var(--accent);font-size:clamp(1.5rem,3.4vw,2.1rem);font-weight:800;line-height:1.1}.facts dd{color:var(--muted);font-size:13.5px;line-height:1.4}.section{max-width:var(--max);padding:clamp(72px, 10vw, 120px) var(--gutter) 0;margin:0 auto}.section-head{align-items:center;gap:14px;margin-bottom:30px;display:flex}.index{font-family:var(--mono);color:var(--accent);font-size:13px}.section-head h2{font-family:var(--mono);letter-spacing:-.02em;font-size:clamp(1.4rem,3vw,1.75rem);font-weight:700;line-height:1.1}.slash{color:var(--dim)}.rule{background:var(--line);flex:1;height:1px}.section-intro{color:var(--muted);margin-bottom:22px}.about-text{max-width:760px;color:var(--ink);font-size:clamp(1.1rem,2vw,1.3rem);line-height:1.55}.cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:30px;display:grid}.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:20px;transition:border-color .25s,transform .3s}.card:hover{border-color:#2f3a4a;transform:translateY(-3px)}.card-icon{background:var(--accent-soft);width:40px;height:40px;color:var(--accent);border-radius:10px;place-items:center;margin-bottom:14px;display:grid}.card h3{letter-spacing:-.01em;font-size:1.02rem;font-weight:650;line-height:1.3}.card h3.mono{font-family:var(--mono);font-size:.95rem}.card p{color:var(--muted);margin-top:6px;font-size:14.5px;line-height:1.55}.cards .card:nth-child(2) .card-icon{color:var(--purple);background:#d2a8ff1a}.cards .card:nth-child(3) .card-icon{color:var(--blue);background:#79c0ff1a}.cards .card:nth-child(4) .card-icon{color:var(--orange);background:#ffa6571a}.period{font-family:var(--mono);color:var(--muted);font-size:12.5px}.card .period{margin-top:10px}.timeline{gap:18px;padding-left:40px;display:grid;position:relative}.timeline:before{content:"";background:var(--line);width:2px;position:absolute;top:6px;bottom:6px;left:13px}.timeline-line{background:linear-gradient(var(--green), var(--blue));transform-origin:top;width:2px;position:absolute;top:6px;bottom:6px;left:13px}.job{position:relative}.job-node{background:var(--bg);border:1px solid var(--line);width:28px;height:28px;color:var(--accent);z-index:1;border-radius:50%;place-items:center;display:grid;position:absolute;top:18px;left:-40px}.job-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:20px 22px;transition:border-color .25s}.job-card:hover{border-color:#2f3a4a}.job-top{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 16px;display:flex}.job h3{letter-spacing:-.015em;font-size:1.15rem;font-weight:650;line-height:1.3}.job-meta{color:var(--muted);flex-wrap:wrap;gap:4px 18px;margin-top:6px;font-size:14px;display:flex}.job-meta span{align-items:center;gap:6px;display:inline-flex}.job-meta .company{color:var(--blue);font-weight:600}.job-points{color:var(--muted);gap:8px;margin-top:14px;font-size:15px;display:grid}.job-points li{padding-left:20px;position:relative}.job-points li:before{content:"+";font-family:var(--mono);color:var(--accent);position:absolute;top:0;left:0}.tags{flex-wrap:wrap;gap:6px;margin-top:16px;display:flex}.tags li{background:var(--surface-2);border:1px solid var(--line);height:26px;font-family:var(--mono);color:var(--muted);border-radius:7px;align-items:center;gap:6px;padding:0 9px;font-size:12px;display:inline-flex}.skills{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.skill-group{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px 20px 20px}.skill-group h3{font-family:var(--mono);color:var(--accent);align-items:center;gap:8px;margin-bottom:14px;font-size:13px;font-weight:600;display:flex}.chips{flex-wrap:wrap;gap:8px;display:flex}.chips li{background:var(--surface-2);border:1px solid var(--line);border-radius:9px;align-items:center;gap:8px;min-height:34px;padding:5px 12px;font-size:14px;line-height:1.3;transition:border-color .2s,color .2s,transform .2s;display:inline-flex}.chips li svg{color:var(--muted);transition:color .2s}.chips li:hover{border-color:var(--blue);transform:translateY(-2px)}.chips li:hover svg{color:var(--blue)}.projects{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.projects>div{display:flex}.project{background:var(--surface);border:1px solid var(--line);border-radius:14px;flex-direction:column;width:100%;padding:22px;transition:transform .35s cubic-bezier(.22,1,.36,1),border-color .25s,box-shadow .35s;display:flex}.project:hover{border-color:var(--accent);transform:translateY(-5px);box-shadow:0 22px 44px -26px #7ee78759}.project-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.project-icon{object-fit:cover;background:var(--surface-2);width:56px;height:56px;box-shadow:0 0 0 1px var(--line), 0 10px 20px -12px #000000e6;border-radius:13px;transition:transform .35s cubic-bezier(.22,1,.36,1);display:block}.project:hover .project-icon{transform:scale(1.06)rotate(-3deg)}.status{border:1px solid var(--line);height:26px;font-family:var(--mono);color:var(--orange);border-radius:999px;align-items:center;gap:8px;padding:0 10px;font-size:12px;display:inline-flex}.status i{background:currentColor;border-radius:50%;width:7px;height:7px}.status.live{color:var(--green)}.project h3{font-family:var(--mono);letter-spacing:-.03em;margin-top:18px;font-size:1.45rem;font-weight:700;line-height:1.15}.project-kind{font-family:var(--mono);color:var(--dim);font-size:12.5px}.project-text{color:var(--muted);margin-top:10px;font-size:15px}.project .tags{margin-bottom:20px}.project-cta{border-top:1px solid var(--line);font-family:var(--mono);color:var(--blue);align-items:center;gap:7px;margin-top:auto;padding-top:14px;font-size:13.5px;display:inline-flex}.project-cta svg{transition:transform .3s}.project:hover .project-cta svg{transform:translate(3px)}.education{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.plain{color:var(--muted);gap:6px;margin-top:8px;font-size:14.5px;display:grid}.contact{max-width:var(--max);padding:clamp(72px, 10vw, 120px) var(--gutter) clamp(64px, 8vw, 96px);margin:0 auto}.contact-body{text-align:center;padding:clamp(28px,5vw,52px) clamp(20px,5vw,52px) clamp(32px,5vw,56px)}.contact-body .prompt{text-align:left}.contact h2{max-width:640px;font-family:var(--mono);letter-spacing:-.03em;text-wrap:balance;margin:26px auto 0;font-size:clamp(1.4rem,3.6vw,2.2rem);font-weight:700;line-height:1.2}.mail-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;margin-top:28px;display:flex}.mail{font-family:var(--mono);color:var(--accent);overflow-wrap:anywhere;justify-content:center;align-items:center;gap:10px;font-size:clamp(.95rem,2.3vw,1.15rem);display:inline-flex}.mail:hover{text-underline-offset:5px;text-decoration:underline}.contact .actions{margin-top:22px}.footer{max-width:var(--max);padding:22px var(--gutter) 32px;border-top:1px solid var(--line);font-family:var(--mono);color:var(--dim);flex-wrap:wrap;justify-content:space-between;gap:6px 24px;margin:0 auto;font-size:12.5px;display:flex}@media (width<=980px){.cards,.projects{grid-template-columns:repeat(2,minmax(0,1fr))}.education{grid-template-columns:minmax(0,1fr)}}@media (width<=860px){.nav{display:none}.header-inner{gap:10px}.header-inner .lang{margin-left:auto}.menu-button{display:grid}.hero-inner,.skills,.projects{grid-template-columns:minmax(0,1fr)}}@media (width<=520px){body{font-size:16px}.cards{grid-template-columns:minmax(0,1fr)}.code{font-size:12px}.ln{width:34px;padding-right:12px}.facts{grid-template-columns:minmax(0,1fr)}.facts>div{text-align:left;flex-direction:row;justify-content:flex-start;gap:14px;padding:14px 18px}.facts>div+div{border-left:0;border-top:1px solid var(--line)}.facts dt{min-width:64px}.actions .button:not(.icon){flex:100%}.actions .button.icon{flex:1}.timeline{padding-left:34px}.timeline:before,.timeline-line{left:10px}.job-node{left:-37px}.job-card{padding:18px}.contact-body .prompt{text-align:center}.footer{text-align:center;justify-content:center}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.caret{animation:none}*,:before,:after{transition-duration:.01ms!important}}
