.project-links{--project-image-size:44px;--project-card-surface:var(--color-surface);--project-card-border:var(--color-border);gap:var(--space-10);margin-top:var(--space-18);flex-wrap:wrap;list-style:none;display:flex}.project-links>li{max-width:100%}.project-link{align-items:center;gap:var(--space-11);border:1px solid var(--project-card-border);border-radius:var(--radius-12);max-width:100%;padding:var(--space-8) var(--space-13) var(--space-8) var(--space-8);background:var(--project-card-surface);display:flex}.project-link:hover{background:var(--color-subtle);border-color:var(--color-accent)}.project-link img{width:var(--project-image-size);height:var(--project-image-size);border-radius:var(--radius-7);object-fit:cover;background:var(--color-image-background);flex-shrink:0}.project-link-text{min-width:0}.project-link strong{font-size:var(--font-size-12);font-weight:600;line-height:1.5;display:block}.project-link small{color:var(--color-muted);font-size:var(--font-size-10);margin-top:var(--space-1);display:block}.project-link>svg{color:var(--color-muted);margin-left:var(--space-8)}@media screen and (max-width:560px){.project-link strong{font-size:var(--font-size-11)}}@media print{.project-links{break-inside:avoid;gap:5pt;margin-top:8pt}.project-link{border-radius:5pt;gap:6pt;padding:4pt 8pt 4pt 4pt}.project-link img{border-radius:3pt;width:24pt;height:24pt}.project-link strong{font-size:8pt}.project-link small{font-size:7pt}.project-link>svg{width:10pt;height:10pt}}
.language-switch{--language-control-size:36px;--language-control-surface:var(--color-surface);--language-control-active:var(--color-subtle);gap:var(--space-3);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-10);background:var(--language-control-surface);display:flex}.language-switch a{width:var(--language-control-size);height:var(--language-control-size);border-radius:var(--radius-6);font-family:var(--font-family-emoji);font-size:var(--font-size-21);place-items:center;line-height:1;display:grid}.language-switch a[aria-current=page]{background:var(--language-control-active);box-shadow:inset 0 0 0 1px var(--color-accent)}.language-switch a:hover{background:var(--color-hover)}@media (pointer:coarse){.language-switch{--language-control-size:44px}}
.theme-switch{--theme-control-size:36px;--theme-control-surface:var(--color-surface);--theme-control-active:var(--color-subtle);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-10);background:var(--theme-control-surface);gap:var(--space-3);display:flex}.theme-switch button{border-radius:var(--radius-6);width:var(--theme-control-size);height:var(--theme-control-size);color:var(--color-muted);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;display:flex}.theme-switch button[aria-pressed=true]{background:var(--theme-control-active);color:var(--color-heading)}.theme-switch button:hover{background:var(--color-hover)}@media screen and (max-width:560px){.theme-switch{padding:var(--space-3);grid-area:1/2;gap:0}.theme-switch button{width:32px;height:var(--theme-control-size)}}@media (pointer:coarse){.theme-switch button{min-width:44px;min-height:44px}}
.toolbar{justify-content:space-between;align-items:center;gap:var(--space-20);min-height:110px;display:flex}.wordmark{align-items:center;gap:var(--space-12);display:flex}.domain{font-size:var(--font-size-13);font-weight:550}.breadcrumb{color:var(--color-muted);margin-left:var(--space-8);font-weight:400}.toolbar-actions{gap:var(--space-18);align-items:center;display:flex}.download-button{gap:var(--space-9);background:var(--color-action);color:var(--color-on-action);border-radius:var(--radius-9);padding:var(--space-10) var(--space-16);font-size:var(--font-size-13);align-items:center;font-weight:550;display:flex}.download-button:hover{opacity:.85;color:var(--color-on-action)}@media screen and (max-width:760px){.toolbar{min-height:90px}.domain{font-size:var(--font-size-12)}.breadcrumb{display:inline}.toolbar-actions{gap:var(--space-10)}}@media screen and (max-width:560px){.toolbar{gap:var(--space-12);padding:var(--space-16) var(--space-7);grid-template-columns:1fr auto;display:grid}.domain{font-size:var(--font-size-12);display:inline}.wordmark{grid-column:1}.toolbar-actions{display:contents}.download-button{font-size:var(--font-size-11);padding:var(--space-11) var(--space-12);justify-content:center;gap:var(--space-6);grid-column:1/-1}.download-button svg{width:15px;height:15px}.toolbar{padding:var(--space-16)}}@media print{.toolbar{display:none}}@media screen and (max-width:560px){.toolbar .wordmark{grid-row:1}.toolbar .language-switch{grid-area:1/2;justify-self:end}.toolbar .theme-switch{grid-area:2/1;justify-self:start}.toolbar .download-button{grid-area:2/2}}
.site-shell{--cv-panel-background:var(--color-surface);--cv-panel-border:var(--color-border);--cv-panel-radius:var(--radius-20);--cv-panel-shadow:var(--shadow-soft);--cv-content-inset:var(--space-44);--cv-mobile-gutter:var(--space-16);--cv-date-column:178px;--cv-column-gap:var(--space-25)}
.site-shell{max-width:1060px;padding:0 var(--space-32);margin:auto}.resume{background:var(--cv-panel-background);border:1px solid var(--cv-panel-border);border-radius:var(--cv-panel-radius);box-shadow:var(--cv-panel-shadow);overflow:hidden}.profile{padding:var(--space-38) var(--cv-content-inset) 0}.profile-topline{margin-bottom:var(--space-30);justify-content:space-between;align-items:center;gap:var(--space-14);display:flex}.identity{gap:var(--space-27);align-items:center;display:flex}.portrait{border-radius:var(--radius-16);object-fit:cover;flex-shrink:0;width:112px;height:112px}.identity-text{min-width:0}.identity h1{font-size:var(--font-size-32);letter-spacing:-1.1px;font-weight:680;line-height:1.25}.identity h1 span{display:block}.headline{font-size:var(--font-size-19);color:var(--color-accent);margin-top:var(--space-10);letter-spacing:-.3px;font-weight:500}.location{align-items:center;gap:var(--space-7);color:var(--color-muted);font-size:var(--font-size-12);margin-top:var(--space-8);display:flex}.location svg{width:14px;height:14px}.meta-separator{margin:0 var(--space-3)}.contact-row{gap:var(--space-40);padding:var(--space-30) 0 var(--space-27);display:flex}.contact{align-items:flex-start;gap:var(--space-10);font-size:var(--font-size-13);font-weight:500;display:flex}.contact svg{margin-top:var(--space-3);color:var(--color-muted)}.contact small{font-size:var(--font-size-10);color:var(--color-muted);margin-top:var(--space-2);font-weight:400;display:block}.profile-facts{gap:var(--space-16);border-top:1px solid var(--color-border);padding:var(--space-23) 0 var(--space-28);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.profile-facts dt{font-size:var(--font-size-11);color:var(--color-muted);margin-bottom:var(--space-4)}.profile-facts dd{font-size:var(--font-size-13);font-weight:500}.resume-section{padding:var(--space-34) var(--cv-content-inset);border-top:1px solid var(--color-border)}.about-section{grid-template-columns:var(--cv-date-column) minmax(0, 1fr);gap:var(--cv-column-gap);display:grid}.about-section p{font-size:var(--font-size-14)}.section-heading{align-items:center;gap:var(--space-15);margin-bottom:var(--space-30);display:flex}.section-heading>span{color:var(--color-muted);font-size:var(--font-size-12);background:var(--color-subtle);border-radius:var(--radius-6);padding:var(--space-3) var(--space-9)}.job{grid-template-columns:var(--cv-date-column) minmax(0, 1fr);gap:var(--cv-column-gap);padding-bottom:var(--space-33);margin-bottom:var(--space-31);border-bottom:1px solid var(--color-border);display:grid}.job:last-child{border:0;margin:0;padding-bottom:0}.job-period{padding-top:var(--space-4);color:var(--color-muted);font-size:var(--font-size-12);line-height:1.65;position:relative}.job-period p span{display:block}.job-period small{margin-top:var(--space-7);font-size:var(--font-size-11);display:block}.job-number{font-size:var(--font-size-11);font-variant-numeric:tabular-nums;margin-top:var(--space-24);opacity:.55;display:block}.job-location{align-items:center;gap:var(--space-4);color:var(--color-muted);font-size:var(--font-size-11);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.job-location a{align-items:center;gap:var(--space-3);text-decoration:underline;-webkit-text-decoration-color:var(--color-border);text-decoration-color:var(--color-border);text-underline-offset:3px;display:inline-flex}.job-heading h4{margin-top:var(--space-16);margin-bottom:var(--space-12)}.organization-heading{align-items:center;gap:var(--space-14);display:flex}.organization-heading>div{min-width:0}.organization-logo{object-fit:cover;background:var(--color-image-background);border:1px solid var(--color-border);border-radius:var(--radius-10);flex-shrink:0;width:48px;height:48px}.language-emoji{font-family:var(--font-family-emoji);font-size:var(--font-size-18);margin-right:var(--space-10);vertical-align:-1px}.job-description{margin-bottom:var(--space-16)}.achievements{list-style:none}.achievements li{padding-left:var(--space-15);margin-bottom:var(--space-7);position:relative}.achievements li:before{content:"–";color:var(--color-muted);position:absolute;left:0}.stack{margin-top:var(--space-20);font-size:var(--font-size-12);color:var(--color-muted);line-height:1.75}.stack strong{font-size:var(--font-size-11);color:var(--color-text);margin-bottom:var(--space-5);font-weight:600;display:block}.details-section{grid-template-columns:var(--cv-date-column) minmax(0, 1fr);gap:var(--cv-column-gap);display:grid}.plain-list{gap:var(--space-8);list-style:none;display:grid}.entry-meta{font-size:var(--font-size-11);color:var(--color-muted);margin-bottom:var(--space-7)}.education-section h3{font-size:var(--font-size-17);margin:0}.education-card .entry-meta{margin:var(--space-3) 0 0}.education-card h4{font-size:var(--font-size-14);margin:var(--space-13) 0 var(--space-5)}.education-period{margin-top:var(--space-17);font-size:var(--font-size-12);color:var(--color-muted)}.education-period span{white-space:nowrap}.organization-heading+.education-description{margin-top:var(--space-10)}.education-description{font-size:var(--font-size-13)}.additional-facts{gap:var(--space-9);font-size:var(--font-size-12);display:grid}.additional-facts>div{gap:var(--space-16);grid-template-columns:185px 1fr;display:grid}.additional-facts dt{color:var(--color-muted)}.site-footer{padding:var(--space-27) 0 var(--space-40);color:var(--color-muted);font-size:var(--font-size-10);justify-content:space-between;gap:var(--space-16);display:flex}@media screen and (min-width:1000px){.identity h1 span{display:inline}.identity h1{max-width:660px}.identity{gap:var(--space-28)}.portrait{width:108px;height:108px}}@media screen and (max-width:760px){.site-shell{padding:0 var(--space-18)}.profile{padding:var(--space-27) var(--space-27) 0}.identity{gap:var(--space-20)}.identity h1{font-size:var(--font-size-27)}.portrait{width:90px;height:90px}.headline{font-size:var(--font-size-17)}.location{font-size:var(--font-size-11);flex-wrap:wrap}.contact-row{gap:var(--space-24)}.resume-section{padding:var(--space-28) var(--space-27)}.job,.details-section,.about-section{gap:var(--space-22);grid-template-columns:135px 1fr}.additional-facts>div{grid-template-columns:1fr;gap:0}.profile-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.profile-facts dd{font-size:var(--font-size-11)}}@media screen and (max-width:560px){body{font-size:var(--font-size-13)}.site-shell{padding:0 var(--space-12)}.resume{border-radius:var(--radius-15)}.profile{padding:var(--space-23) var(--space-21) 0}.profile-topline{margin-bottom:var(--space-24)}.eyebrow{font-size:var(--font-size-10)}.identity{gap:var(--space-15);align-items:flex-start}.portrait{border-radius:var(--radius-10);width:68px;height:78px}.identity h1{font-size:var(--font-size-23);letter-spacing:-.7px}.headline{font-size:var(--font-size-16);margin-top:var(--space-9)}.location{gap:var(--space-5);margin-top:var(--space-10);font-size:var(--font-size-10)}.meta-separator{display:none}.location>span:last-child{padding-left:var(--space-19);flex-basis:100%}.contact-row{gap:var(--space-18);padding:var(--space-24) 0;flex-direction:column}.contact{font-size:var(--font-size-12)}.contact small{font-size:var(--font-size-10)}.profile-facts{gap:var(--space-11);padding:var(--space-20) 0 var(--space-23);grid-template-columns:1fr}.profile-facts>div{justify-content:space-between;gap:var(--space-10);display:flex}.profile-facts dt{font-size:var(--font-size-10);margin:0}.profile-facts dd{font-size:var(--font-size-11)}.resume-section{padding:var(--space-25) var(--space-21)}h2{font-size:var(--font-size-19)}.about-section,.details-section{display:block}.about-section h2,.details-section h2{margin-bottom:var(--space-17)}.about-section p{font-size:var(--font-size-13)}.section-heading{justify-content:space-between;gap:var(--space-7);margin-bottom:var(--space-24)}.section-heading>span{font-size:var(--font-size-10);padding:var(--space-3) var(--space-6)}.job{margin-bottom:var(--space-25);padding-bottom:var(--space-25);display:block}.job-period{margin-bottom:var(--space-10);font-size:var(--font-size-10);gap:var(--space-3) var(--space-10);flex-wrap:wrap;padding:0;display:flex}.job-period p span{display:inline}.job-period small{font-size:var(--font-size-10);margin:0}.job-number{display:none}.job-content h3{font-size:var(--font-size-18)}.job-heading h4{font-size:var(--font-size-13);margin-top:var(--space-13)}.job-location{font-size:var(--font-size-10)}.organization-heading{gap:var(--space-11)}.organization-logo{border-radius:var(--radius-8);width:42px;height:42px}.stack{font-size:var(--font-size-11)}.additional-facts>div{gap:var(--space-10);font-size:var(--font-size-11);grid-template-columns:1fr 1fr}.site-footer{font-size:var(--font-size-9);padding:var(--space-23) var(--space-6) var(--space-30);flex-wrap:wrap}.site-footer>span:first-child{display:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media screen and (max-width:560px){.site-shell{padding:0}.resume{box-shadow:none;background:0 0;border:0;border-radius:0;overflow:visible}.profile{padding:var(--space-24) var(--cv-mobile-gutter) 0}.resume-section,.site-footer{padding:var(--space-24) var(--cv-mobile-gutter)}}@page{size:A4;margin:14mm 14mm 17mm}@media print{html{scroll-behavior:auto}body{background:var(--color-surface);font-family:var(--font-family-sans);color:var(--color-text);font-size:8.5pt;line-height:1.38}.site-shell{max-width:none;padding:0}.toolbar,.skip-link,.job-number,.site-footer,.profile-topline .eyebrow{display:none}.resume{box-shadow:none;border:0;border-radius:0;overflow:visible}.profile{break-inside:avoid;flex-direction:column;padding:0 0 12pt;display:flex}.profile-topline{display:none}.identity{order:1;align-items:flex-start;gap:14pt}.portrait{border-radius:0;width:63pt;height:63pt}.identity h1{letter-spacing:-.5pt;max-width:none;font-size:21pt;line-height:1.15}.identity h1 span{display:inline}.headline{color:var(--color-heading);margin-top:7pt;font-size:13pt}.location{gap:5pt;margin-top:5pt;font-size:8pt}.location svg{display:none}.meta-separator{margin:0}.contact-row{order:2;gap:20pt;margin-left:77pt;padding:12pt 0 8pt;display:flex}.contact{gap:0;font-size:8pt}.contact svg{display:none}.contact small{color:var(--color-muted);font-size:7pt}.profile-facts{border-top:0;order:4;gap:23pt;margin-left:77pt;padding:8pt 0 0;display:flex}.profile-facts dt{margin:0;font-size:7pt}.profile-facts dd{font-size:8pt}.resume-section{border-top:1px solid var(--color-border);padding:11pt 0}h2{color:var(--color-muted);letter-spacing:0;break-after:avoid;font-size:12pt;font-weight:400}h3{letter-spacing:0;font-size:11pt}h4{font-size:10pt}.about-section{display:block}.about-section h2{margin-bottom:6pt}.about-section p{font-size:9pt}.section-heading{break-after:avoid;gap:5pt;margin-bottom:9pt}.section-heading>span{background:0 0;padding:0;font-size:10pt}.section-heading>span:before{content:"— "}.job{break-inside:avoid;border:0;grid-template-columns:68pt minmax(0,1fr);gap:9pt;min-height:42pt;margin:0;padding:0 0 13pt;display:grid;position:static}.job-period{width:auto;padding:0;font-size:7.5pt;line-height:1.4;position:static}.job-period small{margin-top:3pt;font-size:7.5pt}.job-heading{break-inside:avoid;break-after:avoid}.job-heading h3{font-size:11pt}.job-location{gap:3pt;margin-top:1pt;font-size:7.5pt}.job-location a{color:var(--color-muted);text-decoration:none}.job-location svg{display:none}.job-heading h4{margin:7pt 0 6pt;font-size:10pt}.job-description{orphans:3;widows:3;margin-bottom:8pt}.achievements li{break-inside:avoid;margin:0 0 2pt;padding-left:10pt}.achievements,.achievements li:last-child{break-after:avoid}.stack{break-inside:avoid;color:var(--color-text);margin-top:9pt;font-size:8pt;line-height:1.4}.stack strong{color:var(--color-text);margin-bottom:3pt;font-size:8pt;font-weight:400}.details-section{break-inside:avoid;grid-template-columns:100pt 1fr;gap:8pt;display:grid}.details-section h2{font-size:10pt}.plain-list{gap:3pt;font-size:9pt}.entry-meta{margin-bottom:3pt;font-size:8pt}.organization-heading{gap:8pt}.organization-logo{border-radius:4pt;width:27pt;height:27pt}.language-emoji{margin-right:6pt;font-size:11pt}.education-section h3{margin:0;font-size:10pt}.education-card h4{margin:7pt 0 3pt;font-size:9pt}.education-card .entry-meta{margin-top:2pt;font-size:7pt}.education-period{margin-top:8pt;font-size:8pt}.education-description{font-size:8pt}.additional-facts{gap:3pt;font-size:8pt}.additional-facts>div{grid-template-columns:130pt 1fr;gap:10pt}.additional-facts dt,.additional-facts dd{font-size:8pt}}
