@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&display=swap";:root{color:#20272e;font-synthesis:none;--muted:#5e6872;--line:#dfe4e9;--accent:#245680;--pale:#f4f7fa;background:#fff;font-family:DM Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;font-weight:400;line-height:1.65}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:104px}body{margin:0}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}a,button,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline-offset:5px;border-radius:2px;outline:3px solid #7099bc}button{font:inherit;cursor:pointer}h1,h2,h3,h4,p,ul,dl,dd{margin:0}h1,h2,h3,h4{font-weight:600;line-height:1.25}h2{letter-spacing:-.025em;font-size:1.25rem}h3{letter-spacing:-.015em;font-size:1.125rem}p{color:var(--muted)}.skip{z-index:100;background:#fff;padding:12px;position:fixed;top:-100px;left:20px}.skip:focus{top:10px}.site-header{border-bottom:1px solid var(--line);z-index:20;background:#fff;position:sticky;top:0}.header-inner{align-items:center;gap:32px;max-width:1120px;min-height:80px;margin:auto;padding:0 32px;display:flex}.wordmark{letter-spacing:-.035em;white-space:nowrap;font-size:1.05rem;font-weight:650}.wordmark span{color:var(--accent)}.main-nav{gap:28px;margin-left:auto;font-size:.875rem;font-weight:500;display:flex}.main-nav a{padding:12px 0}.main-nav [aria-current]{color:var(--accent)}.language-nav{border-left:1px solid var(--line);align-items:center;gap:9px;padding-left:24px;font-size:.875rem;display:flex}.language-nav a{color:#6a737b;padding:10px 0}.language-nav [aria-current]{color:#20272e;font-weight:700}.language-nav span{color:#b4bcc4}.page{max-width:1120px;margin:auto;padding:0 32px}.hero{grid-template-columns:minmax(0,1fr) 210px;align-items:start;gap:88px;padding:76px 0 60px;display:grid}.hero-copy{max-width:700px}h1{letter-spacing:-.055em;font-size:clamp(2.5rem,4.6vw,3.6rem);font-weight:550;line-height:1.1}.role{color:#343e47;letter-spacing:-.02em;margin-top:16px;font-size:clamp(1.1rem,2vw,1.4rem)}.stack{color:var(--accent);word-spacing:2px;margin-top:16px;font-weight:500}.stack span{color:#8795a2;margin:0 3px}.location{margin-top:8px;font-size:.875rem}.intro{max-width:650px;margin-top:24px;font-size:1.0625rem;line-height:1.75}.portrait{object-fit:cover;object-position:50% 25%;background:var(--pale);border-radius:6px;width:210px;height:250px;margin-top:6px}.hero-actions{flex-wrap:wrap;align-items:center;gap:26px;margin-top:28px;display:flex}.button{background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:4px;justify-content:center;align-items:center;gap:28px;min-height:46px;padding:11px 19px;font-size:.875rem;font-weight:550;transition:background .15s;display:inline-flex}.button:hover{color:#fff;background:#183e5e}.button.secondary{color:var(--accent);background:#fff;border-color:#bccbd8}.text-link{color:var(--accent);align-items:center;gap:12px;padding:6px 0;font-size:.875rem;font-weight:600;display:inline-flex}.text-link:hover{text-underline-offset:5px;text-decoration:underline}.profile-links{flex-wrap:wrap;gap:24px;margin-top:20px;font-size:.875rem;display:flex}.profile-links a{text-underline-offset:5px;-webkit-text-decoration:underline #c8cfd5;text-decoration:underline #c8cfd5}.profile-links a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.impact{border-top:1px solid var(--line);padding:30px 0 42px}.impact h2{margin-bottom:24px}.impact-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;display:grid}.impact-grid article+article{border-left:1px solid var(--line);padding-left:32px}.impact-grid h3{margin-bottom:10px;font-size:1rem}.impact-grid p{font-size:1rem;line-height:1.7}.section{border-top:1px solid var(--line);grid-template-columns:200px minmax(0,1fr);gap:44px;padding:48px 0;display:grid}.section>h2{overflow-wrap:anywhere;max-width:190px}.section-body{min-width:0}.job{border-bottom:1px solid var(--line);padding:28px 0}.job:first-child{padding-top:0}.job:last-child{border-bottom:0;padding-bottom:0}.job-header{justify-content:space-between;align-items:start;gap:20px;display:flex}.job h3{font-size:1.1875rem}.job-role{color:#343e47;margin-top:7px;font-size:1rem;font-weight:500}.job-meta{text-align:right;flex-shrink:0;font-size:.8125rem;line-height:1.8}.job-summary{margin-top:15px}.job details{margin-top:12px}summary{cursor:pointer;list-style:none}summary::-webkit-details-marker{display:none}.job summary{color:var(--accent);align-items:center;gap:12px;min-height:44px;font-size:.875rem;font-weight:550;display:inline-flex}.expand{flex-shrink:0;width:12px;height:12px;display:block;position:relative}.expand:before,.expand:after{content:"";background:currentColor;width:12px;height:1px;position:absolute;top:5px;left:0}.expand:after{transition:transform .15s;transform:rotate(90deg)}details[open]>summary .expand:after{transform:rotate(0)}.details-body{padding-top:12px}.bullets{color:var(--muted);padding-left:19px}.bullets li{margin-bottom:10px;padding-left:4px}.bullets li::marker{color:#8298a9}.tags{flex-wrap:wrap;gap:7px;margin-top:20px;padding:0;list-style:none;display:flex}.tags li{color:#4a5f71;background:var(--pale);border:1px solid #e5ebf0;border-radius:3px;padding:3px 9px;font-size:.875rem;line-height:1.7}.section-note{margin-bottom:18px;font-size:.875rem}.case-study{border-top:1px solid var(--line)}.case-study:last-child{border-bottom:1px solid var(--line)}.case-study>summary{align-items:start;gap:18px;padding:24px 0;display:flex}.case-number{color:#7b8791;font-variant-numeric:tabular-nums;margin-top:3px;font-size:.8125rem}.case-description{color:var(--muted);margin-top:8px;font-size:1rem;line-height:1.65;display:block}.case-study .expand{color:var(--accent);margin-top:7px;margin-left:auto}.case-body{padding:0 0 28px 36px}.case-body dl>div{margin-bottom:20px}.case-body dt,.case-body h4{color:#303b45;margin-bottom:5px;font-size:.875rem;font-weight:600}.case-body dd{color:var(--muted)}.case-body .tags{margin-top:10px}.expertise-grid{grid-template-columns:1fr 1fr;gap:30px 36px;display:grid}.expertise-grid h3,.ai-note h3{margin-bottom:10px;font-size:1rem}.expertise-grid p,.ai-note p{font-size:1rem}.ai-note{border-left:2px solid #9bb4c9;margin-top:32px;padding:2px 0 2px 20px}.project+.project{border-top:1px solid var(--line);margin-top:28px;padding-top:28px}.metadata{letter-spacing:.01em;margin-bottom:8px;font-size:.8125rem}.project h3{margin-bottom:12px;font-size:1.35rem}.project>.bullets{margin-top:16px}.project .text-link{margin-top:18px}.education+.education{margin-top:28px}.education h3{margin-bottom:8px}.school{color:#343e47;margin-bottom:8px}.publication{border-top:1px solid var(--line);margin-top:30px;padding-top:26px}.publication h3{margin-bottom:12px;font-size:1rem}.publication p[lang]{color:#343e47;font-style:italic}.publication .metadata{margin-top:8px;margin-bottom:16px}.languages{grid-template-columns:1fr 1fr;gap:20px 40px;display:grid}.languages>div{border-bottom:1px solid #edf0f3;justify-content:space-between;gap:12px;padding-bottom:12px;display:flex}.languages dt{font-weight:500}.languages dd{color:var(--muted);font-size:.875rem}.contact-copy{max-width:590px}.email{color:var(--accent);letter-spacing:-.025em;overflow-wrap:anywhere;margin-top:20px;font-size:clamp(1.15rem,2.2vw,1.65rem);display:inline-block}.email:hover{text-underline-offset:6px;text-decoration:underline}.site-footer{border-top:1px solid var(--line);margin-top:20px}.site-footer>div{max-width:1120px;color:var(--muted);gap:26px;margin:auto;padding:25px 32px;font-size:.875rem;display:flex}.site-footer span{margin-right:auto}.cv-label{color:var(--accent);margin-bottom:16px;font-size:.875rem}.cv-page .hero{padding-bottom:44px}.cv-page .section{padding:36px 0}.cv-page .job summary{display:none}.cv-page .details-body{padding-top:0}.hero{padding-top:50px;padding-bottom:44px}.portrait{object-position:center;border-radius:50%;justify-self:end;width:180px;height:180px}.impact{padding-bottom:32px}@media (width>=1000px){.section>h2{align-self:start;position:sticky;top:116px}}@media (width<=900px){.header-inner{gap:20px}.main-nav{gap:18px}.section{grid-template-columns:160px minmax(0,1fr);gap:28px}.hero{grid-template-columns:minmax(0,1fr) 165px;gap:40px}.portrait{width:165px;height:205px}.job-header{display:block}.job-meta{text-align:left;flex-wrap:wrap;gap:6px 14px;margin-top:9px;display:flex}.expertise-grid{gap:26px}.impact-grid{gap:22px}.impact-grid article+article{padding-left:22px}}@media (width<=640px){html{scroll-padding-top:126px}.header-inner{min-height:unset;flex-wrap:wrap;gap:5px 20px;padding:14px 22px 9px}.wordmark{font-size:1rem}.language-nav{border:0;order:1;margin-left:auto;padding:0}.main-nav{order:2;justify-content:space-between;gap:12px;width:100%;margin:0;font-size:.875rem}.main-nav a{padding:10px 0}.page{padding:0 22px}.hero{grid-template-columns:minmax(0,1fr) 82px;gap:18px;padding:36px 0 34px}.hero-copy{display:contents}h1{grid-column:1;align-self:end;font-size:2.25rem}.portrait{grid-area:1/2/span 3;width:82px;height:102px;margin:0}.role{grid-column:1;margin-top:0;font-size:1.0625rem;line-height:1.45}.stack{word-spacing:0;grid-column:1/-1;margin:0;font-size:.9375rem}.stack span{margin:0 1px}.location{grid-column:1/-1;margin:0}.intro{grid-column:1/-1;margin-top:1px;font-size:1rem}.hero-actions,.profile-links{grid-column:1/-1;margin-top:4px}.hero-actions{gap:22px}.profile-links{gap:17px;font-size:.875rem}.impact{padding:28px 0 32px}.impact h2{margin-bottom:20px}.impact-grid{grid-template-columns:1fr;gap:21px}.impact-grid article+article{border-top:1px solid #edf0f3;border-left:0;padding:20px 0 0}.impact-grid h3{margin-bottom:7px}.section{padding:32px 0;display:block}.section>h2{max-width:none;margin-bottom:27px;font-size:1.35rem}.job{padding:24px 0}.job h3{font-size:1.125rem}.job-meta{font-size:.8125rem}.job-role{font-size:1rem}.job summary{font-size:.875rem}.expertise-grid{grid-template-columns:1fr;gap:24px}.case-study>summary{gap:12px;padding:21px 0}.case-study h3{font-size:1.0625rem}.case-body{padding-left:0}.case-description{font-size:1rem}.languages{grid-template-columns:1fr;gap:20px}.site-footer>div{flex-wrap:wrap;gap:12px 22px;padding:22px}.site-footer span{width:100%}.cv-page .hero .cv-label{grid-column:1/-1}.cv-page .portrait{grid-row:2/span 3}.cv-page .hero-actions{gap:12px}.cv-page .button{font-size:.875rem}}.portrait{aspect-ratio:1;height:auto}@media (width<=380px){html{scroll-padding-top:174px}.main-nav{grid-template-columns:1fr 1fr;gap:0 14px;display:grid}.main-nav a{padding:6px 0}.hero,.profile-links,.hero-actions{gap:14px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important}}@media print{@page{margin:15mm}html{scroll-padding:0;font-size:10pt}.site-header,.site-footer,.skip,.hero-actions,.profile-links,.portrait{display:none!important}.page{max-width:none;padding:0}.hero{display:block;padding:0 0 20px!important}.hero-copy{display:block}h1{font-size:28pt}.role{font-size:14pt}.intro{max-width:none;margin-top:12px;font-size:10pt}.stack,.location{margin-top:8px}.section,.cv-page .section{padding:20px 0;display:block}.section>h2{max-width:none;margin-bottom:14px;position:static}.job{break-inside:avoid}.job-header{display:flex}.job-meta{text-align:right;margin:0;display:block}.job summary{display:none}.tags{margin-top:10px}.tags li{background:0 0;border-color:#ddd;font-size:9pt}.bullets li{margin-bottom:5px}.education,.publication,.project{break-inside:avoid}.email{font-size:12pt}.contact-copy{display:none}.cv-label{margin-bottom:6px}}
/*$vite$:1*/