@font-face{font-family:Barlow;font-style:normal;font-weight:400;font-display:swap;src:url(../media/31e5e20239562b7a-s.3_otmf38u2y4x.woff2)format("woff2");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:Barlow;font-style:normal;font-weight:400;font-display:swap;src:url(../media/9a8b04342f903b9d-s.00hyb-x0mjr9g.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-weight:400;font-display:swap;src:url(../media/c6e2684784a55443-s.p.2p4adm_386h58.woff2)format("woff2");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:Barlow Fallback;src:local(Arial);ascent-override:103.43%;descent-override:20.69%;line-gap-override:0.0%;size-adjust:96.68%}.uLQO_G_className{font-family:Barlow,Barlow Fallback;font-style:normal;font-weight:400}.uLQO_G_variable{--font-barlow:"Barlow", "Barlow Fallback"}
@font-face{font-family:Barlow Condensed;font-style:normal;font-weight:400;font-display:swap;src:url(../media/a1e1e2ab4a689572-s.3k9l69oe21zw_.woff2)format("woff2");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:Barlow Condensed;font-style:normal;font-weight:400;font-display:swap;src:url(../media/b84cc1c14eba5dc9-s.3ceub4vhf9cuh.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-weight:400;font-display:swap;src:url(../media/4f530f52d514af96-s.p.0xf8lnqelv8sb.woff2)format("woff2");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:Barlow Condensed;font-style:normal;font-weight:600;font-display:swap;src:url(../media/9710cef2a2a6ac70-s.38t85nkp60tez.woff2)format("woff2");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:Barlow Condensed;font-style:normal;font-weight:600;font-display:swap;src:url(../media/a978fc28c69736ab-s.2omtmoo94goav.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-weight:600;font-display:swap;src:url(../media/303804218d80822e-s.p.3lj349bs9hfu1.woff2)format("woff2");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:Barlow Condensed Fallback;src:local(Arial);ascent-override:130.73%;descent-override:26.15%;line-gap-override:0.0%;size-adjust:76.49%}.eLb3DW_className{font-family:Barlow Condensed,Barlow Condensed Fallback;font-style:normal}.eLb3DW_variable{--font-barlow-condensed:"Barlow Condensed", "Barlow Condensed Fallback"}
:root{--color-bg:#f2f2f3;--color-surface:#e9e9ea;--color-text:#1d1f20;--color-accent:#5980a6;--color-accent-2:#728fab;--color-divider:#1d1f2029;--color-neutral-100:#f5f5f8;--color-neutral-200:#e7e7ea;--color-neutral-300:#d4d4d7;--color-neutral-400:#b7b7ba;--color-neutral-500:#98989b;--color-neutral-600:#7a7a7d;--color-neutral-700:#5d5d60;--color-neutral-800:#424244;--color-neutral-900:#2b2b2d;--color-accent-100:#eef6ff;--color-accent-200:#d6ebff;--color-accent-300:#b5d9fd;--color-accent-400:#94bce3;--color-accent-500:#749dc4;--color-accent-600:#597ea3;--color-accent-700:#416180;--color-accent-800:#2c455d;--color-accent-900:#1d2d3d;--color-accent-2-100:#eef6ff;--color-accent-2-200:#d6ebff;--color-accent-2-300:#bdd8f2;--color-accent-2-400:#9ebbd8;--color-accent-2-500:#7e9cb8;--color-accent-2-600:#627d98;--color-accent-2-700:#486077;--color-accent-2-800:#314457;--color-accent-2-900:#1f2d3a;--font-heading:var(--font-barlow-condensed), system-ui, sans-serif;--font-heading-weight:600;--font-body:var(--font-barlow), system-ui, sans-serif;--space-1:3.4px;--space-2:6.8px;--space-3:10.2px;--space-4:13.6px;--space-6:20.4px;--space-8:27.2px;--radius-sm:2px;--radius-md:4px;--radius-lg:7px;--shadow-sm:0 1px 2px #2b2b2d24;--shadow-md:0 3px 10px #2b2b2d29;--shadow-lg:0 12px 32px #2b2b2d38}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body)}h1,h2,h3,h4{font-family:var(--font-heading);font-weight:var(--font-heading-weight)}.blueprint{border:1px solid var(--color-divider);border-radius:0;position:relative}.blueprint.halftone,.blueprint.plate,.blueprint.duotone{overflow:visible}.blueprint>.corner{width:11px;height:11px;color:color-mix(in srgb, var(--color-text) 55%, transparent);position:absolute}.blueprint>.corner:before,.blueprint>.corner:after{content:"";background:currentColor;position:absolute}.blueprint>.corner:before{width:1px;height:100%;top:0;left:5px}.blueprint>.corner:after{width:100%;height:1px;top:5px;left:0}.blueprint>.corner.tl{top:-6px;left:-6px}.blueprint>.corner.tr{top:-6px;right:-6px}.blueprint>.corner.bl{bottom:-6px;left:-6px}.blueprint>.corner.br{bottom:-6px;right:-6px}.duotone{position:relative;overflow:hidden}.duotone:after{content:"";pointer-events:none;background:var(--color-accent);mix-blend-mode:color;position:absolute;inset:0}*,:before,:after{box-sizing:border-box}body{margin:0;font-size:15px;font-weight:400;line-height:1.55}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:var(--font-heading-weight);letter-spacing:-.015em;margin:0 0 var(--space-2);line-height:1.12}h1{font-size:42px}h2{font-size:32px}h3{font-size:25px}h4{font-size:20px}h5{font-size:16px}h6{letter-spacing:.08em;text-transform:uppercase;font-size:13px}p{margin:0 0 var(--space-3)}a{color:var(--color-accent);text-underline-offset:3px}img{max-width:100%;display:block}figure{margin:0}figcaption{margin-top:var(--space-1);color:color-mix(in srgb, var(--color-text) 55%, transparent);font-size:11px}.text-muted{color:color-mix(in srgb, var(--color-text) 55%, transparent)}:focus{outline:none}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}::selection{background:color-mix(in srgb, var(--color-accent) 30%, transparent)}.hr{height:1px;margin:var(--space-4) 0;background:var(--color-divider);border:0}.btn{cursor:pointer;font-family:var(--font-heading);font-weight:var(--font-heading-weight);color:var(--color-text);padding:var(--space-2) calc(var(--space-3) * 1.2);border-radius:var(--radius-md);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;font-size:14px;line-height:1.2;text-decoration:none;display:inline-flex}.btn svg{display:block}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--color-accent);color:var(--color-bg)}.btn-primary:hover{background:var(--color-accent-600)}.btn-primary:active{background:var(--color-accent-700)}.btn-secondary{border-color:var(--color-divider)}.btn-secondary:hover{background:color-mix(in srgb, var(--color-text) 7%, transparent)}.btn-secondary:active{background:color-mix(in srgb, var(--color-text) 14%, transparent)}.btn-ghost{color:var(--color-accent);padding-inline:var(--space-1)}.btn-ghost:hover{background:color-mix(in srgb, var(--color-accent) 10%, transparent)}.btn-ghost:active{background:color-mix(in srgb, var(--color-accent) 18%, transparent)}.btn-icon{width:36px;height:36px;padding:0}.btn-block{width:100%;margin-top:var(--space-2)}.card{gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);background:var(--color-surface);flex-direction:column;display:flex}.card-kicker{letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent);font-size:10px}.card-title{font-family:var(--font-heading);font-weight:var(--font-heading-weight);font-size:17px;line-height:1.2}.card-body{opacity:.8;flex:1;margin:0;font-size:13px}.card-meta{color:color-mix(in srgb, var(--color-text) 50%, transparent);align-items:center;gap:6px;font-size:11px;display:flex}.elev-sm{box-shadow:var(--shadow-sm)}.elev-md{box-shadow:var(--shadow-md)}.elev-lg{box-shadow:var(--shadow-lg)}.tag{letter-spacing:.02em;border-radius:calc(var(--radius-md) * .75);align-items:center;padding:3px 10px;font-size:11px;display:inline-flex}.tag-accent{background:var(--color-accent-100);color:var(--color-accent-800)}.tag-accent-2{background:var(--color-accent-2-100);color:var(--color-accent-2-800)}.tag-neutral{background:var(--color-neutral-100);color:var(--color-neutral-800)}.tag-outline{border:1px solid var(--color-accent);color:var(--color-accent)}.nav{align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);border-bottom:none;display:flex}.nav-brand{font-family:var(--font-heading);font-weight:var(--font-heading-weight);margin-right:auto;font-size:18px}.nav a{color:inherit;font-size:14px;text-decoration:none}.nav a:hover,.nav a[aria-current=page]{color:var(--color-accent)}.card,.btn,.tag{border-radius:0}.card{border:1px solid var(--color-divider);background:0 0}.btn{border:1px solid var(--color-divider)}.btn-primary{border-color:var(--color-accent)}.btn-ghost{border-color:#0000}
.page{background:var(--color-bg);min-height:100vh;color:var(--color-text);font-family:var(--font-body)}.page a{color:var(--color-accent-700)}.page a:hover{color:var(--color-accent-800)}.site-nav{z-index:10;background:var(--color-bg);border-bottom:1px solid var(--color-divider);padding:var(--space-3) var(--space-8);position:sticky;top:0}.site-nav .nav-brand{letter-spacing:.02em}.site-nav .brand-role{color:var(--color-accent);font-weight:400}.site-nav .btn{text-decoration:none}.hero{max-width:1080px;padding:88px var(--space-8) 80px;grid-template-columns:1fr 300px;align-items:center;gap:72px;margin:0 auto;display:grid}.hero-kicker{color:var(--color-accent-700);margin-bottom:var(--space-3)}.hero h1{margin-bottom:var(--space-4);text-wrap:balance;font-size:62px}.hero-intro{color:var(--color-neutral-700);max-width:56ch;margin-bottom:var(--space-6);text-wrap:pretty;font-size:17px;line-height:1.6}.hero-actions{gap:var(--space-3);flex-wrap:wrap;display:flex}.hero-actions .btn{padding:10px 22px;text-decoration:none}.hero-photo img{object-fit:cover;object-position:top;filter:grayscale();width:100%;height:360px}.section{border-top:1px solid var(--color-divider)}.section--surface{background:var(--color-surface)}.section-inner{max-width:1080px;padding:72px var(--space-8);margin:0 auto}.section-head{align-items:baseline;gap:var(--space-4);margin-bottom:var(--space-8);display:flex}.section-num{color:var(--color-accent-700);margin:0}.section-head h2{margin:0}.section-range{font-size:13px}.section-inner.split{gap:var(--space-8);grid-template-columns:280px 1fr;display:grid}.split-head{align-items:baseline;gap:var(--space-4);align-self:start;display:flex}.xp-list{display:grid}.xp-row{gap:var(--space-6);padding:var(--space-6) 0;border-top:1px solid var(--color-divider);grid-template-columns:190px 1fr;display:grid}.xp-row:last-child{border-bottom:1px solid var(--color-divider)}.xp-dates{text-transform:uppercase;padding-top:4px;font-size:13px}.xp-row h4{margin-bottom:var(--space-1)}.xp-company{font-family:var(--font-body);color:var(--color-accent-700);font-size:14px;font-weight:400}.xp-desc{color:var(--color-neutral-700);max-width:64ch;margin:0;font-size:14px;line-height:1.6}.projects-grid{gap:var(--space-8);grid-template-columns:repeat(3,1fr);display:grid}.project-card{padding:var(--space-6);gap:var(--space-3)}.project-card .card-title{font-size:20px}.project-card .card-body{font-size:14px;line-height:1.6}.project-tags{gap:var(--space-2);flex-wrap:wrap;display:flex}.project-links{gap:var(--space-4);font-size:13px;display:flex}.skills-tags{gap:var(--space-2);flex-wrap:wrap;align-content:start;display:flex}.skills-tags .tag{padding:6px 14px;font-size:13px}.edu-list{gap:var(--space-6);display:grid}.edu-item h4{margin-bottom:2px}.edu-meta{margin:0;font-size:13px}.contact{background:var(--color-accent-900);color:var(--color-bg)}.contact-inner{max-width:1080px;padding:88px var(--space-8) 48px;margin:0 auto}.contact-kicker{color:var(--color-accent-300);margin-bottom:var(--space-3)}.contact h2{color:var(--color-bg);text-wrap:balance;max-width:22ch;margin-bottom:var(--space-4);font-size:44px}.contact-email{font-family:var(--font-heading);color:var(--color-bg);border-bottom:1px solid var(--color-accent-600);margin-bottom:var(--space-8);padding-bottom:3px;font-size:30px;font-weight:600;text-decoration:none;display:inline-block}.page .contact a.contact-email{color:var(--color-bg)}.page .contact a.contact-email:hover{color:var(--color-accent-300);border-bottom-color:var(--color-accent-300)}.contact-meta{gap:var(--space-6);color:var(--color-accent-400);margin-top:var(--space-6);flex-wrap:wrap;font-size:14px;display:flex}.page .contact-meta a{color:var(--color-accent-300)}.page .contact-meta a:hover{color:var(--color-accent-200)}.footer-note{color:var(--color-accent-600);border-top:1px solid var(--color-accent-800);padding-top:var(--space-4);margin:64px 0 0;font-size:12px}@media (max-width:1024px){.projects-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:900px){.hero{grid-template-columns:1fr;gap:48px;padding-top:56px;padding-bottom:56px}.hero h1{font-size:46px}.hero-photo{max-width:320px}.section-inner.split{gap:var(--space-6);grid-template-columns:1fr}.xp-row{gap:var(--space-2);grid-template-columns:1fr}.xp-dates{padding-top:0}}@media (max-width:640px){.site-nav{padding-inline:var(--space-4)}.site-nav a:not(.btn){display:none}.hero{padding-inline:var(--space-4)}.hero h1{font-size:40px}.section-inner{padding:56px var(--space-4)}.projects-grid{grid-template-columns:1fr}.contact-inner{padding:64px var(--space-4) 40px}.contact h2{font-size:34px}.contact-email{font-size:22px}}
