@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;750;800&display=swap');
:root{--ink:#172724;--muted:#64706b;--paper:#fafbf8;--line:#dce2db;--green:#26684b}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.6 'DM Sans',sans-serif}a{color:inherit;text-decoration:none}a:hover{color:var(--green)}a:focus-visible,summary:focus-visible{outline:2px solid #43895c;outline-offset:6px}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:'Manrope',sans-serif;font-weight:650}main,.topbar{width:min(1120px,calc(100% - 88px));margin:auto}.topbar{display:flex;align-items:center;justify-content:space-between;padding:28px 0;border-bottom:1px solid var(--line)}.monogram{font-size:29px;font-weight:700;letter-spacing:-2px}.monogram span,h1>span{color:#559b62}.topbar nav{display:flex;gap:30px;align-items:center;font-size:13px}.resume{border:1px solid var(--line);padding:8px 16px;border-radius:30px}.hero{display:grid;grid-template-columns:1.1fr 1fr;gap:60px;padding:64px 0 68px;align-items:end}.eyebrow{font-size:10px;letter-spacing:1.5px;font-weight:650}.hero .eyebrow{margin-bottom:20px;color:var(--muted)}h1{font-size:clamp(38px,4.5vw,62px);line-height:1.08;letter-spacing:-2.7px}.intro>p{font-size:29px;line-height:1.3;letter-spacing:-.8px;margin-bottom:15px}.intro>span{display:block;color:var(--muted);max-width:340px;font-size:14px}.social{display:flex;gap:24px;margin-top:24px;font-size:12px}.section-label{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.section-label h2{font-size:19px;letter-spacing:-.5px}.section-label>span{font-size:9px;letter-spacing:1.6px;color:var(--muted)}.work-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px 28px;align-items:start}.project{min-width:0}.art{height:264px;border-radius:8px;padding:20px 23px;overflow:hidden;display:flex;flex-direction:column;position:relative}.art-top,.art-bottom{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:10px}.art-top>span{font-size:8px;letter-spacing:1.6px}.art-top>b{font-weight:500;padding:4px 9px;border:1px solid #ffffff45;border-radius:20px;font-size:9px}.art-bottom{margin-top:auto}.art-bottom strong{font-size:16px;font-weight:500}.art-bottom small{font-size:10px;font-weight:400}.platform{background:#183f34;color:#e8f0dd}.platform-core{position:relative;text-align:center;padding:18px 0 14px}.orbit-label{font-size:8px;letter-spacing:2px;color:#c0d4b0}.core{font-size:16px;line-height:1.2;border:1px solid #9aba7a66;max-width:230px;margin:10px auto 0;padding:10px;background:#254f3f;border-radius:7px;position:relative}.core strong{font-weight:600}.pulse{position:absolute;width:6px;height:6px;border-radius:50%;background:#b8df87;right:12px;top:12px}.tool-row{display:flex;justify-content:center;gap:6px;margin-top:9px}.tool-row span{font-size:9px;border:1px solid #a3c68c50;border-radius:4px;padding:4px 10px}.operations{background:#ede5d6;color:#53442e}.operations .art-top>b{border-color:#b4a28455}.stairs{display:flex;align-items:start;gap:8px;margin-top:22px}.stairs>div{background:#faf6ed;border:1px solid #d9ccba;padding:10px 12px;flex:1;border-radius:5px;min-width:0;box-shadow:0 4px 0 #dfd5c6}.stairs>div:nth-child(2){margin-top:19px}.stairs>div:nth-child(3){margin-top:38px}.stairs span{font-size:9px;color:#9d7b4b;display:block}.stairs b{display:block;font-size:13px;font-weight:550;margin-top:4px}.stairs small{display:block;font-size:9px;line-height:1.5;margin-top:4px}.operations .art-bottom strong{font-size:10px}.line{height:1px;background:#a88e64;flex:1}.engineering{background:#e6ebf6;color:#313c58}.engineering .art-top>b{border-color:#5c6f9740}.toolkit{display:grid;gap:7px;margin-top:18px}.toolkit>div{display:flex;align-items:center;gap:12px;border-bottom:1px solid #98a5c83b;padding-bottom:8px}.toolkit>div:last-child{border:0}.tool-icon{border:1px solid #b5c0dc;width:32px;height:32px;border-radius:7px;text-align:center;font-size:21px;line-height:30px}.toolkit b,.toolkit small{display:block}.toolkit b{font-size:13px;font-weight:550}.toolkit small{font-size:10px;color:#687693}.toolkit i{font:10px monospace;margin-left:auto;color:#8895b1}.companion{background:#dce9e7;color:#244c4b}.companion .art-top>b{border-color:#477c7340}.companion-mark{text-align:center;margin:auto}.companion-mark>span{font-size:12px;display:block}.companion-mark strong{font-size:25px;font-weight:500;letter-spacing:-.8px}.compass{width:42px;height:42px;display:grid;grid-template-columns:1fr 1fr;gap:3px;margin:0 auto 10px;transform:rotate(-15deg)}.compass span{background:#49867b;border-radius:2px 12px 2px 12px}.compass span:nth-child(2),.compass span:nth-child(3){background:#86ada2}.companion .art-bottom{margin-top:0}.project-copy{padding:19px 2px 0}.project-copy .eyebrow{font-size:9px;color:var(--muted);margin-bottom:9px}.project h3{font-size:22px;letter-spacing:-.7px;line-height:1.3;margin-bottom:9px}.project-copy>p:not(.eyebrow){font-size:14px;line-height:1.65;color:var(--muted);max-width:450px}details{margin-top:15px}summary{list-style:none;display:flex;justify-content:space-between;align-items:center;cursor:pointer;font-size:12px;font-weight:550;padding:10px 0;border-top:1px solid var(--line)}summary::-webkit-details-marker{display:none}summary>b{font-size:18px;font-weight:400;line-height:1}.opened{display:none}details[open]>summary .closed{display:none}details[open]>summary .opened{display:inline}details[open]>summary>b{transform:rotate(45deg)}.detail-body{font-size:13px;line-height:1.8;color:#52625a;padding:8px 0 15px}.detail-body dl{margin:0}.detail-body dl>div+div{margin-top:13px}.detail-body dt{color:var(--ink);font-weight:600}.detail-body dd{margin:3px 0 0}.detail-body a{text-decoration:underline;text-underline-offset:3px}.detail-body ul{padding-left:18px;margin:0}.detail-body li+li{margin-top:8px}.experiments{padding:65px 0 0}.play-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}.lab{background:#efefeb;border:1px solid #e0e3da;border-radius:8px;padding:27px;position:relative;display:flex;flex-direction:column}.lab h3{font-size:35px;line-height:1.1;letter-spacing:-1.3px;margin-top:19px}.lab .eyebrow{font-size:9px}.lab-visual{display:flex;align-items:center;gap:12px;margin:25px 0}.lab-visual span{border:1px solid #bdc6b5;border-radius:20px;padding:7px 10px;font-size:10px}.lab-visual b{font-size:29px;font-weight:400;color:#8c9b7d}.lab p,.chess p{font-size:12px;color:var(--muted)}.play-link{font-size:12px;display:block;margin-top:15px}.chess{border-radius:8px;overflow:hidden;background:#fff;border:1px solid var(--line)}.chess-image{background:#d7dee8;height:203px;padding:20px 28px 0;overflow:hidden}.chess img{width:100%;display:block;box-shadow:0 5px 20px #21334724;border-radius:4px}.chess>div:last-child{padding:20px 24px}.chess .eyebrow{font-size:9px;color:var(--muted)}.chess h3{font-size:20px;margin:5px 0}.more-projects{display:flex;gap:28px;margin-top:18px}.more-projects>a{width:50%;display:flex;justify-content:space-between;gap:10px;font-size:11px;padding:12px 0;border-bottom:1px solid var(--line)}.more-projects b{font-weight:550}.more-projects span{color:var(--muted)}.career{padding-top:65px}.section-heading{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:2px}.section-heading .eyebrow{font-size:9px;color:var(--muted)}.section-heading h2{font-size:22px}.career-entry{display:grid;grid-template-columns:170px 1fr;gap:30px;padding:25px 0;border-bottom:1px solid var(--line)}.career-date{font-size:10px;letter-spacing:1px;color:var(--muted);padding-top:5px}.career-entry h3{font-size:21px}.roles{list-style:none;margin:13px 0 0;padding:0;display:flex;gap:24px}.roles li{font-size:11px}.roles b,.roles span{display:block}.roles b{font-weight:550}.roles span{font-size:10px;color:var(--muted);margin-top:3px}.career-title,.career-description{font-size:12px;color:var(--muted);margin-top:7px}.career-entry details{max-width:760px}.background-details{margin-top:12px}.background-details summary{border:0}footer{margin-top:55px;padding:28px 0 35px;border-top:1px solid var(--line);display:flex;align-items:end;justify-content:space-between}footer h2{font-size:27px;letter-spacing:-1px;margin-bottom:14px}footer a{font-size:12px;margin-right:22px}footer>span{font-size:10px;color:var(--muted)}.skip{position:fixed;left:20px;top:-80px;background:#fff;padding:12px;z-index:10}.skip:focus{top:10px}@media(min-width:1450px){main,.topbar{width:1120px}.hero{padding-top:85px;padding-bottom:85px}}@media(max-width:760px){main,.topbar{width:calc(100% - 40px)}.topbar{padding:17px 0}.topbar nav{gap:17px;font-size:11px}.resume{padding:5px 10px}.hero{gap:28px;padding:38px 0;grid-template-columns:1fr}h1{font-size:48px;letter-spacing:-2px}.hero .eyebrow{font-size:9px;margin-bottom:15px}.intro>p{font-size:24px}.intro>span{max-width:360px}.social{margin-top:15px}.section-label>span{font-size:7px;letter-spacing:1px}.work-grid,.play-grid{grid-template-columns:1fr;gap:30px}.art{height:250px;padding:18px}.project h3{font-size:22px}.project-copy{padding-top:16px}.project-copy>p:not(.eyebrow){font-size:13px}.stairs{gap:6px}.stairs>div{padding:10px 8px}.stairs b{font-size:12px}.stairs small{font-size:8px}.experiments,.career{padding-top:40px}.lab{min-height:315px}.chess-image{height:210px}.more-projects{display:grid;gap:0}.more-projects>a{width:100%}.career-entry{grid-template-columns:1fr;gap:8px;padding:22px 0}.roles{flex-direction:column;gap:10px}.roles li{display:flex;justify-content:space-between}.roles span{margin:0}footer{align-items:start;gap:25px;flex-direction:column;margin-top:35px}.tool-row span{padding:4px 9px}.companion-mark strong{font-size:25px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

.lab-preview{height:115px;overflow:hidden;margin:17px 0;border:1px solid #d1d8ce;border-radius:5px;background:#fff}.lab-preview img{width:100%;display:block}.lab h3{font-size:28px;margin-top:12px}.lab h3 br{display:none}.lab{padding:22px 26px}.lab p{margin-top:auto}

.companion-description{font-size:12px;line-height:1.6;margin-top:12px;color:#4e746d}.companion-mark strong{font-size:32px;letter-spacing:-1px}

.writing{padding-top:60px}.writing .section-label>a{font-size:9px;letter-spacing:1px;color:var(--muted)}.article-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.article-card{display:flex;flex-direction:column;min-height:202px;padding:22px;border:1px solid var(--line);border-radius:7px;background:#f0f2ec;transition:background .15s}.article-card:nth-child(2){background:#f0eee7}.article-card:nth-child(3){background:#ecf0f2}.article-card:hover{background:#e4eadc;color:var(--ink)}.article-topic{font-size:8px;letter-spacing:1.4px;color:var(--muted)}.article-card h3{font-size:17px;line-height:1.4;letter-spacing:-.4px;margin:16px 0 20px}.article-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:auto;font-size:10px;color:var(--muted)}.article-bottom b{font-size:18px;font-weight:400;color:var(--ink)}.article-archive{margin-top:16px}.archive-links>a{display:flex;justify-content:space-between;gap:20px;padding:11px 0;border-bottom:1px solid var(--line);font-size:12px}.archive-links small{white-space:nowrap;color:var(--muted)}.book-link{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);padding-top:16px;gap:16px}.book-link span{white-space:nowrap}@media(max-width:760px){.writing{padding-top:40px}.article-grid{grid-template-columns:1fr;gap:12px}.article-card{min-height:0;padding:19px}.article-card h3{font-size:18px;margin:10px 0 14px}.topbar nav{gap:12px}.topbar nav>a{font-size:10px}.topbar .resume{padding:5px 8px}}@media(prefers-reduced-motion:reduce){.article-card{transition:none}}
