@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-cyrillic-ext-400-normal.g30qAdWV.woff2)format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-ext-400-normal.Dsrv2Tcn.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-cyrillic-400-normal.DZqxrq2p.woff2)format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-400-normal.BTotfTJu.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-greek-400-normal._efipK4i.woff2)format("woff2"),url(/_astro/ibm-plex-sans-greek-400-normal.D9ESIMu3.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-vietnamese-400-normal.DG4YqDda.woff2)format("woff2"),url(/_astro/ibm-plex-sans-vietnamese-400-normal.fK1oJ5dG.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-latin-ext-400-normal.C5H60-Va.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-ext-400-normal.RBey6euL.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-latin-400-normal.CDDApCn2.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-400-normal.CYLoc0-x.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-cyrillic-ext-600-normal.DUMzJB7m.woff2)format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-ext-600-normal.Bz0x94Yp.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-cyrillic-600-normal.71GNu3SW.woff2)format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-600-normal.BGq0mW3O.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-greek-600-normal.DzTrcv_p.woff2)format("woff2"),url(/_astro/ibm-plex-sans-greek-600-normal.D-CqTdkO.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-vietnamese-600-normal.DpPYBSTl.woff2)format("woff2"),url(/_astro/ibm-plex-sans-vietnamese-600-normal.DgdngZtN.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-latin-ext-600-normal.DOrvGEcy.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-ext-600-normal.DIrixKbi.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-latin-600-normal.CuJfVYMP.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-600-normal.Cu4Hd6ag.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.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{color-scheme:dark;--background:#151917;--surface:#1d241f;--text:#f3f1e9;--muted:#b2bab2;--subtle:#939f94;--accent:#c5df9e;--line:#354038;--sans:"IBM Plex Sans", sans-serif;--mono:"IBM Plex Mono", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{background:var(--background);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.65}::selection{background:var(--accent);color:var(--background)}a{color:inherit;text-underline-offset:5px;text-decoration-thickness:1px}a:hover{color:var(--accent)}a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:6px;border-radius:2px}p,h1,h2,h3,h4,figure{margin:0}h1,h2,h3,h4{font-weight:600;line-height:1.15}p{text-wrap:pretty}img{max-width:100%;display:block}.page-width{width:min(1120px,100% - 96px);margin-inline:auto}.skip-link{z-index:10;background:var(--accent);color:var(--background);padding:12px 18px;position:fixed;top:20px;left:20px;transform:translateY(-200%)}.skip-link:focus{color:var(--background);transform:translateY(0)}.site-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:108px;display:flex}.wordmark{letter-spacing:-2px;align-items:center;min-height:44px;font-size:28px;font-weight:600;text-decoration:none;display:inline-flex}.wordmark span{color:var(--accent)}.site-header nav{align-items:center;gap:32px;display:flex}.site-header nav a{min-height:44px;font-family:var(--mono);align-items:center;font-size:12px;text-decoration:none;display:inline-flex}.hero{grid-template-columns:minmax(0,1fr) 300px;align-items:center;gap:78px;padding-block:86px 70px;display:grid}.eyebrow{color:var(--accent);font-family:var(--mono);letter-spacing:.05em;font-size:11px;line-height:1.6}h1{letter-spacing:-.055em;margin-top:20px;font-size:clamp(48px,5.4vw,74px)}.hero-subtitle{letter-spacing:-.025em;color:var(--muted);margin-top:18px;font-size:clamp(25px,2.7vw,35px);line-height:1.27}.hero-description{max-width:620px;color:var(--muted);margin-top:28px;font-size:16px;line-height:1.75}.hero-links{flex-wrap:wrap;align-items:center;gap:25px;margin-top:32px;display:flex}.button{border-radius:3px;justify-content:space-between;align-items:center;gap:24px;min-height:46px;padding:10px 19px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.primary{background:var(--accent);color:var(--background)}.primary:hover{color:var(--background);background:#d6ecb6}.text-link{align-items:center;gap:10px;min-height:44px;font-size:13px;text-decoration:none;display:inline-flex}.text-link span{color:var(--accent)}.portrait img{object-fit:cover;border-radius:12px;width:300px;height:300px}.portrait figcaption{color:var(--subtle);font-family:var(--mono);margin-top:15px;font-size:10px;line-height:1.7}.specialization{border-block:1px solid var(--line);color:var(--subtle);font-family:var(--mono);flex-wrap:wrap;justify-content:space-between;gap:8px 24px;padding-block:22px;font-size:11px;line-height:1.9;display:flex}.specialization span{color:var(--line);padding-inline:9px}.section-grid{border-bottom:1px solid var(--line);grid-template-columns:245px minmax(0,1fr);gap:52px;padding-block:74px;display:grid}.section-heading h2{letter-spacing:-.04em;margin-top:12px;font-size:35px}.section-heading .eyebrow{color:var(--subtle);font-size:10px}.section-note{max-width:210px;color:var(--subtle);margin-top:21px;font-size:13px;line-height:1.7}.company-heading{justify-content:space-between;align-items:baseline;gap:20px;display:flex}.company-heading h3{letter-spacing:-.025em;font-size:27px}.company-heading p,.dates{color:var(--subtle);font-family:var(--mono);font-size:11px;line-height:1.6}.company-intro{color:var(--muted);margin-top:19px;font-size:15px}.role{border-bottom:1px solid var(--line);padding-block:28px}.role:last-child{border-bottom:0;padding-bottom:0}.role-heading{justify-content:space-between;align-items:baseline;gap:14px;display:flex}.role-heading h4{letter-spacing:-.02em;font-size:18px}.role.current h4{color:var(--accent)}.role .dates{text-align:right;flex-shrink:0}.role ul{color:var(--muted);margin:16px 0 0;padding-left:18px;font-size:14px;line-height:1.8}.role li{margin-block:5px;padding-left:3px}.role li::marker{color:var(--subtle)}.earlier-experience{margin-top:45px}.earlier-role+.earlier-role{margin-top:30px}.earlier-role h3{font-size:19px}.earlier-role .job-title{color:var(--text);margin-top:6px;font-size:13px}.earlier-role>p:last-child{color:var(--muted);margin-top:10px;font-size:14px}.project+.project{border-top:1px solid var(--line);margin-top:27px;padding-top:27px}.project .eyebrow{color:var(--subtle);font-size:10px}.project h3{letter-spacing:-.02em;margin-top:9px;font-size:24px}.project>p:not(.eyebrow){color:var(--muted);margin-top:12px;font-size:14px;line-height:1.8}.project-footer{justify-content:space-between;align-items:center;gap:15px;margin-top:13px;display:flex}.technologies{color:var(--subtle);font-family:var(--mono);font-size:10px}.education-list>h3{letter-spacing:-.02em;margin-bottom:25px;font-size:24px}.degree+.degree{margin-top:25px}.degree h4{font-size:16px;line-height:1.5}.degree .dates{margin-top:5px}.degree>p:not(.dates){color:var(--muted);margin-top:9px;font-size:14px}.contact-section{justify-content:space-between;align-items:center;gap:48px;padding-block:67px;display:flex}.contact-section h2{letter-spacing:-.045em;margin-top:12px;font-size:43px}.contact-links{min-width:0}.email-link{letter-spacing:-.02em;align-items:center;gap:24px;min-height:44px;font-size:20px;text-decoration:none;display:inline-flex}.email-link span{color:var(--accent)}.social-links{gap:25px;margin-top:8px;display:flex}.social-links a{min-height:44px;color:var(--muted);font-family:var(--mono);align-items:center;font-size:11px;text-decoration:none;display:inline-flex}.social-links a:hover{color:var(--accent)}.site-footer{border-top:1px solid var(--line);min-height:92px;color:var(--subtle);justify-content:space-between;align-items:center;gap:20px;font-size:11px;display:flex}.site-footer a{align-items:center;min-height:44px;text-decoration:none;display:inline-flex}.not-found{max-width:800px;padding-block:100px}.not-found>p:not(.eyebrow){color:var(--muted);margin-block:25px}.wordmark,.site-header nav a,.social-links a{min-width:44px}@media (width<=1050px){.page-width{width:calc(100% - 64px)}.hero{grid-template-columns:minmax(0,1fr) 240px;gap:38px;padding-block:65px}.portrait img{width:240px;height:240px}.section-grid{grid-template-columns:190px minmax(0,1fr);gap:32px}.role-heading{display:block}.role-heading .dates{text-align:left;margin-top:7px}}@media (width<=720px){.page-width{width:calc(100% - 40px)}.site-header{min-height:84px}.site-header nav{gap:18px}.site-header nav a{font-size:10px}.hero{grid-template-columns:minmax(0,1fr);gap:32px;padding-block:46px 36px}h1{font-size:clamp(42px,10vw,64px)}.hero-subtitle{font-size:28px}.hero-description{font-size:15px}.hero-links{gap:19px;margin-top:25px}.portrait{align-items:center;gap:20px;display:flex}.portrait img{border-radius:8px;width:108px;height:108px}.portrait figcaption{max-width:150px;margin:0;font-size:10px}.specialization{padding-block:17px;font-size:10px}.specialization span{padding-inline:5px}.section-grid{grid-template-columns:minmax(0,1fr);gap:31px;padding-block:46px}.section-heading h2{font-size:32px}.section-note{max-width:380px;margin-top:14px}.desktop-break{display:none}.company-heading{display:block}.company-heading p{margin-top:9px}.company-intro{margin-top:14px}.role{padding-block:25px}.role-heading{display:block}.earlier-role .dates{margin-top:6px}.project-footer{flex-wrap:wrap;gap:4px 15px}.contact-section{padding-block:46px;display:block}.contact-section h2{font-size:36px}.contact-links{margin-top:21px}.email-link{overflow-wrap:anywhere;gap:15px;font-size:clamp(16px,4.3vw,20px)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media print{:root{color-scheme:light;--background:#fff;--text:#111;--muted:#333;--subtle:#444;--accent:#1d4b26;--line:#ccc}body{font-size:12pt}.page-width{width:100%}.site-header nav,.skip-link,.hero-links,.site-footer{display:none}.hero{grid-template-columns:1fr 130px;gap:30px;padding-block:24px}.portrait img{width:130px;height:130px}.portrait figcaption{display:none}h1{font-size:32pt}.hero-subtitle{font-size:18pt}.section-grid{grid-template-columns:150px 1fr;gap:20px;padding-block:24px}.section-heading h2{font-size:18pt}.eyebrow,.dates,.role ul,.company-intro,.project>p:not(.eyebrow),.earlier-role>p:last-child,.degree>p:not(.dates){font-size:12pt}.role,.project,.degree{break-inside:avoid}.contact-section{padding-block:24px}}
