:root{--black:#0a0a0a;--white:#f4f4f1;--line:#b8b8b3;--red:#ff3b1f;font-family:Helvetica;color:var(--black);background:var(--white);font-synthesis:none}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{font-size:16px}.site-header{position:fixed;z-index:20;top:0;left:0;width:100%;height:62px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;background:var(--white);border-bottom:1px solid var(--black)}a{color:inherit;text-decoration:none}.name{font-weight:700;letter-spacing:-.03em}.site-header nav{display:flex;gap:28px}.site-header nav a{font-size:.86rem}.site-header a:hover,.site-header a[aria-current="page"]{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}main{height:100%}.view{height:100%;padding-top:62px}.home{position:relative;background:#151719}.home img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.72)}.home .overlay{position:absolute;inset:62px 0 0;display:flex;align-items:flex-end;padding:18px;color:#fff;background:linear-gradient(180deg,transparent 62%,rgba(0,0,0,.48))}.home .overlay p{margin:0;font-size:.75rem;letter-spacing:.05em}.projects{overflow-y:auto;background:var(--white)}.filter-bar{position:sticky;top:0;z-index:4;display:grid;grid-template-columns:1fr auto;gap:20px;padding:16px 18px;background:var(--white);border-bottom:1px solid var(--black)}.filters{display:flex;gap:6px;flex-wrap:wrap}.filter{font:inherit;font-size:.78rem;border:1px solid var(--black);border-radius:999px;background:transparent;padding:5px 10px;cursor:pointer}.filter.active{color:var(--white);background:var(--black)}.sort{font-size:.78rem;padding-top:6px}.project-list{padding:0 18px 60px}.project-row{display:grid;grid-template-columns:72px minmax(200px,1.7fr) 1fr 1fr 42px;gap:18px;align-items:center;min-height:74px;border-bottom:1px solid var(--line);transition:background .15s}.project-row:hover{background:#e7e7e1}.project-row .no,.project-row .meta,.project-row .year{font-size:.76rem}.project-row h2{font-size:clamp(1.15rem,2vw,1.9rem);font-weight:400;letter-spacing:-.04em;margin:0}.project-row .mark{font-size:1.4rem;text-align:right}.horizontal{overflow-x:auto;overflow-y:hidden}.track{display:flex;height:100%;width:max-content}.panel{position:relative;flex:none;height:100%;border-right:1px solid var(--black)}.project-intro{width:min(44vw,640px);padding:42px 24px 30px;display:flex;flex-direction:column;justify-content:space-between}.eyebrow{font-size:.72rem;text-transform:uppercase}.project-intro h1,.info-title{font-size:clamp(3rem,7vw,8rem);line-height:.84;letter-spacing:-.07em;font-weight:400;margin:16px 0}.facts{display:grid;grid-template-columns:1fr 1fr;gap:10px 30px;font-size:.78rem}.project-image{width:min(78vw,1120px);background:#111}.project-image img{width:100%;height:100%;object-fit:cover}.project-text{width:min(48vw,700px);padding:42px 32px 50px;display:flex;flex-direction:column;justify-content:flex-end}.project-text p{font-size:clamp(1.2rem,2.3vw,2.3rem);line-height:1.08;letter-spacing:-.035em;margin:0}.index{position:sticky;right:18px;bottom:18px;align-self:flex-end;font-size:.75rem;background:var(--white);padding:6px 8px}.portfolio{background:#202020;color:#fff}.book-stage{height:100%;min-width:100vw;display:flex;align-items:center;justify-content:center;padding:42px 8vw 60px}.book{height:min(67vh,620px);aspect-ratio:1.42;display:grid;grid-template-columns:1fr 1fr;perspective:1500px;filter:drop-shadow(0 22px 30px rgba(0,0,0,.35))}.page{background:#ecebe6;color:#111;padding:5%;position:relative;overflow:hidden}.page.left{border-right:1px solid #aaa}.page.right{transform-origin:left center;transition:transform .55s cubic-bezier(.2,.7,.2,1)}.page.turning{transform:rotateY(-18deg)}.page-no{position:absolute;bottom:4%;font-size:.68rem}.right .page-no{right:5%}.page h2{font-weight:400;font-size:clamp(1.4rem,3vw,3.3rem);letter-spacing:-.06em;margin:0}.folio-art{position:absolute;inset:32% 8% 9%;background:var(--black)}.folio-art.alt{background:linear-gradient(135deg,#ff3b1f 0 40%,#c4c3bd 40% 66%,#121212 66%)}.folio-art.lines{background:repeating-linear-gradient(90deg,#111 0 2px,#ecebe6 2px 25px)}.book-controls{position:absolute;left:18px;right:18px;bottom:16px;display:flex;justify-content:space-between;font-size:.78rem}.book-controls button{font:inherit;color:#fff;background:transparent;border:0;padding:0;cursor:pointer}.info{background:var(--red);overflow-x:auto;overflow-y:hidden}.info .panel{padding:36px 24px}.info-lead{width:min(68vw,980px)}.info-lead p{max-width:780px;font-size:clamp(1.35rem,3vw,3.8rem);line-height:1.02;letter-spacing:-.045em}.info-data{width:min(40vw,580px);display:flex;flex-direction:column;justify-content:space-between}.info-data dl{display:grid;grid-template-columns:110px 1fr;gap:14px;font-size:.82rem}.info-data dt{opacity:.65}.info-data dd{margin:0}.info-data a{text-decoration:underline;text-underline-offset:3px}.scroll-hint{position:fixed;right:18px;bottom:16px;font-size:.72rem;z-index:10}
@media(max-width:700px){.site-header{height:92px;align-items:flex-start;padding-top:15px}.site-header nav{position:absolute;left:18px;bottom:14px;width:calc(100% - 36px);justify-content:space-between;gap:0}.view{padding-top:92px}.home .overlay{inset:92px 0 0}.filter-bar{grid-template-columns:1fr}.sort{display:none}.project-row{grid-template-columns:42px 1fr 42px;gap:10px;min-height:82px}.project-row .meta{display:none}.project-intro{width:88vw}.project-text{width:86vw}.project-image{width:92vw}.info-lead{width:92vw}.info-data{width:82vw}.book{height:auto;width:92vw;aspect-ratio:1.3}.book-stage{padding-left:4vw;padding-right:4vw}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.page.right{transition:none}}
/* Typography and page layouts */
:root{font-family:Helvetica;--home-ink:#fff}
button,input,select,textarea{font-family:Helvetica}
.site-header{height:74px;padding:0 24px}
.name{font-size:1.45rem;font-weight:400;letter-spacing:-.035em}
.site-header nav a{font-size:1.05rem;font-weight:400}
.is-home .site-header{background:transparent;border:0;color:var(--home-ink);text-shadow:0 1px 12px #0003}
.view{padding-top:74px}
.home{padding:0}
.home-caption{position:absolute;left:24px;bottom:24px;width:min(34rem,75vw);min-height:3rem;color:#fff;font-size:1rem;font-weight:300;line-height:1.4}
.projects{display:flex;flex-direction:column;overflow:hidden}
.filter-bar{position:static;display:flex;justify-content:space-between;align-items:center;flex:none;padding:14px 24px}
.filters{gap:20px}
.filter{font-size:.875rem;border:0;border-bottom:1px solid transparent;border-radius:0;background:transparent;padding:4px 0}
.filter.active{border-bottom-color:var(--black);background:transparent;color:var(--black)}
.sort{font-family:Times;font-size:.9rem}
.project-list{display:flex;flex:1;min-height:0;gap:24px;padding:24px;overflow-x:auto;overflow-y:hidden}
.project-card{display:flex;flex-direction:column;flex:none;width:max-content}
.project-card>img{height:calc(100dvh - 224px);width:auto;max-width:none;display:block}
.card-caption{display:grid;grid-template-columns:40px 1fr auto;gap:8px 16px;align-items:baseline;padding-top:12px}
.card-caption h2{font-size:1.25rem;font-weight:400;letter-spacing:-.025em;margin:0}
.card-caption .no,.card-caption .year{font-family:Times;font-size:.875rem}
.card-caption .meta{grid-column:2;font-size:.875rem}
.project-card:hover h2{text-decoration:underline;text-underline-offset:4px}
.project-image{margin:0;width:auto}.project-image img{height:100%;width:auto;display:block}
.project-intro h1,.info-title{line-height:.95}
.facts,.eyebrow{font-size:.875rem}
.facts span:nth-child(odd),.project-text p{font-family:Times}
.project-text p{letter-spacing:0}
.book-stage{padding:3vh 4vw;min-width:0}
.book{position:relative;height:auto;width:min(90vw,calc((100dvh - 74px - 6vh)*1.42));aspect-ratio:1.42}
.page{transition:transform .4s ease}
.page.left{transform-origin:right center}
.turning-forward{transform:rotateY(-35deg)}
.turning-back{transform:rotateY(35deg)}
.page-no{font-family:Times;font-size:.875rem}
.page-hit{position:absolute;top:0;bottom:0;width:50%;border:0;background:transparent;z-index:3}
.previous{left:0;cursor:w-resize}.next{right:0;cursor:e-resize}
.page-hit:focus-visible{outline:2px solid white;outline-offset:4px}
.info{display:grid;grid-template-columns:2fr 1fr;overflow:hidden}
.info-lead{width:auto;padding:36px 24px}
.info-data{width:auto;padding:36px 24px;border-left:1px solid var(--black);min-width:0}
.info-data p{font-size:1rem;overflow-wrap:anywhere}
.cv-link{font-size:2rem;width:max-content}
.cv-link span{font-family:Times;font-size:1rem;margin-left:12px}
@media(max-width:700px){
.site-header{height:100px;padding:16px 18px}.name{font-size:1.3rem}.site-header nav a{font-size:1rem}
.view{padding-top:100px}.home{padding:0}.home-caption{left:18px;bottom:18px}
.filter-bar{padding:12px 18px}.filters{gap:12px}.filter{font-size:.8rem}
.project-list{padding:18px;gap:18px}.project-card>img{height:calc(100dvh - 250px)}
.info{grid-template-columns:1fr;grid-template-rows:1fr auto}
.project-intro{width:88vw}
.info-lead{padding:24px 18px}.info-title{font-size:clamp(3rem,14vw,5rem)}
.info-data{padding:20px 18px;border-left:0;border-top:1px solid var(--black);flex-direction:row;align-items:flex-end;gap:18px}
.book{width:min(92vw,calc((100dvh - 100px - 6vh)*1.42));aspect-ratio:1.42}
}
@media(prefers-reduced-motion:reduce){.page{transition:none}}

/* Main titles use Helvetica; navigation and metadata use Helvetica Light. */
@font-face{font-family:"Helvetica Light";src:local("Helvetica Light"),local("Helvetica-Light"),local("HelveticaNeue-Light"),local("Helvetica Neue Light");font-weight:300;font-style:normal}
.site-header{background:var(--white);border-bottom:1px solid rgba(0,0,0,.1)}
.site-header nav a,.eyebrow,.facts,.card-caption .no,.card-caption .year,.card-caption .meta,.page-no,.info-data p,.cv-link,.home-caption{font-family:"Helvetica Light",Helvetica;font-weight:300}
.name,.project-intro h1,.info-title,.card-caption h2,.page h2{font-family:Helvetica;font-weight:400}
.filter{font-family:"Helvetica Light",Helvetica;font-weight:300}.filter[data-filter="All"]{font-family:Helvetica;font-weight:400}
.facts span:nth-child(odd){font-family:"Helvetica Light",Helvetica;font-weight:300}
.project-date{grid-column:1/-1}
.is-home .site-header{background:transparent;border-bottom:0;text-shadow:none}
.is-home .site-header>.name{display:none}.is-home .site-header nav{margin-left:auto}
.home-identity{position:absolute;top:74px;left:0;width:50vw;height:calc(50dvh - 74px);padding:28px 24px;color:var(--home-ink);pointer-events:none;display:flex;align-items:flex-start}
.home-identity h1{font-family:Helvetica;font-weight:400;font-size:clamp(1.6rem,4.3vw,6rem);line-height:1.06;letter-spacing:-.05em;white-space:nowrap;margin:0}
.home-identity h1 span{display:block;font-family:"PingFang SC";font-size:clamp(2.2rem,8.3vw,8rem);font-weight:300;letter-spacing:-.03em;line-height:1.3;margin-top:12px}
.cv-link{font-size:1rem;font-weight:300;line-height:1.4;text-decoration-thickness:1px}
.book{perspective:2400px;isolation:isolate;filter:none;box-shadow:0 24px 45px #0005,0 2px 5px #0004;background:#ecebe6}
.book::after{content:"";position:absolute;top:0;bottom:0;left:calc(50% - 16px);width:32px;pointer-events:none;background:linear-gradient(90deg,transparent,rgba(0,0,0,.14) 46%,rgba(0,0,0,.2) 50%,rgba(0,0,0,.08) 55%,transparent);z-index:2}
.book>.page{transition:none}.page.left{border-right:0}.page.right{box-shadow:inset 5px 0 12px -10px #0009}
.turn-sheet{position:absolute;top:0;bottom:0;width:50%;z-index:5;transform-style:preserve-3d;pointer-events:none;will-change:transform}
.turn-sheet.forward{left:50%;transform-origin:left center}.turn-sheet.backward{left:0;transform-origin:right center}
.sheet-face{position:absolute;inset:0;width:100%;height:100%;padding:5%;backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:0 0 20px #0002}
.sheet-front{transform:rotateY(0deg)}.sheet-back{transform:rotateY(180deg)}
.sheet-face::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#0002,transparent 12%,transparent 88%,#0001)}
.is-turning .page-hit{pointer-events:none}.page-hit:disabled{cursor:default}
.project-text p{font-family:"Helvetica Light",Helvetica;font-weight:300}
@media(max-width:700px){.home-identity{top:100px;width:100vw;height:calc(50dvh - 100px);padding:24px 18px}.home-identity h1{font-size:7vw}.home-identity h1 span{font-size:14vw}.is-home .site-header nav{margin-left:0}}

.is-portfolio .site-header{background:#202020;color:#fff;border-bottom:0}
.curl-sheet{position:absolute;top:0;bottom:0;left:50%;width:0;transform-style:preserve-3d;z-index:5;pointer-events:none}
.paper-strip{position:absolute;top:0;height:100%;transform-style:preserve-3d;will-change:transform}
.forward .paper-strip{left:100%;transform-origin:left center}
.backward .paper-strip{right:100%;transform-origin:right center}
.strip-face{position:absolute;inset:0 auto 0 0;width:calc(100% + 1px);overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden;background:#ecebe6}
.strip-front{transform:translateZ(.1px)}
.strip-back{transform:rotateY(180deg) translateZ(.1px)}
.strip-content{position:absolute;top:0;max-width:none}
.strip-face::after{content:none}

/* Secondary type uses its natural glyph proportions. */
.site-header nav a,.eyebrow,.facts>span,.card-caption .no,.card-caption .year,.card-caption .meta,.page-no,.info-data p,.cv-link,.home-caption,.project-text p,.filter:not([data-filter="All"]){font-family:"Helvetica Light",Helvetica;font-weight:300}
.site-header nav a,.eyebrow,.cv-link{display:inline-block}
.home-identity h1{line-height:1.08;letter-spacing:-.035em}
.home-identity h1 span{font-size:.95em;line-height:1.1;letter-spacing:.02em;margin-top:.18em}
@media(max-width:700px){.home-identity h1 span{font-size:.95em;margin-top:.18em}}

/* Oversized navigation follows the supplied OMA reference. */
.site-header nav{align-items:center;gap:24px}
.site-header nav a{font-family:Helvetica;font-weight:700;font-size:1.05rem;line-height:1;letter-spacing:-.035em;text-decoration:none;white-space:nowrap}
.site-header nav a:last-child{color:transparent;-webkit-text-stroke:0.5px var(--header-ink,var(--black))}
.site-header nav a:hover,.site-header nav a[aria-current="page"]{color:inherit;-webkit-text-stroke:0;text-decoration:none}
.site-header nav a:not(:last-child):hover{opacity:.7}
.is-home .site-header{height:74px;align-items:center;padding-top:0}
.is-home .site-header nav{position:static;width:auto;justify-content:flex-end;gap:28px;margin-left:auto}
.is-home .site-header nav a{font-size:1.05rem}
.home-identity{top:74px;height:calc(50dvh - 74px)}
.home-identity h1{font-size:clamp(1.6rem,3.8vw,4.5rem);letter-spacing:-.025em}
@media(max-width:700px){
.site-header nav a{font-size:1rem}
.is-home .site-header{height:64px;padding:0 18px}
.is-home .site-header nav{width:auto;gap:20px;margin-left:auto}
.is-home .site-header nav a{font-size:.9rem}
.home-identity{top:64px;height:calc(50dvh - 64px)}
.home-identity h1{font-size:6.5vw}
}

/* Header colors follow the active page surface. */
body{--header-surface:var(--white);--header-ink:var(--black)}
body.is-home{--header-surface:transparent;--header-ink:var(--home-ink)}
body.is-portfolio{--header-surface:#202020;--header-ink:#fff}
body.is-info{--header-surface:var(--red);--header-ink:var(--black)}
body.is-info .site-header>.name{display:none}
body.is-info .site-header nav{margin-left:auto}
body .site-header{background:var(--header-surface);color:var(--header-ink);border-bottom:0}

/* The cursor uses the Info page's theme color. */
:root{--theme-cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='8' fill='%23ff3b1f'/%3E%3C/svg%3E") 12 12,auto}
html,body,body *{cursor:var(--theme-cursor)!important}
body.is-info{--theme-cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='8' fill='%230a0a0a'/%3E%3C/svg%3E") 12 12,auto}

/* The gallery and its filters share the viewport below the header. */
body:not(.is-home) .site-header>.name{font-family:Helvetica;font-weight:700;font-size:1.05rem;line-height:1;letter-spacing:-.035em}
.projects{display:grid;grid-template-columns:20% minmax(0,1fr)}
.projects .filter-bar{padding:24px;display:block;border-bottom:0;border-right:1px solid var(--black);min-width:0}
.projects .filters{display:flex;flex-direction:column;align-items:flex-start;gap:8px;flex-wrap:nowrap}
.projects .filter{font-family:"Helvetica Light",Helvetica;font-weight:300;font-size:.875rem;line-height:1.3;max-width:100%;overflow-wrap:anywhere;text-align:left}
.projects .filter[data-filter="All"]{font-family:Helvetica;font-weight:400}
.projects .project-list{height:100%;min-width:0;min-height:0;display:flex;padding:24px;align-items:stretch}
.projects .project-card>img{height:calc(100dvh - 198px);width:auto}
@media(max-width:700px){
body:not(.is-home) .site-header>.name{font-size:1rem}
.projects .filter-bar{padding:18px 8px}.projects .filters{gap:8px}
.projects .filter{font-size:.75rem}
.projects .project-list{padding:18px}
.projects .project-card>img{height:calc(100dvh - 212px)}
}

.year-filter{border:0;padding:0;margin:56px 0 0;min-width:0}
.year-filter legend{font-family:Helvetica;font-size:.875rem;padding:0;margin-bottom:18px}
.year-values{display:flex;justify-content:space-between;gap:8px;font-family:"Helvetica Light",Helvetica;font-weight:300;font-size:.875rem}
.year-values label{display:flex;gap:7px;align-items:baseline}
.year-values output{font-family:Helvetica;font-weight:400}
.year-range{position:relative;height:40px;margin-top:0;touch-action:none;--range-start:0%;--range-end:100%}
.year-track,.year-selection{position:absolute;top:19px;height:1px;left:8px;right:8px;background:#b8b8b3}
.year-selection{left:calc(8px + (100% - 16px)*0);left:max(8px,var(--range-start));right:max(8px,calc(100% - var(--range-end)));background:var(--black);height:2px}
.year-range input{appearance:none;-webkit-appearance:none;position:absolute;inset:0;margin:0;width:100%;height:40px;background:transparent;pointer-events:none;outline:0}
.year-range input::-webkit-slider-runnable-track{height:2px;background:transparent}
.year-range input::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:var(--black);border:2px solid var(--white);margin-top:-7px;pointer-events:auto}
.year-range input::-moz-range-track{height:2px;background:transparent}
.year-range input::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--black);border:2px solid var(--white);pointer-events:auto}
.year-range input:focus-visible{z-index:3}
.year-range input:focus-visible::-webkit-slider-thumb{outline:1px solid var(--black);outline-offset:3px}
.year-range input:focus-visible::-moz-range-thumb{outline:1px solid var(--black);outline-offset:3px}
.project-empty{font-family:"Helvetica Light",Helvetica;font-weight:300;font-size:1rem;margin:0}
.project-image-empty{height:calc(100dvh - 198px);aspect-ratio:1.4;background:#e7e7e1}
.projects .project-list{display:block;overflow-y:auto;overflow-x:hidden;height:100%;padding:24px;overscroll-behavior:contain}
.project-grid{column-count:3;column-gap:24px}
.projects .project-card{display:inline-flex;width:100%;break-inside:avoid;margin:0 0 20px;vertical-align:top}
.projects .project-card>img{width:100%;height:auto;max-width:100%;display:block;aspect-ratio:auto;object-fit:contain;flex-shrink:0}
.projects .project-card{position:relative}
.projects .project-image-empty{height:auto;width:100%;aspect-ratio:1.4;background:#e7e7e1}
.projects .card-caption{grid-template-columns:1fr auto 1fr;gap:6px;padding-top:5px;align-items:baseline}
.projects .card-caption h2{position:absolute;top:12px;left:12px;right:12px;font-family:Helvetica;font-weight:400;font-size:1.2rem;line-height:1.25;letter-spacing:-.02em;overflow-wrap:break-word;color:var(--black)}
.projects .card-caption .no,.projects .card-caption .year,.projects .card-caption .meta{font-family:"Helvetica Light",Helvetica;font-weight:300;font-size:.8rem;line-height:1.4;color:#4b4b47;letter-spacing:0}
.projects .card-caption .no{grid-column:1;grid-row:1;justify-self:start}
.projects .card-caption .year{grid-column:2;grid-row:1;justify-self:center}
.projects .card-caption .meta{grid-column:3;grid-row:1;justify-self:end}
@media(max-width:1000px){.project-grid{column-count:2}}
@media(max-width:700px){.projects .project-list{padding:18px}.project-grid{column-count:1;column-gap:18px}}
.year-filter[hidden]{display:none}
@media(max-width:700px){.project-image-empty{height:calc(100dvh - 212px)}}
.home-identity{top:50dvh;left:0;width:50vw;height:50dvh;padding:0 24px;align-items:flex-start}
.home-identity h1{font-family:Helvetica;font-weight:700;font-size:1.05rem;line-height:1;letter-spacing:-.035em}
@media(max-width:700px){.home-identity{top:50dvh;width:50vw;height:50dvh;padding:0 18px}.home-identity h1{font-size:.9rem}}
@media(max-width:700px){.year-filter{margin-top:36px}.year-filter legend,.year-values{font-size:.75rem}.year-values{flex-direction:column;gap:10px}.year-values label{gap:4px}}
body .site-header nav a,body.is-home .site-header nav a,body:not(.is-home) .site-header>.name{font-family:Helvetica;font-weight:400;font-size:.875rem;line-height:1.3;letter-spacing:0}
.view.horizontal .track>.project-intro:first-child{width:max-content;max-width:none;min-width:0}
.view.horizontal .track>.project-intro:first-child h1{white-space:nowrap;width:max-content}
@media(max-width:700px){body .site-header nav a,body.is-home .site-header nav a,body:not(.is-home) .site-header>.name{font-size:.75rem}}
