@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=IBM+Plex+Mono:wght@400;500&display=swap";:root{--paper:#fafaf9;--ink:#24272b;--muted:#666b72;--accent:#15705b;--line:#e1e3e2;--soft:#f0f2f0;--sans:"DM Sans", sans-serif;--mono:"IBM Plex Mono", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.75}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button{font:inherit}::selection{background:#d4e9df}img{max-width:100%;height:auto;display:block}h1,h2,h3,h4,p{margin:0}h1,h2,h3{letter-spacing:-.035em;line-height:1.2}h1{font-size:clamp(48px,6vw,76px);font-weight:550}h2{font-size:29px;font-weight:550}h3{font-size:22px;font-weight:550}svg{flex-shrink:0}.wrap{width:min(960px,100% - 80px);margin-inline:auto}.eyebrow,.section-note,.project-meta,.experience-date,.stack-line{font-family:var(--mono);letter-spacing:.055em;color:var(--muted);font-size:10px}.eyebrow{line-height:1.7}.site-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;height:94px;display:flex}.wordmark{font-family:var(--mono);letter-spacing:-.04em;font-size:14px;font-weight:500}.wordmark span{color:#959c98;padding-inline:3px}.site-header nav{font-family:var(--mono);gap:27px;font-size:11px;display:flex}.nav-contact{color:var(--accent)}.skip-link{z-index:10;background:#fff;padding:12px;position:fixed;top:-100px;left:20px}.skip-link:focus{top:12px}.hero{padding-block:64px 53px}.intro-heading{justify-content:space-between;align-items:center;gap:35px;display:flex}.hero h1{margin-block:14px 11px}.hero h1 span{color:var(--accent)}.role-line{color:var(--muted);letter-spacing:-.02em;font-size:19px}.portrait{object-fit:cover;filter:saturate(.55);outline:1px solid var(--line);border:5px solid #fff;border-radius:50%;width:124px;height:124px}.intro-body{color:#50565b;max-width:710px;margin-top:30px;font-size:15px;line-height:1.85}.intro-body p+p{margin-top:12px}.intro-body a{color:var(--ink);border-bottom:1px solid #96aca1}.intro-links{flex-wrap:wrap;align-items:center;gap:25px;margin-top:29px;display:flex}.intro-links a,.text-link,.project-links a{font-family:var(--mono);align-items:center;gap:7px;font-size:11px;display:inline-flex}.intro-links svg,.text-link svg,.project-links svg{width:15px;height:15px}.availability{color:var(--muted);font-family:var(--mono);margin-left:auto;font-size:10px}.status-dot{background:var(--accent);vertical-align:middle;border-radius:50%;width:6px;height:6px;margin-right:8px;display:inline-block}.section{border-top:1px solid var(--line);padding-block:45px 55px}.section-heading{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:30px;display:flex}.section-heading h2{margin-top:10px}.project-row{border-bottom:1px solid var(--line);grid-template-columns:1.3fr 1fr;align-items:center;gap:45px;padding-block:30px;display:grid}.project-row:first-child{padding-top:8px}.project-row:last-child{border-bottom:0;padding-bottom:0}.project-meta{align-items:center;gap:14px;font-size:9px;display:flex}.project-number{color:var(--accent)}.project-copy h3{margin-block:11px}.project-copy h3 a{align-items:center;gap:10px;display:inline-flex}.project-copy h3 svg{color:#88918a;width:18px;height:18px}.project-copy>p:not(.project-meta){color:var(--muted);max-width:390px;font-size:14px}.tags{flex-wrap:wrap;gap:7px;display:flex}.tags span{font-family:var(--mono);color:#5a645f;background:var(--soft);border:1px solid #e3e7e3;border-radius:3px;padding:2px 7px;font-size:10px}.project-copy .tags{margin-top:16px}.project-links{gap:23px;margin-top:20px;display:flex}.project-links a{font-size:10px}.project-image{border:1px solid var(--line);background:#eff1ef;border-radius:5px;padding:13px;transition:border-color .2s}.project-image:hover{border-color:#9aaea3}.project-image img{aspect-ratio:1.78;object-fit:cover;border:1px solid #dfe3e0;border-radius:2px;width:100%}.current-work{border-left:2px solid var(--accent);padding-left:26px}.work-heading{justify-content:space-between;align-items:center;gap:25px;display:flex}.work-heading h3{margin-block:9px 5px}.work-heading p:not(.eyebrow){color:var(--muted);font-size:12px}.work-intro{color:var(--muted);max-width:780px;margin-top:22px;font-size:14px}.engineering-notes{margin:24px 0 0}.engineering-notes>div{border-top:1px solid var(--line);grid-template-columns:170px 1fr;gap:24px;padding-block:14px;display:grid}.engineering-notes dt{font-family:var(--mono);font-size:11px;font-weight:500}.engineering-notes dd{color:var(--muted);margin:0;font-size:13px}.client-work{grid-template-columns:1fr 1fr;gap:40px;margin-top:35px;display:grid}.client-work article{border-top:1px solid var(--line);padding-top:23px}.client-work h3{margin-block:9px 11px;font-size:19px}.client-work p:not(.eyebrow):not(.stack-line){color:var(--muted);font-size:13px}.client-work .stack-line{margin-top:13px;font-size:9px;line-height:1.9}.about-grid{grid-template-columns:1fr 1fr;gap:65px;display:grid}.about-copy>p{color:var(--muted);margin-bottom:17px;font-size:14px}.toolbox{margin-block:30px}.toolbox h3{font-family:var(--mono);letter-spacing:0;margin-bottom:15px;font-size:11px}.experience{border-left:1px solid var(--line);padding-left:25px}.experience article{padding-bottom:28px;position:relative}.experience article:before{content:"";outline:4px solid var(--paper);background:#a6afa8;border-radius:50%;width:7px;height:7px;position:absolute;top:6px;left:-29px}.experience article:first-child:before{background:var(--accent)}.experience article:last-child{padding-bottom:0}.experience-date{font-size:9px}.experience h3{margin-block:6px;font-size:17px}.experience p:not(.experience-date){color:var(--muted);font-size:12px}.experience .experience-role{color:var(--ink);margin-bottom:9px;font-size:11px}.contact-section{grid-template-columns:1.25fr 1fr;align-items:center;gap:45px;display:grid}.contact-section h2{margin-block:12px 18px}.contact-section p:not(.eyebrow){color:var(--muted);font-size:13px}.contact-actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.contact-email{border-bottom:1px solid var(--line);overflow-wrap:anywhere;align-items:center;gap:10px;padding-bottom:8px;font-size:16px;display:flex}.contact-email svg{width:17px}.copy-email{font-family:var(--mono);color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:3px;padding:4px 9px;font-size:10px}.copy-email:hover{border-color:var(--accent);color:var(--accent)}.copy-status{color:var(--accent);font-size:11px}.site-footer{border-top:1px solid var(--line);align-items:center;gap:22px;padding-block:27px;display:flex}.site-footer .wordmark{font-size:11px}.site-footer p{color:var(--muted);font-family:var(--mono);font-size:9px}.site-footer>div{font-family:var(--mono);gap:20px;margin-left:auto;font-size:9px;display:flex}.case-study{padding-block:45px 70px}.case-study>.eyebrow{margin-block:45px 15px}.case-study h1{margin-bottom:22px;font-size:54px}.case-lead{max-width:750px;color:var(--muted);margin-bottom:23px;font-size:17px}.case-image{border:1px solid var(--line);border-radius:5px;width:100%;margin-block:35px}.case-details{grid-template-columns:2fr 1fr;gap:50px;margin-bottom:40px;display:grid}.case-details h2{margin-bottom:20px;font-size:26px}.case-details p,.case-details li{color:var(--muted);font-size:14px}.case-details li{margin-block:10px}.case-details aside{border-left:1px solid var(--line);padding-left:25px}.case-details aside p{margin-bottom:20px}.button{font-family:var(--mono);border:1px solid var(--line);border-radius:3px;align-items:center;gap:14px;padding:11px 16px;font-size:11px;display:inline-flex}.button:hover{border-color:var(--accent)}.case-study>.button{margin-top:25px}@media (width<=760px){.wrap{width:calc(100% - 40px)}.site-header{height:78px}.site-header nav{gap:17px;font-size:10px}.wordmark{font-size:12px}.hero{padding-block:40px}.hero h1{font-size:53px}.role-line{font-size:16px}.portrait{border-width:3px;width:84px;height:84px}.intro-heading{gap:18px}.intro-heading .eyebrow{font-size:8px}.intro-body{margin-top:24px;font-size:14px}.intro-links{gap:22px}.availability{flex-basis:100%;margin-left:0}.section{padding-block:35px 42px}.section-heading{flex-direction:column;align-items:flex-start;gap:15px}.section-heading h2{font-size:27px}.project-row{grid-template-columns:1.2fr 1fr;gap:25px}.project-copy h3{font-size:21px}.project-image{padding:8px}.engineering-notes>div{grid-template-columns:140px 1fr;gap:15px}.about-grid{gap:35px}.contact-section{grid-template-columns:1fr;gap:27px}.site-footer{flex-wrap:wrap;gap:17px}.site-footer>div{width:100%;margin-left:0}}@media (width<=540px){.site-header nav{gap:13px}.wordmark{font-size:11px}.intro-heading{align-items:flex-start;padding-top:1px;position:relative}.intro-heading>div{width:100%}.intro-heading .eyebrow{max-width:195px}.hero h1{margin-top:45px;font-size:48px}.portrait{width:60px;height:60px;position:absolute;top:0;right:0}.role-line{font-size:14px}.project-row{grid-template-columns:1fr;gap:22px}.project-image{max-width:100%}.project-meta{font-size:8px}.project-copy>p:not(.project-meta){max-width:none}.current-work{padding-left:17px}.work-heading{flex-direction:column;align-items:flex-start;gap:14px}.engineering-notes>div{grid-template-columns:1fr;gap:7px}.client-work,.about-grid{grid-template-columns:1fr;gap:28px}.experience{margin-left:4px}.contact-email{font-size:15px}.case-study h1{font-size:39px}.case-lead{font-size:15px}.case-details{grid-template-columns:1fr;gap:25px}.case-details aside{border-left:0;border-top:1px solid var(--line);padding:20px 0 0}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}
