:root{--paper:#e8e7e2;--paper-2:#d9d8d2;--ink:#171716;--muted:#777670;--line:rgba(23,23,22,.2);--dark-line:rgba(232,231,226,.24);--serif:'Playfair Display',Georgia,serif;--sans:'Manrope',Arial,sans-serif;--mono:'DM Mono',monospace;--gutter:clamp(22px,5.2vw,82px)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:76px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit}.skip-link{position:fixed;z-index:99;top:10px;left:10px;padding:12px 18px;background:var(--ink);color:var(--paper);transform:translateY(-150%)}.skip-link:focus{transform:none}.scroll-progress{height:2px;width:0;position:fixed;z-index:30;top:0;left:0;background:var(--ink)}.site-header{height:76px;padding:0 var(--gutter);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;background:rgba(232,231,226,.94);backdrop-filter:blur(12px)}.wordmark{font-size:20px;letter-spacing:-1.5px;font-weight:800}.wordmark span,.footer-mark sup{font-size:9px;vertical-align:top;margin-left:2px}.site-nav{display:flex;align-items:center;gap:clamp(24px,4vw,62px);font-size:11px}.site-nav a{transition:opacity .2s}.site-nav a:hover{opacity:.55}.site-nav sup{font:9px var(--mono);color:var(--muted);margin-left:3px}.nav-contact{border-bottom:1px solid var(--ink);padding-bottom:6px}.nav-contact span{margin-left:14px}.menu-toggle{display:none}.hero{min-height:calc(100vh - 76px);min-height:calc(100svh - 76px);padding:26px var(--gutter) 18px;display:flex;flex-direction:column;overflow:hidden}.hero-topline,.hero-bottom{display:flex;align-items:flex-start;justify-content:space-between;font:9px/1.55 var(--mono);letter-spacing:.04em;text-transform:uppercase}.availability{display:flex;align-items:center;gap:9px}.availability i{width:7px;height:7px;background:var(--ink);border-radius:50%;box-shadow:0 0 0 4px rgba(23,23,22,.1)}.hero-index{color:var(--muted)}.hero-stage{flex:1;position:relative;display:flex;align-items:center;min-height:575px}.hero-copy{position:relative;z-index:2;padding-top:5%;width:75%}.eyebrow{font:10px var(--mono);text-transform:uppercase;letter-spacing:.09em;margin:0 0 21px}.hero h1{font-size:clamp(76px,10.8vw,172px);line-height:.94;letter-spacing:-.045em;margin:0;font-weight:800;position:relative;width:max-content}.hero h1 span{display:block;margin-left:.28em}.hero h1 sup{font-size:.14em;letter-spacing:0;position:absolute;right:-.7em;top:.08em}.hero-intro{font-size:clamp(15px,1.55vw,22px);line-height:1.35;letter-spacing:-.04em;margin:42px 0 0 3px}.hero-art{position:absolute;width:min(39vw,510px);aspect-ratio:.83;right:5.8%;top:50%;transform:translateY(-48%);background:#c8c7c1;overflow:hidden;isolation:isolate}.hero-art:before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 5px,rgba(0,0,0,.035) 5px 6px);mix-blend-mode:multiply;z-index:4}.art-sun{position:absolute;width:76%;aspect-ratio:1;border-radius:50%;background:#e9e8e2;top:10%;left:16%;mix-blend-mode:screen}.art-orbit{position:absolute;border:1px solid rgba(23,23,22,.58);border-radius:50%;z-index:3}.orbit-one{width:133%;height:59%;left:-19%;top:35%;transform:rotate(-48deg)}.orbit-two{width:126%;height:40%;left:-16%;top:42%;transform:rotate(40deg)}.art-sculpture{position:absolute;z-index:2;width:52%;height:75%;left:25%;top:19%;background:linear-gradient(125deg,#282827,#777771 35%,#242423 60%,#a19f98);clip-path:polygon(50% 0,75% 5%,94% 25%,88% 54%,100% 100%,0 100%,12% 54%,6% 25%,25% 5%);filter:drop-shadow(18px 20px 14px #53524d)}.art-sculpture:before{content:'';position:absolute;inset:14% 15% 24%;border-radius:48% 48% 38% 38%;background:radial-gradient(ellipse at 66% 42%,#d0cec5 0 5%,transparent 6%),radial-gradient(ellipse at 40% 48%,#111 0 4%,transparent 5%),linear-gradient(90deg,transparent 35%,rgba(235,234,226,.65) 37% 39%,transparent 41%),linear-gradient(110deg,#bab9b1,#383836 50%,#0b0b0a);clip-path:ellipse(49% 48% at 50% 50%)}.art-sculpture:after{content:'';position:absolute;left:42%;bottom:1%;height:28%;width:27%;background:linear-gradient(90deg,#292927,#aaa89f,#363634)}.sculpture-cut{position:absolute;z-index:2;top:46%;left:14%;width:72%;height:1px;background:#d7d5cd;transform:rotate(-8deg);box-shadow:0 4px 0 rgba(0,0,0,.36)}.art-shadow{position:absolute;width:85%;height:10%;bottom:10%;left:10%;background:#3c3b37;filter:blur(16px);border-radius:50%}.art-label,.art-coordinate,.art-side{position:absolute;z-index:5;font:8px var(--mono);letter-spacing:.1em}.art-label-top{left:18px;top:18px}.art-side{right:15px;top:45%;writing-mode:vertical-rl}.art-coordinate{bottom:16px;left:18px}.hero-side-note{position:absolute;right:0;bottom:11%;font:9px/1.5 var(--mono);letter-spacing:.1em}.hero-side-note span{font-size:18px;margin-left:8px}.hero-bottom{align-items:center;color:var(--muted)}.hero-rule{height:1px;background:var(--line);width:65%}.section-light{background:var(--paper);padding:clamp(86px,12vw,172px) var(--gutter)}.section-heading{display:grid;grid-template-columns:1fr auto;align-items:end;position:relative;margin-bottom:68px}.section-heading .eyebrow{grid-column:1/-1;margin-bottom:27px}.section-heading h2,.expertise-heading h2,.experience-top h2{font-size:clamp(54px,9.3vw,136px);letter-spacing:-.06em;line-height:.94;font-weight:600;margin:0}.section-heading h2 em,.expertise-heading h2 em,.experience-top h2 em{font-family:var(--serif);font-weight:500;letter-spacing:-.045em}.section-aside{font:10px/1.6 var(--mono);text-transform:uppercase;margin:0 3px 8px 35px;color:var(--muted)}.project-grid{display:grid;grid-template-columns:1fr 1fr;column-gap:clamp(18px,4vw,64px);row-gap:clamp(60px,10vw,140px)}.project-card:nth-child(2n){margin-top:clamp(72px,12vw,180px)}.project-visual{position:relative;aspect-ratio:1.15;background:#d1d0ca;overflow:hidden;display:block}.project-visual img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .8s cubic-bezier(.2,.7,.2,1),filter .6s}.project-card:hover .project-visual img{transform:scale(1.035);filter:contrast(1.08)}.project-number{position:absolute;top:18px;left:18px;z-index:2;font:9px var(--mono);color:#f0efe9;mix-blend-mode:difference}.project-arrow{position:absolute;bottom:18px;right:18px;width:42px;height:42px;border:1px solid rgba(255,255,255,.8);color:#fff;border-radius:50%;display:grid;place-items:center;font-size:19px;opacity:0;transform:translateY(7px);transition:.25s}.project-card:hover .project-arrow{opacity:1;transform:none}.project-meta{padding-top:17px;display:flex;justify-content:space-between;align-items:start;gap:15px}.project-meta h3{font-size:clamp(20px,3vw,36px);letter-spacing:-.06em;font-weight:600;margin:0}.project-meta p{font:9px var(--mono);text-transform:uppercase;letter-spacing:.06em;margin:6px 0 0;color:var(--muted)}.project-year{font:9px var(--mono);margin-top:5px;color:var(--muted)}.placeholder-note{text-align:center;font:9px var(--mono);letter-spacing:.07em;color:var(--muted);margin:100px 0 0}.section-dark{background:var(--ink);color:var(--paper)}.about{padding:28px var(--gutter) 24px;min-height:710px;position:relative;overflow:hidden}.about-topline,.contact-kicker{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--dark-line);padding:0 0 15px}.about-topline .eyebrow,.contact-kicker .eyebrow{margin:0}.about-topline>span,.contact-kicker>span{font:9px var(--mono);color:#aaa9a2;letter-spacing:.07em}.about-layout{display:grid;grid-template-columns:1.25fr .75fr;gap:8vw;align-items:center;padding:clamp(95px,13vw,174px) 5% 130px}.about-layout h2{font-size:clamp(65px,10vw,148px);line-height:.94;letter-spacing:-.065em;font-weight:600;margin:0}.about-layout h2 em{font-family:var(--serif);font-weight:500}.about-copy{max-width:390px;padding-top:36px;position:relative;z-index:1}.about-copy p{font-size:13px;line-height:1.9;color:#aaa9a2}.about-copy .about-lead{font-size:clamp(17px,2vw,23px);line-height:1.5;color:var(--paper);letter-spacing:-.04em;margin:0 0 20px}.text-link{display:inline-flex;gap:30px;align-items:center;border-bottom:1px solid #777;padding:0 0 8px;margin-top:22px;font-size:11px}.text-link span{font-size:16px}.about-stamp{position:absolute;right:8%;top:48%;font-size:84px;font-weight:800;line-height:.7;letter-spacing:-.12em;color:rgba(232,231,226,.04);transform:rotate(-12deg);pointer-events:none}.about-footer{border-top:1px solid var(--dark-line);padding-top:14px;display:flex;justify-content:space-between;font:9px var(--mono);letter-spacing:.06em;color:#aaa9a2}.expertise{display:grid;grid-template-columns:.95fr 1.05fr;gap:8vw}.expertise-heading h2{font-size:clamp(56px,8vw,116px)}.expertise-heading .eyebrow{margin-bottom:32px}.expertise-content{padding-top:17px}.service-list{border-top:1px solid var(--line)}.service-row{display:grid;grid-template-columns:42px 1fr auto;align-items:center;min-height:61px;border-bottom:1px solid var(--line);transition:padding .25s}.service-row:hover{padding-left:12px}.service-row span:first-child{font:9px var(--mono);color:var(--muted)}.service-row strong{font-size:clamp(14px,1.6vw,19px);font-weight:500;letter-spacing:-.03em}.service-row span:last-child{font-size:15px}.skills-block{margin-top:50px}.skills-block>.eyebrow{margin-bottom:20px;color:var(--muted)}.skill-tags{display:flex;flex-wrap:wrap;gap:8px}.skill-tag{border:1px solid var(--line);border-radius:100px;padding:8px 12px;font-size:10px;transition:background .2s,color .2s}.skill-tag:hover{background:var(--ink);color:var(--paper)}.software{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:42px;padding-top:22px;border-top:1px solid var(--line)}.software .eyebrow{font-size:9px;color:var(--muted);margin:0 0 14px}.software p:last-child{font-size:12px;line-height:1.8;margin:0}.section-mid{background:#d9d8d2;padding:clamp(90px,12vw,160px) var(--gutter)}.experience-top{display:flex;justify-content:space-between;align-items:start;margin-bottom:70px}.experience-top .eyebrow{margin-top:12px}.experience-top h2{font-size:clamp(60px,8.8vw,128px)}.timeline{border-top:1px solid var(--line)}.job{display:grid;grid-template-columns:1fr 1.05fr .55fr;gap:30px;padding:26px 0 30px;border-bottom:1px solid var(--line)}.job-title{font-size:clamp(23px,3vw,38px);letter-spacing:-.07em;margin:0 0 5px}.job-role{font-size:12px;color:#62615c;margin:0}.job-period{text-align:right;font:10px var(--mono);padding-top:8px}.job-details ul{padding:0;margin:0;list-style:none}.job-details li{font-size:11px;line-height:1.8;color:#575650}.job-details li:before{content:'↳';margin-right:9px}.job-award{font:10px var(--mono);margin-top:14px}.job-award strong{font-family:var(--sans);font-weight:600}.education{display:grid;grid-template-columns:.75fr 1fr 1fr;gap:28px;margin-top:112px;padding-top:25px;border-top:1px solid var(--line)}.education h3{font-size:32px;letter-spacing:-.06em;margin:0}.education-entry{display:flex;justify-content:space-between;gap:16px;align-items:start}.education-entry h4{font-size:13px;line-height:1.5;margin:0 0 5px;font-weight:600}.education-entry p{font-size:11px;margin:0;color:#64635d}.education-entry>span{font:9px var(--mono);white-space:nowrap;padding-top:3px}.contact{padding:28px var(--gutter) 54px;min-height:720px;display:flex;flex-direction:column}.contact h2{font-size:clamp(78px,14vw,210px);letter-spacing:-.065em;line-height:.92;font-weight:600;margin:clamp(90px,13vw,185px) 0 0}.contact h2 em{font-family:var(--serif);font-weight:500;letter-spacing:-.05em}.contact-email{font-size:clamp(14px,2vw,23px);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--dark-line);padding:19px 0 14px;margin-top:46px;max-width:580px;transition:padding .2s}.contact-email:hover{padding-left:10px;padding-right:10px}.contact-email span{font-size:24px}.contact-bottom{display:flex;justify-content:space-between;align-items:end;margin-top:auto;padding-top:90px}.contact-bottom>p{font-size:12px;line-height:1.7;color:#aaa9a2;margin:0}.contact-links{display:flex;gap:38px;font-size:11px}.contact-links a span{margin-left:7px}.site-footer{padding:20px var(--gutter);display:grid;grid-template-columns:1.4fr 1fr 1fr auto;align-items:center;gap:20px;background:var(--paper);font:9px var(--mono);letter-spacing:.06em}.footer-mark{font:700 14px var(--sans);letter-spacing:-.06em}.back-top{text-align:center}.site-footer>span{color:var(--muted)}[data-reveal]{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.2,1)}[data-reveal].is-visible{opacity:1;transform:none}.project-card{opacity:0;transform:translateY(20px);transition:opacity .7s ease,transform .7s ease}.project-card.is-visible{opacity:1;transform:none}
@media(max-width:800px){.hero{min-height:850px}.hero-stage{min-height:720px;align-items:flex-start;padding-top:19vh}.hero-copy{width:100%}.hero h1{font-size:clamp(76px,13vw,132px);line-height:.94;letter-spacing:-.045em}.hero-art{width:min(58vw,410px);right:8%;top:57%;opacity:.85}.hero-side-note{right:auto;left:2px;bottom:5%}.section-heading{grid-template-columns:1fr}.section-aside{margin:27px 0 0}.about-layout{grid-template-columns:1fr;gap:35px;padding-left:0;padding-right:0}.about-copy{margin-left:28%;padding-top:0}.about-stamp{right:9%;top:36%}.expertise{grid-template-columns:1fr;gap:65px}.expertise-content{padding:0}.education{grid-template-columns:1fr 1fr}.education>div:first-child{grid-column:1/-1}.site-footer{grid-template-columns:1fr 1fr}.site-footer>:nth-child(even){text-align:right}}
@media(max-width:560px){:root{--gutter:21px}.site-header{height:64px}.site-nav{display:none;position:absolute;top:63px;left:0;right:0;background:var(--paper);padding:24px var(--gutter) 30px;border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:22px;font-size:15px}.site-nav.is-open{display:flex}.site-nav sup{float:right}.nav-contact{align-self:flex-start}.menu-toggle{display:grid;gap:5px;border:0;background:none;padding:10px}.menu-toggle span{display:block;width:21px;height:1px;background:var(--ink);transition:transform .2s}.menu-toggle[aria-expanded="true"] span:first-child{transform:translateY(3px) rotate(45deg)}.menu-toggle[aria-expanded="true"] span:last-child{transform:translateY(-3px) rotate(-45deg)}.hero{min-height:calc(100vh - 64px);min-height:calc(100svh - 64px);padding-top:18px}.hero-topline{font-size:8px}.hero-topline .availability{display:none}.hero-stage{min-height:690px;padding-top:24vh;align-items:flex-start}.hero-copy{width:100%}.hero .eyebrow{font-size:8px;margin-bottom:18px}.hero h1{font-size:clamp(66px,15vw,88px);line-height:.94;letter-spacing:-.045em}.hero-intro{font-size:16px;margin-top:27px}.hero-art{width:69vw;right:-1%;top:61%;opacity:.68}.hero-side-note{bottom:5%;font-size:8px}.hero-bottom{font-size:8px}.hero-rule{width:42%}.section-light{padding:90px var(--gutter)}.section-heading{margin-bottom:45px}.section-heading h2,.expertise-heading h2{font-size:clamp(52px,13vw,74px)}.section-heading .eyebrow{margin-bottom:22px}.project-grid{grid-template-columns:1fr;row-gap:48px}.project-card:nth-child(2n){margin-top:0}.project-visual{aspect-ratio:1.08}.project-meta h3{font-size:25px}.placeholder-note{line-height:1.7;margin-top:55px}.about{min-height:auto;padding-top:23px}.about-topline>span{font-size:7px}.about-layout{padding:100px 0 100px;gap:35px}.about-layout h2{font-size:clamp(59px,15vw,85px)}.about-copy{margin-left:9%;max-width:330px}.about-copy .about-lead{font-size:18px}.about-copy p{font-size:12px}.about-stamp{font-size:64px;top:37%;right:7%}.about-footer{font-size:7px;gap:12px}.about-footer span:nth-child(2){display:none}.expertise{padding-top:95px;padding-bottom:95px}.service-row{min-height:57px;grid-template-columns:32px 1fr auto}.service-row strong{font-size:14px}.skill-tag{font-size:9px;padding:7px 10px}.software{gap:10px}.section-mid{padding:90px var(--gutter)}.experience-top{display:block;margin-bottom:50px}.experience-top h2{font-size:clamp(60px,15vw,86px);margin-top:35px}.job{grid-template-columns:1fr auto;gap:12px;padding:22px 0}.job-title{font-size:29px}.job-period{grid-column:2;grid-row:1;text-align:right;font-size:9px}.job-details{grid-column:1/-1;padding-top:8px}.job-details li{font-size:10px}.education{grid-template-columns:1fr;margin-top:75px;gap:25px}.education>div:first-child{grid-column:auto}.education h3{font-size:28px}.education-entry h4{font-size:12px}.contact{min-height:620px;padding:23px var(--gutter) 35px}.contact-kicker>span{font-size:7px}.contact h2{font-size:clamp(67px,16vw,104px);margin-top:125px}.contact-email{margin-top:38px}.contact-bottom{display:block;padding-top:70px}.contact-links{margin-top:30px;gap:19px;flex-wrap:wrap;font-size:10px}.site-footer{padding-top:22px;padding-bottom:22px;gap:17px;font-size:7px}.footer-mark{font-size:11px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}[data-reveal],.project-card{opacity:1;transform:none}}

.client-strip{display:grid;grid-template-columns:.7fr 1.3fr;align-items:center;gap:36px;padding:clamp(48px,7vw,88px) var(--gutter);border-top:1px solid var(--line);background:var(--paper-2)}.client-strip-heading .eyebrow{margin:0 0 12px;color:var(--muted)}.client-strip-heading h2{margin:0;font-size:clamp(27px,3.6vw,46px);font-weight:600;letter-spacing:-.06em;line-height:1}.client-logo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;width:100%;max-width:720px;margin-left:auto}.client-logo-box{min-height:clamp(92px,10vw,124px);display:grid;place-items:center;overflow:hidden;padding:10px;border:1px solid var(--line);background:#f1f0eb}.client-logo-box img{display:block;max-width:90%;max-height:94px;width:auto;height:auto;object-fit:contain;mix-blend-mode:multiply}.client-logo-box-dark{background:#171716;border-color:#171716}.client-logo-box-dark img{mix-blend-mode:screen;transform:scale(1.25)}
@media(max-width:800px){.client-strip{grid-template-columns:1fr;gap:24px}.client-logo-grid{margin-left:0}}
@media(max-width:560px){.client-strip{padding:54px var(--gutter)}.client-logo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.client-logo-box{min-height:100px}.client-logo-box img{max-height:78px}.client-logo-box-dark img{transform:scale(1.2)}}

/* Keep display type tight but give stacked lines enough breathing room. */
.hero h1,.section-heading h2,.expertise-heading h2,.experience-top h2,
.about-layout h2,.contact h2{line-height:1.02;letter-spacing:-.045em}
.section-heading h2 em,.expertise-heading h2 em,.experience-top h2 em,
.contact h2 em{letter-spacing:-.035em}
.about-layout h2 em{letter-spacing:-.025em}
.about-stamp{line-height:.82;letter-spacing:-.08em}
.hero-intro,.about-copy .about-lead{letter-spacing:-.025em}
.project-meta h3,.job-title,.education h3,.client-strip-heading h2{letter-spacing:-.04em}
.service-row strong,.work-category-meta strong,.work-page-card-meta h2{letter-spacing:-.02em}
.nav-contact span,.hero-side-note span,.project-arrow,.text-link span,.contact-email span,
.contact-links a span,.service-row span:last-child,.work-category-arrow,.work-browse-arrow,
.project-open-link span{font-weight:700;-webkit-text-stroke:.35px currentColor}
.hero-side-note span,.nav-contact span,.project-arrow,.text-link span,.contact-email span,
.contact-links a span,.service-row span:last-child,.work-category-arrow,.work-browse-arrow,
.project-open-link span,.back-top{font-weight:800;-webkit-text-stroke:1px currentColor}
@media(max-width:560px){.hero h1,.section-heading h2,.expertise-heading h2,.experience-top h2,
.about-layout h2,.contact h2{line-height:1.04;letter-spacing:-.04em}}

/* Improve readability in the experience timeline. */
.job-role{font-size:13px}
.job-period{font-size:11px}
.job-details li{font-size:13px;line-height:1.85}
.job-details li:before{font-size:14px;font-weight:700;-webkit-text-stroke:.35px currentColor}
.job-award{font-size:12px}
@media(max-width:560px){.job-role{font-size:12px}.job-period{font-size:10px}.job-details li{font-size:12px;line-height:1.8}.job-award{font-size:11px}}
.software p:last-child{font-weight:600;color:var(--ink)}
.software>div{padding:16px 18px 18px;border:1px solid var(--line);background:rgba(255,255,255,.24)}
.software>div .eyebrow{margin-bottom:14px;color:var(--muted)}
.software>div p:last-child{line-height:1.9}
@media(max-width:560px){.software>div{padding:14px 12px 15px}}
