:root{--paper:#f8fbff;--surface:#fff;--ink:#082754;--muted:#52657c;--accent:#075eac;--bright:#168cff;--line:#d9e3ee;--tint:#eaf3fc}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;touch-action:manipulation;font-family:system-ui,sans-serif;line-height:1.5}body{font-feature-settings:"kern";min-height:100%;color:var(--ink);background:var(--paper);margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.65;position:relative}*,:before,:after{box-sizing:border-box;overflow-wrap:break-word;border:0 solid #e2e8f0}:where(h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd){margin:0}:where(h1,h2,h3,h4,h5,h6){font-size:inherit;font-weight:inherit}:where(ol,ul){margin:0;padding:0}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit;text-underline-offset:4px;background:0 0}small{font-size:80%}button{color:inherit;text-transform:none;cursor:pointer;background:0 0;margin:0;padding:0;overflow:visible}button::-moz-focus-inner{border:0;padding:0}img,svg{display:block}img{border-style:none;max-width:100%;height:auto}details{display:block}summary{display:list-item}#root{min-height:100vh}::selection{color:var(--ink);background:#cce6ff}:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button,a,summary{-webkit-tap-highlight-color:transparent}button{font:inherit}[hidden]{display:none!important}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.portfolio{font-size:16px}.shell{width:min(1120px,100% - 96px);margin-inline:auto}.portfolio a{transition:color .15s,background-color .15s}.portfolio a:hover{color:var(--accent)}.portfolio h1,.portfolio h2,.portfolio h3,.portfolio h4{font-weight:500;line-height:1.2}.portfolio h3{letter-spacing:-.025em;font-size:1.2rem}.portfolio p{margin:0}.portfolio section,#footer,#languages,#certifications{scroll-margin-top:6rem}.skip-link{z-index:200;background:var(--ink);color:#fff;padding:.8rem 1rem;position:fixed;top:-100px;left:1rem}.skip-link:focus{top:1rem}.site-header{z-index:100;background:var(--paper);border-bottom:1px solid var(--line);position:sticky;top:0}.header-inner{align-items:center;gap:2rem;min-height:80px;display:flex}.wordmark{letter-spacing:-.035em;white-space:nowrap;margin-right:auto;font-size:1rem;font-weight:600}.wordmark span{color:var(--bright)}.desktop-nav{gap:1.5rem;font-size:.82rem;display:flex}.desktop-nav a{padding-block:12px}.header-actions{align-items:center;gap:12px;display:flex}.language-switch{border-left:1px solid var(--line);align-items:center;gap:3px;padding-left:20px;display:flex}.language-switch a{min-height:40px;color:var(--muted);border-bottom:2px solid #0000;border-radius:3px;align-items:center;gap:6px;padding:7px;font-size:.72rem;font-weight:600;display:flex}.language-switch a[aria-current]{color:var(--ink);background:var(--tint);border-bottom-color:var(--bright)}.flag{width:19px;height:14px;display:block}.menu-toggle{min-width:44px;min-height:44px;padding:10px;display:none}.mobile-nav{display:none}.hero{grid-template-columns:1fr 340px;align-items:center;column-gap:60px;padding-top:90px;display:grid}.eyebrow{letter-spacing:.11em;text-transform:uppercase;color:var(--muted);font-size:.68rem;font-weight:500}.hero .eyebrow{align-items:center;gap:10px;display:flex}.small-rule{background:var(--bright);width:28px;height:2px;display:inline-block}.hero h1{letter-spacing:-.06em;margin:24px 0 12px;font-size:clamp(2.75rem,5vw,4.4rem);line-height:1.06}.hero-intro{max-width:570px;color:var(--muted);font-size:1.05rem;line-height:1.8;margin-top:24px!important}.hero-intro p+p{margin-top:14px}.hero-actions{flex-wrap:wrap;align-items:center;gap:26px;margin-top:30px;display:flex}.button{border-radius:3px;justify-content:center;align-items:center;gap:24px;min-height:48px;padding:12px 20px;font-size:.85rem;font-weight:500;display:inline-flex}.portfolio .primary{background:var(--ink);color:var(--paper)}.portfolio .primary:hover{background:var(--accent);color:#fff}.text-link{color:var(--accent);align-items:center;gap:12px;min-height:44px;font-size:.85rem;font-weight:500;display:inline-flex}.text-link:hover{text-decoration:underline}.location{color:var(--muted);font-size:.75rem;margin-top:28px!important}.hero-mark{justify-self:end;width:100%;max-width:340px}.hero-mark img{width:100%;height:auto;display:block}.hero-bottom{border-top:1px solid var(--line);color:var(--muted);grid-column:1/-1;justify-content:space-between;align-items:center;gap:30px;margin-top:64px;padding-block:18px;font-size:.72rem;display:flex}.print-button{flex-shrink:0;font-size:.75rem}.section{border-top:1px solid var(--line);padding-block:68px}.section-heading{margin-bottom:34px}.section-title{align-items:baseline;gap:18px;display:flex}.section-number{color:var(--accent);font-variant-numeric:tabular-nums;font-size:.7rem}.section-title h2{letter-spacing:-.04em;font-size:clamp(1.7rem,3vw,2.15rem)}.section-heading>p{color:var(--muted);margin-top:12px;font-size:.9rem}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}.project-card{background:var(--surface);border:1px solid var(--line);border-radius:4px;flex-direction:column;display:flex;overflow:hidden}.project-visual{min-height:112px;color:var(--accent);border-bottom:1px solid var(--line);background:#e5f1ff;justify-content:center;align-items:center;display:flex;position:relative}.visual-mule{color:#234e80;background:#edf4fb}.visual-souping{color:#294a73;background:#e8eef7}.visual-index{letter-spacing:.12em;font-size:.65rem;position:absolute;top:13px;left:17px}.method-diagram{justify-content:center;align-items:center;gap:6px;width:100%;padding:25px 12px 10px;display:flex}.method-diagram span{background:#ffffff45;border:1px solid;border-radius:2px;padding:8px 7px;font-size:.6875rem;position:relative}.method-diagram span+span:before{content:"";background:currentColor;width:7px;height:1px;position:absolute;top:50%;left:-7px}.visual-mule .method-diagram span{border-radius:50%;place-items:center;width:42px;height:42px;font-size:.7rem;display:grid}.project-body{flex-direction:column;flex:1;gap:15px;padding:23px;display:flex}.project-kind{letter-spacing:.04em;font-size:.6875rem}.project-body h3{font-size:1.25rem;line-height:1.3}.project-body>p:not(.eyebrow),.project-detail p{color:var(--muted);font-size:.9rem;line-height:1.65}.project-detail h4{margin-bottom:6px;font-size:.8125rem;font-weight:600}.finding{border-top:1px solid var(--line);padding-top:14px}.tags{flex-wrap:wrap;gap:6px;margin:auto 0 0;padding:5px 0 0;list-style:none;display:flex}.tags li{background:var(--tint);color:#264f78;border-radius:2px;padding:3px 7px;font-size:.6875rem}.project-link{border-top:1px solid var(--line);flex-direction:column;justify-content:end;align-items:start;min-height:76px;padding-top:10px;display:flex}.project-link .text-link{font-size:.875rem}.project-status{color:var(--muted);font-size:.7rem}.more-projects{margin-top:23px}.archive-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 40px;padding-top:28px;display:grid}.archive-item{border-top:1px solid var(--line);padding-top:20px}.archive-item h3{font-size:1rem}.archive-item p{color:var(--muted);margin-top:10px;font-size:.85rem}.experience-list{border-top:1px solid var(--line)}.experience-row{border-bottom:1px solid var(--line);grid-template-columns:240px 1fr;gap:40px;padding-block:26px;display:grid}.experience-row:last-child{border-bottom:0;padding-bottom:0}.entry-meta{color:var(--muted);font-size:.78rem;line-height:1.8}.entry-meta p:first-child{color:var(--ink)}.entry-content .role{color:var(--accent);margin-top:5px;font-size:.84rem}.entry-content ul{color:var(--muted);margin:13px 0 0;padding-left:17px;font-size:.85rem}.entry-content li+li{margin-top:5px}.entry-content li::marker{color:var(--accent)}.education-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:60px;display:grid}.education-grid article{border-left:2px solid var(--line);padding-left:24px}.education-grid h3{margin-top:13px}.education-location{color:var(--muted);font-size:.8rem;margin-top:4px!important}.degree{font-size:.9rem;margin-top:8px!important}.study-status{color:var(--accent);font-size:.75rem;margin-top:5px!important}.muted{color:var(--muted);font-size:.85rem;margin-top:16px!important}.section-note{color:var(--muted);font-size:.75rem;margin-top:30px!important}.skills-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:38px;display:grid}.skills-grid h3,.personal-grid h3,.certifications h3{margin-bottom:12px;font-size:.95rem}.skills-grid p,.personal-grid p,.certifications p{color:var(--muted);font-size:.85rem}.personal-grid,.certifications{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:60px;margin-top:32px;padding-top:30px;display:grid}.certifications summary{cursor:pointer;color:var(--accent);min-height:44px;padding-block:7px;font-size:.83rem}.certificate-list{padding:0;list-style:none}.certificate-list li{border-top:1px solid var(--line);justify-content:space-between;align-items:start;gap:20px;padding-block:14px;font-size:.78rem;display:flex}.certificate-list small{color:var(--muted);margin-top:3px;display:block}.certificate-list a{color:var(--accent);min-width:100px;font-size:.7rem}#footer{background:var(--tint);border-top:1px solid var(--line);padding:36px 0 20px}#footer h2{letter-spacing:-.025em;font-size:1.25rem}.contact-email{letter-spacing:-.02em;margin-top:22px;font-size:clamp(1rem,2.4vw,1.5rem);display:inline-block}.footer-bottom{border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;align-items:center;gap:20px;margin-top:24px;padding-top:14px;font-size:.72rem;display:flex}.social-links{gap:22px;margin-right:auto;display:flex}.footer-bottom a{padding-block:10px;display:inline-block}@media (width<=1100px){.desktop-nav{gap:16px;font-size:.76rem}.header-inner{gap:20px}.language-switch{padding-left:12px}.hero{grid-template-columns:1fr 240px;column-gap:35px}.project-body{padding:18px}.project-kind{min-height:3.3em}}@media (width<=900px){.shell{width:calc(100% - 64px)}.desktop-nav{display:none}.menu-toggle{place-items:center;display:grid}.mobile-nav:not([hidden]){grid-template-columns:1fr 1fr;gap:0 20px;max-height:calc(100dvh - 80px);padding-block:8px 20px;display:grid;overflow-y:auto}.mobile-nav a{border-top:1px solid var(--line);padding-block:12px;font-size:.9rem}.hero{grid-template-columns:1fr 190px;padding-top:60px}.hero-intro{font-size:.95rem}.project-grid{grid-template-columns:1fr;gap:22px}.project-card{grid-template-columns:170px 1fr;display:grid}.project-visual{border-bottom:none;border-right:1px solid var(--line)}.method-diagram{flex-direction:column;gap:14px}.method-diagram span+span:before{width:1px;height:15px;top:-15px;left:50%}.project-body{padding:25px}.project-kind,.project-link{min-height:0}.experience-row{grid-template-columns:185px 1fr;gap:30px}.skills-grid{gap:25px}}@media (width<=600px){.shell{width:calc(100% - 40px)}.header-inner{gap:8px;min-height:72px}.wordmark{font-size:.86rem}.header-actions{gap:5px}.language-switch{border-left:0;gap:1px;padding-left:0}.language-switch a{gap:4px;padding-inline:5px;font-size:.65rem}.flag{width:16px;height:12px}.hero{grid-template-columns:1fr;padding-top:46px}.hero h1{font-size:clamp(2.3rem,9vw,3.3rem)}.hero .eyebrow{font-size:.6rem}.hero-mark{grid-row:1;justify-self:start;width:112px;margin-bottom:28px}.hero-intro{font-size:.95rem;margin-top:20px!important}.hero-actions{gap:20px}.hero-bottom{flex-direction:column;align-items:start;gap:8px;margin-top:35px;padding-block:16px}.hero-bottom p{max-width:36ch}.section{padding-block:42px}.section-heading{margin-bottom:25px}.section-heading>p{font-size:.85rem}.section-title{gap:12px}.project-card{display:flex}.project-visual{border-right:none;border-bottom:1px solid var(--line);min-height:96px}.method-diagram{flex-direction:row;gap:9px}.method-diagram span+span:before{width:10px;height:1px;top:50%;left:-10px}.project-body{padding:22px}.archive-grid,.education-grid,.skills-grid,.personal-grid,.certifications{grid-template-columns:1fr;gap:28px}.experience-row{grid-template-columns:1fr;gap:12px;padding-block:23px}.entry-meta{flex-wrap:wrap;gap:4px 12px;font-size:.7rem;display:flex}.skills-grid{gap:24px}.personal-grid,.certifications{margin-top:28px;padding-top:26px}#footer{padding-top:30px}.footer-bottom{gap:8px 20px}.social-links{width:100%}}@media print{@page{margin:15mm}html{scroll-behavior:auto;font-size:14px}body{color:#000!important;background:#fff!important}.portfolio{font-size:10pt}.shell{width:100%}.site-header,.skip-link,.hero-mark,.hero-actions,.print-button,.more-projects,.project-visual,.certifications,.footer-bottom{display:none!important}.hero{padding-top:0;display:block}.hero h1{margin-top:12px;font-size:28pt}.hero-intro{max-width:none;font-size:10pt;line-height:1.5}.hero-bottom{margin-top:18px}.section{padding-block:20px}.section-heading{break-after:avoid;margin-bottom:18px}.section-title h2{font-size:18pt}.project-grid{display:block}.education-grid,.personal-grid{grid-template-columns:1fr 1fr;gap:24px;display:grid}.skills-grid{grid-template-columns:repeat(3,1fr);gap:20px;display:grid}.project-card{break-inside:avoid;background:0 0;border:0;margin-bottom:22px;display:block}.project-body{padding:0;display:block}.project-body>*+*{margin-top:8px}.project-body h3{font-size:13pt}.project-body>p:not(.eyebrow),.project-detail p,.entry-content ul,.muted,.skills-grid p,.personal-grid p{font-size:9pt;line-height:1.5}.tags{display:none}.project-link{min-height:0;padding-top:4px}.project-link a[href^=https]:after{content:" (" attr(href) ")";font-size:8pt}.project-link .text-link{min-height:0}.archive-grid{display:none!important}.experience-row{break-inside:avoid;grid-template-columns:150px 1fr;gap:20px;padding-block:14px}.education-grid article,.skills-grid>div,.personal-grid>div{break-inside:avoid;margin-bottom:18px}.education-grid article{border-left:0;padding-left:0}#footer{break-inside:avoid;background:#fff;padding-top:20px}#footer h2{font-size:18pt}.contact-email{margin-top:8px;font-size:11pt}}
