@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+0460-052F,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+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,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+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@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+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: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+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: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+0000-00FF,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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-cyrillic-ext-500-normal.Cs5J6C77.woff2) format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-ext-500-normal.DB5PtV2g.woff) format("woff");unicode-range:U+0460-052F,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:500;src:url(/_astro/ibm-plex-sans-cyrillic-500-normal.CocWQlwt.woff2) format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-500-normal.ByOcLdNv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-greek-500-normal.JMMifIXV.woff2) format("woff2"),url(/_astro/ibm-plex-sans-greek-500-normal.CuWXN6rf.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-vietnamese-500-normal.e4dixQRQ.woff2) format("woff2"),url(/_astro/ibm-plex-sans-vietnamese-500-normal.BEb3_waV.woff) format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-latin-ext-500-normal.DakdToA3.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-ext-500-normal.D0aIdm-b.woff) format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-latin-500-normal.6ng42L7E.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-500-normal.BgVn5rGT.woff) format("woff");unicode-range:U+0000-00FF,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: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+0460-052F,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+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,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+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@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+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: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+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: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+0000-00FF,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:IBM Plex Sans Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-condensed-cyrillic-ext-600-normal.DegcPR6g.woff2) format("woff2"),url(/_astro/ibm-plex-sans-condensed-cyrillic-ext-600-normal.DBydRLII.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-condensed-vietnamese-600-normal.CdKbmnAp.woff2) format("woff2"),url(/_astro/ibm-plex-sans-condensed-vietnamese-600-normal.-5ui7us-.woff) format("woff");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:IBM Plex Sans Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-condensed-latin-ext-600-normal.CBdNZ9Ci.woff2) format("woff2"),url(/_astro/ibm-plex-sans-condensed-latin-ext-600-normal.DvCwRnqE.woff) format("woff");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:IBM Plex Sans Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-condensed-latin-600-normal.CRd5VyFf.woff2) format("woff2"),url(/_astro/ibm-plex-sans-condensed-latin-600-normal.6XnkKYvF.woff) format("woff");unicode-range:U+0000-00FF,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{--paper: #ffffff;--ink: #1b1d20;--graphite: #5c6168;--line: #1b1d20;--line-light: #c9ccd1;--flash: #e4e7ea;--font-body: "IBM Plex Sans", sans-serif;--font-display: "IBM Plex Sans Condensed", sans-serif;color-scheme:light}@media (prefers-color-scheme: dark){:root{--paper: #141518;--ink: #e6e7e9;--graphite: #9aa0a8;--line: #e6e7e9;--line-light: #383c42;--flash: #2c3036;color-scheme:dark}}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:17px;line-height:1.6}a{color:var(--ink);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{color:var(--graphite)}a:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.wrap{max-width:1200px;margin:0 auto;padding:0 24px;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:64px}.strip{position:sticky;top:0;height:100vh;overflow-y:auto;padding:40px 40px 28px 0;border-right:1px solid var(--line);display:flex;flex-direction:column}.name{margin:0;font-family:var(--font-display);font-weight:600;font-size:46px;line-height:1.05;letter-spacing:-.01em}.role{margin:10px 0 0;font-size:20px;font-weight:500}.summary{margin:16px 0 0;color:var(--graphite);max-width:22em}.index{margin:20px 0 0;padding:0;list-style:none}.index a{display:flex;align-items:center;gap:14px;padding:5px 0;text-decoration:none;color:var(--graphite);font-size:15px}.index a:before{content:"";width:28px;height:1px;background:currentColor;transition:width .15s ease}.index a:hover,.index a[aria-current]{color:var(--ink)}.index a:hover:before,.index a[aria-current]:before{width:56px}.contact{margin-top:14px;display:flex;flex-direction:column;gap:14px}.contact-links{display:flex;flex-wrap:wrap;gap:4px 20px;font-size:15px}.contact-links a{padding:6px 0}.status{position:relative;margin-top:20px;border:1px solid var(--line);font-size:13px;flex-shrink:0}.status-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 14px;border-bottom:1px solid var(--line)}.status-head .live{display:inline-flex;align-items:center;gap:8px;font-weight:500}.dot{width:7px;height:7px;border-radius:50%;background:var(--ink)}.clock{color:var(--graphite);font-variant-numeric:tabular-nums}.cube{width:18px;height:18px;margin-left:2px;overflow:hidden}.cube *{fill:none;stroke:var(--ink);stroke-width:1;vector-effect:non-scaling-stroke}.status dl{margin:0}.status-row{display:grid;grid-template-columns:92px minmax(0,1fr);gap:12px;padding:5px 14px;border-bottom:1px solid var(--line-light)}.status-row:last-child{border-bottom:none}.status dt{color:var(--graphite)}.status dd{margin:0;font-variant-numeric:tabular-nums;transition:background-color .6s ease}.status dd span.changed,.status dd.changed{background-color:var(--flash)}.facts{border-top:1px solid var(--line)}.status.offline .dot{background:transparent;border:1px solid var(--ink)}.status.offline .clock{color:var(--ink);font-weight:500}.facts .status-row{padding-top:3px;padding-bottom:3px}.activity{display:flex;align-items:flex-end;justify-content:flex-end;gap:2px;height:16px;margin-top:6px;overflow:hidden}.activity span{flex:0 0 4px;background:var(--graphite);transition:height .4s ease}.trace{display:block;width:100%;height:20px;margin-top:4px;overflow:visible}.trace polyline{fill:none;stroke:var(--ink);stroke-width:1;vector-effect:non-scaling-stroke}.trace line{stroke:var(--line-light);stroke-width:1;vector-effect:non-scaling-stroke}.players{display:inline-flex;gap:3px;margin-left:8px;vertical-align:middle}.players span{width:8px;height:8px;border:1px solid var(--ink);background:var(--ink)}.players span.empty{background:transparent;border-color:var(--line-light)}main{padding:72px 0 64px}section{margin-bottom:88px;scroll-margin-top:32px}h2{display:flex;align-items:center;gap:16px;margin:0 0 28px;font-family:var(--font-display);font-weight:600;font-size:22px}h2:after{content:"";flex:1;height:1px;background:var(--line)}main p{margin:0 0 16px;max-width:36em}.job{display:grid;grid-template-columns:150px minmax(0,1fr);gap:8px 28px;margin-bottom:40px}.dim{font-size:13px;color:var(--graphite);padding-top:4px}.dim-line{display:block;height:9px;margin:6px 0 4px;border-left:1px solid var(--line);border-right:1px solid var(--line);background:linear-gradient(var(--line),var(--line)) center / 100% 1px no-repeat}.job h3,.project h3,.edu h3{margin:0;font-size:18px;font-weight:600;line-height:1.35}.org{margin:2px 0 10px!important;color:var(--graphite);font-size:15px}.tech{margin:10px 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:4px 16px;font-size:14px;color:var(--graphite)}.project{margin-bottom:44px;padding-left:18px;border-left:1px solid var(--line)}.project h3{margin-bottom:8px}.result{font-size:15px}.result strong{font-weight:600}.edu{display:grid;grid-template-columns:150px minmax(0,1fr);gap:4px 28px;margin-bottom:24px}.edu p{margin:0}footer{padding-top:24px;border-top:1px solid var(--line-light);font-size:14px;color:var(--graphite)}footer p{margin:0 0 6px;max-width:none}@media (min-width: 901px) and (max-height: 1080px){.strip{position:static;height:auto;overflow:visible}}@media (max-width: 900px){.wrap{display:flex;flex-direction:column;gap:0}.strip,main{display:contents}#about{order:1}.status{order:2;margin:0 0 72px}#experience{order:3}#projects{order:4}#skills{order:5}#education{order:6}footer{order:7;margin-bottom:48px}.name{margin-top:48px}.contact{margin:24px 0 40px;padding-bottom:32px;border-bottom:1px solid var(--line)}.index{display:none}.job,.edu{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){.index a:before,.status dd,.activity span{transition:none}}
