@charset "UTF-8";
:root{--paper:#f6f5f1;--ink:#202522;--muted:#646962;--line:#dcded6;--blue:#244eda;--serif:Georgia,'Times New Roman',serif;--sans:Arial,Helvetica,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.65}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}a,button,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--blue);outline-offset:5px}a:hover{color:var(--blue)}img{display:block;max-width:100%;height:auto}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.12;font-weight:500;letter-spacing:-.045em}h1{font-size:clamp(44px,5.5vw,78px);margin-bottom:27px}h2{font-size:clamp(30px,3.3vw,44px)}h3{font-size:26px;letter-spacing:-.03em}p{margin-bottom:22px}.wrap{width:min(1200px,calc(100% - 96px));margin-inline:auto}.serif{font-family:var(--serif);font-style:italic;font-weight:400}.eyebrow{font-size:11px;line-height:1.5;letter-spacing:.14em;text-transform:uppercase;font-weight:600;margin-bottom:24px}.muted{color:var(--muted)}.small{font-size:13px}.lead{font-size:18px;line-height:1.7;color:var(--muted);max-width:580px}.header{border-bottom:1px solid var(--line);background:var(--paper);position:relative;z-index:10}.header-inner{height:100px;display:flex;align-items:center;justify-content:space-between;gap:30px}.brand{display:flex;align-items:center;gap:17px}.monogram{font-size:42px;font-weight:700;letter-spacing:-.09em;line-height:1}.monogram>span{color:var(--blue)}.brand-name{font-size:13px;font-weight:600;line-height:1.5}.brand-name>span{display:block;font-size:10px;color:var(--muted);font-weight:400}.desktop-nav{display:flex;gap:30px;font-size:13px}.desktop-nav a[aria-current]{text-decoration:underline;text-underline-offset:7px;color:var(--blue)}.header-contact{font-size:13px;border-bottom:1px solid var(--ink);padding:5px 0}.header-contact span{margin-left:20px}.mobile-menu{display:none}.hero{padding-block:88px 85px;display:grid;grid-template-columns:1.5fr 1fr;align-items:center;gap:65px}.hero h1{font-size:clamp(46px,5.2vw,74px)}.hero .eyebrow{letter-spacing:.1em}.status-dot{display:inline-block;width:7px;height:7px;background:#487954;border-radius:50%;margin-right:8px}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:30px}.button{display:inline-flex;align-items:center;justify-content:center;gap:30px;min-height:49px;padding:13px 22px;border:1px solid transparent;border-radius:3px;font-size:13px;font-weight:500}.primary{background:var(--blue);color:white}.primary:hover{background:#1539aa;color:white}.quiet{background:transparent;color:var(--ink);border-color:var(--line)}.quiet:hover{border-color:var(--ink)}.hero-note{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--muted);margin-top:40px}.tiny-line{height:1px;width:25px;background:var(--muted)}.hero-portrait{position:relative;max-width:390px;justify-self:end;padding:18px 18px 0;background:#e8e6dd;transform:rotate(2deg)}.hero-portrait picture{display:block;overflow:hidden}.hero-portrait img{width:100%;aspect-ratio:1/1.05;object-fit:cover;object-position:50% 30%;filter:saturate(.7)}.portrait-label{font-size:9px;letter-spacing:.17em;margin-bottom:13px}.portrait-caption{display:flex;flex-direction:column;padding:15px 0 19px;font-size:13px}.portrait-caption span+span{font-size:11px;color:#303b34}.portrait-stamp{position:absolute;bottom:42px;right:-25px;background:#dce4ff;border:1px solid #aebde8;width:96px;height:96px;display:grid;align-content:center;text-align:center;line-height:1.15;font-size:13px;letter-spacing:.08em;transform:rotate(-10deg)}.expertise-strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.expertise-strip .wrap{display:flex;align-items:center;justify-content:space-between;gap:30px;padding-block:24px}.expertise-strip .wrap>span{font-size:11px;color:var(--muted)}.expertise-strip .wrap>div{font-size:15px;display:flex;align-items:center;gap:35px}.expertise-strip i{font-style:normal;color:#92988e}.section{padding-block:85px}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:25px;margin-bottom:36px}.section-head .eyebrow{margin-bottom:16px;color:var(--muted)}.section-head h2{margin:0}.text-link{display:inline-flex;gap:24px;align-items:center;font-size:13px;border-bottom:1px solid var(--ink);padding-bottom:5px;white-space:nowrap}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:52px 32px}.project-card h3{margin-bottom:13px}.project-card h3 a{display:flex;justify-content:space-between;gap:14px}.project-card h3 span{font-size:21px}.project-card>p{font-size:14px;color:var(--muted);max-width:48ch;margin-bottom:20px}.card-meta{font-size:10px;letter-spacing:.11em;text-transform:uppercase;margin:25px 0 12px;color:var(--muted)}.tags{list-style:none;display:flex;flex-wrap:wrap;gap:7px;margin:0;padding:0}.tags li{border:1px solid var(--line);padding:3px 9px;font-size:10px;color:#555d53;border-radius:3px;line-height:1.5}.project-visual{aspect-ratio:1.66;position:relative;overflow:hidden;border:1px solid #0000000b;padding:23px 25px;transition:filter .2s}.visual-link:hover .project-visual{filter:brightness(.97)}.blue{background:#dee6ee;color:#244a64}.peach{background:#efdfcf;color:#7a4f31}.mint{background:#dce5dc;color:#365e4b}.lilac{background:#e1deeb;color:#62517a}.visual-top{display:flex;justify-content:space-between;font-size:9px;letter-spacing:.15em}.flow{display:flex;align-items:center;justify-content:center;margin-top:16%;padding-inline:8%}.flow-icon{display:grid;place-items:center;width:66px;height:66px;background:#f8fbff;border-radius:14px;font-size:29px;box-shadow:0 12px 25px #244a6410;flex-shrink:0}.flow-line{height:1px;flex:1;background:#95acbf}.flow-labels{display:flex;justify-content:space-between;margin:17px 9% 0;font-size:10px}.commerce-art{display:flex;align-items:flex-end;gap:13px;height:63%;padding:25px 18% 0}.art-bar{height:30%;flex:1;background:#bd845c;border-radius:4px 4px 0 0}.art-bar:nth-child(2){height:46%}.art-bar:nth-child(3){height:60%}.art-bar:nth-child(4){height:77%}.art-bar:nth-child(5){height:100%;background:#7c4e32}.art-orbit{position:absolute;top:24%;left:19%;font-size:30px;width:55px;height:55px;border-radius:50%;background:#f7ede1;display:grid;place-items:center;transform:rotate(-15deg)}.visual-bottom{position:absolute;bottom:24px;left:0;width:100%;text-align:center;font-size:9px;letter-spacing:.16em}.work-note{display:flex;align-items:center;flex-wrap:wrap;gap:25px;border-top:1px solid var(--line);padding-top:24px;margin-top:38px;font-size:12px}.work-note>span{color:var(--muted);margin-right:auto}.about-band{background:#eaece5;padding-block:75px}.split{display:grid;grid-template-columns:1fr 1fr;gap:65px}.split h2{font-size:48px}.split .eyebrow{color:var(--muted)}.split p:not(.eyebrow){color:var(--muted);font-size:15px}.split .large-copy{font-size:24px!important;line-height:1.5;color:var(--ink)!important;letter-spacing:-.02em}.skills-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:25px}.skills-grid section{border-top:1px solid var(--line);padding-top:20px}.small-index{font-size:10px;letter-spacing:.08em;color:var(--muted)}.skills-grid h3{font-size:19px;margin:20px 0 16px;letter-spacing:-.025em}.skills-grid p{font-size:13px;color:var(--muted);line-height:1.9}.writing-section{padding-top:15px}.post-row{border-top:1px solid var(--line);padding:30px 0;display:grid;grid-template-columns:1fr 60px;position:relative;gap:8px 25px}.post-row .eyebrow{display:block;font-size:9px;color:var(--muted);margin-bottom:10px}.post-row h3{font-size:28px;margin-bottom:12px}.post-row p{font-size:14px;color:var(--muted);margin-bottom:8px;max-width:70ch}.post-arrow{font-size:30px;align-self:center;justify-self:end}.post-date{font-size:10px;color:var(--muted)}.footer{background:#202923;color:#f6f5f1;padding-top:60px}.footer-top{padding-bottom:56px}.footer-top .eyebrow{color:#bdc6b8}.footer h2{font-size:clamp(40px,6vw,76px);display:flex;justify-content:space-between;margin-bottom:25px}.footer h2 a{font-family:var(--sans);color:#c7d3a7}.footer-email{font-size:15px;border-bottom:1px solid #86917e;padding-bottom:5px}.footer a:hover{color:#d5dfbe}.footer-bottom{border-top:1px solid #414a41;display:flex;justify-content:space-between;gap:25px;padding-block:25px;font-size:9px;color:#c1c8bd;flex-wrap:wrap}.footer-bottom nav{display:flex;flex-wrap:wrap;gap:19px}.page-intro{padding-top:80px;padding-bottom:55px}.page-intro h1{max-width:950px;white-space:pre-line}.page-intro .lead{max-width:680px}.compact{padding-top:0}.map-art{position:absolute;inset:50px 35px 52px;overflow:hidden;background:repeating-linear-gradient(0deg,transparent 0 26px,#bfd0bf 27px 28px),repeating-linear-gradient(90deg,transparent 0 39px,#bfd0bf 40px 41px)}.map-road{position:absolute;width:130%;height:10px;background:#f0f4ed;transform:rotate(-25deg);left:-10%;top:42%}.map-road.second{transform:rotate(38deg);top:58%}.map-pin{position:absolute;border:5px solid #eff4ed;background:#41684c;border-radius:50%;width:20px;height:20px;z-index:2}.map-pin.one{top:23%;left:22%}.map-pin.two{top:53%;left:59%}.map-pin.three{top:16%;left:80%}.map-zone{position:absolute;border:1px dashed #5a8764;inset:10% 17% 15% 33%;border-radius:50%;background:#41684c0a}.code-art{display:flex;flex-direction:column;gap:10px;padding:8% 10%}.code-art>span{font-family:monospace;font-size:11px}.code-art strong{font-weight:400;font-size:clamp(21px,3vw,40px);line-height:1.1;letter-spacing:-.05em;margin-left:20px}.repo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}.repo-grid article{border-top:1px solid var(--line);padding-top:25px}.repo-grid h3{font-size:23px}.repo-grid p:not(.eyebrow){color:var(--muted);font-size:14px}.visual-disclaimer{margin-top:28px}.project-detail{display:grid;grid-template-columns:1.5fr 1fr;gap:55px}.project-detail figure{margin:0}.project-detail figcaption{color:var(--muted);font-size:10px;margin-top:10px}.project-detail aside{padding-top:8px}.project-detail h2{font-size:23px}.project-detail dt{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-top:18px}.project-detail dd{margin:4px 0 0;font-size:14px}.case-content{max-width:760px;padding-block:65px}.case-content section{border-top:1px solid var(--line);padding-block:30px 10px}.case-content h2{font-size:32px;margin:15px 0}.case-content p{color:var(--muted)}.about-content{display:grid;grid-template-columns:1fr 1.6fr;gap:90px;padding-bottom:35px}.about-photo img{width:100%;filter:saturate(.7)}.about-photo>.eyebrow{display:block;margin-top:18px}.prose h2{font-size:30px;margin:35px 0 20px}.prose h2:first-child{margin-top:0}.prose p{font-size:17px;line-height:1.85;color:#545d53}.experience-section{max-width:960px;padding-block:10px 40px}.timeline-item{display:grid;grid-template-columns:220px 1fr;gap:40px;padding:30px 0 40px;border-top:1px solid var(--line)}.timeline-date{font-size:12px;color:var(--muted);padding-top:8px}.timeline-dot{display:inline-block;width:8px;height:8px;background:#b9bdb2;border-radius:50%;margin-right:15px}.timeline-dot.active{background:var(--blue)}.timeline-item h2{font-size:30px;margin-bottom:10px}.timeline-item .role{font-size:15px;margin-bottom:8px}.timeline-item p:not(.role){font-size:14px;color:var(--muted)}.education{display:grid;grid-template-columns:1fr 2fr;gap:50px;border-top:1px solid var(--line);padding-block:50px 85px}.education h2{font-size:32px}.education p:not(.eyebrow){font-size:14px;color:var(--muted);margin-bottom:12px}.article-list{padding-bottom:75px}.feed-link{margin-top:28px}.article{max-width:750px;padding-bottom:85px}.article-byline{display:flex;align-items:center;gap:14px;font-size:12px;border-block:1px solid var(--line);padding-block:20px}.article-byline img{border-radius:50%;height:40px;object-fit:cover}.article-byline time{color:var(--muted)}.toc{margin:35px 0;padding:25px 30px;background:#eaece5;display:grid;gap:9px}.toc h2{font-size:18px;margin:0 0 6px;letter-spacing:-.02em}.toc a{font-size:13px;text-decoration:underline;text-underline-offset:3px}.article .prose section{margin-bottom:40px}.article-end{border-top:1px solid var(--line);padding-top:30px;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between}.article-end p{width:100%;margin-bottom:0}.contact-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:70px;padding-block:10px 100px}.contact-main{background:#eaece5;padding:35px}.contact-main h2{font-size:35px}.email-link{font-size:clamp(16px,2vw,25px);letter-spacing:-.03em;border-bottom:1px solid var(--ink);overflow-wrap:anywhere}.contact-main>p:not(.eyebrow){margin-top:25px;font-size:14px;color:var(--muted)}.contact-grid aside h2{font-size:24px}.social-row{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:17px 0;font-size:14px}.contact-grid aside>p{margin-top:25px}.copy-status{display:block;font-size:12px;margin-top:10px}.error-actions{padding-bottom:90px}.sr-only,.skip:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip:focus{position:fixed;z-index:100;background:var(--ink);color:white;padding:15px;top:5px;left:5px}
@media(min-width:1450px){.hero{padding-block:105px}.hero h1{font-size:78px}}
@media(max-width:1050px){.wrap{width:calc(100% - 64px)}.hero{gap:35px}.hero h1{font-size:55px}.hero-portrait{max-width:310px}.portrait-stamp{right:-12px;width:80px;height:80px;font-size:11px}.expertise-strip .wrap>div{gap:15px;font-size:13px}.skills-grid{grid-template-columns:repeat(2,1fr)}.desktop-nav{gap:18px}.brand-name{display:none}.split{gap:35px}.split h2{font-size:40px}.about-content{gap:45px}.flow-icon{width:52px;height:52px}.project-detail{gap:30px}}
@media(max-width:700px){.wrap{width:calc(100% - 40px)}.header-inner{height:78px;gap:20px}.monogram{font-size:36px}.brand-name{display:block;font-size:11px}.brand-name>span{font-size:9px}.desktop-nav,.header-contact{display:none}.mobile-menu{display:block;font-size:12px}.mobile-menu summary{cursor:pointer;list-style:none;padding:12px 0}.mobile-menu summary::-webkit-details-marker{display:none}.mobile-menu summary span{margin-left:10px}.mobile-menu nav{position:absolute;top:78px;left:0;right:0;background:var(--paper);border-bottom:1px solid var(--line);padding:16px 20px;box-shadow:0 12px 20px #20252208}.mobile-menu nav a{display:block;padding:10px;font-size:15px}.hero{grid-template-columns:1fr;gap:45px;padding-block:48px 55px}.hero h1{font-size:clamp(40px,9vw,60px)}.hero .eyebrow{font-size:9px}.lead{font-size:16px}.hero-note{margin-top:26px}.hero-portrait{justify-self:center;width:86%;max-width:350px}.hero-portrait img{aspect-ratio:1.12}.portrait-stamp{bottom:34px;right:-17px}.expertise-strip .wrap{flex-direction:column;align-items:flex-start;gap:10px;padding-block:20px}.expertise-strip .wrap>div{flex-wrap:wrap;gap:10px;font-size:12px}.expertise-strip .wrap>span{font-size:10px}.section{padding-block:52px}.section-head{align-items:flex-start;flex-direction:column;gap:16px;margin-bottom:27px}.section-head h2{font-size:34px}.section-head .eyebrow{font-size:9px}.project-grid{grid-template-columns:1fr;gap:38px}.project-card h3{font-size:27px}.project-visual{aspect-ratio:1.6}.flow{margin-top:14%}.flow-icon{width:60px;height:60px}.work-note{align-items:flex-start;flex-direction:column;gap:14px}.about-band{padding-block:48px}.split{grid-template-columns:1fr;gap:8px}.split h2{font-size:40px}.split .large-copy{font-size:21px!important}.skills-grid{gap:25px 18px}.skills-grid h3{font-size:17px}.skills-grid p{font-size:12px}.writing-section{padding-top:0}.post-row h3{font-size:25px}.post-row{grid-template-columns:1fr 25px;gap:10px}.post-row p{font-size:13px}.footer{padding-top:45px}.footer h2{font-size:42px}.footer-top{padding-bottom:40px}.footer-bottom{flex-direction:column;gap:12px;font-size:10px}.footer-bottom nav{gap:14px}.page-intro{padding-block:45px 30px}.page-intro h1{font-size:44px}.compact{padding-top:0}.repo-grid{grid-template-columns:1fr;gap:20px}.project-detail,.about-content,.contact-grid{grid-template-columns:1fr;gap:35px}.project-detail aside{padding-top:0}.project-detail .project-visual{aspect-ratio:1.6}.case-content{padding-block:40px}.about-photo{max-width:360px}.about-content .prose h2{font-size:28px}.timeline-item{grid-template-columns:1fr;gap:18px;padding-block:25px 32px}.timeline-item h2{font-size:28px}.education{grid-template-columns:1fr;gap:5px;padding-block:35px 55px}.article .prose p{font-size:16px}.article-list,.article{padding-bottom:50px}.contact-grid{padding-bottom:55px}.contact-main{padding:25px}.contact-main .button{font-size:12px}.visual-top{font-size:8px}.code-art strong{font-size:30px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
