@font-face{font-family:Manrope;src:url('/fonts/manrope-regular.ttf') format('truetype');font-weight:400;font-display:swap}@font-face{font-family:Manrope;src:url('/fonts/manrope-semibold.ttf') format('truetype');font-weight:600 800;font-display:swap}
:root{--paper:#fff;--ink:#111111;--accent:#cd6227;--quiet:#555;--wash:#f1f1ef;--gap:24px;--margin:32px;--body:16px;--small:14px;--title:clamp(64px,8.9vw,144px);--section:clamp(42px,5.7vw,88px);--ease:cubic-bezier(.22,.68,0,1)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;padding-top:90px;background:var(--paper);color:var(--ink);font-family:Manrope,Arial,sans-serif;font-size:var(--body);line-height:1.55;-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none;text-underline-offset:6px}button{font:inherit;color:inherit;cursor:pointer}a,button{touch-action:manipulation}button{border:0;border-radius:0}button:focus-visible,a:focus-visible{outline:3px solid currentColor;outline-offset:5px}a:hover{text-decoration:underline}img{display:block;width:100%;height:auto}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:400;letter-spacing:-.05em;line-height:1.02;text-wrap:balance}h1{font-size:var(--title)}h2{font-size:var(--section)}h3{font-size:24px;letter-spacing:-.025em}p{max-width:66ch;text-wrap:pretty}p+p{margin-top:22px}ul{padding:0;list-style:none}section{scroll-margin-top:100px}::selection{background:var(--accent);color:var(--ink)}.skip{position:fixed;left:16px;top:-100px;padding:12px;background:var(--ink);color:var(--paper);z-index:100}.skip:focus{top:12px}.header{display:flex;align-items:center;justify-content:space-between;padding:18px var(--margin);height:90px;background:var(--paper);position:fixed;inset:0 0 auto;z-index:20}.brand{font-size:42px;font-weight:600;letter-spacing:-.085em;line-height:1}.brand span{color:var(--accent)}.header nav{display:flex;gap:34px;align-items:center}.header nav a{padding:8px 0}.header nav a[aria-current]{text-decoration:underline}.menu-toggle{display:none}.home .header{background:var(--accent)}.home .brand span,.contact-theme .brand span{color:var(--paper)}.solid-link{display:inline-flex;justify-content:space-between;align-items:center;gap:36px;min-height:52px;padding:14px 22px;background:var(--ink);color:var(--paper);font-size:16px;line-height:1.3;transition:transform .25s var(--ease);white-space:nowrap}.solid-link:hover{transform:translateY(-3px);text-decoration:none}.solid-link:active{transform:translateY(0) scale(.98)}.text-link{display:inline-block;text-decoration:underline;padding:12px 0;min-height:44px}.home-hero{background:var(--accent);padding:26px var(--margin) 40px}.home-hero h1{font-size:clamp(110px,17.4vw,280px);line-height:.88;letter-spacing:-.072em;margin-bottom:48px;font-weight:600}.home-hero h1 span{display:block}.home-hero h1 span:last-child{text-align:right}.hero-bottom{display:grid;grid-template-columns:1fr 1fr auto;gap:24px;align-items:end}.hero-bottom>p{font-size:20px;line-height:1.4}.hero-focus{justify-self:center}.section-pad{padding:120px var(--margin)}.section-heading{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:end;margin-bottom:70px}.section-heading>div{max-width:360px;justify-self:end}.section-heading .text-link{margin-top:16px}.project-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:24px;row-gap:100px;align-items:start}.project-card:nth-child(6n+1){grid-column:1/8}.project-card:nth-child(6n+2){grid-column:9/13;margin-top:120px}.project-card:nth-child(6n+3){grid-column:1/6;margin-top:50px}.project-card:nth-child(6n+4){grid-column:7/13}.project-card:nth-child(6n+5){grid-column:1/8}.project-card:nth-child(6n+6){grid-column:9/13;margin-top:110px}.project-card[hidden]{display:none}.project-photo{position:relative;overflow:hidden;background:var(--wash);aspect-ratio:1.23}.project-photo img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease)}.project-card:nth-child(6n+2) .project-photo,.project-card:nth-child(6n+6) .project-photo{aspect-ratio:.76}.project-card:nth-child(6n+3) .project-photo{aspect-ratio:.9}.project-card:nth-child(6n+4) .project-photo{aspect-ratio:1.1}.project-link{display:block}.project-link:hover{text-decoration:none}.project-link:hover img{transform:scale(1.035)}.project-caption{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-top:20px}.project-caption h3{font-size:32px}.project-caption>span{font-size:var(--small)}.project-category{margin-top:6px;font-size:16px}.project-note{font-size:var(--small);color:var(--quiet);margin-top:6px}.image-action{position:absolute;right:20px;bottom:20px;padding:12px 18px;background:var(--paper);opacity:0;transform:translateY(8px);transition:opacity .3s,transform .3s;font-size:14px}.project-link:hover .image-action,.project-link:focus-visible .image-action{opacity:1;transform:none}.about-band{display:grid;grid-template-columns:1fr 1fr;gap:40px;background:var(--ink);color:var(--paper);padding:100px var(--margin)}.about-band-title>p{margin-top:36px}.statement{font-size:32px;line-height:1.3;letter-spacing:-.025em}.about-mini{display:grid;grid-template-columns:180px 1fr;gap:32px;margin-top:50px;align-items:end}.about-mini img{aspect-ratio:3/4;object-fit:cover}.about-mini .text-link{margin-top:12px}.contact-band{background:var(--accent);padding:90px var(--margin) 60px}.contact-band h2{font-size:clamp(80px,15.2vw,240px);letter-spacing:-.07em}.contact-bottom{display:flex;align-items:end;justify-content:space-between;gap:30px;margin-top:64px}.contact-link{font-size:clamp(16px,2.15vw,32px);letter-spacing:-.03em;overflow-wrap:anywhere}.footer{padding:48px var(--margin) 24px;background:var(--paper)}.footer-top,.footer-bottom{display:flex;align-items:start;justify-content:space-between;gap:30px}.footer-top>a{padding:8px 0;overflow-wrap:anywhere}.footer-bottom{margin-top:60px;font-size:14px}.footer-bottom a{min-height:44px}.page-intro{padding:64px var(--margin) 72px}.page-intro h1{margin-bottom:52px}.intro-bottom{display:flex;justify-content:space-between;align-items:end;gap:40px}.intro-bottom p{font-size:20px;line-height:1.4}.portfolio-section{padding:0 var(--margin) 120px}.filters{display:flex;flex-wrap:wrap;gap:8px 26px;align-items:center;margin-bottom:20px}.filters a{padding:10px 0;min-height:44px;line-height:1.5;transition:transform .2s}.filters sup{margin-left:6px;font-size:12px}.filters a[aria-current]{text-decoration:underline;text-decoration-thickness:2px}.filters a:hover{transform:translateY(-2px)}.results-count{font-size:14px;margin:12px 0 40px;color:var(--quiet)}.portfolio-grid.filtered{grid-template-columns:repeat(2,minmax(0,1fr));gap:60px 24px}.portfolio-grid.filtered .project-card{grid-column:auto;margin-top:0}.portfolio-grid.filtered .project-card:nth-child(even){margin-top:100px}.case-heading{padding:40px var(--margin) 44px}.case-heading h1{margin:28px 0 36px}.case-meta{display:flex;gap:40px;justify-content:space-between}.concept-label{margin-top:18px;font-size:14px}.case-hero{margin:0 var(--margin)}.case-hero img{height:min(75vw,780px);max-height:85svh;object-fit:cover;object-position:center 55%}.case-split .case-hero img{height:760px;object-fit:contain;background:var(--wash)}figcaption{font-size:var(--small);line-height:1.5;color:var(--quiet);margin-top:12px}figcaption a{text-decoration:underline}.editorial-section{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin:110px var(--margin)}.editorial-section h2{font-size:clamp(36px,4.3vw,68px);max-width:15ch}.editorial-section h3{margin:40px 0 20px}.editorial-section p{line-height:1.65}.lead{font-size:24px;line-height:1.45;letter-spacing:-.02em}.reference-note{font-size:14px;color:var(--quiet);margin-top:28px!important}.case-context{padding-top:20px}.case-gallery{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:0 var(--margin);align-items:start}.editorial-photo{min-width:0}.zoom-photo{display:block;position:relative;padding:0;background:var(--wash);width:100%;overflow:hidden}.zoom-photo img{height:620px;object-fit:cover}.detail-crop .zoom-photo img{transform:scale(1.2);object-position:35% 65%}.zoom-label{position:absolute;right:18px;bottom:18px;background:var(--paper);color:var(--ink);padding:10px 16px;font-size:14px}.diagram{background:var(--wash);align-self:stretch;display:flex;flex-direction:column;justify-content:center;padding:40px}.diagram svg{width:100%;height:auto}.diagram .route{stroke:var(--accent);stroke-width:5}.diagram figcaption{margin-top:20px}.material-section{display:grid;grid-template-columns:1fr 1fr;gap:8vw;padding:110px var(--margin);align-items:center}.material-section h2{margin-bottom:32px}.material-section p{max-width:52ch}.materials{font-size:24px;margin:36px 0 0;line-height:1.7;letter-spacing:-.025em}.material-crop img{height:520px;object-position:70% 75%;transform:scale(1.45)}.detail-section{margin-top:0}.next-project{display:grid;grid-template-columns:1fr 1fr;background:var(--ink);color:var(--paper);padding:64px var(--margin);gap:50px;align-items:center}.next-project h2{margin:22px 0}.next-project .solid-link{background:var(--paper);color:var(--ink);margin-top:32px}.next-photo{overflow:hidden}.next-photo img{height:360px;object-fit:cover;transition:transform .6s}.next-photo:hover img{transform:scale(1.03)}.about-profile{display:grid;grid-template-columns:5fr 6fr;gap:9vw;padding:0 var(--margin);align-items:center}.about-profile figure{max-width:620px}.about-profile img{aspect-ratio:4/5;object-fit:cover}.about-profile h2{margin-bottom:40px}.about-profile .lead{margin-bottom:24px}.interests{padding:90px var(--margin);background:var(--wash);display:grid;grid-template-columns:1fr 1fr;gap:40px}.interests>div p{font-size:clamp(30px,4.6vw,68px);letter-spacing:-.04em;line-height:1.1}.cv-layout{padding:0 var(--margin) 100px;display:grid;grid-template-columns:1fr 2fr;gap:8vw}.cv-aside{align-self:start;position:sticky;top:114px}.cv-aside img{width:100%;max-width:360px;background:var(--wash)}.cv-aside nav{display:flex;flex-direction:column;align-items:start;margin-top:32px;gap:12px}.cv-aside nav a{padding:8px 0}.cv-content section{margin-bottom:80px}.cv-content h2{font-size:52px;margin-bottom:42px}.timeline-entry{display:grid;grid-template-columns:90px 1fr;gap:30px;margin-bottom:44px}.timeline-entry h3{line-height:1.2}.date{font-size:14px;padding-top:4px}.timeline-entry .place{margin:12px 0 20px}.timeline-entry p{line-height:1.6}.plain-list{display:grid;grid-template-columns:1fr 1fr;gap:16px 32px}.tool-list{display:flex;gap:12px 32px;flex-wrap:wrap;font-size:24px}.contact-theme,.contact-theme .header{background:var(--accent)}.contact-page{padding:64px var(--margin) 100px}.contact-page h1{font-size:clamp(80px,15.2vw,240px);letter-spacing:-.07em}.contact-page-grid{display:grid;grid-template-columns:1fr 1.5fr;gap:30px;margin-top:90px}.email-display{display:block;font-size:clamp(20px,3.3vw,50px);letter-spacing:-.04em;margin:20px 0;overflow-wrap:anywhere}.copy-email{background:var(--ink);color:var(--paper);padding:13px 18px;min-height:48px}.copy-status{display:block;margin-top:12px;font-size:14px;min-height:22px}.phone-label{margin-top:42px}.phone-display{display:block;font-size:32px;margin-top:16px}.contact-cv{display:flex;align-items:center;justify-content:space-between;margin-top:100px;gap:24px}.credits-section{padding:0 var(--margin) 100px}.credits-section>h2{font-size:42px;margin:20px 0 32px}.credits-section>p{max-width:80ch}.credits-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:50px 30px;margin:60px 0 100px}.credits-grid img{height:260px;object-fit:cover;margin-bottom:24px}.credits-grid h3{margin-bottom:16px}.credits-grid a{text-decoration:underline;display:inline-block;padding:10px 0}.credits-grid p{font-size:14px}.lightbox-close{position:absolute;right:24px;top:20px;background:var(--paper);color:var(--ink);padding:12px 18px;z-index:2}dialog{border:0;background:var(--ink);color:var(--paper);width:min(96vw,1400px);max-width:none;max-height:94svh;padding:60px 24px 24px}dialog::backdrop{background:rgb(28 28 28 / .9)}dialog>img{max-height:74svh;object-fit:contain}dialog>p{font-size:14px;margin:18px auto 0;text-align:center}.reveal.visible{animation:enter .8s var(--ease) both}.reveal{opacity:1}.home-hero h1 span{animation:type-in .85s var(--ease) both}.home-hero h1 span:last-child{animation-delay:.1s}.project-card.visible .project-photo img{animation:photo-in 1s var(--ease) both}@keyframes enter{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}@keyframes type-in{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}@keyframes photo-in{from{transform:scale(1.045)}to{transform:scale(1)}}@keyframes exit{to{opacity:0}}@keyframes enter-page{from{opacity:0}}
@media(min-width:1800px){:root{--margin:48px}.home-hero h1{font-size:17.3vw}.home-hero{padding-top:50px}}
@media(max-width:1000px){:root{--margin:24px}.header nav{gap:22px}.hero-bottom{grid-template-columns:1fr auto}.hero-focus{display:none}.home-hero h1{font-size:18vw}.project-grid{row-gap:60px}.project-card:nth-child(6n+2),.project-card:nth-child(6n+6){grid-column:9/13;margin-top:70px}.about-mini{grid-template-columns:120px 1fr;gap:20px}.contact-bottom{flex-wrap:wrap}.contact-link{font-size:24px}.case-meta{gap:20px;flex-wrap:wrap}.zoom-photo img{height:460px}.material-crop img{height:400px}.diagram{padding:24px}.cv-layout{gap:40px}.cv-content h2{font-size:42px}.timeline-entry{grid-template-columns:1fr;gap:12px}.contact-page-grid{grid-template-columns:1fr;gap:50px}.email-display{font-size:5vw}.credits-grid{grid-template-columns:1fr 1fr}}
@media(max-width:700px){:root{--margin:20px;--gap:16px;--section:44px;--title:64px}.header{height:76px;padding-top:16px;padding-bottom:16px}.brand{font-size:36px}.menu-toggle{display:flex;align-items:center;gap:24px;background:none;min-height:44px;padding:8px 0;font-size:16px}.menu-toggle span{font-size:25px;line-height:1}.header nav{display:flex;position:absolute;left:0;right:0;top:76px;background:var(--paper);padding:32px var(--margin) 48px;gap:8px;flex-direction:column;align-items:start;box-shadow:0 30px 30px rgb(0 0 0 / .08)}.header nav.is-open{display:flex}.header nav a{font-size:40px;letter-spacing:-.05em;padding:10px 0;line-height:1.1}.home .header nav,.contact-theme .header nav{background:var(--accent)}.home-hero{padding-top:55px;padding-bottom:30px}.home-hero h1{font-size:22.3vw;line-height:.94;letter-spacing:-.075em;margin-bottom:38px}.home-hero h1 span:last-child{text-align:left}.hero-bottom{display:flex;flex-direction:column;align-items:start;gap:26px}.hero-bottom>p{font-size:18px}.hero-bottom .solid-link{align-self:flex-end}.section-pad{padding-top:70px;padding-bottom:70px}.section-heading{grid-template-columns:1fr;gap:26px;margin-bottom:38px}.section-heading>div{max-width:none;justify-self:start}.section-heading h2 br{display:none}.section-heading h2{max-width:10ch}.section-heading .text-link{margin-top:12px}.project-grid{display:flex;flex-direction:column;gap:48px}.project-card:nth-child(n){width:100%;margin:0}.project-card:nth-child(3n+2){width:84%;align-self:flex-end}.project-card:nth-child(n) .project-photo{aspect-ratio:1.05}.project-card:nth-child(3n+2) .project-photo{aspect-ratio:.8}.project-caption{margin-top:15px}.project-caption h3{font-size:28px}.project-note{font-size:13px}.project-category{font-size:14px}.image-action{display:none}.about-band{grid-template-columns:1fr;padding:60px var(--margin);gap:32px}.about-band-title>p{margin-top:24px}.statement{font-size:24px}.about-mini{margin-top:36px;grid-template-columns:110px 1fr;gap:20px;align-items:start}.about-mini img{height:150px}.about-mini p{font-size:15px}.about-mini .text-link{font-size:14px}.contact-band{padding:56px var(--margin) 36px}.contact-band h2{font-size:17.8vw}.contact-bottom{margin-top:34px;display:grid;gap:24px}.contact-link{font-size:clamp(16px,4.7vw,24px)}.contact-bottom .solid-link{justify-self:start}.footer{padding-top:32px}.footer-top{display:grid;gap:18px;font-size:14px}.footer-bottom{flex-wrap:wrap;gap:16px;margin-top:38px;font-size:13px}.footer-bottom span{width:100%}.footer-bottom a{padding:5px 0}.page-intro{padding-top:45px;padding-bottom:44px}.page-intro h1{margin-bottom:30px}.intro-bottom{display:grid;gap:24px}.intro-bottom p{font-size:18px}.intro-bottom .solid-link{justify-self:start}.portfolio-section{padding-bottom:70px}.filters{gap:4px 20px}.filters a{font-size:14px}.results-count{margin-bottom:30px}.portfolio-grid.filtered{display:flex}.portfolio-grid.filtered .project-card:nth-child(n){margin-top:0;width:100%}.case-heading{padding-top:20px;padding-bottom:26px}.case-heading h1{font-size:clamp(48px,12vw,64px);margin-top:24px}.case-meta{display:grid;gap:8px;font-size:14px}.concept-label{font-size:14px}.case-hero img,.case-split .case-hero img{height:460px;max-height:70svh;object-fit:cover}.case-split .case-hero img{object-fit:contain}.editorial-section{grid-template-columns:1fr;gap:28px;margin:64px var(--margin)}.editorial-section h2{font-size:36px;max-width:none}.lead{font-size:21px}.case-gallery{grid-template-columns:1fr;gap:38px}.zoom-photo img{height:420px}.diagram{padding:28px}.material-section{grid-template-columns:1fr;gap:40px;padding-top:64px;padding-bottom:64px}.material-section h2{font-size:36px}.material-crop img{height:380px}.materials{font-size:21px;margin-top:26px}.detail-section{margin-top:0}.next-project{grid-template-columns:1fr;padding:46px var(--margin);gap:35px}.next-project h2{font-size:44px}.next-photo img{height:300px}.about-profile{grid-template-columns:1fr;gap:42px}.about-profile figure{width:85%}.about-profile h2{margin-bottom:26px}.interests{grid-template-columns:1fr;padding:60px var(--margin);gap:32px}.interests>div p{font-size:32px}.cv-layout{display:flex;flex-direction:column;gap:48px;padding-bottom:20px}.cv-aside{position:static;display:grid;grid-template-columns:120px 1fr;gap:20px;align-items:center}.cv-aside nav{grid-column:1/-1;flex-direction:row;flex-wrap:wrap;gap:8px 24px;margin-top:0}.cv-content section{margin-bottom:54px}.cv-content h2{font-size:38px;margin-bottom:32px}.timeline-entry{margin-bottom:34px}.timeline-entry h3{font-size:23px}.plain-list{grid-template-columns:1fr;gap:12px}.tool-list{font-size:21px}.contact-page{padding-top:50px;padding-bottom:60px}.contact-page h1{font-size:17.8vw}.contact-page-grid{margin-top:56px;gap:40px}.contact-page-grid .lead{font-size:20px}.email-display{font-size:5.4vw}.contact-cv{margin-top:64px;display:grid;gap:20px}.contact-cv .solid-link{justify-self:start}.phone-display{font-size:28px}.credits-section>h2{font-size:32px}.credits-grid{grid-template-columns:1fr;gap:40px}.credits-grid img{height:300px}dialog{padding:70px 12px 20px}.lightbox-close{right:12px;top:12px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.project-link:hover img,.next-photo:hover img{transform:none}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}
@media(hover:none){.project-link:hover img{transform:none}.solid-link:hover{transform:none}}

@media(min-width:701px) and (max-width:1000px){.statement{font-size:24px}.about-mini{grid-template-columns:1fr}.about-mini img{width:140px}.about-mini>div{max-width:32ch}}
@media(min-width:1001px){.case-split{display:grid;grid-template-columns:38% 62%;padding-top:36px}.case-split>.case-heading{grid-column:1;padding-top:0;align-self:start}.case-split>.case-hero{grid-column:2;margin-left:0}.case-split>.case-hero img{height:680px;max-height:none;object-fit:cover}.case-split>.case-heading h1{font-size:clamp(60px,6.5vw,104px)}.case-split .case-meta{flex-direction:column;gap:14px;margin-top:40px}.case-split>section{grid-column:1/-1}.case-split .material-section>div{order:2}.case-split .material-section>figure{order:1}}
main{animation:enter-page .25s ease both}

/* Fixed navigation and interruptible mobile menu. */
:root { --menu-duration:220ms; }
.button-arrow { display:block; width:20px; height:20px; flex:0 0 20px; }
.menu-icon { flex:0 0 20px; }
.menu-icon-vertical { transform-origin:12px 12px; transition:transform var(--menu-duration) var(--ease),opacity var(--menu-duration) var(--ease); }
.menu-toggle[aria-expanded="true"] .menu-icon-vertical { transform:rotate(90deg); opacity:0; }
@media(max-width:700px) {
  body { padding-top:76px; }
  .header nav {
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transform:translateY(-12px);
    transform-origin:top right;
    max-height:calc(100dvh - 76px);
    overflow-y:auto;
    overscroll-behavior:contain;
    transition:opacity var(--menu-duration) var(--ease),transform var(--menu-duration) var(--ease),visibility 0s linear var(--menu-duration);
  }
  .header nav.is-open {
    opacity:1;
    visibility:visible;
    pointer-events:auto;
    transform:translateY(0);
    transition-delay:0s;
  }
}
@media(prefers-reduced-motion:reduce) {
  .header nav,.menu-icon-vertical { transition:none; transform:none; }
}
