@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Manrope:wght@400;500;600;650;700;800&display=swap');
:root{--bg:#f5f4ef;--ink:#253a30;--muted:#727870;--line:#d7dbd2;--green:#284f3c}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--bg);color:var(--ink);font-family:'DM Sans',Arial,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}a,button{touch-action:manipulation}a:focus-visible,button:focus-visible{outline:2px solid #9a5b38;outline-offset:6px}::selection{background:#ceddbe}.page{max-width:1280px;padding:0 72px;margin:auto}header{height:114px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.logo{font-family:Manrope,sans-serif;font-size:36px;letter-spacing:-3px;font-weight:800}.logo span{color:#89a484}nav{display:flex;gap:34px;align-items:center;font-size:13px}nav>a:hover,.text-link:hover,footer a:hover{text-decoration:underline;text-underline-offset:5px}.languages{display:flex;align-items:center;gap:8px;font-size:11px;margin-left:16px}.languages button{background:none;border:0;padding:10px 3px;color:var(--muted)}.languages button[aria-pressed=true]{color:var(--ink);font-weight:700}.languages span{color:#bdc2b7}.hero{display:grid;grid-template-columns:1.3fr 1fr;gap:70px;align-items:center;padding:75px 0 67px}.eyebrow{font-family:'DM Sans',sans-serif;font-size:10px;font-weight:600;letter-spacing:2px;display:flex;align-items:center;gap:10px}.dot{width:6px;height:6px;flex-shrink:0;background:#7d9770;border-radius:50%}h1{font-family:Manrope,Arial,sans-serif;font-size:clamp(72px,8.3vw,108px);letter-spacing:-7px;line-height:1.02;font-weight:500;margin:30px 0 25px}.name-dot{color:#829d74}.lead{font-size:24px;line-height:1.35;letter-spacing:-.6px;margin:0 0 17px;white-space:pre-line}.bio{font-size:14px;line-height:1.8;color:var(--muted);max-width:386px;margin:0}.hero-actions{display:flex;align-items:center;gap:31px;margin-top:28px;font-size:13px}.primary{background:var(--green);color:#fff;padding:16px 22px;display:flex;gap:36px;align-items:center;border-radius:3px;transition:background .2s,transform .2s}.primary:hover{background:#173e2b;transform:translateY(-2px)}.text-link span{margin-left:9px}.portrait-area{width:100%;max-width:366px;justify-self:end;padding-top:30px;position:relative}.portrait-frame{position:relative;background:#e0e4da;padding:16px 16px 0;border-radius:180px 180px 3px 3px;overflow:hidden;aspect-ratio:1/1.12}.portrait-frame img{width:100%;height:100%;object-fit:cover;border-radius:170px 170px 0 0;filter:grayscale(100%);display:block;object-position:center}.portrait-caption{display:flex;justify-content:space-between;font-size:9px;letter-spacing:1px;margin-top:18px;color:var(--muted)}.note{font-family:Georgia,serif;font-style:italic;font-size:18px;text-align:center;color:#7d8978;margin-top:27px}.focus-line{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:23px 0;display:flex;align-items:center;justify-content:space-between;gap:25px}.mini-label{font-size:9px;letter-spacing:1.7px;font-weight:600;color:var(--muted);margin:0}.focus-line>div{display:flex;gap:38px;font-size:13px}.tiny-symbol{font-size:24px;color:#739063}.work{padding:76px 0}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:45px;gap:20px}.index{color:var(--muted);margin:0 0 20px}h2{font-family:Manrope,sans-serif;font-weight:500;font-size:32px;letter-spacing:-1.4px;line-height:1.25;margin:0;white-space:pre-line}.section-heading>p{font-size:12px;color:var(--muted);margin:0 0 4px}.work-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:62px}.books>.mini-label,.open-source>.mini-label{margin-bottom:25px}.book-row{display:flex;align-items:center;gap:20px;padding:18px 0;border-top:1px solid var(--line);position:relative}.book-cover{width:78px;height:104px;flex-shrink:0;padding:10px 8px 8px;color:#f6f5ed;display:flex;flex-direction:column;box-shadow:inset 4px 0 rgba(0,0,0,.15),3px 4px 8px #20372a13;overflow:hidden;transition:transform .2s}.green{background:#2d5546}.rust{background:#a86846}.book-cover>span{font-size:4px;letter-spacing:.6px}.book-cover strong{font-size:8px;line-height:1.25;margin-top:9px}.book-cover small{font-size:5px;letter-spacing:1px;margin-top:auto}.cover-lines{height:28px;width:50px;border:1px solid #ffffff45;transform:rotate(-25deg);margin:10px auto 0;box-shadow:5px -3px 0 #ffffff12,10px -6px 0 #ffffff12}.book-copy{flex:1}.book-meta{font-size:8px;letter-spacing:1px;color:var(--muted)}h4{font-size:16px;line-height:1.35;letter-spacing:-.3px;font-weight:500;margin:8px 0}.book-copy p,.repo p{font-size:11px;color:var(--muted);line-height:1.6;margin:0}.arrow{align-self:center}.book-row:hover .book-cover{transform:rotate(-4deg)}.book-row:hover h4{text-decoration:underline;text-underline-offset:3px}.underlink{display:inline-block;font-size:11px;margin-top:22px;border-bottom:1px solid #a4b09e;padding-bottom:4px}.open-source{border-left:1px solid var(--line);padding-left:40px}.source-intro{font-family:Georgia,serif;font-style:italic;font-size:30px;line-height:1.22;letter-spacing:-.5px;margin:0 0 25px;white-space:pre-line}.repo{padding:18px 0;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);gap:12px}.repo-name{font-family:monospace;font-size:13px}.repo p{margin-top:7px}.repo:hover .repo-name{text-decoration:underline;text-underline-offset:3px}.contact{padding:42px;background:#e9ece3;border-radius:3px;display:flex;justify-content:space-between;align-items:center;gap:25px;margin-bottom:55px}.contact .eyebrow{color:#61705d;margin:0 0 18px}.contact h2{font-size:33px}.email{display:flex;gap:32px;align-items:center;font-size:18px;border-bottom:1px solid #afbaaa;padding:10px 0}.email:hover{border-color:var(--ink)}#copy-email{border:none;background:none;color:#61705d;font-size:11px;padding:14px 0 0;display:flex;gap:7px;align-items:center}#copy-email:hover{color:#263f2c}#copy-status{font-size:10px;min-height:13px;margin:8px 0 0;color:#476141}footer{border-top:1px solid var(--line);padding:25px 0 35px;display:flex;align-items:center;justify-content:space-between;gap:20px;color:var(--muted);font-size:10px}footer>div{display:flex;gap:24px}.footer-note{font-family:Georgia,serif;font-style:italic;font-size:13px}.skip{position:absolute;left:15px;top:-80px;background:var(--green);color:white;padding:12px;z-index:10}.skip:focus{top:10px}
@media(min-width:1440px){.page{max-width:1310px}.hero{padding-top:90px;padding-bottom:80px}.portrait-area{max-width:380px}}
@media(max-width:950px){.page{padding:0 40px}.hero{gap:35px;padding-top:55px}h1{font-size:88px}.portrait-area{max-width:310px}.focus-line>div{gap:24px}.work-grid{gap:30px}.open-source{padding-left:25px}.section-heading{align-items:start;flex-direction:column}.contact{padding:32px}.contact h2{font-size:28px}.email{font-size:16px;gap:20px}}
@media(max-width:650px){.page{padding:0 24px}header{height:85px}.logo{font-size:31px}nav{gap:18px;font-size:11px}.languages{margin-left:0;gap:4px}.hero{grid-template-columns:1fr;gap:30px;padding:43px 0 38px}.eyebrow{font-size:9px;letter-spacing:1.5px}h1{font-size:88px;letter-spacing:-6px;margin-top:25px;line-height:1.02}.lead{font-size:23px}.bio{max-width:100%;font-size:13px}.hero-actions{margin-top:23px}.portrait-area{width:75%;max-width:300px;justify-self:center;padding-top:15px}.portrait-frame{aspect-ratio:1.1}.portrait-caption{font-size:8px}.note{margin-top:19px;font-size:16px}.focus-line{position:relative;padding:22px 0;align-items:start;flex-direction:column;gap:17px}.focus-line>div{width:100%;justify-content:space-between;gap:8px;font-size:11px}.tiny-symbol{position:absolute;right:0;top:11px}.work{padding:45px 0}.section-heading{gap:12px;margin-bottom:30px}h2{font-size:28px}.section-heading>p{font-size:11px}.work-grid{grid-template-columns:1fr;gap:38px}.open-source{border-left:0;padding-left:0}.book-row{gap:18px}.book-copy p{font-size:11px}h4{font-size:16px}.source-intro{font-size:29px}.contact{padding:28px 23px;align-items:start;flex-direction:column;gap:23px;margin-bottom:30px}.contact h2{font-size:29px}.contact-actions{width:100%}.email{font-size:17px;justify-content:space-between}footer{flex-wrap:wrap;padding-bottom:25px;font-size:9px}.footer-note{display:none}footer>div{gap:15px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
