@charset "UTF-8";
:root{--paper:#fff;--ink:#191919;--muted:#737373;--line:#dedede;--gutter:clamp(1.5rem,4.5vw,6rem);--nav:6.5rem;--space:clamp(6rem,10vw,11rem);--ease:cubic-bezier(.22,.61,.36,1)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav) + 2rem);scrollbar-gutter:stable}body{margin:0;background:var(--paper);color:var(--ink);font:1rem/1.8 "Helvetica Neue",Arial,"PingFang SC","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased}body.locked{overflow:hidden}::selection{color:#fff;background:#242424}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;border:0;background:transparent}button,a,summary{-webkit-tap-highlight-color:transparent}button:disabled{cursor:default;opacity:.35}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid currentColor;outline-offset:5px}img{display:block;max-width:100%;height:auto}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:400}ul,ol{list-style:none;margin:0;padding:0}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}[hidden]{display:none!important}.wrap{padding-inline:var(--gutter)}.eyebrow{font-size:.75rem;line-height:1.65;letter-spacing:.09em;font-weight:400}.heading-pair{display:inline-flex;align-items:baseline;gap:.75rem;min-width:0}.heading-cn{font-weight:inherit}.heading-en{color:var(--muted);font-size:.72rem;line-height:1.5;letter-spacing:.07em;font-weight:400;white-space:nowrap}.heading-pair.section-heading-pair,.heading-pair.row-heading,.heading-pair.next-heading{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem}.heading-pair.section-heading-pair .heading-en,.heading-pair.row-heading .heading-en,.heading-pair.next-heading .heading-en{font-size:.72rem}.muted{color:var(--muted)}.skip{position:fixed;left:20px;top:-100px;z-index:200;background:#fff;padding:12px 22px}.skip:focus{top:12px}main{padding-top:var(--nav);min-height:80vh}
/* Quiet fixed masthead. */
.site-header{min-height:var(--nav);position:fixed;inset:0 0 auto;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:2rem;padding:1.25rem var(--gutter);background:#fff}.identity{display:flex;align-items:baseline;gap:1.75rem;min-width:0}.identity-name{font-size:1.5rem;line-height:1.5;letter-spacing:.09em;font-weight:500;white-space:nowrap}.identity-discipline{color:var(--muted);font-size:.875rem;line-height:1.6}.desktop-nav{display:flex;align-items:center;gap:clamp(1.5rem,3vw,3.5rem)}.nav-link{display:flex;align-items:baseline;gap:.6rem;min-height:44px;padding-block:.7rem;font-size:.875rem;line-height:1.5;letter-spacing:.025em;color:var(--muted)}.nav-heading{display:inline-flex;align-items:baseline;gap:.6rem}.nav-heading .heading-cn{font-size:.875rem}.nav-heading .heading-en{font-size:.72rem;letter-spacing:.07em}.nav-link[aria-current=page],.nav-link:hover{color:var(--ink)}.nav-link[aria-current=page]{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.6rem}.menu-toggle{display:none;align-items:center;gap:.75rem;min-height:44px;padding:0;font-size:.875rem}.mobile-menu{position:fixed;inset:var(--nav) 0 auto;z-index:39;max-height:calc(100dvh - var(--nav));overflow:auto;background:#fff;padding:1.25rem var(--gutter) 2.5rem;border-bottom:1px solid var(--line)}.mobile-menu a{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;font-size:2rem;line-height:1.6;padding-block:1rem}.mobile-heading{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;width:100%}.mobile-heading .heading-cn{font-size:2rem}.mobile-heading .heading-en{font-size:1rem;color:var(--muted);letter-spacing:.06em}.mobile-menu a[aria-current=page]{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.5rem}
/* Original-ratio opening image with a compact title. */
.hero-intro{display:grid;grid-template-columns:1fr auto;align-items:end;gap:2rem;padding-block:2rem 2.75rem}.hero-intro h1{font-size:clamp(1.5rem,2.1vw,2.25rem);line-height:1.5;letter-spacing:.035em}.hero-intro h1 br{display:none}.hero-note{max-width:30rem}.hero-note .eyebrow{display:block;color:var(--muted);margin-bottom:.5rem}.hero-note p{font-size:1rem;line-height:1.7}.hero-visual{margin:0}.hero-open,.artwork-open{display:block;padding:0;width:100%;position:relative;cursor:zoom-in}.hero-open img,.project-cover img{width:100%;height:auto}.image-action{position:absolute;right:1.25rem;bottom:1.25rem;display:flex;align-items:center;gap:.6rem;min-height:44px;padding:.5rem .8rem;font-size:.875rem;background:#fff;opacity:0;transition:opacity .25s var(--ease);pointer-events:none}.hero-open:hover .image-action,.hero-open:focus-visible .image-action,.artwork-open:hover .image-action,.artwork-open:focus-visible .image-action{opacity:1}.hero-caption{display:flex;align-items:center;justify-content:space-between;gap:2rem;padding-block:1.35rem}.hero-project{display:flex;align-items:baseline;gap:2rem;font-size:1rem}.hero-project .eyebrow{color:var(--muted)}.text-link{display:inline-flex;align-items:center;gap:1rem;min-height:44px;padding-block:.5rem;font-size:.875rem}.text-link:hover{text-decoration:underline;text-underline-offset:.35rem}.text-link svg{width:20px;height:20px}
/* Unframed works and captions; no image tint, cropping or zoom transform. */
.section{padding-block:var(--space)}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:2rem;margin-bottom:3.5rem}.section-heading>div{display:flex;align-items:baseline;gap:2rem}.section-heading .eyebrow{color:var(--muted)}.section-heading h2{font-size:1.5rem;line-height:1.5}.section-count{display:inline-block;margin-left:.65rem;color:var(--muted);font-size:.75rem;vertical-align:top}.project-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));row-gap:var(--space);align-items:start}.project-card{grid-column:1/-1;min-width:0}.home-projects .project-card:first-child{grid-column:1/12}.home-projects .project-card:nth-child(2){grid-column:2/-1}.home-projects .project-card.panorama{grid-column:1/-1}.project-picture,.project-picture>a{display:block;position:relative}.project-picture img{width:100%;height:auto}.card-hover{display:none}.card-caption{display:grid;grid-template-columns:2.5rem minmax(0,1fr) auto;gap:1rem;align-items:start;padding-top:1.3rem}.card-index{padding-top:.35rem;font-size:.75rem;color:var(--muted);font-variant-numeric:tabular-nums}.card-text{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem}.card-caption h3{font-size:clamp(1.125rem,1.65vw,1.75rem);line-height:1.55}.card-caption p{flex-shrink:0;font-size:.8125rem;color:var(--muted);transition:color .2s}.card-tools{display:flex;gap:.25rem;align-items:center;margin-top:-.3rem}.card-tools>a,.card-zoom{display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0}.card-zoom{color:var(--muted)}.card-zoom svg{width:18px;height:18px}.card-tools a svg{width:20px;height:20px}.project-card:hover .card-caption p,.project-card:focus-within .card-caption p,.card-zoom:hover{color:var(--ink)}.card-caption h3 a:hover,.project-pagination a:hover h3{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.3rem}
/* All original home copy is retained in these two disclosure rows. */
.home-notes{padding-bottom:calc(var(--space) * .7)}.home-notes details{border-top:1px solid var(--line)}.home-notes details:last-child{border-bottom:1px solid var(--line)}.home-notes summary{list-style:none;cursor:pointer;padding-block:2rem}.home-notes summary::-webkit-details-marker{display:none}.home-notes summary::marker{content:""}.home-notes summary h2{display:flex;align-items:center;gap:2rem}.home-notes summary .eyebrow{flex:0 0 24%}.notes-title{font-size:1.375rem;line-height:1.5}.disclosure-icon{margin-left:auto;width:20px;height:20px}.home-notes details[open] .disclosure-icon{transform:rotate(45deg)}.fields-content,.home-about .about-body{margin-left:calc(24% + 2rem);padding-block:.5rem 3rem;max-width:54rem}.field-row+.field-row{margin-top:1.5rem}.field-row h3{font-size:1.125rem}.field-row>span{display:block;margin-top:.25rem;color:var(--muted);font-size:.8125rem}.home-about .lead{font-size:1.25rem;line-height:1.85;margin-bottom:1.25rem}.home-about p:not(.lead){color:#555;font-size:1rem;max-width:43rem;line-height:2}.home-about .text-link{margin-top:1.25rem}
.site-footer{padding-block:3rem 1.75rem}.footer-top{display:flex;align-items:baseline;justify-content:space-between;gap:2rem;margin-bottom:4rem}.footer-top>a{display:flex;align-items:baseline;gap:1.75rem}.footer-name{font-size:1.5rem;letter-spacing:.09em}.footer-discipline{font-size:.875rem;color:var(--muted)}.footer-links{display:flex;flex-wrap:wrap;gap:2rem;font-size:.875rem}.footer-links a{padding-block:.6rem}.footer-heading{gap:.5rem}.footer-heading .heading-en{font-size:.68rem}.footer-bottom{display:flex;justify-content:space-between;gap:2rem;color:var(--muted);font-size:.75rem}.footer-bottom a{display:inline-flex;align-items:center;gap:.75rem}.footer-bottom svg{width:16px;height:16px}
/* Index and project pages share one editorial measure. */
.page-intro{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1.25rem 4rem;padding-block:clamp(3rem,6vw,6rem) 4rem}.page-intro>.eyebrow{grid-column:1/-1;color:var(--muted)}.page-title{font-size:clamp(2.5rem,4.5vw,5rem);line-height:1.3;letter-spacing:.025em}.page-title sup{display:inline-block;vertical-align:top;margin:.55rem 0 0 1rem;font-size:.875rem;color:var(--muted);letter-spacing:0}.page-intro>p{align-self:end;font-size:1rem;line-height:1.85;color:#555}.filter-bar{display:flex;align-items:center;justify-content:space-between;gap:2rem;margin-bottom:3rem;padding-block:1rem;border-bottom:1px solid var(--line)}.filter-buttons{display:flex;gap:2.25rem;flex-wrap:wrap}.filter-btn{min-height:44px;padding:.5rem 0;font-size:.875rem;color:var(--muted)}.filter-btn[aria-pressed=true]{color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.55rem}.filter-btn span{vertical-align:super;margin-left:.4rem;font-size:.75rem}.filter-total{color:var(--muted);font-size:.8125rem}.projects-section{padding-bottom:var(--space)}.empty-filter{padding-block:4rem}.breadcrumb{display:flex;align-items:baseline;gap:.875rem;padding-top:2rem;font-size:.8125rem;color:var(--muted);flex-wrap:wrap}.breadcrumb a:hover{text-decoration:underline}.breadcrumb>.eyebrow{margin-left:auto}.project-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4rem;align-items:end;padding-block:3rem 4rem}.project-heading .eyebrow{display:block;margin-bottom:1rem;color:var(--muted)}.project-heading h1{max-width:65rem;font-size:clamp(2rem,3.6vw,4rem);line-height:1.5;letter-spacing:.025em;overflow-wrap:anywhere}.project-subtitle{margin-top:1rem;font-size:1rem;color:var(--muted)}.project-meta{margin:0;padding-bottom:.4rem;display:grid;grid-template-columns:auto minmax(0,1fr);gap:.75rem 1.5rem;font-size:.875rem;max-width:20rem}.project-meta dt{color:var(--muted)}.project-meta dd{margin:0;overflow-wrap:anywhere}.project-cover{margin:0}.project-cover-caption{display:flex;justify-content:space-between;gap:2rem;padding-block:1.35rem;color:var(--muted);font-size:.8125rem}.project-intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:4rem;padding-block:5rem 3rem}.project-intro>.eyebrow{padding-top:.35rem}.project-intro p{max-width:48rem;font-size:1rem;line-height:2}.gallery-jump{display:flex;align-items:center;justify-content:space-between;gap:2rem;margin-top:3rem;padding-block:1.25rem;border-block:1px solid var(--line)}.gallery-jump nav{display:flex;flex-wrap:wrap;gap:.75rem 2rem}.gallery-jump a{font-size:.875rem;padding-block:.4rem}.gallery-jump a:hover{text-decoration:underline;text-underline-offset:.3rem}.gallery-jump>span{color:var(--muted);font-size:.8125rem;white-space:nowrap}.work-section{padding-top:clamp(5rem,9vw,9rem);scroll-margin-top:calc(var(--nav) + 1rem)}.work-section .section-heading{margin-bottom:3rem;align-items:baseline}.work-section h2{font-size:1.5rem}.work-section .section-heading>.eyebrow{text-align:right;max-width:45%}.artwork-grid{display:grid;gap:clamp(4rem,7vw,7rem)}.artwork{min-width:0}.artwork-image img{width:100%;height:auto}.artwork figcaption{display:flex;justify-content:space-between;gap:1.5rem;margin-top:1.25rem;color:var(--muted);font-size:.8125rem}.image-number{font-size:.75rem;font-variant-numeric:tabular-nums}.artwork-grid.portraits,.artwork-grid.mixed{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(2rem,7vw,8rem);align-items:start;max-width:75rem;margin-inline:auto}.mixed .artwork.landscape{grid-column:1/-1}.project-end{padding-block:5rem}.project-pagination{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4rem;margin-top:var(--space);border-top:1px solid var(--line);padding-top:2.5rem}.project-pagination a{display:flex;align-items:center;gap:1.75rem;min-width:0}.project-pagination a+a{justify-content:end;text-align:right}.project-pagination .eyebrow{color:var(--muted);margin-bottom:.75rem}.project-pagination h3{font-size:1.25rem;line-height:1.7}.project-pagination svg{width:24px;height:24px}.back-projects{display:flex;justify-content:center}
/* About stays on the same open white surface. */
.about-intro{display:block;padding-bottom:5rem}.about-intro>.eyebrow{margin-bottom:1.25rem}.about-title-row{display:flex;align-items:baseline;justify-content:space-between;gap:3rem}.about-title-row .name{font-size:1.75rem;letter-spacing:.09em}.about-brief{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:4rem;margin-top:5rem}.about-brief>.eyebrow{padding-top:.5rem}.about-brief .lead{font-size:clamp(1.375rem,2.25vw,2.25rem);line-height:1.75;margin-bottom:2rem}.about-brief p:not(.lead){margin-top:1.5rem;max-width:45rem;font-size:1rem;line-height:2;color:#555}.about-image{margin-inline:var(--gutter)}.about-image img{width:100%;height:auto}.about-image figcaption{display:flex;justify-content:space-between;gap:1.5rem;padding-top:1.25rem;font-size:.8125rem;color:var(--muted)}.about-work{padding-block:var(--space)}.about-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:4rem;padding-block:2.5rem 4rem;border-top:1px solid var(--line)}.about-row h2{font-size:1.5rem;margin-top:.5rem}.about-row p{max-width:48rem;font-size:1rem;line-height:2;color:#555}.service-list li{display:grid;grid-template-columns:2rem minmax(0,1fr);gap:1rem;padding-block:0 2.25rem}.service-list .num{font-size:.75rem;color:var(--muted);padding-top:.4rem}.service-list h3{font-size:1.25rem;margin-bottom:.5rem}.about-link{margin-left:calc((100% - 4rem) / 3 + 4rem)}.contact-list a{display:block;padding-block:.75rem;overflow-wrap:anywhere}.not-found{padding-block:6rem;min-height:60vh}.not-found h1{font-size:clamp(2rem,4vw,4rem);margin-block:1.5rem}.not-found p{margin-bottom:1.5rem}.reveal-ready{opacity:0;transition:opacity .6s var(--ease)}.reveal-ready.is-visible{opacity:1}

@media(min-width:1800px){:root{--gutter:max(6rem,calc((100vw - 1728px) / 2))}.hero-visual,.project-cover{max-width:1920px;margin-inline:auto}}
@media(max-width:1100px){:root{--nav:5.5rem;--gutter:2rem}.identity{gap:1.25rem}.identity-discipline{display:none}.hero-intro{grid-template-columns:1fr;gap:1rem;padding-block:1.5rem 2rem}.hero-note{display:flex;align-items:baseline;gap:2rem;max-width:none}.hero-note .eyebrow{margin:0}.hero-project{gap:1.5rem}.card-text{display:block}.card-caption p{margin-top:.3rem}.section-heading{margin-bottom:2.75rem}.project-heading{grid-template-columns:minmax(0,1fr) auto;gap:2rem}.project-meta{gap:.65rem 1rem}.project-intro,.about-brief,.about-row{gap:2.5rem}.about-link{margin-left:calc((100% - 2.5rem) / 3 + 2.5rem)}}
@media(max-width:700px){
:root{--nav:4.5rem;--gutter:1.25rem;--space:5rem}.site-header{min-height:var(--nav);padding-block:.8rem;gap:1rem}.identity-name{font-size:1.25rem}.desktop-nav{display:none}.menu-toggle{display:inline-flex}.hero-intro{gap:.875rem;padding-block:1.5rem 1.75rem}.hero-intro h1{font-size:1.5rem;line-height:1.55;letter-spacing:0}.hero-note{display:block}.hero-note .eyebrow{display:none}.hero-note p{max-width:26rem;font-size:1rem;line-height:1.85;color:#555}.hero-caption{align-items:start;gap:1rem;padding-block:1.25rem}.hero-project{display:block;font-size:.875rem;min-width:0}.hero-project .eyebrow{display:block;margin-bottom:.4rem}.hero-caption .text-link{max-width:5.5rem;gap:.5rem;flex-shrink:0}.text-link{gap:.625rem}.image-action{position:static;opacity:1;justify-content:flex-end;padding:.5rem var(--gutter);background:transparent}.image-action>span{display:none}.image-action svg{width:20px;height:20px}
.section-heading{gap:1rem;margin-bottom:2rem}.section-heading>div{display:block}.section-heading .eyebrow{display:block;margin-bottom:.5rem}.section-heading h2{font-size:1.25rem}.home-projects .project-card:first-child,.home-projects .project-card:nth-child(2){grid-column:1/-1}.project-picture{margin-inline:calc(-1 * var(--gutter))}.card-caption{grid-template-columns:minmax(0,1fr) auto;gap:.5rem;padding-top:1rem}.card-index{grid-column:1;padding-top:0}.card-text{grid-column:1;min-width:0}.card-caption h3{font-size:1.125rem;line-height:1.7}.card-caption p{font-size:.8125rem}.card-tools{grid-column:2;grid-row:2;gap:0;margin-top:-.35rem}.card-tools>a,.card-zoom{width:44px}.home-notes{padding-bottom:3rem}.home-notes summary{padding-block:1.5rem}.home-notes summary h2{gap:1rem}.home-notes summary .eyebrow{flex-basis:31%;font-size:.75rem}.notes-title{font-size:1.125rem}.fields-content,.home-about .about-body{margin-left:0;padding-block:.5rem 2rem}.home-about .lead{font-size:1.125rem}
.site-footer{padding-block:2rem 1.5rem}.footer-top{align-items:start;gap:1rem;margin-bottom:2.5rem}.footer-top>a{display:block}.footer-name{font-size:1.25rem}.footer-discipline{font-size:.8125rem;margin-top:.5rem}.footer-links{flex-direction:column;align-items:end;flex-shrink:0;gap:.25rem}.footer-links a{padding-block:.35rem}.footer-bottom{gap:1rem;font-size:.75rem;align-items:start}.footer-bottom>span{max-width:15rem}.footer-bottom a{flex-shrink:0;gap:.4rem}
.page-intro{display:block;padding-block:3rem 2rem}.page-intro>.eyebrow{margin-bottom:1rem}.page-title{font-size:2.5rem;line-height:1.35}.page-title sup{margin-top:.3rem;margin-left:.65rem}.page-intro>p{margin-top:1.5rem}.filter-bar{gap:1rem;margin-bottom:2rem;padding-block:.5rem}.filter-buttons{column-gap:1.5rem;row-gap:.5rem}.filter-btn{font-size:.875rem}.filter-total{display:none}.breadcrumb{padding-top:1.5rem;gap:.5rem}.breadcrumb .crumb-name{display:none}.project-heading{display:block;padding-block:2.5rem 2rem}.project-heading h1{font-size:1.875rem;line-height:1.5}.project-heading .eyebrow{margin-bottom:1rem}.project-meta{max-width:none;width:max-content;grid-template-columns:auto minmax(0,1fr);margin-top:1.75rem;padding:0;gap:.5rem 1.5rem}.project-cover-caption{font-size:.75rem;gap:1rem;padding-block:1rem}.project-cover-caption>span:last-child{flex-shrink:0}.project-intro{display:block;padding-block:2.5rem 1.5rem}.project-intro>.eyebrow{margin-bottom:1.25rem}.project-intro p{font-size:1rem}.gallery-jump{display:block;margin-top:2rem;padding-block:1rem}.gallery-jump nav{gap:.5rem 1.5rem}.gallery-jump>span{display:block;margin-top:.75rem}.work-section{padding-top:4rem}.work-section .section-heading{align-items:start;margin-bottom:2rem}.work-section h2{font-size:1.25rem}.work-section .section-heading>.eyebrow{font-size:.75rem;max-width:42%}.artwork-grid{gap:3rem}.artwork-grid.wide .artwork-image{margin-inline:calc(-1 * var(--gutter))}.artwork figcaption{font-size:.8125rem;gap:1rem;margin-top:1rem}.artwork-grid.portraits,.artwork-grid.mixed{gap:2.5rem 1.25rem}.portraits figcaption,.mixed figcaption{display:block}.portraits .image-number,.mixed .image-number{display:block;margin-top:.35rem}.project-pagination{gap:1.5rem;padding-top:2rem}.project-pagination a{align-items:start;flex-direction:column;gap:1rem}.project-pagination a+a{flex-direction:column-reverse;align-items:end;justify-content:end}.project-pagination h3{font-size:1rem}.project-pagination .eyebrow{font-size:.75rem}.project-end{padding-block:3rem}
.about-title-row{gap:1rem}.about-title-row .name{font-size:1.25rem;white-space:nowrap}.about-intro{padding-bottom:3rem}.about-brief{display:block;margin-top:3rem}.about-brief>.eyebrow{margin-bottom:1.5rem}.about-brief .lead{font-size:1.375rem;margin-bottom:1.5rem}.about-image{margin-inline:0}.about-image figcaption{font-size:.75rem;padding-inline:var(--gutter)}.about-row{display:block;padding-block:2rem 2.5rem}.about-row>div:first-child{margin-bottom:2rem}.about-row h2{font-size:1.25rem}.service-list h3{font-size:1.125rem}.service-list li{gap:.75rem;grid-template-columns:1.5rem minmax(0,1fr)}.about-link{margin-left:0}

}
@media(max-width:360px){.hero-caption{display:block}.hero-caption .text-link{margin-top:.5rem;max-width:none}.card-caption{grid-template-columns:minmax(0,1fr) 44px}.card-tools{flex-direction:column}.filter-buttons{column-gap:1.1rem}.home-notes summary h2{gap:.75rem}}
@media(hover:none){.image-action{opacity:1}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.reveal-ready{opacity:1}}

/* Home: a signed portfolio plate followed directly by the project archive. */
.page-home{--nav:clamp(5rem,10svh,7rem)}
.page-home .site-header{height:var(--nav);padding-block:.75rem}
.page-home .identity{flex-direction:column;align-items:flex-start;gap:.25rem}
.page-home .identity-name{font-size:1.5rem;line-height:1.25;font-weight:500;letter-spacing:.075em}
.page-home .identity-discipline{display:block;font-size:.75rem;line-height:1.6;letter-spacing:.045em}
.page-home .desktop-nav{display:none}
.page-home .menu-toggle{display:inline-flex;justify-content:center;width:44px;height:44px;min-height:44px}
.page-home .menu-label{display:none}
.page-home .mobile-menu{padding-top:1rem;padding-bottom:2rem}
.page-home .mobile-menu a{max-width:34rem;margin-left:auto;font-size:1.5rem}
.page-home .home-opening{padding-block:0}
.portfolio-cover{width:100%;height:80svh;margin:0}
.portfolio-cover .hero-open{height:100%;width:100%;padding:0;background:transparent}
.portfolio-cover .hero-open img{width:100%;height:100%;object-fit:contain}
.page-home .home-projects{padding-top:2.5rem;padding-bottom:var(--space)}
.page-home .home-projects>.section-heading{margin-bottom:2.5rem;align-items:center}
.page-home .home-projects>.section-heading h2{font-size:1.125rem;line-height:1.5}
.page-home .home-projects .section-count{margin-left:.75rem;font-size:.75rem}
.page-home .site-footer{border-top:1px solid var(--line)}

/* Project facts and supplied brief are kept together beneath each project title. */
.card-text{display:block;min-width:0}
.card-caption p{margin-top:.5rem;flex-shrink:1;overflow-wrap:anywhere;line-height:1.8}
.project-heading{grid-template-columns:minmax(0,1fr);gap:2.5rem}
.project-meta{width:100%;max-width:none;grid-template-columns:.75fr .75fr 1.4fr 2fr;gap:2rem;padding:0}
.project-meta-item{min-width:0}
.project-meta-item dt{margin-bottom:.5rem;font-size:.8125rem}
.project-meta-item dd{font-size:.875rem;line-height:1.9;overflow-wrap:anywhere}
.project-keywords{margin:2rem 0 0}
.project-keywords dt{color:var(--muted);font-size:.875rem;margin-bottom:.65rem}
.project-keywords dd{margin:0;font-size:1rem;line-height:1.9;overflow-wrap:anywhere}
.project-brief{padding-top:2rem}
.project-brief p+p{margin-top:1.25rem}

@media(max-width:1100px){
  .project-heading{grid-template-columns:minmax(0,1fr)}
  .project-meta{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem 2.5rem}
}
@media(max-width:700px),(max-aspect-ratio:1/1){
  .page-home{--nav:5rem}
  .portfolio-cover{height:auto}
  .portfolio-cover .hero-open{height:auto}
  .portfolio-cover .hero-open img{width:100%;height:auto}
  .page-home .home-projects{padding-top:2.5rem}
}
@media(max-width:700px){
  .page-home .home-opening{padding-inline:0}
  .page-home .identity-name{font-size:1.375rem}
  .page-home .identity-discipline{font-size:.75rem}
  .page-home .home-projects>.section-heading{margin-bottom:2rem}
  .project-meta{width:100%;max-width:100%;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem}
  .project-meta-item:nth-last-child(-n+2){grid-column:1/-1}
  .project-brief{padding-top:1.25rem}
  .project-keywords{margin-top:1.5rem}
}

/* Projects: a two-column archive, with uninterrupted panoramic works. */
.project-index-intro{padding-block:clamp(3rem,5vw,5rem) 2.75rem;gap:1rem}
.project-index-intro .page-title{font-size:clamp(2.5rem,4vw,4.5rem);line-height:1.3}
.projects-section .filter-bar{padding-block:.75rem 1.25rem;margin-bottom:clamp(3rem,5vw,5rem)}
.project-archive{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(2.5rem,5vw,6rem);row-gap:clamp(6rem,9vw,10rem);align-items:start}
.project-entry{min-width:0}
.project-entry-wide{grid-column:1/-1}
.project-entry-link{display:block}
.project-entry-image{background:transparent}
.project-entry-image img{display:block;width:100%;height:auto;border-radius:0;box-shadow:none}
.project-entry-caption{padding-top:1.4rem}
.project-entry-caption h2{font-size:clamp(1.125rem,1.45vw,1.5rem);line-height:1.65;font-weight:400;overflow-wrap:anywhere}
.project-entry-caption p{display:flex;flex-wrap:wrap;gap:.25rem 1rem;margin-top:.45rem;color:var(--muted);font-size:.8125rem;line-height:1.8}
.project-entry-link:hover .project-entry-caption h2,.project-entry-link:focus-visible .project-entry-caption h2{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.35rem}
@media(min-width:1000px){
  .project-entry:nth-child(2):not(.project-entry-wide){margin-top:clamp(3rem,6vw,6rem)}
}
@media(min-width:701px) and (max-width:999px){
  .project-archive{column-gap:2rem;row-gap:5rem}
  .project-entry-caption h2{font-size:1.125rem}
}
@media(max-width:700px){
  .project-index-intro{padding-block:2.75rem 1.75rem}
  .project-index-intro .page-title{font-size:2.5rem}
  .projects-section .filter-bar{padding-block:.5rem 1rem;margin-bottom:2.5rem}
  .project-archive{grid-template-columns:minmax(0,1fr);row-gap:4.5rem}
  .project-entry-wide{grid-column:auto}
  .project-entry-image{margin-inline:calc(-1 * var(--gutter))}
  .project-entry-caption{padding-top:1.1rem}
  .project-entry-caption h2{font-size:1.125rem;line-height:1.7}
}

/* Original proportions on the page, including the narrowest wall elevations. */
.artwork-image img,.project-cover img,.project-picture img,.project-entry-image img,.about-image img{height:auto;max-height:none;object-fit:contain}
.gallery-help{margin-top:.75rem;font-size:.875rem;line-height:1.8;color:var(--muted)}

/* Full-window gallery. Controls sit outside the image viewport. */
.lightbox{position:fixed;inset:0;width:100%;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#111;color:#f5f5f5;overflow:hidden;color-scheme:dark}
.lightbox::backdrop{background:#111}
.lightbox[open]{display:flex;flex-direction:column;animation:gallery-open .16s ease-out}
.lightbox-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1.5rem;padding:1rem clamp(1rem,2vw,2rem);border-bottom:1px solid #2c2c2c;flex-shrink:0}
.lightbox-title{min-width:0}
.lightbox-title strong{display:block;font-size:.875rem;line-height:1.65;font-weight:400;overflow-wrap:anywhere}
.lightbox-title>span{display:block;margin-top:.25rem;font-size:.75rem;line-height:1.7;color:#aaa}
.lightbox-tools{display:flex;align-items:center;gap:.75rem}
.lightbox-tools button{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:.5rem}
.lightbox-tools .zoom-btn{gap:.6rem;font-size:.875rem}
.lightbox-tools .zoom-btn svg{width:20px;height:20px}
.lightbox-stage{position:relative;flex:1;min-height:0;min-width:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:clamp(.75rem,2vw,2rem);touch-action:pan-y pinch-zoom}
.lightbox-stage:focus-visible{outline:1px solid #777;outline-offset:-3px}
.lightbox-canvas{display:flex;align-items:center;justify-content:center;width:max-content;min-width:var(--gallery-width,100%);min-height:var(--gallery-height,100%)}
.lightbox-stage img{display:block;width:auto;height:auto;max-width:none;max-height:none;object-fit:contain;flex:none;cursor:zoom-in;user-select:none;-webkit-user-drag:none}
.lightbox-stage.zoomed{touch-action:pan-x pan-y pinch-zoom;cursor:grab}
.lightbox-stage.zoomed img{cursor:grab}
.lightbox-stage.dragging,.lightbox-stage.dragging img{cursor:grabbing}
.lightbox-status{position:absolute;inset:50% 1rem auto;text-align:center;transform:translateY(-50%);font-size:.875rem;line-height:1.8;color:#bbb}
.lightbox-controls{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:1.5rem;padding:.75rem clamp(1rem,2vw,2rem);border-top:1px solid #2c2c2c;flex-shrink:0}
.lightbox-nav{display:flex;align-items:center;justify-content:center;position:static;width:44px;height:44px;padding:0;background:transparent}
.lightbox-nav:hover,.lightbox-tools button:hover{background:#242424}
.lightbox-info{display:flex;align-items:baseline;justify-content:space-between;gap:2rem;min-width:0;color:#c4c4c4;font-size:.8125rem;line-height:1.8}
#lightbox-caption{min-width:0;overflow-wrap:anywhere}
.lightbox-counter{flex-shrink:0;font-size:.75rem;font-variant-numeric:tabular-nums;white-space:nowrap}
.lightbox-thumbs{display:flex;gap:.65rem;overflow:auto;flex-shrink:0;padding:0 clamp(1rem,2vw,2rem) max(1rem,env(safe-area-inset-bottom));scrollbar-width:thin}
.lightbox-thumbs button{width:76px;height:52px;padding:4px;flex-shrink:0;background:transparent;border:1px solid transparent}
.lightbox-thumbs button[aria-current=true]{border-color:#ddd}
.lightbox-thumbs button:hover{border-color:#888}
.lightbox-thumbs img{width:100%;height:100%;object-fit:contain}
@keyframes gallery-open{from{opacity:0}to{opacity:1}}
@media(max-width:700px){
  .lightbox-bar{gap:.75rem;padding:.75rem 1rem}
  .lightbox-tools{gap:.25rem}
  .lightbox-tools .zoom-btn{font-size:.875rem}
  .lightbox-tools .zoom-btn svg{display:none}
  .lightbox-stage{padding:.75rem}
  .lightbox-controls{gap:.75rem;padding:.625rem 1rem}
  .lightbox-info{flex-direction:column;align-items:center;text-align:center;gap:.2rem}
  .lightbox-thumbs{gap:.5rem}
  .lightbox-thumbs button{width:64px;height:46px}
}
@media(max-height:500px){
  .lightbox-bar{padding-block:.4rem}
  .lightbox-title>span{display:none}
  .lightbox-thumbs{display:none}
  .lightbox-controls{padding-block:.35rem;padding-bottom:max(.35rem,env(safe-area-inset-bottom))}
}
@media(prefers-reduced-motion:reduce){.lightbox[open]{animation:none}}

/* One project sequence: title, cover, overview, walls, space, next project. */
.case-heading{padding-block:clamp(3rem,6vw,6rem) clamp(2.5rem,4.5vw,4.5rem)}
.case-kicker{display:flex;align-items:baseline;gap:1.75rem;margin-bottom:1.5rem;color:var(--muted)}
.case-number{font-size:.75rem;font-variant-numeric:tabular-nums}.kicker-heading{gap:.7rem}.kicker-heading .heading-cn{font-size:.8125rem}.kicker-heading .heading-en{font-size:.7rem}
.case-heading h1{max-width:70rem;font-size:clamp(2rem,3.4vw,4rem);line-height:1.5;letter-spacing:.01em;overflow-wrap:anywhere}
.case-location{display:flex;align-items:baseline;flex-wrap:wrap;gap:.75rem;margin-top:1.25rem;color:var(--muted);font-size:.8125rem;line-height:1.8}
.case-location-divider{color:#aaa}
.case-cover{width:100%;margin:0}
.case-cover img{display:block;width:100%;height:auto;max-height:none;object-fit:contain}
.case-overview{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,3fr);align-items:start;gap:clamp(2rem,5vw,6rem);padding-top:var(--space)}
.case-section-title{font-size:1.375rem;line-height:1.65;font-weight:400}
.case-section-title .section-heading-pair{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem}
.case-section-title .section-heading-pair .heading-en{font-size:.72rem;line-height:1.7;letter-spacing:.07em}
.case-overview-content{min-width:0}
.case-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem 3.5rem;margin:0}
.case-facts>div{min-width:0}
.case-facts dt{margin-bottom:.6rem;color:var(--muted);font-size:.8125rem}
.case-facts dd{margin:0;font-size:.9375rem;line-height:1.9;overflow-wrap:anywhere}
.case-overview-copy{max-width:52rem;margin-top:3rem}
.case-overview-copy>p{font-size:1rem;line-height:2.05;overflow-wrap:anywhere}
.case-brief{margin-top:2rem}
.case-brief summary{display:inline-flex;align-items:center;gap:1.25rem;list-style:none;min-height:44px;padding-block:.5rem;font-size:.8125rem;color:var(--muted);cursor:pointer}.summary-heading{gap:.6rem}.summary-heading .heading-en{font-size:.68rem}
.case-brief summary::-webkit-details-marker{display:none}
.case-brief summary::marker{content:""}
.case-brief summary>span{font-size:1.125rem;line-height:1;transition:transform .18s ease-out}
.case-brief[open] summary>span{transform:rotate(45deg)}
.case-brief summary:hover{color:var(--ink)}
.case-brief-content{padding-top:1rem;font-size:.9375rem;line-height:2;color:#555}
.case-brief-content dl{margin:0}
.case-brief-content dt,.case-brief-content h3{margin-bottom:.65rem;font-size:.8125rem;font-weight:400;color:var(--muted)}
.sub-heading-pair{gap:.5rem}.sub-heading-pair .heading-en{font-size:.65rem}
.case-brief-content dd{margin:0}
.case-brief-content>div{margin-top:1.75rem}
.case-brief-content p+p{margin-top:1rem}
.case-section{padding-top:var(--space);scroll-margin-top:var(--nav)}
.case-section-heading{display:flex;align-items:end;justify-content:space-between;gap:2rem;margin-bottom:3.5rem}
.case-gallery-note{font-size:.75rem;line-height:1.8;color:var(--muted)}
.case-artworks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(2rem,6vw,7rem);row-gap:clamp(4rem,7vw,8rem);align-items:start}
.case-artworks .artwork.landscape,.case-space .artwork{grid-column:1/-1}
.case-artworks .artwork.portrait{width:100%;max-width:31rem;justify-self:center}
.case-artworks .artwork-image img{width:100%;height:auto;max-height:none;object-fit:contain}
.case-artworks figcaption{font-size:.75rem;line-height:1.8;margin-top:1rem;gap:1.5rem}
.case-artworks .image-number{flex-shrink:0;font-size:.6875rem}
.case-panorama{display:flex;align-items:center;gap:3rem}
.case-panorama-code{display:block;flex-shrink:0;width:180px}
.case-panorama-code img{width:100%;height:auto;object-fit:contain}
.case-panorama h3{font-size:1.25rem;line-height:1.7;font-weight:400}
.case-panorama p{margin-top:.6rem;color:var(--muted);font-size:1rem;line-height:1.9}
.case-panorama .text-link{margin-top:1rem}
.case-artworks+.case-panorama{margin-top:4rem}
.case-next{margin-top:var(--space);padding-block:clamp(3rem,5vw,5rem) clamp(4rem,7vw,7rem);border-top:1px solid var(--line)}
.case-next-link{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,3fr);gap:clamp(2rem,5vw,6rem);align-items:start}
.case-next-label{display:flex;flex-direction:column;gap:.6rem;font-size:.875rem;line-height:1.7}
.next-heading{gap:.3rem}.next-heading .heading-en{font-size:.7rem;letter-spacing:.07em}
.case-next-project{display:flex;align-items:center;justify-content:space-between;gap:2rem;min-width:0}
.case-next-project>div{min-width:0}
.case-next-project h2{font-size:clamp(1.5rem,2.5vw,2.75rem);line-height:1.65;overflow-wrap:anywhere}
.case-next-project .case-location{margin-top:.65rem}
.case-next-project>svg{width:40px;height:40px}
.case-next-link:hover h2,.case-next-link:focus-visible h2{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.4rem}
@media(max-width:1000px){
  .case-overview,.case-next-link{grid-template-columns:minmax(0,1fr) minmax(0,2.6fr);gap:2rem}
  .case-facts{column-gap:2rem}
}
@media(max-width:700px){
  .case-heading{padding-block:2.75rem 2.5rem}
  .case-kicker{gap:1.25rem;margin-bottom:1.25rem}
  .case-heading h1{font-size:1.875rem;line-height:1.6;letter-spacing:0}
  .case-location{margin-top:1rem;font-size:.75rem}
  .case-overview{display:block;padding-top:4rem}
  .case-section-title{font-size:1.25rem}
  .case-overview-content{margin-top:2rem}
  .case-facts{display:block}
  .case-facts>div{display:grid;grid-template-columns:5.5rem minmax(0,1fr);gap:1rem}
  .case-facts>div+div{margin-top:1.25rem}
  .case-facts dt{margin-bottom:0}
  .case-facts dd{font-size:.875rem}
  .case-overview-copy{margin-top:2.25rem}
  .case-overview-copy>p{font-size:.9375rem;line-height:2}
  .case-section{padding-top:4.5rem}
  .case-section-heading{display:block;margin-bottom:2.5rem}
  .case-gallery-note{margin-top:1rem}
  .case-artworks{grid-template-columns:minmax(0,1fr);row-gap:3.5rem}
  .case-artworks .artwork.landscape,.case-space .artwork{grid-column:auto}
  .case-artworks .artwork.landscape .artwork-image{margin-inline:calc(-1 * var(--gutter))}
  .case-artworks figcaption{gap:1rem}
  .case-panorama{flex-direction:column;align-items:flex-start;gap:1.5rem}
  .case-next{margin-top:5rem;padding-block:2.5rem 4rem}
  .case-next-link{display:block}
  .case-next-label{gap:.4rem}
  .case-next-project{margin-top:1.75rem;gap:1.5rem}
  .case-next-project h2{font-size:1.375rem;line-height:1.7}
  .case-next-project>svg{width:28px;height:28px}
}

/* Initial project index placeholders and restrained personal opening. */
.page-home .home-opening{padding-block:clamp(3rem,8vw,8rem) clamp(4rem,9vw,9rem)}
.home-profile{display:grid;grid-template-columns:minmax(0,2fr) minmax(14rem,1fr);column-gap:clamp(3rem,10vw,12rem);row-gap:clamp(3rem,8vw,8rem);min-height:min(68vh,52rem);align-content:center}
.home-profile-main h1{font-size:clamp(3.5rem,10vw,9rem);line-height:1.05;letter-spacing:.02em;font-weight:400}
.home-profile-role{margin-top:1.5rem;color:var(--muted);font-size:1rem;line-height:1.8}
.home-profile-facts{display:flex;gap:clamp(2rem,5vw,5rem);align-self:end;margin:0}
.home-profile-facts div{min-width:6rem}
.home-profile-facts dt{font-size:.75rem;color:var(--muted);margin-bottom:.3rem}
.home-profile-facts dd{margin:0;font-size:1.125rem}
.home-skills,.home-experience{grid-column:1/-1;border-top:1px solid var(--line);padding-top:1.5rem}
.home-skills h2,.home-experience h2{font-size:1.125rem}
.home-skills ul{display:flex;flex-wrap:wrap;gap:1rem 2rem;margin-top:1.5rem}
.home-skills li{display:flex;align-items:center;gap:.7rem;font-size:.875rem}
.skill-mark{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border:1px solid var(--ink);font-size:.65rem;letter-spacing:.02em}
.home-experience-placeholder{min-height:3rem;border-bottom:1px solid var(--line)}
.image-placeholder{width:100%;background:#fff;border:1px solid var(--ink)}
.image-placeholder-cover{aspect-ratio:4/3}
.image-placeholder-wall{aspect-ratio:3/1}
.image-placeholder-space{aspect-ratio:4/3}
.artwork-placeholder .artwork-image{background:#fff}
.case-artworks .artwork-placeholder{grid-column:auto!important}
.case-disclaimer{margin-top:3rem;max-width:52rem;font-size:.75rem!important;line-height:1.9!important;color:var(--muted)}
.case-panorama{flex-direction:column;align-items:flex-start;gap:1.5rem}
.case-panorama-copy{order:0}
.case-panorama-code{order:1}
.panorama-code-placeholder{height:180px;background:#fff;border:1px solid var(--ink)}
.case-panorama-placeholder .case-panorama-code{width:180px}
.project-group{margin-bottom:clamp(6rem,10vw,11rem)}
.project-group:last-of-type{margin-bottom:0}
.project-group-heading{display:flex;align-items:baseline;justify-content:space-between;gap:2rem;border-top:1px solid var(--line);padding-block:1.25rem 2rem}
.project-group-heading h2{font-size:1.5rem;line-height:1.6;font-weight:400}
.group-heading{gap:.75rem}
.project-group-count{color:var(--muted);font-size:.75rem;font-variant-numeric:tabular-nums}
.project-card-placeholder .project-picture,.project-entry-placeholder .project-entry-image{background:#fff}
.project-card-placeholder .card-hover{display:none}
@media(max-width:700px){
  .page-home .home-opening{padding-block:3rem 4rem}
  .home-profile{display:block;min-height:0}
  .home-profile-main h1{font-size:clamp(3rem,16vw,5rem)}
  .home-profile-facts{margin-top:4rem}
  .home-skills,.home-experience{margin-top:4rem}
  .home-skills ul{gap:1rem 1.5rem}
  .project-group{margin-bottom:5rem}
  .project-group-heading{padding-block:1rem 1.5rem}
  .project-group-heading h2{font-size:1.25rem}
}
