@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-vietnamese-opsz-normal.BjhtXyW2.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:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-latin-ext-opsz-normal.BQn1nviT.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:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-latin-opsz-normal.s-izfB6B.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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-ext-400-normal.g30qAdWV.woff2)format("woff2"),url(/assets/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(/assets/ibm-plex-sans-cyrillic-400-normal.DZqxrq2p.woff2)format("woff2"),url(/assets/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(/assets/ibm-plex-sans-greek-400-normal._efipK4i.woff2)format("woff2"),url(/assets/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(/assets/ibm-plex-sans-vietnamese-400-normal.DG4YqDda.woff2)format("woff2"),url(/assets/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(/assets/ibm-plex-sans-latin-ext-400-normal.C5H60-Va.woff2)format("woff2"),url(/assets/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(/assets/ibm-plex-sans-latin-400-normal.CDDApCn2.woff2)format("woff2"),url(/assets/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:500;src:url(/assets/ibm-plex-sans-cyrillic-ext-500-normal.Cs5J6C77.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-500-normal.DB5PtV2g.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:500;src:url(/assets/ibm-plex-sans-cyrillic-500-normal.CocWQlwt.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-500-normal.ByOcLdNv.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:500;src:url(/assets/ibm-plex-sans-greek-500-normal.JMMifIXV.woff2)format("woff2"),url(/assets/ibm-plex-sans-greek-500-normal.CuWXN6rf.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:500;src:url(/assets/ibm-plex-sans-vietnamese-500-normal.e4dixQRQ.woff2)format("woff2"),url(/assets/ibm-plex-sans-vietnamese-500-normal.BEb3_waV.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:500;src:url(/assets/ibm-plex-sans-latin-ext-500-normal.DakdToA3.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-ext-500-normal.D0aIdm-b.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:500;src:url(/assets/ibm-plex-sans-latin-500-normal.6ng42L7E.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal.BgVn5rGT.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(/assets/ibm-plex-sans-cyrillic-ext-600-normal.DUMzJB7m.woff2)format("woff2"),url(/assets/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(/assets/ibm-plex-sans-cyrillic-600-normal.71GNu3SW.woff2)format("woff2"),url(/assets/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(/assets/ibm-plex-sans-greek-600-normal.DzTrcv_p.woff2)format("woff2"),url(/assets/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(/assets/ibm-plex-sans-vietnamese-600-normal.DpPYBSTl.woff2)format("woff2"),url(/assets/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(/assets/ibm-plex-sans-latin-ext-600-normal.DOrvGEcy.woff2)format("woff2"),url(/assets/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(/assets/ibm-plex-sans-latin-600-normal.CuJfVYMP.woff2)format("woff2"),url(/assets/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(/assets/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2)format("woff2"),url(/assets/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(/assets/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2)format("woff2"),url(/assets/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(/assets/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2)format("woff2"),url(/assets/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(/assets/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2)format("woff2"),url(/assets/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(/assets/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/assets/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}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.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:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.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:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.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:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.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:500;src:url(/assets/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal.CB9ihrfo.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}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}h1,h2,h3,p,ul,ol,dl,dd{margin:0}a{color:var(--text)}a:hover{color:var(--link-hover)}:focus-visible{outline:2px solid var(--focus);outline-offset:3px}.page{width:min(100% - 2 * var(--gutter), var(--max-width));flex-direction:column;min-height:100dvh;margin-inline:auto;padding-bottom:56px;display:flex}.page>main{flex:1 0 auto}.mono{font-family:var(--font-mono)}[hidden]{display:none!important}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.name-grow{transform-origin:50% 80%;transition:transform .25s cubic-bezier(.34,1.56,.64,1);display:inline-block}.name-grow:hover{transform:scale(var(--name-grow))}.pill-rows{flex-direction:column;gap:10px;display:flex}.pill-row{flex-wrap:wrap;gap:10px;padding:0;list-style:none;display:flex}.pill{border:1px solid var(--pill-border);background:var(--pill-bg);min-height:44px;font-family:var(--font-mono);border-radius:999px;align-items:center;gap:10px;padding:10px 18px 10px 14px;font-size:14px;line-height:1.2;text-decoration:none;transition:color .15s,border-color .15s;display:inline-flex}@media (hover:hover) and (pointer:fine){.pill:hover{border-color:currentColor}}@media not ((hover:hover) and (pointer:fine)){.pill:hover{color:var(--text)}}.pill .icon{flex-shrink:0}.arrow-link{align-items:center;gap:6px;min-height:44px;display:inline-flex}.arrow{flex-shrink:0}@media (prefers-reduced-motion:reduce){.name-grow,.name-grow:hover{transition:none;transform:none}*,:before,:after{transition:none!important;animation:none!important}}:root{color-scheme:light;--bg:#f5f3ee;--surface:#fffdf9;--text:#17191c;--body:#34373c;--muted:#50545b;--rule:#dcd8cf;--rule-soft:#ebe7de;--pill-border:#dcd8cf;--pill-bg:#fffdf9;--accent:#f5c04a;--amber:#8a5a00;--on-accent:#17191c;--link-hover:var(--amber);--focus:var(--amber);--font-body:"IBM Plex Sans", system-ui, sans-serif;--font-serif:"Newsreader Variable", "Newsreader", Georgia, serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--text-label:12px;--text-meta:14px;--text-small:15px;--text-body:17px;--text-lead:19px;--text-title:20px;--text-subhead:28px;--ease-out:cubic-bezier(.23, 1, .32, 1);--gutter:clamp(16px, 8.33vw, 120px);--max-width:1200px;--name-grow:1.08}a{text-decoration-color:var(--accent);text-underline-offset:4px;text-decoration-thickness:2px}::selection{background:var(--accent);color:var(--on-accent)}mark{background:linear-gradient(transparent 46%, var(--accent) 46%, var(--accent) 88%, transparent 88%);color:inherit;-webkit-box-decoration-break:clone;box-decoration-break:clone;margin:0 -.05em;padding:0 .15em}.mark-link{color:var(--text);background:linear-gradient(var(--accent), var(--accent)) no-repeat 0 100% / 100% 2px;-webkit-box-decoration-break:clone;box-decoration-break:clone;transition:background-size .2s var(--ease-out);text-decoration:none}@media (hover:hover) and (pointer:fine){.mark-link:hover{color:var(--text);background-size:100% 100%}}.pill{transition:color .15s ease, border-color .15s ease, transform .16s var(--ease-out)}.pill:active{transform:scale(.97)}@media (prefers-reduced-motion:reduce){.pill:active{transform:none}}.label{font-family:var(--font-mono);font-size:var(--text-label);letter-spacing:.06em;text-transform:uppercase;font-weight:400;line-height:1.35}.tabular{font-variant-numeric:tabular-nums}.serif{font-family:var(--font-serif)}.section{border-top:1px solid var(--rule);flex-direction:column;gap:32px;padding:72px 0;display:flex}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 24px;display:flex}.section-title{font-family:var(--font-serif);letter-spacing:-.01em;font-size:clamp(34px,1.9rem + 1.3vw,44px);font-weight:400;line-height:1.15}.section-note{color:var(--muted);font-size:16px}@media (width<=767px){:root{--text-subhead:24px}.section{gap:24px;padding:56px 0}}.studies[data-astro-cid-arcevsh7]{gap:80px}.block[data-astro-cid-arcevsh7]{flex-direction:column;gap:32px;display:flex}.schools[data-astro-cid-arcevsh7],.credentials[data-astro-cid-arcevsh7],.certs[data-astro-cid-arcevsh7]{padding:0;list-style:none}.schools[data-astro-cid-arcevsh7],.credentials[data-astro-cid-arcevsh7]{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:64px;display:grid}.school[data-astro-cid-arcevsh7]{border-top:1px solid var(--rule-soft);flex-direction:column;gap:4px;padding:22px 0 0;display:flex}.school-title[data-astro-cid-arcevsh7]{font-size:var(--text-title);text-wrap:balance;font-weight:600;line-height:1.3}.school-place[data-astro-cid-arcevsh7]{font-size:var(--text-small);color:var(--muted)}.school-detail[data-astro-cid-arcevsh7]{font-size:var(--text-meta);color:var(--muted);margin-top:4px}.award[data-astro-cid-arcevsh7]{border-block:1px solid var(--rule);grid-column:1/-1;margin-bottom:40px;padding:24px 0 28px}.label[data-astro-cid-arcevsh7]{color:var(--amber)}.award-title[data-astro-cid-arcevsh7]{font-size:var(--text-subhead);letter-spacing:-.01em;text-wrap:balance;margin-top:10px;font-weight:400;line-height:1.2}.award-result[data-astro-cid-arcevsh7]{font-size:var(--text-body);margin-top:10px;font-weight:500}.award-issuer[data-astro-cid-arcevsh7]{color:var(--muted);font-weight:400}.issuer-name[data-astro-cid-arcevsh7]{padding-bottom:10px}.cert[data-astro-cid-arcevsh7]{border-top:1px solid var(--rule-soft);align-items:baseline;gap:14px;padding:12px 0;display:flex}.cert-code[data-astro-cid-arcevsh7]{font-size:var(--text-meta);font-variant-numeric:tabular-nums;color:var(--text);flex-shrink:0}.cert-title[data-astro-cid-arcevsh7]{font-size:var(--text-body);text-wrap:pretty;font-weight:600;line-height:1.4}@media (width<=767px){.studies[data-astro-cid-arcevsh7]{gap:56px}.block[data-astro-cid-arcevsh7]{gap:24px}.schools[data-astro-cid-arcevsh7],.credentials[data-astro-cid-arcevsh7]{grid-template-columns:minmax(0,1fr)}.school[data-astro-cid-arcevsh7]+.school[data-astro-cid-arcevsh7]{margin-top:22px}.award[data-astro-cid-arcevsh7]{margin-bottom:28px}.issuer[data-astro-cid-arcevsh7]+.issuer[data-astro-cid-arcevsh7]{margin-top:28px}}.employer-head[data-astro-cid-unrjim67]{flex-wrap:wrap;align-items:baseline;gap:4px 16px;display:flex}.employer-name[data-astro-cid-unrjim67]{font-size:var(--text-subhead);letter-spacing:-.01em;font-weight:400;line-height:1.2}.employer-place[data-astro-cid-unrjim67]{color:var(--amber)}.jobs[data-astro-cid-unrjim67]{--pad:32px;--dates-line:23px;--dot:9px;--dot-top:calc(var(--pad) + var(--offset) + (var(--dates-line) - var(--dot)) / 2);--offset:3px;margin-top:8px;padding:0;list-style:none}.job[data-astro-cid-unrjim67]{padding:var(--pad) 0 var(--pad) 32px;grid-template-columns:184px minmax(0,1fr);column-gap:48px;display:grid;position:relative}.job[data-astro-cid-unrjim67]:last-child{padding-bottom:0}.job[data-astro-cid-unrjim67]:before{content:"";background:var(--rule);width:1px;position:absolute;top:0;bottom:0;left:4px}.job[data-astro-cid-unrjim67]:first-child:before{top:calc(var(--dot-top) + var(--dot) / 2)}.job[data-astro-cid-unrjim67]:last-child:before{height:calc(var(--dot-top) + var(--dot) / 2);bottom:auto}.job[data-astro-cid-unrjim67]:only-child:before{display:none}.job[data-astro-cid-unrjim67]:after{content:"";left:0;top:var(--dot-top);width:var(--dot);height:var(--dot);box-sizing:border-box;border:1.5px solid var(--muted);background:var(--bg);border-radius:50%;position:absolute}.job[data-astro-cid-unrjim67].current:after{border-color:var(--text);background:var(--text)}.dates[data-astro-cid-unrjim67]{padding-top:var(--offset);font-size:var(--text-small);line-height:var(--dates-line);color:var(--text)}.what[data-astro-cid-unrjim67]{flex-direction:column;gap:10px;display:flex}.role[data-astro-cid-unrjim67]{font-size:var(--text-title);text-wrap:balance;margin:0;font-weight:600;line-height:1.45}.summary[data-astro-cid-unrjim67],.highlights[data-astro-cid-unrjim67]{max-width:68ch;color:var(--body);text-wrap:pretty}.summary[data-astro-cid-unrjim67]{font-size:var(--text-body);line-height:1.6}.highlights[data-astro-cid-unrjim67]{font-size:var(--text-body);flex-direction:column;gap:6px;margin-top:4px;padding-left:20px;line-height:1.55;list-style:outside;display:flex}.highlights[data-astro-cid-unrjim67] [data-astro-cid-unrjim67]::marker{color:var(--muted)}@media (width<=767px){.jobs[data-astro-cid-unrjim67]{--pad:28px;--offset:0px}.job[data-astro-cid-unrjim67]{grid-template-columns:minmax(0,1fr);row-gap:6px;padding-left:28px}}.footer[data-astro-cid-dszlijyo]{border-top:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;padding-top:64px;display:flex}.contact[data-astro-cid-dszlijyo]{flex-direction:column;gap:14px;display:flex}.contact-label[data-astro-cid-dszlijyo]{color:var(--amber)}.email-line[data-astro-cid-dszlijyo]{overflow-wrap:anywhere;font-size:clamp(32px,1rem + 5vw,60px);line-height:1.1}.email[data-astro-cid-dszlijyo]{background-position:0 calc(100% - 6px);background-size:100% 3px;padding-block:6px}@media (hover:hover) and (pointer:fine){.email[data-astro-cid-dszlijyo]:hover{background-size:100% calc(100% - 12px)}}.copyright[data-astro-cid-dszlijyo]{font-size:var(--text-small);color:var(--muted)}@media (width<=767px){.footer[data-astro-cid-dszlijyo]{padding-top:48px}}.fun[data-astro-cid-umsm7u6q]{gap:28px}.more[data-astro-cid-umsm7u6q]{font-size:var(--text-small);font-weight:500;text-decoration:none}.more[data-astro-cid-umsm7u6q] .more-arrow{color:var(--amber);transition:transform .15s var(--ease-out)}.projects[data-astro-cid-umsm7u6q]{padding:0;list-style:none}.project[data-astro-cid-umsm7u6q]{border-top:1px solid var(--rule);align-items:center;gap:32px;min-height:84px;padding:12px 0;text-decoration:none;display:flex}.name[data-astro-cid-umsm7u6q]{width:320px;font-size:var(--text-subhead);text-underline-offset:5px;flex-shrink:0;text-decoration:underline 2px #0000;transition:color .15s,text-decoration-color .15s}.tagline[data-astro-cid-umsm7u6q]{color:var(--muted);flex-grow:1;font-size:17px}.stack[data-astro-cid-umsm7u6q]{font-size:var(--text-meta);color:var(--muted)}.project[data-astro-cid-umsm7u6q] .project-arrow{color:var(--amber);transition:transform .15s var(--ease-out)}@media (hover:hover) and (pointer:fine){.project[data-astro-cid-umsm7u6q]:hover .name[data-astro-cid-umsm7u6q]{text-decoration-color:var(--accent)}.project[data-astro-cid-umsm7u6q]:hover .project-arrow,.more[data-astro-cid-umsm7u6q]:hover .more-arrow{transform:translate(2px,-2px)}.more[data-astro-cid-umsm7u6q]:hover .more-text[data-astro-cid-umsm7u6q]{background-size:100% 100%}}@media (prefers-reduced-motion:reduce){.project[data-astro-cid-umsm7u6q]:hover .project-arrow,.more[data-astro-cid-umsm7u6q]:hover .more-arrow{transform:none}}@media (width<=1023px){.name[data-astro-cid-umsm7u6q]{width:220px}}@media (width<=767px){.project[data-astro-cid-umsm7u6q]{grid-template-columns:minmax(0,1fr) auto;gap:6px 16px;padding:18px 0;display:grid}.name[data-astro-cid-umsm7u6q]{width:auto}.project[data-astro-cid-umsm7u6q] .project-arrow{grid-area:1/2;align-self:center}.tagline[data-astro-cid-umsm7u6q],.stack[data-astro-cid-umsm7u6q]{grid-column:1/-1}}.hero[data-astro-cid-mbx22yj2]{grid-template:"head ledger""bio ledger""links ledger"1fr/minmax(0,1fr) 300px;column-gap:96px;padding:112px 0 88px;display:grid}.head[data-astro-cid-mbx22yj2]{grid-area:head;container-type:inline-size}.headline[data-astro-cid-mbx22yj2]{letter-spacing:-.028em;font-size:clamp(48px,14cqi,104px);font-weight:400;line-height:1}.name[data-astro-cid-mbx22yj2]{isolation:isolate;white-space:nowrap;position:relative}.marker[data-astro-cid-mbx22yj2]{z-index:-1;width:calc(100% + .13em);height:.34em;fill:var(--accent);position:absolute;bottom:.02em;left:-.05em;transform:rotate(-1.2deg)}.role[data-astro-cid-mbx22yj2]{font-size:var(--text-small);color:var(--muted);margin-top:24px;line-height:1.5}.employer[data-astro-cid-mbx22yj2]{white-space:nowrap;background-position:0 calc(100% - 9px);margin-block:-12px;padding-block:12px;display:inline-block}@media (hover:hover) and (pointer:fine){.employer[data-astro-cid-mbx22yj2]:hover{background-size:100% calc(100% - 22px)}}.bio[data-astro-cid-mbx22yj2]{max-width:34em;font-size:var(--text-lead);color:var(--body);text-wrap:pretty;grid-area:bio;margin-top:20px;line-height:1.6}.links[data-astro-cid-mbx22yj2]{grid-area:links;align-self:end;margin-top:32px}.ledger[data-astro-cid-mbx22yj2]{border-left:1px solid var(--rule);grid-area:ledger;align-self:start;padding-left:28px}.fact[data-astro-cid-mbx22yj2]{flex-direction:column;gap:3px;padding-bottom:18px;display:flex}.fact[data-astro-cid-mbx22yj2]+.fact[data-astro-cid-mbx22yj2]{border-top:1px solid var(--rule-soft);padding-top:18px}.fact[data-astro-cid-mbx22yj2]:last-child{padding-bottom:0}dt[data-astro-cid-mbx22yj2]{color:var(--amber);margin-bottom:2px}dd[data-astro-cid-mbx22yj2]{font-size:var(--text-small);color:var(--muted);text-wrap:pretty;line-height:1.45}dd[data-astro-cid-mbx22yj2].strong{color:var(--text);font-weight:500}@media (width<=1023px){.hero[data-astro-cid-mbx22yj2]{grid-template-rows:none;grid-template-columns:minmax(0,1fr);grid-template-areas:"head""ledger""bio""links";padding:64px 0}.ledger[data-astro-cid-mbx22yj2]{border-left:0;border-top:1px solid var(--rule);margin-top:28px;padding:20px 0 0}dl[data-astro-cid-mbx22yj2]{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 20px;display:grid}.fact[data-astro-cid-mbx22yj2],.fact[data-astro-cid-mbx22yj2]+.fact[data-astro-cid-mbx22yj2]{border-top:0;padding:0}.fact[data-astro-cid-mbx22yj2].wide{grid-column:1/-1}.bio[data-astro-cid-mbx22yj2]{border-top:1px solid var(--rule);margin-top:24px;padding-top:24px}}@media (width<=519px){.sep[data-astro-cid-mbx22yj2]{display:none}.employer[data-astro-cid-mbx22yj2]{width:fit-content;display:block}}@media (width<=479px){.hero[data-astro-cid-mbx22yj2]{padding:48px 0 56px}.bio[data-astro-cid-mbx22yj2]{font-size:var(--text-body)}.links[data-astro-cid-mbx22yj2] .pill{gap:8px;padding:10px 14px 10px 12px;font-size:13px}.links[data-astro-cid-mbx22yj2] .pill-rows,.links[data-astro-cid-mbx22yj2] .pill-row{gap:8px}}.areas[data-astro-cid-eij4rp2n]{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:64px;padding:0;list-style:none;display:grid}.area[data-astro-cid-eij4rp2n]{border-top:1px solid var(--rule-soft);flex-direction:column;gap:6px;padding:22px 0 24px;display:flex}.area-title[data-astro-cid-eij4rp2n]{font-size:var(--text-body);text-wrap:balance;font-weight:600;line-height:1.35}.area-description[data-astro-cid-eij4rp2n]{max-width:34em;font-size:var(--text-small);color:var(--muted);text-wrap:pretty;line-height:1.55}@media (width<=767px){.areas[data-astro-cid-eij4rp2n]{grid-template-columns:minmax(0,1fr)}.area[data-astro-cid-eij4rp2n]{padding:18px 0 20px}}
