:root{color:#101316;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--paper:#fcfbf7;--ink:#101316;--muted:#636675;--green:#006653;--line:#d0d1d0;--serif:Georgia, "Times New Roman", serif;background:#fff;font-family:Arial,Helvetica,sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0}a{color:var(--green);text-decoration:none}button,input,textarea{font:inherit}a:focus-visible{outline:2px solid var(--green);outline-offset:5px;border-radius:2px}a:hover{color:#003f34}::selection{color:var(--ink);background:#cee2d8}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400}img,svg{display:block}img{max-width:100%}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:10;background:var(--paper);border:1px solid var(--green);padding:12px 18px;position:fixed;top:12px;left:20px;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.portfolio-shell{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,2.4fr) minmax(0,1fr);gap:34px 32px;width:calc(100% - 96px);max-width:1240px;height:100dvh;margin-inline:auto;padding-block:24px;display:grid}.profile-header{flex-wrap:wrap;grid-column:1/-1;justify-content:space-between;align-items:center;gap:20px 28px;min-width:0;display:flex}.identity{min-width:0;color:var(--ink);align-items:center;gap:28px;display:flex}.identity:hover{color:var(--green)}.avatar{border-radius:50%;flex:0 0 88px;width:88px;height:88px;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.identity-copy{gap:8px;min-width:0;display:grid}.profile-name{letter-spacing:-.8px;font-size:34px;font-weight:700;line-height:1.1}.profile-tagline{color:#25334e;text-transform:uppercase;letter-spacing:2.4px;word-spacing:3px;font-size:12px;line-height:1.5}.profile-statement{color:var(--muted);font-size:15px;font-style:italic;line-height:1.5}.profile-links{flex-wrap:wrap;align-items:center;gap:22px;display:flex}.profile-link{font:16px/1.5 var(--serif);color:var(--green);white-space:nowrap;align-items:center;gap:9px;display:inline-flex}.profile-link svg{width:22px;height:22px}.profile-link:hover span{text-underline-offset:5px;text-decoration:underline}button.profile-link{cursor:pointer;background:0 0;border:0;padding:0}button.profile-link:disabled{cursor:wait;opacity:.65}.download-error{color:#9b2637;font-size:13px}.unavailable{cursor:help;opacity:.7}.nav-divider{background:var(--line);width:1px;height:22px;margin-inline:-4px}.main-content{scrollbar-width:thin;scrollbar-color:#c4c5c0 transparent;scrollbar-gutter:stable;min-width:0;min-height:0;padding:0 24px 24px 0;overflow-y:auto}.main-content:focus{outline:none}h1{letter-spacing:-1px;font-size:38px;line-height:1.15}.section-label{text-transform:uppercase;letter-spacing:2.8px;border-bottom:1px solid var(--line);padding-bottom:7px;font:600 11px/1.5 Arial,Helvetica,sans-serif}.work-timeline{margin:2px 0 0;padding:0 0 0 24px;list-style:none;position:relative}.work-timeline:before{content:"";background:#dce7e9;width:1px;position:absolute;top:28px;bottom:42px;left:4px}.work-entry{border-bottom:1px solid #dde1e6;grid-template-columns:170px minmax(0,1fr);gap:7px;padding:15px 0;display:grid;position:relative}.work-entry:before{content:"";background:#b6d8d9;border:1px solid #418c91;border-radius:50%;width:9px;height:9px;position:absolute;top:28px;left:-24px}.work-entry:last-child{border-bottom:0}.work-meta{flex-direction:column;gap:2px;display:flex}.work-date{color:var(--ink);font:600 14px/1.5 Arial,Helvetica,sans-serif}.work-location,.work-arrangement{color:var(--muted);font-size:13px;line-height:1.5}.work-location{margin-top:2px}.work-content{min-width:0}.work-heading{align-items:flex-start;gap:24px;display:flex}.work-heading>div:last-child{min-width:0;margin-top:-3px}.company-logo{width:40px;height:40px;color:var(--green);letter-spacing:.3px;background:#edf1ed;border:1px solid #dfe5df;border-radius:5px;flex:0 0 40px;place-items:center;font-size:11px;font-weight:700;display:grid;overflow:hidden}.company-logo img{object-fit:contain;background:#fff;width:100%;height:100%}.work-heading h3{letter-spacing:-.25px;font:600 15px/1.25 Arial,Helvetica,sans-serif}.work-organisation{color:var(--green);margin-top:1px;font-size:13px;line-height:1.45}.work-organisation a{text-underline-offset:3px;-webkit-text-decoration:underline #a5bcb1;text-decoration:underline #a5bcb1}.employment-type{color:var(--muted);font-size:12px}.employment-divider{margin-inline:.35em}.work-bullets{color:var(--muted);margin:0 0 0 49px;padding:0 0 0 15px;font-size:13px;line-height:1.5}.work-bullets li{white-space:pre-line}.work-bullets li+li{margin-top:3px}.work-bullets li::marker{color:var(--green)}.additional-experience{margin-top:0}.additional-experience summary{color:var(--ink);cursor:pointer;background:#f1f6f5;border-radius:12px;align-items:center;gap:16px;padding:8px 18px;list-style:none;display:flex}.additional-experience summary::-webkit-details-marker{display:none}.additional-experience summary:hover{background:#e8f1ef}.additional-experience summary:focus-visible{outline:2px solid var(--green);outline-offset:3px}.additional-experience summary strong{font-size:14px;line-height:1.5;display:block}.additional-experience-description{color:var(--muted);margin-top:2px;font-size:12px;line-height:1.5;display:block}.experience-chevron{width:18px;height:18px;color:var(--green);flex:0 0 18px;transition:transform .16s}.additional-experience[open] .experience-chevron{transform:rotate(90deg)}.resume-section{margin-top:8px}.poster-section{margin-top:16px}.poster-event{color:var(--muted)}.publication-list{gap:10px;margin:10px 0 0;padding:0;font-size:13px;line-height:1.55;list-style:none;display:grid}.publication-authors{color:var(--muted)}.publication-list a{overflow-wrap:anywhere;font-size:12px}.publication-list a:hover{text-underline-offset:3px;text-decoration:underline}.project-sidebar{flex-direction:column;min-width:0;min-height:0;display:flex}.project-sidebar>.section-label{flex-shrink:0}.project-filters{flex-wrap:wrap;flex-shrink:0;gap:8px;padding:14px 0 2px;display:flex}.project-filter{color:#4b637e;cursor:pointer;background:0 0;border:1px solid #d5dee6;border-radius:20px;padding:7px 12px;font-size:12px;line-height:1.4}.project-filter:hover{border-color:var(--green);color:var(--green)}.project-filter[aria-pressed=true]{border-color:var(--green);background:var(--green);color:#fff}.project-filter:focus-visible{outline:2px solid var(--green);outline-offset:3px}.project-list{scrollbar-width:thin;scrollbar-color:#bdc6cf transparent;scrollbar-gutter:stable;overscroll-behavior-y:contain;align-content:start;gap:15px;min-height:0;margin:0 0 0 -12px;padding:14px 10px 24px 12px;display:grid;overflow-y:auto}.project-group{color:var(--green);letter-spacing:.9px;text-transform:uppercase;grid-column:1/-1;margin-top:0;font:600 14px/1.5 Arial,Helvetica,sans-serif}.project-group:first-child{margin-top:0}.project-card{color:var(--ink);display:block;position:relative}.thumbnail{border:1px solid #e1e6ec;border-radius:6px;height:124px;position:relative;overflow:hidden}.thumbnail img{object-fit:cover;width:100%;height:100%;transition:transform .28s;position:absolute;inset:0}.project-card:hover .thumbnail img{transform:scale(1.035)}.project-card-copy{min-width:0;padding-top:7px}.project-card-title{justify-content:space-between;align-items:baseline;gap:9px;display:flex}.project-card h3{letter-spacing:-.4px;font-size:17px;line-height:1}.open-project{color:var(--green);font:12px/1.4 var(--serif);white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.open-project svg{flex-shrink:0;width:17px;height:17px;transition:transform .18s}.project-card:hover .open-project svg{transform:translate(3px)}.project-card p{color:var(--muted);margin-top:5px;font-size:13px;line-height:1.55}.project-card-tags{flex-wrap:wrap;gap:6px;margin:5px 0 0;padding:0;list-style:none;display:flex}.project-card-tags li{color:#4b637e;background:#edf2f7;border-radius:8px;max-width:100%;padding:5px 8px;font-size:10px;line-height:1.4}.project-card.selected .thumbnail{outline:2px solid var(--green);outline-offset:-2px}.project-card.selected h3{color:var(--green)}.project-card.selected:before{content:"";background:var(--green);width:2px;position:absolute;top:0;bottom:0;left:-10px}.project-toolbar{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.back-link{text-transform:none;letter-spacing:0;align-items:center;gap:5px;font:12px/1.4 Arial,Helvetica,sans-serif;display:inline-flex}.back-link:hover{text-underline-offset:4px;text-decoration:underline}.eyebrow{color:var(--muted);text-transform:uppercase;letter-spacing:1.3px;margin-bottom:8px;font:10px/1.5 Arial,Helvetica,sans-serif;display:block}.project-heading{margin-top:16px}.project-heading .eyebrow{margin-bottom:5px}.project-heading h1{font-size:34px}.project-lead{color:var(--muted);margin-top:8px;font-size:17px;line-height:1.5}.project-featured-link{color:#291326;background:linear-gradient(105deg,#ff9b45,#ff6769 46%,#ff4fa3);border-radius:5px;justify-content:space-between;align-items:center;gap:18px;margin-top:18px;padding:16px 20px;transition:box-shadow .18s;display:flex}.project-featured-link strong{font-size:17px;line-height:1.4;display:block}.project-featured-link>span>span{margin-top:4px;font-size:12px;line-height:1.5;display:block}.project-featured-link svg{flex-shrink:0}.project-featured-link:hover{color:#291326;background:linear-gradient(105deg,#ffad5c,#ff7782 46%,#ff65b1);box-shadow:0 4px 14px #e9417e2e}.project-featured-link:focus-visible{outline-offset:4px;outline:2px solid #c42b73}.project-divider{border:0;border-top:1px solid #e0e0da;margin:18px 0}.project-opening{gap:18px;margin:18px 0 24px;display:grid}.project-opening.compact{grid-template-columns:minmax(0,1fr) minmax(150px,32%);align-items:start;gap:24px}.project-introduction{font-size:15px;line-height:1.7}.project-figure{min-width:0}.figure-link{background:#f8f9f6;border:1px solid #e0e4df;display:block;position:relative}.project-figure img{object-fit:contain;width:100%;height:auto}.project-hero img{max-height:420px}.compact .project-hero img{max-height:280px}.project-figure figcaption{color:var(--muted);margin-top:7px;font-size:11px;line-height:1.5}.figure-expand{color:var(--green);opacity:0;background:#ffffffed;padding:4px 7px;font-size:10px;transition:opacity .15s;position:absolute;bottom:8px;right:8px}.figure-link:hover .figure-expand,.figure-link:focus-visible .figure-expand{opacity:1}.project-results{border-block:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0;padding:14px 0;display:grid}.project-results>div{flex-direction:column;gap:5px;display:flex}.project-results dt{color:var(--muted);font-size:11px;line-height:1.5}.project-results dd{color:var(--green);order:-1;margin:0;font-size:31px;font-weight:600;line-height:1.1}.result-note{color:var(--muted);margin-top:8px;font-size:11px;line-height:1.5}.project-tags{flex-wrap:wrap;gap:7px;margin:24px 0 0;padding:0;list-style:none;display:flex}.project-tags li{color:var(--green);border:1px solid #d4dfd8;border-radius:3px;padding:4px 9px;font-size:11px;line-height:1.4}.project-sections{gap:20px;display:grid}.project-sections h2{letter-spacing:-.35px;margin-bottom:7px;font-size:22px;line-height:1.25}.project-sections p{color:#555d64;font-size:14px;line-height:1.7}.project-detail[data-format=website] .project-sections section,.project-detail[data-format=compact] .project-sections section{border-top:1px solid #e0e0da;grid-template-columns:155px minmax(0,1fr);gap:20px;padding-top:16px;display:grid}.project-gallery-section{margin-top:26px}.project-gallery{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:18px;margin-top:14px;display:grid}.project-gallery.single{grid-template-columns:1fr}.project-gallery.single img{max-height:560px}.project-figure.portrait img{width:auto;max-height:480px;margin-inline:auto}.image-lightbox{color:#fff;background:0 0;border:0;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:20px;position:fixed;inset:0;overflow:auto}.image-lightbox[open]{place-items:center;display:grid}.image-lightbox::backdrop{background:#0a1116e6}.image-lightbox-content{gap:12px;min-width:0;max-width:100%;display:grid}.image-lightbox .image-lightbox-content img{object-fit:contain;width:auto;max-width:100%;height:auto;max-height:calc(100dvh - 160px);margin-inline:auto;display:block}.image-lightbox-close{color:#fff;min-height:44px;font:inherit;cursor:pointer;background:#17232a;border:1px solid #ffffff70;border-radius:5px;justify-self:end;align-items:center;gap:10px;padding:8px 14px;font-size:14px;display:inline-flex}.image-lightbox-close span{font-size:24px;line-height:1}.image-lightbox-close:hover{background:#31424d}.image-lightbox-close:focus-visible{outline-offset:3px;outline:2px solid #fff}.image-lightbox-caption{color:#e1e6e9;text-align:center;max-width:85ch;margin:0 auto;font-size:13px;line-height:1.5}html:has(.image-lightbox[open]){overflow:hidden}.project-links{flex-wrap:wrap;gap:12px 24px;margin-top:22px;font-size:12px;display:flex}.project-links a{text-underline-offset:4px;align-items:center;gap:7px;-webkit-text-decoration:underline #a5bcb1;text-decoration:underline #a5bcb1;display:inline-flex}.project-links svg{flex-shrink:0}.related-projects{gap:12px;margin-top:28px;display:grid}.related-projects a{justify-content:space-between;align-items:center;gap:14px;font-size:13px;display:flex}.next-project{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:18px;margin-top:30px;padding-top:18px;display:flex}.next-title{font-size:20px;font-weight:600;line-height:1.3;display:block}.next-project .eyebrow{margin-bottom:7px}.error-page p:not(.eyebrow){color:var(--muted);margin:18px 0;line-height:1.6}@media (width>=901px) and (width<=1100px){.portfolio-shell{grid-template-columns:minmax(0,2.4fr) minmax(260px,1fr);gap:28px 26px;width:calc(100% - 64px)}.profile-name{font-size:27px}.profile-links{gap:17px}.work-entry{grid-template-columns:145px minmax(0,1fr)}.work-heading{gap:14px}.work-bullets{margin-left:49px}.employment-type{display:block}.employment-divider{display:none}.project-card h3{font-size:16px}}@media (width<=900px){.portfolio-shell{width:100%;max-width:760px;height:auto;padding:30px 32px 0;display:block}.profile-header{gap:20px;margin-bottom:30px}.profile-links{padding-left:116px}.main-content{padding:0 0 24px;overflow:visible}.project-sidebar{border-top:1px solid var(--line);margin-top:8px;padding:24px 0 40px}.project-list{scrollbar-gutter:auto;gap:15px;margin:0;padding:14px 0 0;overflow:visible}.thumbnail{aspect-ratio:3;height:auto}.project-card.selected:before{left:-9px}}@media (width<=600px){.portfolio-shell{padding:24px 22px 0}.profile-header{margin-bottom:28px}.avatar{flex-basis:58px;width:58px;height:58px}.identity{align-items:flex-start;gap:16px}.identity-copy{gap:7px}.profile-name{font-size:23px}.profile-tagline{letter-spacing:1.4px;word-spacing:1px;font-size:10px}.profile-statement{font-size:13px}.profile-links{justify-content:space-between;gap:8px;width:100%;padding-left:0}.profile-link{gap:7px;font-size:15px}.profile-link svg{width:18px;height:18px}.nav-divider{height:20px;margin:0}.work-entry{grid-template-columns:1fr;gap:10px;padding-block:13px}.work-meta{flex-flow:wrap;align-items:baseline;gap:3px 10px;padding:0}.work-date{flex-basis:100%}.work-location{margin:0}.work-heading h3{font-size:16px}.work-heading{gap:14px}.work-bullets{margin-left:49px}.work-entry:before,.work-timeline:before{top:20px}.employment-type{display:block}.employment-divider{display:none}.project-list{grid-template-columns:1fr}.thumbnail{aspect-ratio:auto;height:124px}.project-card h3{font-size:16px}.project-card p{font-size:12px}.project-card-tags{margin-top:5px}.section-label{letter-spacing:2px;font-size:12px}.project-toolbar{flex-wrap:wrap;gap:6px 16px}.project-toolbar>span{font-size:10px}.project-heading h1{font-size:29px}.project-lead{font-size:17px}.project-opening.compact{grid-template-columns:1fr}.compact .project-hero{max-width:300px}.project-results{gap:12px}.project-results dd{font-size:26px}.project-detail[data-format=website] .project-sections section,.project-detail[data-format=compact] .project-sections section{grid-template-columns:1fr;gap:0}.project-gallery{grid-template-columns:1fr;gap:20px}h1{font-size:33px}}@media (width<=380px){.profile-links{grid-template-columns:repeat(2,max-content);justify-content:start;gap:10px 24px;display:grid}.nav-divider{display:none}}@media (width<=359px){.portfolio-shell{padding-inline:18px}.profile-name{font-size:21px}.profile-tagline{font-size:9px}.profile-link{font-size:14px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
