
:root{--paper:#f4f3ed;--ink:#172a24;--muted:#59665e;--green:#142923;--lime:#d4ef86;--line:#d5d9cd}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif;line-height:1.65}a{color:inherit;text-decoration:none}a,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,summary:focus-visible{outline:3px solid #789746;outline-offset:6px}header,section,footer{padding-left:max(6vw,calc((100vw - 1320px)/2));padding-right:max(6vw,calc((100vw - 1320px)/2))}header{height:90px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:14px;font-weight:700;font-size:15px}.logo{font-size:29px;letter-spacing:-2px}nav{display:flex;gap:32px;font-size:13px}nav a:hover,.dark:hover{color:#658138}.hero{background:var(--green);color:var(--paper);padding-top:62px}.eyebrow,.label{font-size:11px;letter-spacing:1.6px;font-weight:600}.eyebrow{color:var(--lime);display:flex;gap:12px;align-items:center}.dot{width:7px;height:7px;border-radius:50%;background:var(--lime)}h1,h2,h3,p{margin:0}h1{font-size:clamp(48px,7.2vw,104px);line-height:1.05;letter-spacing:-.055em;font-weight:500;margin:30px 0 36px}em{font-family:Georgia,serif;font-weight:400}h1 em,.period{color:var(--lime)}.hero-bottom{display:grid;grid-template-columns:1.2fr 1fr;gap:90px}.background{font-size:20px;color:var(--lime);margin-bottom:16px}.intro{font-size:16px;max-width:570px;color:#c1cbc3}.actions{display:flex;align-items:center;gap:30px;margin-top:30px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:35px;min-height:54px;padding:12px 23px;font-size:14px;font-weight:600;border-radius:3px;transition:background .2s}.lime{background:var(--lime);color:var(--green)}.lime:hover{background:#e5ffa8}.text-link{font-size:13px;border-bottom:1px solid;padding:7px 0}.system{align-self:end;border-top:1px solid #496052}.system-head{display:flex;justify-content:space-between;font-size:9px;letter-spacing:1.5px;color:#bbc9bf;padding:15px 0}.system>div:not(:first-child){display:grid;grid-template-columns:30px 1fr;align-items:center;border-top:1px solid #354c3f;padding:14px 0;column-gap:10px}.system b{font-size:17px;font-weight:400}.system>div>span:first-child:not(:last-child){color:#aebcaf}.system small{grid-column:2;color:#aebcaf;font-size:9px;letter-spacing:1px}.hero-footer{display:flex;justify-content:space-between;border-top:1px solid #354c3f;margin-top:58px;padding:20px 0;font-size:10px;color:#c1cbc3;letter-spacing:.7px}.section{padding-top:100px;padding-bottom:100px}.split{display:grid;grid-template-columns:1fr 2.25fr;gap:45px}.label{color:var(--muted);margin-bottom:27px}h2{font-size:clamp(33px,4vw,56px);line-height:1.12;letter-spacing:-.04em;font-weight:500;margin-bottom:28px}.large{font-size:21px;line-height:1.55;margin-bottom:22px}p{color:var(--muted)}.facts{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);margin-top:37px;padding-top:25px;gap:20px}.facts strong,.facts span{display:block}.facts strong{font-size:20px;font-weight:500}.facts span{font-size:12px;margin-top:8px;color:var(--muted)}.quant{background:#e5e9dd}.quant-grid{display:grid;grid-template-columns:1fr 1.3fr;gap:65px}.big-number{font-size:155px;letter-spacing:-12px;line-height:1.1}.big-number span{display:block;font-size:17px;letter-spacing:0;margin-top:12px}.quant-caption{font-size:13px;margin-top:18px}.quant-note{margin-top:28px;padding-top:20px;border-top:1px solid #c6cebc;font-size:12px;letter-spacing:.8px}.section-heading{display:flex;justify-content:space-between;gap:35px;align-items:center;margin-bottom:22px}.section-heading p{font-size:14px}.skills{display:grid;grid-template-columns:repeat(3,1fr);gap:35px}.skills article{border-top:1px solid var(--ink);padding-top:22px}.skills article>span{font-size:10px;letter-spacing:1.2px;color:var(--muted)}h3{font-size:25px;letter-spacing:-.6px;line-height:1.25;font-weight:500}.skills h3{margin:28px 0 16px}.skills p{font-size:14px;line-height:2}.projects-section{background:#eeeee6}.projects{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;align-items:start}.project{background:var(--paper);border:1px solid var(--line);padding:30px}.project-top{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:10px;margin-bottom:35px;text-transform:uppercase;letter-spacing:.8px}.number{font-family:Georgia,serif;font-size:26px;color:#83917a}.project h3{font-size:32px;margin-bottom:15px}.project>p{font-size:15px;min-height:50px}.tech{font-family:monospace;font-size:11px;margin:25px 0;color:var(--muted)}summary{cursor:pointer;border-top:1px solid var(--line);padding-top:18px;font-size:13px;list-style:none;display:flex;justify-content:space-between}summary::-webkit-details-marker{display:none}details[open] summary span{transform:rotate(90deg)}.details h4{font-size:12px;margin:20px 0 5px}.details p{font-size:14px}.project-note{font-size:12px;margin-top:22px}.service{display:grid;grid-template-columns:25px 1fr 20px;gap:20px;border-top:1px solid var(--line);padding:27px 0}.service>span{font-size:12px;color:var(--muted)}.service p{margin-top:12px;font-size:14px}.process{font-size:12px;margin-top:20px}.contact{padding-top:75px;padding-bottom:40px;background:var(--green);color:var(--paper)}.contact .label{color:var(--lime)}.contact h2{font-size:clamp(43px,6vw,85px);margin-top:45px}.contact em{color:var(--lime)}.contact-bottom{display:flex;justify-content:space-between;align-items:center;gap:30px}.contact p{color:#c1cbc3;font-size:15px}.contact-links{display:flex;gap:35px;border-top:1px solid #496052;margin-top:50px;padding-top:25px;font-size:12px}footer{display:flex;justify-content:space-between;gap:20px;font-size:11px;padding-top:25px;padding-bottom:25px}.skip{position:absolute;left:15px;top:-80px;background:var(--lime);padding:10px;z-index:5}.skip:focus{top:10px}@media(min-width:1600px){header,section,footer{padding-left:calc((100vw - 1320px)/2);padding-right:calc((100vw - 1320px)/2)}}@media(max-width:950px){.hero-bottom{gap:40px}.split{grid-template-columns:1fr}.quant-grid{gap:35px}.big-number{font-size:120px}.actions{gap:20px;flex-wrap:wrap}nav{gap:20px}.section{padding-top:70px;padding-bottom:70px}.skills{gap:22px}}@media(max-width:620px){header{height:auto;min-height:100px;align-items:flex-start;flex-direction:column;padding-top:15px;padding-bottom:15px;gap:14px}nav{width:100%;justify-content:space-between;gap:12px;font-size:12px}.hero{padding-top:40px}h1{font-size:clamp(40px,9.2vw,57px);margin:28px 0}.hero-bottom,.quant-grid,.skills,.projects{grid-template-columns:1fr}.hero-bottom{gap:36px}.hero-footer{gap:16px;flex-wrap:wrap;margin-top:35px}.hero-footer span:last-child{display:none}.background{font-size:16px}.intro{font-size:15px}.section{padding-top:55px;padding-bottom:55px}.split{gap:0}.large{font-size:18px}.facts{gap:12px}.facts strong{font-size:17px}.facts span{font-size:11px}.big-number{font-size:110px}.section-heading{align-items:flex-start;flex-direction:column;gap:0;margin-bottom:28px}.section-heading h2{margin-bottom:15px}.skills{gap:30px}.skills h3{margin-top:18px}.project{padding:23px}.project h3{font-size:29px}.project-top{margin-bottom:23px}.contact{padding-top:50px}.contact-bottom{flex-direction:column;align-items:flex-start}.contact-links{flex-direction:column;gap:12px}footer{flex-wrap:wrap}footer span:nth-child(2){display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}@media print{.hero,.contact{background:white;color:black}.hero p,.contact p{color:#333}.hero em,.contact em{color:#333}.section{padding-top:25px;padding-bottom:25px}.projects{display:block}.project{break-inside:avoid;margin:12px 0}nav{display:none}}

.teams{background:#172a24;color:var(--paper)}.teams .label{color:var(--lime)}.teams-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:80px}.teams p{color:#c1cbc3;max-width:620px}.teams .large{color:var(--paper)}.outline{margin-top:26px;color:var(--paper);border:1px solid #698074}.outline:hover{background:#243b33}.team-list{border-top:1px solid #496052}.team-list>div{display:grid;grid-template-columns:35px 1fr;gap:8px;border-bottom:1px solid #496052;padding:20px 0}.team-list span,.team-list small{color:#b8c8bc;font-size:11px}.team-list b{font-size:20px;font-weight:500}.team-list small{grid-column:2}.evidence-section{background:#f4f3ed}.evidence-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.evidence-grid article{background:#eeeee6;border:1px solid var(--line)}.evidence-grid img{display:block;width:100%;aspect-ratio:1.65;object-fit:cover;border-bottom:1px solid var(--line)}.evidence-grid article>div{padding:23px}.evidence-grid span{font-size:10px;letter-spacing:1.1px;color:var(--muted)}.evidence-grid h3{margin:19px 0 10px}.evidence-grid p{font-size:14px;margin-bottom:20px}@media(max-width:950px){.teams-grid{grid-template-columns:1fr;gap:35px}.evidence-grid{grid-template-columns:1fr 1fr}}@media(max-width:620px){.evidence-grid{grid-template-columns:1fr}.team-list b{font-size:18px}}
.resume-links{display:flex;gap:22px;flex-wrap:wrap;margin-top:18px}.light{color:var(--paper)}.resume-section{background:#e8ebe2}.resume-panel{display:grid;grid-template-columns:1.3fr .7fr;align-items:end;gap:50px}.resume-panel h2{margin:0 0 18px}.resume-panel p{max-width:600px}.resume-downloads{display:grid;justify-items:start;gap:18px}.resume-downloads>a:not(.button){font-size:13px;border-bottom:1px solid var(--ink);padding-bottom:3px}.project-links{display:flex;flex-wrap:wrap;align-items:center;gap:15px;margin:20px 0}.project-links>a:not(.button),.project-outlink{font-size:12px;border-bottom:1px solid currentColor;padding-bottom:3px}.project-links .button{min-height:42px;padding:9px 14px;font-size:12px}.featured-project>p{min-height:78px}.featured-project .tech{margin:16px 0 20px}.featured-project details{margin-top:18px}.featured-project .details p+p{margin-top:10px}@media(max-width:760px){.resume-panel{grid-template-columns:1fr;gap:25px}.resume-downloads{gap:14px}.featured-project>p{min-height:0}.project-links{gap:13px}.project-links .button{width:100%;justify-content:center}}
.project-shot{display:block;width:100%;height:190px;object-fit:cover;object-position:top center;border:1px solid var(--line);margin:-12px 0 23px;background:#e9ece5}.tour-link{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:26px;padding:17px 0;border-top:1px solid var(--line);font-size:12px}.tour-link span{font-size:10px;letter-spacing:1px;color:var(--muted)}.tour-link a{border-bottom:1px solid var(--ink);padding-bottom:3px}@media(max-width:620px){.project-shot{height:170px}.tour-link{align-items:flex-start;flex-direction:column;gap:8px}}

.demo-guide{margin:20px 0 24px;padding:19px 20px;background:#e8ebe2;border-left:3px solid #789746}.demo-guide h4{font-size:14px;margin:0 0 10px}.demo-guide ol{margin:0;padding-left:20px;font-size:13px;line-height:1.7;color:var(--ink)}.demo-guide li+li{margin-top:5px}.demo-guide code{font-size:12px}.demo-warning{font-size:12px;line-height:1.6;margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}@media(max-width:620px){.demo-guide{padding:16px}.demo-guide ol{font-size:12px}}

.resume-downloads details{width:100%;max-width:320px}
.resume-downloads summary{font-size:12px;color:var(--muted)}
.resume-extra{display:grid;justify-items:start;gap:13px;padding:14px 0 2px}
.resume-extra a{font-size:12px;border-bottom:1px solid var(--ink);padding-bottom:3px}
/* Lightweight legal and privacy information pages. */
.legal-page{background:var(--paper)}.legal-header{height:76px}.legal-main{max-width:920px;margin:0 auto;padding:72px 6vw 42px}.legal-main h1{font-size:clamp(38px,6vw,64px);line-height:1.08;letter-spacing:-.04em;margin:0 0 30px}.legal-main h2{font-size:22px;margin:34px 0 10px}.legal-main p{max-width:760px;margin:0 0 15px;color:#35483e;font-size:15px;line-height:1.75}.legal-main a{border-bottom:1px solid currentColor}.legal-main ul{padding-left:24px;margin:0 0 18px;color:#35483e}.legal-main li{padding:4px 0;line-height:1.65}.legal-footer{margin-top:0;background:var(--green);color:#c1cbc3}.legal-footer a{border-bottom:1px solid currentColor}@media(max-width:700px){.legal-header{height:auto;min-height:70px;gap:18px}.legal-header nav{gap:16px}.legal-main{padding:48px 5vw 32px}.legal-main h1{font-size:40px}.legal-main h2{font-size:20px}}
.more-projects{grid-column:1/-1;margin-top:12px;border-top:1px solid var(--line);padding:22px 0}.more-projects>summary{border:0;padding:8px 0;font-size:14px;font-weight:600}.more-projects .projects{margin-top:20px}.more-projects[open]>summary span{transform:rotate(90deg)}.demo-caveats{margin-top:10px}.demo-caveats summary{font-size:12px;color:var(--muted);padding-top:10px}.demo-caveats .demo-warning{padding-top:10px}
