@import url('https://fonts.googleapis.com/css2?family=Caveat:wght@400;500&display=swap');
:root{--ink:#22231f;--muted:#777971;--blue:#344bc8;--line:#deded8;--paper:#fff;--serif:Georgia,'Times New Roman',serif;--sans:Arial,'Microsoft YaHei',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;color:var(--ink);background:var(--paper);font-family:var(--sans);font-size:14px;-webkit-font-smoothing:antialiased}body.modal-open{overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button{border:0;background:none}img{display:block;width:100%;height:100%;object-fit:cover}figure,p,h1,h2{margin:0}a:focus-visible,button:focus-visible{outline:2px solid var(--blue);outline-offset:7px}::selection{background:#dbe0ff}.header{height:96px;padding:0 4.6%;display:flex;align-items:center;justify-content:space-between;position:absolute;z-index:5;width:100%}.logo{font:46px var(--serif);letter-spacing:-6px;width:100px}.logo span{color:var(--blue)}nav{display:flex;gap:35px}nav a{font-size:12px;position:relative;padding:10px 0}nav a:after{content:'';position:absolute;bottom:2px;left:0;width:0;height:1px;background:var(--ink);transition:width .3s}nav a:hover:after{width:100%}nav span{margin-left:6px;color:var(--muted)}.edition{font-size:10px;letter-spacing:1px}.hero{position:relative;min-height:920px;height:100svh;max-height:1150px;overflow:hidden;padding-top:120px}.hero-collage{position:absolute;top:120px;left:0;right:0;height:61%;}.hero-photo{position:absolute;overflow:visible;will-change:transform}.hero-photo img{transition:transform 1s cubic-bezier(.2,.7,.2,1)}.hero-photo:hover img{transform:scale(1.025)}.photo-one{left:7%;top:55px;width:20%;height:66%;transform:rotate(-4deg)}.photo-one img{object-position:50% 35%}.photo-one figcaption{font-size:10px;color:var(--muted);padding-top:12px;letter-spacing:1px}.photo-two{left:37%;top:0;width:34%;height:95%;transform:rotate(2deg)}.photo-three{right:5%;top:150px;width:17%;height:48%;transform:rotate(5deg)}.handwritten{font-family:'Caveat','Segoe Print',cursive;color:var(--blue);font-size:27px;line-height:1.05;font-weight:400;display:block}.hero-note{position:absolute;right:7%;top:65%;transform:rotate(-8deg);font-size:30px}.hero-note svg{width:70px;height:50px;display:block;stroke:var(--blue);fill:none;stroke-width:1.3}.hero-copy{position:absolute;left:8%;bottom:70px;z-index:2;pointer-events:none}.hero-chinese{font-size:13px;margin-bottom:22px;letter-spacing:3px}.hero h1{font-family:var(--serif);font-weight:400;font-size:clamp(100px,10.8vw,178px);line-height:.85;letter-spacing:-8px}em{font-weight:400}.hero-description{position:absolute;font-size:12px;line-height:1.9;left:calc(100% + 55px);bottom:6px;white-space:nowrap;color:#66685f}.scroll-link{position:absolute;right:5%;bottom:68px;font-size:11px;display:flex;align-items:center;gap:30px}.scroll-link span{font-size:34px;animation:arrowBob 2s ease-in-out infinite}.hero-index{position:absolute;left:8%;bottom:28px;font-size:9px;color:var(--muted);letter-spacing:2px}.section{padding:130px 7%}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:70px}.section-heading h2,.about h2{font:400 clamp(64px,7.4vw,112px)/.95 var(--serif);letter-spacing:-4px}.section-heading>div{padding-right:8%;padding-bottom:5px}.section-heading .handwritten{transform:rotate(-6deg);margin-bottom:30px}.section-heading p{font-size:12px;line-height:1.9;color:var(--muted)}.work-toolbar{border-top:1px solid var(--line);padding:23px 0 35px;display:flex;justify-content:space-between;align-items:center;font-size:10px}.filters{display:flex;gap:25px}.filters button{font-size:12px;padding:4px 0;color:var(--muted);border-bottom:1px solid transparent}.filters button.active{color:var(--ink);border-bottom-color:var(--ink)}.project-count{color:var(--muted)}.projects{display:grid;grid-template-columns:1fr 1fr;gap:85px 6%}.project{min-width:0;transition:opacity .3s}.project:nth-child(even){padding-top:125px}.project:nth-child(3){width:82%}.project:nth-child(5){grid-column:1 / -1;width:76%;margin:0 auto}.project-cover{display:block;padding:0;width:100%;position:relative;overflow:hidden;aspect-ratio:4/5;background:#ecece8;text-align:left}.project:nth-child(3) .project-cover{aspect-ratio:1.15}.project:nth-child(4) .project-cover{aspect-ratio:4/5}.project:nth-child(5) .project-cover{aspect-ratio:1.9}.project-cover img{transition:transform 1s cubic-bezier(.2,.6,.2,1),filter .5s}.project-cover:hover img{transform:scale(1.045)}.project-cover:after{content:'展开系列 ↗';position:absolute;bottom:22px;right:22px;color:white;font-size:11px;background:#2228;padding:12px 17px;opacity:0;transform:translateY(8px);transition:.3s}.project-cover:hover:after,.project-cover:focus-visible:after{opacity:1;transform:none}.project-info{padding:18px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.project-info h3{font-size:15px;font-weight:400;margin:0 0 8px}.project-info p{color:var(--muted);font-size:10px;letter-spacing:.5px}.project-info .project-arrow{font-size:23px}.selection-note{text-align:center;font-size:10px;color:var(--muted);margin-top:65px}.interlude{height:670px;position:relative;overflow:hidden;background:#151515;color:#fff}.interlude>img{object-position:center 40%;filter:brightness(.62)}.interlude>div{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.interlude p{font-size:12px;letter-spacing:4px;margin-bottom:25px}.interlude span{font:400 clamp(65px,8vw,120px)/.96 var(--serif);letter-spacing:-4px}.about{display:grid;grid-template-columns:1.1fr 1fr;gap:13%;align-items:center;padding-top:170px;padding-bottom:180px}.about-collage{position:relative;height:700px}.print{position:absolute;background:white;padding:9px 9px 30px;box-shadow:0 5px 18px #00000012;border:1px solid #eeeeea;touch-action:none;cursor:grab;transition:box-shadow .3s;user-select:none;width:60%;height:51%;transform:translate(var(--dx,0px),var(--dy,0px)) rotate(var(--r,0deg))}.print:active{cursor:grabbing;box-shadow:0 15px 30px #0002}.print img{pointer-events:none}.print-one{left:4%;top:7%;--r:-9deg;z-index:2}.print-two{right:-6%;top:28%;--r:9deg;z-index:1;width:65%;height:38%}.print-three{left:7%;top:56%;--r:-5deg;z-index:3;width:56%;height:37%}.about-note{position:absolute;top:0;left:30%;font-size:27px;transform:rotate(-8deg)}.drag-note{position:absolute;bottom:1%;right:-10%;font-size:24px;transform:rotate(-9deg)}.small-label{font-size:10px;color:var(--muted);display:block;margin-bottom:34px}.about h2{font-size:clamp(70px,6.8vw,105px);margin-bottom:36px}.about-lead{font-family:var(--serif);font-size:24px!important;line-height:1.6!important;margin-bottom:20px!important;color:var(--ink)!important}.about-copy>p{font-size:13px;line-height:2;color:var(--muted);max-width:330px;margin-bottom:15px}.profile-placeholder{font-size:11px!important;color:#93958c!important}.about-details{border-top:1px solid var(--line);margin-top:30px;padding-top:20px}.about-details>div{display:flex;gap:30px;margin:16px 0;font-size:10px}.about-details span{color:var(--muted);white-space:nowrap}.contact{border-top:1px solid var(--line);padding-top:50px;padding-bottom:25px}.contact-top{display:flex;justify-content:space-between;align-items:center}.contact-top p{font-size:13px;line-height:1.7}.contact-top .handwritten{font-size:30px;transform:rotate(-5deg)}.back-top{font-size:11px}.contact-title{font:400 clamp(90px,15vw,240px)/1.3 var(--serif);letter-spacing:-9px;padding:30px 0;width:100%;text-align:left;display:flex;align-items:center;justify-content:space-between}.contact-title>span{font-family:var(--sans);font-size:.65em;transition:transform .3s,color .3s}.contact-title:hover>span{transform:translate(8px,-8px);color:var(--blue)}.footer-bottom{display:flex;justify-content:space-between;font-size:10px;color:var(--muted);border-top:1px solid var(--line);padding-top:25px}.intro{position:fixed;inset:0;z-index:100;background:#f4f4ef;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;animation:introOut .85s cubic-bezier(.7,0,.2,1) 1.1s forwards;pointer-events:none}.intro>span{font:30px var(--serif);letter-spacing:5px;animation:introText .65s both}.intro>span:nth-child(2){animation-delay:.15s}.intro small{font-size:8px;letter-spacing:3px;margin-top:30px}.hero-photo{animation:photoIn 1.5s cubic-bezier(.15,.65,.2,1) both;animation-delay:1.2s}.photo-two{animation-delay:1.35s}.photo-three{animation-delay:1.5s}.hero-copy{animation:copyIn 1s ease both;animation-delay:1.65s}.reveal,.project{opacity:1}.js-motion .reveal,.js-motion .project{opacity:0;transform:translateY(35px);transition:opacity .9s,transform .9s cubic-bezier(.2,.6,.2,1)}.js-motion .visible{opacity:1;transform:none}.gallery{border:0;background:#f8f8f5;color:var(--ink);padding:25px 35px;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0}.gallery[open]{display:flex;flex-direction:column;animation:galleryIn .45s cubic-bezier(.2,.65,.2,1)}dialog::backdrop{background:#0008;backdrop-filter:blur(7px)}.gallery-top,.gallery-bottom{display:flex;justify-content:space-between;align-items:center;font-size:12px}.gallery-close{padding:14px 0 14px 20px}.gallery-body{flex:1;display:flex;min-height:0;gap:30px;align-items:center;padding:15px 0}.gallery-body img{object-fit:contain;min-width:0;flex:1;transition:opacity .18s,transform .3s}.gallery-body>button{width:45px;height:45px;font-size:30px;flex-shrink:0}.gallery-bottom{padding:10px 0 15px;font-size:11px}.gallery-thumbs{display:flex;justify-content:center;gap:8px;height:56px}.gallery-thumbs button{width:60px;padding:0;opacity:.4;transition:opacity .2s}.gallery-thumbs button.active{opacity:1;outline:1px solid var(--ink);outline-offset:3px}.contact-dialog{border:0;padding:60px;max-width:500px;width:90%;background:white}.contact-dialog>button:first-child{position:absolute;right:18px;top:12px;font-size:28px}.contact-dialog h2{font:38px/1.4 var(--serif);margin:28px 0}.contact-dialog p{font-size:12px;color:var(--muted);line-height:2}.contact-dismiss{margin-top:30px;padding:10px 0;border-bottom:1px solid var(--ink)}.cursor-label{position:fixed;left:0;top:0;width:80px;height:80px;border-radius:50%;background:var(--blue);color:white;display:flex;align-items:center;justify-content:center;text-align:center;font-size:10px;line-height:1.6;pointer-events:none;z-index:20;opacity:0;transform:translate(-50%,-50%);transition:opacity .2s}.cursor-label.on{opacity:1}@keyframes introOut{to{transform:translateY(-100%);visibility:hidden}}@keyframes introText{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}@keyframes photoIn{from{opacity:0;translate:0 80px;scale:.9}to{opacity:1;translate:0 0;scale:1}}@keyframes copyIn{from{opacity:0;translate:0 25px}to{opacity:1;translate:0 0}}@keyframes galleryIn{from{opacity:0;clip-path:inset(15% 25%)}to{opacity:1;clip-path:inset(0)}}@keyframes arrowBob{50%{transform:translateY(8px)}}
@media(min-width:1700px){.hero-collage{max-width:1550px;margin:auto}.section{padding-left:max(7%,calc((100% - 1450px)/2));padding-right:max(7%,calc((100% - 1450px)/2))}}
@media(max-width:850px){.header{height:80px;padding:0 6%}.edition{display:none}.logo{width:50px;font-size:38px}nav{gap:20px}nav a{font-size:11px}nav span{display:none}.hero{min-height:780px;max-height:950px}.hero-collage{top:120px;height:48%}.photo-one{left:5%;top:35px;width:24%;height:60%}.photo-two{left:33%;width:43%;height:95%}.photo-three{right:2%;width:20%;top:110px;height:45%}.hero-note{right:5%;top:75%;font-size:22px}.hero-note svg{height:35px}.hero-copy{left:7%;bottom:110px}.hero h1{font-size:clamp(86px,15vw,125px);letter-spacing:-5px}.hero-chinese{font-size:11px;margin-bottom:18px}.hero-description{position:static;margin-top:25px;font-size:11px}.scroll-link{bottom:40px;right:7%}.hero-index{left:7%;bottom:43px}.section{padding:80px 6%}.section-heading{margin-bottom:45px}.section-heading h2{font-size:70px}.section-heading>div{padding-right:0}.section-heading .handwritten{font-size:24px}.section-heading p{font-size:10px}.work-toolbar{flex-wrap:wrap;gap:20px}.filters{order:3;width:100%;justify-content:space-between;gap:8px}.filters button{font-size:10px}.projects{gap:45px 5%}.project:nth-child(even){padding-top:65px}.project:nth-child(3){width:100%}.project:nth-child(5){width:90%}.project-info h3{font-size:13px}.project-info p{font-size:9px}.interlude{height:470px}.interlude span{font-size:75px}.about{gap:8%;grid-template-columns:1fr 1fr}.about-collage{height:480px}.about h2{font-size:65px;letter-spacing:-3px}.about-lead{font-size:19px!important}.about-copy>p{font-size:11px}.about-note{font-size:21px;left:10%}.drag-note{font-size:20px;right:-15%}.about-details>div{display:block;line-height:2}.contact-top .handwritten{font-size:24px}.contact-title{letter-spacing:-5px}.gallery{padding:15px}.gallery-body{gap:5px}.gallery-body>button{width:25px;font-size:24px}}
@media(max-width:540px){.hero{min-height:760px;height:100svh}.hero-collage{height:340px;top:105px}.photo-one{width:25%;height:60%;left:3%;top:35px}.photo-two{left:31%;width:44%;height:95%}.photo-three{right:2%;top:100px;width:21%;height:46%}.photo-one figcaption{font-size:8px;line-height:1.5}.hero-note{font-size:20px;right:4%;top:72%}.hero-copy{bottom:105px}.hero h1{font-size:clamp(78px,18vw,98px);letter-spacing:-4px}.hero-chinese{letter-spacing:2px}.hero-description{margin-top:20px}.section-heading h2{font-size:61px;letter-spacing:-3px}.section-heading>div{max-width:43%}.section-heading .handwritten{font-size:21px}.section-heading p{line-height:1.8}.projects{gap:35px 5%}.project:nth-child(even){padding-top:55px}.project:nth-child(5){width:100%}.project-cover:after{display:none}.project-info h3{font-size:12px}.project-info p{line-height:1.6;max-width:135px}.project-arrow{display:none}.selection-note{font-size:9px;line-height:1.7;margin-top:35px}.interlude{height:410px}.interlude span{font-size:61px;letter-spacing:-2px}.about{display:flex;flex-direction:column;padding-top:65px;gap:65px}.about-collage{width:85%;height:450px;margin-right:8%}.about-copy{width:100%}.about h2{font-size:80px}.about-copy>p{max-width:100%;font-size:13px}.about-details>div{display:flex;gap:25px}.contact-top{align-items:flex-start}.contact-top .handwritten{max-width:120px;font-size:21px}.back-top{font-size:9px}.contact-title{font-size:23vw;letter-spacing:-5px;padding:35px 0}.footer-bottom{font-size:8px;gap:15px}.gallery-top{font-size:11px}.gallery-thumbs{height:45px}.gallery-thumbs button{width:45px}.gallery-bottom{font-size:10px}.cursor-label{display:none}.contact-dialog{padding:40px 25px}}
.photo-explorer{margin:20px 0 85px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px 0}.explorer-top,.explorer-bottom{display:flex;justify-content:space-between;align-items:center;font-size:10px;color:var(--muted)}.explorer-top>div{display:flex;gap:8px}.explorer-top button{font-size:11px;padding:9px 23px;border:1px solid var(--line);border-radius:30px}.explorer-top button.active{background:var(--ink);border-color:var(--ink);color:white}.explorer-stage{height:520px;perspective:1100px;position:relative;overflow:hidden;cursor:grab;touch-action:pan-y}.explorer-stage:active{cursor:grabbing}.photo-orbit{position:absolute;left:50%;top:47%;transform-style:preserve-3d;width:0;height:0}.orbit-photo{position:absolute;left:-60px;top:-82px;width:120px;height:164px;padding:0;will-change:transform;backface-visibility:visible;transition:opacity .2s,filter .2s;box-shadow:0 3px 9px #0000000a}.orbit-photo:hover,.orbit-photo:focus-visible{filter:brightness(1.12)}.photo-orbit[data-mode=flat] .orbit-photo,.photo-orbit[data-mode=tilt] .orbit-photo{transition:transform .8s cubic-bezier(.2,.7,.2,1),opacity .3s}.explorer-bottom button{font-size:10px;padding:8px 12px}.explorer-bottom>span:last-child{font:21px 'Caveat','Segoe Print',cursive;color:var(--blue)}
@media(max-width:600px){.photo-explorer{margin-bottom:55px}.explorer-stage{height:410px}.orbit-photo{width:67px;height:94px;left:-33px;top:-47px}.explorer-top button{padding:7px 15px}.explorer-bottom{font-size:8px;gap:8px}.explorer-bottom>span:last-child{display:none}.explorer-bottom button{font-size:9px}.explorer-top{font-size:9px}}
.header{position:fixed;background:rgba(255,255,255,.94);backdrop-filter:blur(12px);height:80px;border-bottom:1px solid #eeeeea;z-index:25}.header-tools{display:flex;gap:25px;align-items:center}.language-switch{display:flex;align-items:center;gap:8px;white-space:nowrap}.language-switch button{font-size:12px;color:var(--muted);min-height:44px;min-width:32px}.language-switch button.active{color:var(--ink);text-decoration:underline;text-underline-offset:6px}.language-switch>span{font-size:11px;color:#aaa}.work-toolbar{display:grid;grid-template-columns:1fr auto;gap:22px;padding:25px 0 38px}.work-toolbar>span:first-child{font-size:13px;letter-spacing:1px}.project-count{grid-column:2;grid-row:1;font-size:12px}.filters{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:12px 35px;justify-content:flex-start}.filters button{font-size:20px;line-height:1.4;min-height:52px;padding:10px 0;border-bottom:2px solid transparent;transition:color .2s,border-color .2s}.filters button.active{border-bottom-color:var(--ink)}.filters button:hover{color:var(--ink)}.project-cover:after{content:attr(data-view-label)}.about{border-top:1px solid var(--line)}
@media(max-width:850px){.header{height:72px}.header-tools{gap:0}.header .edition{display:none}.header nav{gap:18px}.header .logo{width:32px}.filters{gap:10px 26px}.filters button{font-size:18px;min-height:48px}.work-toolbar{gap:16px}.about{padding-top:100px}}
@media(max-width:540px){.header{padding:0 5%}.header nav{gap:14px}.header nav a{font-size:12px}.language-switch{gap:3px}.language-switch button{font-size:11px;min-width:28px}.filters{gap:8px 22px}.filters button{font-size:17px;min-height:48px}.work-toolbar{padding-top:20px;padding-bottom:28px}.work-toolbar>span:first-child,.project-count{font-size:11px}html[lang=en] .filters{gap:8px 20px}html[lang=en] .filters button{font-size:16px}html[lang=en] .about-details>div{flex-wrap:wrap;gap:3px 20px}}
.series-badge{position:absolute;bottom:18px;left:18px;display:block;background:rgba(255,255,255,.94);padding:12px 15px;font-size:12px;color:var(--ink);backdrop-filter:blur(8px)}.project-cover:after{display:none}.series{--series-accent:#df9373;border:0;margin:0;padding:0 5%;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;background:#101110;color:#f2f0ea;overscroll-behavior:contain}.series[open]{animation:seriesIn .5s ease}.series-bar{position:sticky;top:0;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:20px;background:#101110f5;backdrop-filter:blur(10px);min-height:75px;color:var(--series-accent);border-bottom:1px solid #ffffff15}.series-bar button{min-height:48px;font-size:12px;padding:10px 0}.series-label{font-size:11px}.series-hero{position:relative;width:100%;height:70svh;min-height:350px;max-height:800px;padding:0;margin-top:30px;background:#1b1c1b}.series-hero img{object-fit:contain}.series-hero>span{position:absolute;right:20px;bottom:20px;background:#101110bf;color:white;padding:12px 18px;font-size:12px}.series-description{display:grid;grid-template-columns:1fr 1fr;gap:8%;padding:65px 0 75px;border-bottom:1px solid #ffffff20}.series-kicker{font-size:12px;color:var(--series-accent)}.series-description h2{font:400 46px/1.25 var(--serif);margin:20px 0 12px}.series-english{font:italic 25px var(--serif);color:#aaa}.series-description>div:last-child>p{font-size:14px;line-height:2;color:#c5c5be}.series-description dl{font-size:12px;margin:35px 0 0}.series-description dl>div{display:grid;grid-template-columns:85px 1fr;margin:20px 0;line-height:1.8}.series-description dt{color:var(--series-accent)}.series-description dd{margin:0;color:#b1b1aa}.series-grid-heading{display:flex;align-items:center;justify-content:space-between;padding:32px 0 24px;color:var(--series-accent)}.series h3{font-size:13px;font-weight:400;margin:0}.series-grid-heading>span{font-size:11px}.series-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:25px 18px}.series-grid button{padding:0;text-align:left;min-width:0}.series-grid img{aspect-ratio:4/3;height:auto;object-fit:contain;background:#191a18;transition:filter .3s}.series-grid button:hover img{filter:brightness(1.15)}.series-grid button>span{display:flex;justify-content:space-between;font-size:11px;color:var(--series-accent);padding:12px 0}.series-related{margin-top:75px;border-top:1px solid #ffffff20;padding-top:28px}.series-related h3{color:var(--series-accent);margin-bottom:25px}.series-related>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.series-related button{padding:0;text-align:left}.series-related img{aspect-ratio:1.65;height:auto;object-fit:cover}.series-related span{display:block;padding:14px 0;font-size:12px;color:#c8c8bf}.series-end{padding:65px 0 35px;display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--series-accent)}.series-end button{padding:14px 0;font-size:11px}.series button:focus-visible{outline-color:var(--series-accent)}@keyframes seriesIn{from{opacity:0;translate:0 30px}to{opacity:1;translate:0 0}}
@media(max-width:700px){.series{padding:0 5%}.series-bar{min-height:65px;gap:10px}.series-label{font-size:9px}.series-bar button{font-size:11px}.series-hero{height:48svh;min-height:270px;margin-top:20px}.series-hero>span{right:12px;bottom:12px;padding:10px;font-size:10px}.series-description{grid-template-columns:1fr;gap:30px;padding:35px 0}.series-description h2{font-size:34px}.series-description>div:last-child>p{font-size:12px}.series-description dl{margin-top:20px}.series-description dl>div{font-size:11px;margin:12px 0}.series-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 12px}.series-grid img{aspect-ratio:3/4}.series-grid-heading>span{font-size:9px}.series-related{margin-top:40px}.series-related>div{gap:10px}.series-related span{font-size:10px;line-height:1.7}.series-end{font-size:9px;gap:15px;padding-top:35px}.series-end button{font-size:10px}.series-badge{left:8px;bottom:8px;font-size:10px;padding:9px 10px}}
.filters{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;align-items:stretch}.filters button{position:relative;display:flex;align-items:center;gap:14px;text-align:left;min-height:110px;padding:18px 13px;border:1px solid #e5e5de;border-radius:2px;background:#fafaf7;isolation:isolate;transition:background .3s,border-color .3s,transform .3s}.filters button.active{background:#f0f2ff;border-color:#344bc8}.filters button:hover{transform:translateY(-4px);border-color:#a7ade0}.category-photo{position:relative;display:block;width:47px;height:63px;flex-shrink:0;transform:rotate(-6deg);transition:transform .35s}.category-photo:before{content:'';position:absolute;inset:0;background:#dcded5;transform:rotate(9deg);z-index:-1}.category-photo img{filter:saturate(.6);transition:filter .35s}.filters button:hover .category-photo,.filters button.active .category-photo{transform:rotate(0deg)}.filters button:hover .category-photo img,.filters button.active .category-photo img{filter:saturate(1)}.category-text{min-width:0;display:flex;flex-direction:column;gap:12px}.category-name{font-size:16px;line-height:1.5;color:#65665e}.filters button.active .category-name{color:var(--blue)}.category-meta{font-size:8px;color:#90918a;letter-spacing:1px;display:flex;align-items:center;gap:9px}.category-meta>span{font:italic 15px var(--serif);letter-spacing:0;color:#73756b}.category-dot{position:absolute;right:9px;top:9px;width:5px;height:5px;border:1px solid #b9bbb1;border-radius:50%;transition:.3s}.filters button.active .category-dot{background:var(--blue);border-color:var(--blue)}.category-mark{position:absolute;right:-5px;bottom:-5px;background:var(--blue);color:#fff;width:20px;height:20px;font-size:13px;display:grid;place-items:center;opacity:0;transform:translateY(4px);transition:.3s}.filters button.active .category-mark,.filters button:hover .category-mark{opacity:1;transform:none}.work-toolbar{padding-bottom:36px;gap:25px}html[lang=en] .category-name{font-size:15px}
@media(max-width:1100px){.filters{gap:9px}.filters button{padding:15px 10px;gap:10px}.category-photo{width:36px;height:50px}.category-name{font-size:14px}html[lang=en] .category-name{font-size:13px}}
@media(max-width:700px){.filters{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.filters button{min-height:112px;flex-direction:column;align-items:flex-start;padding:13px 10px;gap:10px}.category-photo{width:29px;height:36px}.category-text{gap:4px}.category-name{font-size:14px}.category-meta{font-size:7px;gap:5px}.category-meta>span{font-size:12px}.category-dot{right:8px;top:8px}html[lang=en] .filters{gap:9px}html[lang=en] .filters button{font-size:14px}html[lang=en] .category-name{font-size:13px}.filters button:hover{transform:none}.work-toolbar{gap:18px}.category-mark{width:16px;height:16px;font-size:10px}}
.projects.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px 20px}.photo-grid-item{min-width:0}.photo-grid-button{position:relative;display:block;width:100%;aspect-ratio:4/3;padding:0;overflow:hidden;background:#f4f4f0}.photo-grid-button img{object-fit:contain;transition:transform .6s cubic-bezier(.2,.6,.2,1)}.photo-grid-button:hover img{transform:scale(1.035)}.photo-grid-enlarge{position:absolute;bottom:12px;right:12px;width:32px;height:32px;display:grid;place-items:center;background:#ffffffed;color:var(--ink);font-size:19px;opacity:0;transition:opacity .25s}.photo-grid-button:hover .photo-grid-enlarge,.photo-grid-button:focus-visible .photo-grid-enlarge{opacity:1}.photo-grid-caption{display:flex;justify-content:space-between;gap:12px;align-items:baseline;padding:13px 0;font-size:11px;color:#65665e;border-bottom:1px solid var(--line)}.photo-grid-caption>span:last-child{white-space:nowrap;font-size:10px;color:#999b91}
@media(max-width:700px){.projects.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 12px}.photo-grid-button{aspect-ratio:3/4}.photo-grid-caption{font-size:10px;gap:5px;line-height:1.5;align-items:flex-start}.photo-grid-caption>span:last-child{font-size:8px}.photo-grid-enlarge{opacity:1;width:24px;height:24px;right:7px;bottom:7px;font-size:15px}}
.projects.photo-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:65px 3.2%;align-items:start}.photo-grid-item{grid-column:span 4}.photo-grid-item:nth-child(6n+1){grid-column:1 / span 5;margin-top:0}.photo-grid-item:nth-child(6n+2){grid-column:8 / span 4;margin-top:95px}.photo-grid-item:nth-child(6n+3){grid-column:2 / span 3;margin-top:0}.photo-grid-item:nth-child(6n+4){grid-column:6 / span 6;margin-top:75px}.photo-grid-item:nth-child(6n+5){grid-column:1 / span 5;margin-top:0}.photo-grid-item:nth-child(6n+6){grid-column:8 / span 5;margin-top:110px}.photo-grid-button{aspect-ratio:auto;background:transparent;overflow:hidden}.photo-grid-button img{width:100%;height:auto;object-fit:initial}.photo-grid-caption{border:0;padding:14px 0 0;font-size:10px;color:#777971}.photo-grid-caption>span:last-child{font-size:9px}.photo-grid-enlarge{background:#ffffffdb}
@media(max-width:850px){.projects.photo-grid{gap:45px 4%}.photo-grid-item:nth-child(6n+2){margin-top:65px}.photo-grid-item:nth-child(6n+4){margin-top:45px}.photo-grid-item:nth-child(6n+6){margin-top:65px}}
@media(max-width:540px){.projects.photo-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:35px 5%}.photo-grid-item:nth-child(6n+1){grid-column:1 / span 4;margin-top:0}.photo-grid-item:nth-child(6n+2){grid-column:3 / span 4;margin-top:0}.photo-grid-item:nth-child(6n+3){grid-column:1 / span 3;margin-top:0}.photo-grid-item:nth-child(6n+4){grid-column:4 / span 3;margin-top:45px}.photo-grid-item:nth-child(6n+5){grid-column:1 / span 5;margin-top:0}.photo-grid-item:nth-child(6n+6){grid-column:3 / span 4;margin-top:0}.photo-grid-button{aspect-ratio:auto}.photo-grid-caption{font-size:9px;gap:6px}.photo-grid-caption>span:last-child{font-size:8px}.photo-grid-enlarge{opacity:0}.photo-grid-button:focus-visible .photo-grid-enlarge{opacity:1}}
.projects.photo-grid{max-width:1050px;margin-inline:auto;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 32px;align-items:start}.photo-grid .photo-grid-item:nth-child(n){grid-column:auto;margin-top:0;width:100%}.photo-grid .photo-grid-item:nth-child(6n+2){margin-top:35px}.photo-grid .photo-grid-item:nth-child(6n+3){width:88%;justify-self:center}.photo-grid .photo-grid-item:nth-child(6n+6){width:90%;justify-self:center;margin-top:25px}.photo-grid-caption{padding-top:9px}.work-toolbar{padding-bottom:26px}
@media(max-width:850px){.projects.photo-grid{max-width:760px;gap:23px 24px}.photo-grid .photo-grid-item:nth-child(6n+2){margin-top:24px}.photo-grid .photo-grid-item:nth-child(6n+6){margin-top:18px}}
@media(max-width:540px){.projects.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 14px;max-width:100%}.photo-grid .photo-grid-item:nth-child(6n+2){margin-top:22px}.photo-grid .photo-grid-item:nth-child(6n+3){width:94%}.photo-grid .photo-grid-item:nth-child(6n+6){width:94%;margin-top:16px}.photo-grid-caption{padding-top:8px;flex-wrap:wrap;gap:3px}.work-toolbar{padding-bottom:22px}}
.hero-editorial{height:100svh;min-height:800px;max-height:1150px;padding:135px 7% 110px;display:grid;grid-template-columns:1fr 1fr;gap:7%;align-items:center}.hero-editorial .hero-copy{position:relative;inset:auto;z-index:2;pointer-events:auto;align-self:center;padding-bottom:55px}.hero-editorial .hero-chinese{font-size:12px;font-weight:400;letter-spacing:1px;margin-bottom:34px;color:#777971}.hero-editorial h1{font-family:'Segoe UI','Helvetica Neue',Arial,sans-serif;font-size:clamp(95px,9.4vw,155px);font-weight:300;line-height:.94;letter-spacing:-.075em;margin-left:-7px}.hero-editorial h1 span{color:#77796d}.hero-editorial .hero-description{position:static;white-space:normal;font-size:12px;line-height:2;margin-top:32px;color:#72746c}.hero-work-link{display:inline-flex;justify-content:space-between;gap:65px;align-items:center;font-size:12px;margin-top:35px;padding-bottom:12px;border-bottom:1px solid #aaa;min-width:155px;transition:color .3s}.hero-work-link:hover{color:var(--blue)}.hero-work-link>span:last-child{font-size:20px}.hero-editorial .hero-collage{position:relative;inset:auto;height:100%;max-height:730px;width:100%;margin:0}.hero-editorial .hero-photo{transform:none;animation-name:photoIn}.hero-editorial .photo-two{left:7%;top:0;right:auto;width:93%;height:88%;animation-delay:1.25s}.hero-editorial .photo-two img{object-fit:cover;object-position:50% 45%}.hero-editorial .photo-two figcaption{display:flex;justify-content:space-between;gap:15px;padding-top:12px;font-size:10px;color:#777971}.hero-editorial .photo-one{left:-20%;top:auto;bottom:0;width:43%;height:31%;background:white;border:7px solid white;animation-delay:1.45s}.hero-editorial .photo-one img{object-fit:cover;object-position:50% 45%}.hero-editorial .photo-one figcaption{display:none}.hero-footer{position:absolute;bottom:30px;left:7%;right:7%;display:flex;justify-content:space-between;align-items:center;padding-top:20px;border-top:1px solid var(--line)}.hero-editorial .hero-index{position:static;font-size:9px;letter-spacing:1px}.hero-footer-title{font-size:10px;color:var(--muted)}.hero-editorial .scroll-link{position:static;gap:25px;font-size:10px}.hero-editorial .scroll-link span{font-size:25px}.logo{font-family:'Segoe UI',Arial,sans-serif;font-weight:300;letter-spacing:-4px;font-size:40px}
@media(max-width:850px){.hero-editorial{min-height:760px;padding:120px 6% 110px;gap:3%}.hero-editorial h1{font-size:clamp(75px,10.5vw,110px);letter-spacing:-.075em}.hero-editorial .hero-copy{padding-bottom:55px}.hero-editorial .photo-two{left:4%;width:96%;height:85%}.hero-editorial .photo-one{left:-12%;width:55%;height:28%;bottom:3%}.hero-footer{left:6%;right:6%}.hero-footer-title{display:none}}
@media(max-width:540px){.hero-editorial{height:auto;min-height:980px;max-height:none;padding:115px 7% 100px;display:flex;flex-direction:column;align-items:stretch;gap:35px}.hero-editorial .hero-copy{width:100%;padding:0;align-self:auto}.hero-editorial .hero-chinese{font-size:11px;margin-bottom:20px}.hero-editorial h1{font-size:96px;line-height:.91;letter-spacing:-7px;margin-left:-4px}.hero-editorial .hero-description{margin-top:22px;font-size:11px}.hero-work-link{margin-top:22px;min-width:145px;font-size:11px;padding-bottom:8px}.hero-editorial .hero-collage{height:390px;max-height:none;width:100%;margin:0}.hero-editorial .photo-two{left:18%;top:0;width:82%;height:90%}.hero-editorial .photo-two figcaption{font-size:9px;padding-top:10px}.hero-editorial .photo-one{left:0;bottom:0;width:43%;height:34%;border-width:5px}.hero-footer{bottom:23px;left:7%;right:7%;padding-top:17px}.hero-editorial .hero-index{font-size:8px}.hero-editorial .scroll-link{font-size:9px;gap:15px}}
.hero.hero-motion{display:block;height:auto;min-height:850px;max-height:none;padding:110px 5% 22px;overflow:hidden}.motion-stage{position:relative;max-width:1380px;height:calc(100svh - 170px);min-height:660px;max-height:920px;margin:auto;background:#090a09;border-radius:24px;color:#f4f4ee;overflow:hidden;isolation:isolate}.motion-top,.motion-bottom{position:absolute;left:42px;right:42px;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:10px;color:#acafa4}.motion-top{top:25px}.motion-bottom{bottom:25px}.motion-brand{font-size:12px;letter-spacing:2px;color:#ddd}.motion-top button,.motion-bottom button{font-size:10px;color:#c7c9bf;min-height:44px;padding:10px 0}.finder{position:absolute;z-index:2;width:15px;height:15px;border-color:#474b42;border-style:solid;pointer-events:none}.finder-tl{left:25px;top:25px;border-width:1px 0 0 1px}.finder-tr{right:25px;top:25px;border-width:1px 1px 0 0}.finder-bl{left:25px;bottom:25px;border-width:0 0 1px 1px}.finder-br{right:25px;bottom:25px;border-width:0 1px 1px 0}.motion-stack{position:absolute;inset:80px 0;perspective:1400px;transition:transform 1.1s cubic-bezier(.22,.7,.2,1)}.motion-stack-inner{position:absolute;inset:0;transform-style:preserve-3d}.motion-card{position:absolute;left:50%;top:50%;width:224px;height:316px;transform:translate(-50%,-50%);opacity:0;backface-visibility:visible;border-radius:5px;overflow:hidden;box-shadow:0 8px 40px #0003}.motion-card img{object-fit:cover}.motion-portrait{height:400px;width:226px;z-index:10}.motion-portrait img{object-fit:contain;background:#090a09}.motion-profile{position:absolute;left:53%;top:50%;width:39%;max-width:500px;opacity:0;transform:translate(30px,-45%);visibility:hidden;transition:opacity .85s .25s,transform .85s .25s,visibility 0s .25s}.motion-profile-label{font-size:11px;letter-spacing:2px;color:#aeb3a0;margin-bottom:25px}.hero-motion h1{font:300 clamp(34px,4vw,60px)/1.3 'Segoe UI','Microsoft YaHei',Arial,sans-serif;letter-spacing:-1.5px}.motion-profile-description{font-size:13px;line-height:2;color:#adb1a5;margin-top:25px}.motion-profile-details{margin-top:25px;padding-top:18px;border-top:1px solid #ffffff20;display:flex;flex-direction:column;gap:13px;font-size:10px;color:#8d9484}.motion-work-link{display:flex;justify-content:space-between;align-items:center;max-width:210px;margin-top:30px;padding:12px 0;border-bottom:1px solid #8a937c;font-size:12px;color:#d8dfcd}.motion-work-link:hover{color:#fff}.motion-work-link>span:last-child{font-size:22px}.motion-progress{width:95px;height:10px;background:repeating-linear-gradient(to right,#3c4136 0 3px,transparent 3px 7px);position:relative;overflow:hidden}.motion-progress>span{position:absolute;inset:0;background:repeating-linear-gradient(to right,#bec7af 0 3px,transparent 3px 7px);transform:translateX(-100%)}.hero-motion[data-state=playing] .motion-progress>span{animation:motionProgress 6.2s linear both}.hero-motion[data-state=settling] .motion-progress>span,.hero-motion[data-state=done] .motion-progress>span{transform:none}.hero-motion[data-state=settling] .motion-stack,.hero-motion[data-state=done] .motion-stack{transform:translateX(-25%)}.hero-motion[data-state=settling] .motion-profile,.hero-motion[data-state=done] .motion-profile{opacity:1;visibility:visible;transform:translate(0,-50%)}.hero-motion[data-state=done] .motion-card:not(.motion-portrait){opacity:0!important}.hero-motion[data-state=done] .motion-portrait{opacity:1!important;transform:translate(-50%,-50%)!important}.hero-motion[data-state=done] .motion-skip,.hero-motion[data-state=settling] .motion-skip{visibility:hidden}.motion-caption{max-width:1380px;margin:20px auto 0;display:flex;justify-content:space-between;font-size:10px;color:#818579}.hero-motion .motion-stage button:focus-visible,.motion-work-link:focus-visible{outline-color:#c3cdb6}.hero-motion .motion-replay{letter-spacing:0}.hero-motion[data-state=playing] .motion-profile{pointer-events:none}.hero-motion[data-state=settling] .motion-profile,.hero-motion[data-state=done] .motion-profile{pointer-events:auto}@keyframes motionProgress{to{transform:translateX(0)}}
@media(max-width:850px){.hero.hero-motion{padding:100px 4% 20px;min-height:800px}.motion-stage{min-height:650px}.motion-top,.motion-bottom{left:30px;right:30px}.motion-status{display:none}.motion-portrait{width:190px;height:337px}.hero-motion h1{font-size:36px}.motion-profile-description{font-size:11px}.motion-profile-details{font-size:9px}.motion-profile{width:42%;left:51%}.hero-motion[data-state=settling] .motion-stack,.hero-motion[data-state=done] .motion-stack{transform:translateX(-26%)}}
@media(max-width:650px){.hero.hero-motion{padding:90px 4% 20px;min-height:1060px}.motion-stage{height:940px;min-height:940px;border-radius:15px}.motion-top{top:18px;left:25px;right:25px}.motion-bottom{bottom:16px;left:25px;right:25px}.motion-brand{font-size:10px;letter-spacing:1px}.motion-top button,.motion-bottom button{font-size:9px}.finder-tl,.finder-tr{top:15px}.finder-bl,.finder-br{bottom:15px}.finder-tl,.finder-bl{left:15px}.finder-tr,.finder-br{right:15px}.motion-stack{inset:100px 0 190px}.motion-card{width:155px;height:220px}.motion-portrait{width:180px;height:319px}.hero-motion[data-state=settling] .motion-stack,.hero-motion[data-state=done] .motion-stack{transform:translateY(-155px)}.motion-profile{left:10%;top:51%;width:80%;max-width:none;transform:translate(0,20px)}.hero-motion[data-state=settling] .motion-profile,.hero-motion[data-state=done] .motion-profile{transform:translate(0,0)}.motion-profile-label{font-size:9px;margin-bottom:16px}.hero-motion h1{font-size:34px;line-height:1.3;letter-spacing:-1px}.motion-profile-description{margin-top:18px;font-size:11px}.motion-profile-details{margin-top:20px;padding-top:16px;gap:10px;font-size:9px}.motion-work-link{margin-top:18px;font-size:11px;max-width:190px}.motion-caption{font-size:9px;padding:0 2px}}
.hero-motion .motion-stage{background:#fff;color:var(--ink)}.hero-motion .motion-top,.hero-motion .motion-bottom{color:#74786c}.hero-motion .motion-brand{color:#34382f}.hero-motion .motion-top button,.hero-motion .motion-bottom button{color:#62685b}.hero-motion .finder{border-color:#b5bcac}.hero-motion .motion-profile-label{color:#727b66}.hero-motion .motion-profile-description{color:#656c5d}.hero-motion .motion-profile-details{color:#747c6c;border-top-color:#dedfd8}.hero-motion .motion-work-link{color:#353e2d;border-bottom-color:#a7b09c}.hero-motion .motion-work-link:hover{color:var(--blue)}.hero-motion .motion-progress{background:repeating-linear-gradient(to right,#e1e4db 0 3px,transparent 3px 7px)}.hero-motion .motion-progress>span{background:repeating-linear-gradient(to right,#6b775e 0 3px,transparent 3px 7px)}.hero-motion .motion-portrait img{background:#fff}.hero-motion .motion-stage button:focus-visible,.hero-motion .motion-work-link:focus-visible{outline-color:var(--blue)}
.photo-explorer{display:none}.bookshelf{grid-column:1/-1;position:relative;width:100%;height:410px;overflow:hidden;perspective:1500px;touch-action:pan-y}.bookshelf .filters{display:block;position:absolute;inset:0;transform-style:preserve-3d}.bookshelf .filters button{position:absolute;left:50%;top:47%;width:180px;height:280px;display:block;padding:0;margin:0;border:0;border-radius:0;background:none;transform-style:preserve-3d;will-change:transform;transition:opacity .25s;overflow:visible;min-height:0;text-align:left}.bookshelf .filters button:hover,.bookshelf .filters button.active{background:none;border:0}.book-solid{position:absolute;inset:0;display:block;transform-style:preserve-3d;transition:transform .45s cubic-bezier(.2,.7,.2,1)}.bookshelf .filters button:hover .book-solid,.bookshelf .filters button:focus-visible .book-solid{transform:translateY(-14px) rotateY(12deg)}.book-front{position:absolute;inset:0;display:block;transform:translateZ(9px);background:var(--book-color);box-shadow:8px 18px 25px #00000014;backface-visibility:hidden;overflow:hidden}.book-front:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#0004,transparent 4%,#fff2 6%,transparent 10%);pointer-events:none}.book-front img{width:100%;height:100%;object-fit:cover;filter:brightness(.85)}.book-cover-title{position:absolute;left:18px;right:15px;top:20px;font-size:20px;font-weight:400;line-height:1.35;color:white;text-shadow:0 1px 8px #0003}.book-edition{position:absolute;left:18px;bottom:18px;font-size:8px;letter-spacing:1px;color:white}.book-spine{position:absolute;left:-9px;top:0;width:18px;height:100%;transform:rotateY(-90deg);background:var(--book-color);color:#2a2d26;display:flex;align-items:center;justify-content:center;writing-mode:vertical-rl;font-size:9px;letter-spacing:1px;border-inline:1px solid #0002}.book-pages{position:absolute;right:-8px;top:3px;bottom:3px;width:16px;transform:rotateY(90deg);background:repeating-linear-gradient(90deg,#deded5 0 1px,#f9f9f2 1px 3px)}.book-under-title{position:absolute;left:0;right:0;bottom:-35px;font-size:11px;color:#85877d;white-space:nowrap;display:flex;justify-content:space-between;gap:8px}.book-under-title>span{opacity:0;color:var(--blue)}.bookshelf .filters button.active .book-under-title{color:var(--blue)}.bookshelf .filters button.active .book-under-title>span,.bookshelf .filters button:hover .book-under-title>span{opacity:1}.bookshelf-controls{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:20px;margin-bottom:12px;gap:20px}.bookshelf-controls p{font-size:11px;color:#828678;line-height:1.8}.bookshelf-controls>div{display:flex;align-items:center;gap:15px}.bookshelf-controls button{font-size:11px;min-height:44px;min-width:38px}.bookshelf-controls .books-prev,.bookshelf-controls .books-next{font-size:22px}.projects.photo-grid[hidden],.selection-note[hidden]{display:none}.photo-grid.unfolding{animation:unfoldPhotos .65s cubic-bezier(.2,.6,.2,1) both}@keyframes unfoldPhotos{from{opacity:0;transform:translateY(25px)}to{opacity:1;transform:none}}
@media(max-width:700px){.bookshelf{height:345px;perspective:1000px}.bookshelf .filters button{width:140px;height:220px;top:45%}.book-cover-title{font-size:17px;left:14px;top:16px}.book-edition{left:14px;font-size:7px}.book-under-title{font-size:10px;bottom:-30px}.bookshelf-controls{gap:10px;align-items:flex-start;padding-bottom:15px}.bookshelf-controls p{max-width:150px;font-size:10px}.bookshelf-controls>div{gap:5px}.bookshelf-controls button{font-size:9px;min-width:30px}.bookshelf-controls .books-prev,.bookshelf-controls .books-next{font-size:19px}}
.photo-explorer{display:block}.book-front{transform:translateZ(16px);box-shadow:12px 22px 30px #00000020}.book-solid:before{content:'';position:absolute;inset:0;transform:translateZ(-16px);background:var(--book-color);box-shadow:0 15px 22px #0002}.book-spine{left:-16px;width:32px;background:linear-gradient(90deg,#0003,transparent 25%,#fff3 65%,#0002),var(--book-color);font-size:10px;border:0;box-shadow:inset 3px 0 5px #0002}.book-pages{right:-15px;top:4px;bottom:4px;width:30px;background:repeating-linear-gradient(90deg,#c2c1b5 0 1px,#f6f3e8 1px 3px);box-shadow:inset 0 0 5px #0003}.bookshelf .filters button:hover .book-solid,.bookshelf .filters button:focus-visible .book-solid{transform:translateY(-18px) rotateY(18deg) rotateX(5deg)}.book-front:after{background:linear-gradient(90deg,#0005,transparent 5%,#fff4 7%,transparent 12%)}
.shelf-accordion{height:410px;perspective:none;overflow:clip;display:flex;align-items:center;justify-content:center;padding-bottom:25px}.shelf-accordion .filters{position:relative;inset:auto;display:flex;justify-content:center;align-items:center;gap:20px;width:auto;transform-style:preserve-3d;perspective:1600px}.shelf-accordion .filters button{position:relative;left:auto;top:auto;width:38px;height:290px;transform:none!important;opacity:1!important;transition:width .8s cubic-bezier(.22,.7,.2,1);flex-shrink:0;z-index:auto!important}.shelf-accordion .filters button.book-preview{width:210px}.shelf-accordion .book-solid{width:210px;height:290px;transform-origin:0 50%;transform:translateX(16px) rotateY(90deg);transition:transform .8s cubic-bezier(.22,.7,.2,1)}.shelf-accordion .filters button:hover .book-solid,.shelf-accordion .filters button:focus-visible .book-solid{transform:translateX(16px) rotateY(90deg)}.shelf-accordion .filters button.book-preview .book-solid{transform:translateX(16px) rotateY(-12deg)}.shelf-accordion .book-spine{font-size:15px;font-weight:500;letter-spacing:0;writing-mode:vertical-rl;justify-content:space-between;padding:20px 0;background:var(--book-color);box-shadow:inset 3px 0 5px #0002;color:#252a25}.shelf-accordion .book-spine small{font-size:9px;letter-spacing:1px;font-weight:400}.shelf-accordion .book-front{box-shadow:5px 14px 18px #00000010}.shelf-accordion .book-front img{filter:brightness(.83)}.shelf-accordion .book-cover-title{font-size:22px;top:22px;left:20px}.shelf-accordion .book-under-title{opacity:0;bottom:-38px;transition:opacity .25s .15s;font-size:11px}.shelf-accordion .book-preview .book-under-title{opacity:1}.shelf-accordion .bookshelf-controls{max-width:850px;margin:auto}.shelf-accordion .book-solid:before{box-shadow:6px 14px 20px #0002}
@media(max-width:700px){.shelf-accordion{height:330px}.shelf-accordion .filters{gap:12px;perspective:1100px}.shelf-accordion .filters button{width:27px;height:225px}.shelf-accordion .filters button.book-preview{width:145px}.shelf-accordion .book-solid{width:145px;height:225px;transform:translateX(12px) rotateY(90deg)}.shelf-accordion .filters button:hover .book-solid,.shelf-accordion .filters button:focus-visible .book-solid{transform:translateX(12px) rotateY(90deg)}.shelf-accordion .filters button.book-preview .book-solid{transform:translateX(12px) rotateY(-10deg)}.shelf-accordion .book-spine{width:24px;left:-12px;font-size:12px;padding:15px 0}.shelf-accordion .book-front{transform:translateZ(12px)}.shelf-accordion .book-solid:before{transform:translateZ(-12px)}.shelf-accordion .book-pages{width:22px;right:-11px}.shelf-accordion .book-cover-title{font-size:17px;left:15px;top:18px}.shelf-accordion .book-under-title{font-size:10px}}
@media(max-width:380px){.shelf-accordion .filters{gap:9px}.shelf-accordion .filters button{width:24px}.shelf-accordion .filters button.book-preview{width:130px}.shelf-accordion .book-solid{width:130px}}
@font-face{font-family:BookText;src:local('DengXian Light'),local('等线 Light'),local('Microsoft YaHei Light');font-weight:300;font-display:swap}.shelf-accordion .book-cover-title,.shelf-accordion .book-spine,.shelf-accordion .book-under-title{font-family:BookText,'DengXian','Microsoft YaHei',sans-serif;font-weight:300}.shelf-accordion .book-cover-title{font-size:18px;line-height:1.7;letter-spacing:2px;left:23px;right:18px;top:25px;text-shadow:none}.shelf-accordion .book-spine{font-size:12px;letter-spacing:2px;padding:25px 0;color:#32382f}.shelf-accordion .book-spine>span{line-height:1.2}.shelf-accordion .book-spine small{font-family:'Segoe UI',Arial,sans-serif;font-size:8px;letter-spacing:1px}.shelf-accordion .book-under-title{font-size:11px;letter-spacing:1px}.shelf-accordion .book-edition{font-family:BookText,'Microsoft YaHei',sans-serif;font-weight:300;font-size:8px;letter-spacing:1.4px}html[lang=en] .shelf-accordion .book-cover-title{font-family:'Segoe UI',Arial,sans-serif;font-size:18px;font-weight:300;letter-spacing:.3px;line-height:1.4}html[lang=en] .shelf-accordion .book-spine{font-family:'Segoe UI',Arial,sans-serif;font-size:12px;font-weight:400;letter-spacing:.5px}
@media(max-width:700px){.shelf-accordion .book-cover-title{font-size:15px;letter-spacing:1.5px;left:18px;top:22px}.shelf-accordion .book-spine{font-size:11px;letter-spacing:1.5px;padding:20px 0}.shelf-accordion .book-under-title{font-size:10px}html[lang=en] .shelf-accordion .book-cover-title{font-size:16px}html[lang=en] .shelf-accordion .book-spine{font-size:10px}.shelf-accordion .book-edition{font-size:7px;letter-spacing:.6px}}
.video-work{min-width:0;margin-top:15px;align-self:start}.video-work video{display:block;width:100%;aspect-ratio:16/9;object-fit:contain;background:#101110}.video-caption{padding:15px 0;display:flex;align-items:baseline;justify-content:space-between;gap:15px}.video-caption h3{font-size:13px;font-weight:400;line-height:1.6;margin:0}.video-caption>span{font-size:10px;color:var(--muted);flex-shrink:0}.projects.photo-grid.video-grid{gap:35px 28px}.selection-note:has(+*){line-height:1.8}
@media(max-width:650px){.projects.photo-grid.video-grid{grid-template-columns:1fr;gap:25px}.video-caption h3{font-size:12px}.video-caption>span{font-size:9px}.shelf-accordion .filters{gap:9px}.shelf-accordion .filters button{width:24px}.shelf-accordion .filters button.book-preview{width:135px}.shelf-accordion .book-solid{width:135px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.intro{display:none}.js-motion .reveal,.js-motion .project{opacity:1;transform:none}.hero-photo{translate:0!important}}
/* Collection index: quiet typography alongside the photographs. */
.work-collection{display:grid;grid-template-columns:190px minmax(0,1050px);gap:clamp(28px,4vw,64px);max-width:1304px;margin:12px auto 0;align-items:start;scroll-margin-top:115px}.work-collection[hidden]{display:none}.work-collection .projects{width:100%;min-width:0}.work-sidebar{position:sticky;top:118px;align-self:start;max-height:calc(100dvh - 145px);overflow-y:auto;scrollbar-width:thin;padding:4px 4px 20px 0;font-family:'BookText','Microsoft YaHei',sans-serif}.work-index-label{display:flex;justify-content:space-between;font-size:10px;letter-spacing:2px;color:var(--muted);margin-bottom:22px}.work-sidebar h3{font-size:24px;font-weight:300;line-height:1.45;margin:0 0 10px}.work-index-count{font-size:10px;color:var(--muted);line-height:1.8;margin-bottom:25px}.work-index-nav{display:flex;flex-direction:column;gap:2px}.work-index-nav button{display:flex;align-items:center;gap:12px;text-align:left;padding:12px 0;font-size:12px;color:var(--muted);transition:color .2s}.work-index-nav small{font:9px 'Segoe UI',sans-serif;color:#a2a49b}.work-index-nav button>span:last-child{margin-left:auto}.work-index-nav button[aria-pressed=true],.work-index-nav button:hover{color:var(--blue)}.work-index-series{border-top:1px solid var(--line);margin-top:22px;padding-top:20px}.work-index-series>p{font-size:9px;letter-spacing:1.5px;color:var(--muted);margin-bottom:12px}.work-index-series button{display:flex;justify-content:space-between;gap:12px;width:100%;padding:9px 0;text-align:left;font-size:11px;line-height:1.6}.work-index-series button:hover{color:var(--blue)}.work-index-series button span{font-size:9px;color:var(--muted)}.work-collection .photo-grid-button,.work-collection .video-work{scroll-margin-top:115px}
@media(max-width:800px){.work-collection{grid-template-columns:1fr;gap:25px}.work-sidebar{position:relative;top:auto;max-height:none;overflow:visible;padding:0}.work-index-label{margin-bottom:12px}.work-sidebar h3{font-size:22px}.work-index-count{margin-bottom:12px}.work-index-nav{flex-direction:row;flex-wrap:wrap;gap:2px 16px}.work-index-nav button{padding:10px 0;gap:6px}.work-index-nav button>span:last-child{display:none}.work-index-series{display:none}}
.work-index-nav button>span{margin-left:0;color:inherit}.work-index-nav button>span:nth-child(2){display:inline}.work-index-nav button[aria-pressed="true"]{color:#344bc8}@media(max-width:800px){.work-index-nav button>span:nth-child(2){display:inline;font-size:12px}.work-index-nav button>span:last-child{display:none}}
.sidebar-profile{padding-bottom:22px;margin-bottom:22px;border-bottom:1px solid var(--line)}.sidebar-portrait{width:72px;height:92px;object-fit:cover;object-position:50% 76%;margin-bottom:15px}.sidebar-profile h2{font-size:25px;font-weight:300;letter-spacing:1px;line-height:1.3}.sidebar-role{font-size:9px;letter-spacing:1.1px;margin-top:7px;color:var(--muted)}.sidebar-bio{font-size:11px;line-height:1.9;margin-top:12px;color:#65675f}.sidebar-contact{display:grid;gap:10px;margin-top:16px}.sidebar-contact a{font-family:'Segoe UI','Microsoft YaHei',sans-serif;font-size:10px;line-height:1.5;overflow-wrap:anywhere}.sidebar-contact a>span{display:block;font-size:8px;letter-spacing:1px;color:var(--muted);margin-bottom:2px}.sidebar-contact a:hover{color:var(--blue)}.work-index-nav button{padding-block:9px}
@media(max-width:800px){.sidebar-profile{display:grid;grid-template-columns:64px minmax(0,1fr);gap:0 18px;padding-bottom:20px;margin-bottom:18px}.sidebar-portrait{width:64px;height:86px;margin:0}.sidebar-profile h2{font-size:23px}.sidebar-bio{margin-top:9px}.sidebar-contact{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:12px 24px;margin-top:16px}}
/* Readable profile and collection index. */
.work-sidebar{font-family:'Segoe UI','Microsoft YaHei',sans-serif;font-weight:400;color:#292c28}.work-sidebar .sidebar-portrait{width:80px;height:80px;aspect-ratio:1;border-radius:50%;object-fit:cover;object-position:center}.sidebar-profile h2{font-weight:500}.sidebar-role,.sidebar-bio,.work-index-label,.work-index-count,.work-index-series>p{color:#555a52}.sidebar-role{font-size:10px}.sidebar-bio{font-size:12px}.work-index-count{font-size:11px}.work-index-nav button{font-size:13px;color:#454a43}.work-index-nav small{color:#61665e}.work-index-series button{font-size:12px}.work-index-series button span{color:#61665e}.sidebar-contact a,.sidebar-wechat{font-family:'Segoe UI','Microsoft YaHei',sans-serif;font-size:12px;line-height:1.6;color:#292c28}.sidebar-contact a>span,.sidebar-wechat>span{display:block;font-size:10px;letter-spacing:1px;color:#555a52;margin-bottom:2px}.work-sidebar h3{font-weight:400}@media(max-width:800px){.work-sidebar .sidebar-portrait{width:64px;height:64px}.work-index-nav button>span:nth-child(2){font-size:13px}}
/* Give the desktop profile room without narrowing the photo collection. */
@media(min-width:801px){.work-collection{width:calc(100% + 6vw);max-width:1480px;margin-left:-3vw;margin-right:-3vw;grid-template-columns:clamp(235px,19vw,280px) minmax(0,1fr);gap:clamp(24px,2.5vw,40px)}.work-sidebar{padding-right:12px}.sidebar-bio{line-height:1.85}.sidebar-profile{padding-bottom:18px;margin-bottom:18px}.sidebar-contact{gap:8px;margin-top:13px}.work-index-count{margin-bottom:18px}}
/* Reference-led opening: typography above a paint-away photographic surface. */
.hero.hero-reveal{height:auto;min-height:0;max-height:none;padding:96px 0 0;overflow:hidden}.reveal-stage{position:relative;isolation:isolate;height:calc(100svh - 96px);min-height:600px;max-height:1100px;background:#f9faf7;overflow:hidden}.reveal-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 43%;filter:grayscale(1) contrast(1.08)}.scratch-surface{position:absolute;inset:0;width:100%;height:100%;z-index:1;touch-action:pan-y pinch-zoom;cursor:none}.reveal-loader{position:absolute;inset:0;z-index:8;background:#f9faf7;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;transition:opacity .5s,visibility .5s}.reveal-loader>span{font:300 clamp(56px,8vw,110px)/1 'Segoe UI',sans-serif;letter-spacing:-5px;color:#344bc8;font-variant-numeric:tabular-nums}.reveal-loader>small{font:10px 'Segoe UI',sans-serif;letter-spacing:4px;color:#676b62}.hero-reveal[data-state=ready] .reveal-loader{opacity:0;visibility:hidden;pointer-events:none}.reveal-meta{position:absolute;z-index:4;top:25px;left:4.6%;right:4.6%;display:flex;align-items:center;justify-content:space-between;font-size:10px;letter-spacing:1.5px}.reveal-meta>span{pointer-events:none}.reveal-meta>div{display:flex;gap:24px}.reveal-meta button{font-size:11px;letter-spacing:0;min-height:44px;padding:8px 0}.reveal-meta button:hover{color:#344bc8}.reveal-introduction{position:absolute;z-index:2;left:4%;right:4%;top:19%;text-align:center;color:white;mix-blend-mode:difference;pointer-events:none}.reveal-hello{font:300 clamp(23px,3vw,43px)/1.3 'Segoe UI','Microsoft YaHei',sans-serif;letter-spacing:1px}.hero-reveal h1{font:300 clamp(64px,12.6vw,194px)/1.1 'Segoe UI','Arial',sans-serif;letter-spacing:-.065em;margin:3px 0 20px;white-space:nowrap}.reveal-role{font:300 clamp(17px,2.3vw,32px)/1.5 'Segoe UI','Microsoft YaHei',sans-serif;letter-spacing:1px}.reveal-welcome{font:300 clamp(14px,1.7vw,24px)/1.6 'Segoe UI','Microsoft YaHei',sans-serif;margin-top:4px}.reveal-introduction>*{opacity:0;transform:translateY(30px);filter:blur(8px)}.hero-reveal[data-state=ready] .reveal-introduction>*{animation:revealWords .9s cubic-bezier(.16,1,.3,1) forwards}.hero-reveal[data-state=ready] .reveal-introduction h1{animation-delay:.14s}.hero-reveal[data-state=ready] .reveal-role{animation-delay:.35s}.hero-reveal[data-state=ready] .reveal-welcome{animation-delay:.55s}.scratch-hint{position:absolute;z-index:3;top:68%;left:0;right:0;text-align:center;font-size:11px;letter-spacing:2px;color:#344bc8;pointer-events:none;transition:opacity .3s}.scratch-used .scratch-hint{opacity:0}.reveal-next{position:absolute;z-index:4;bottom:clamp(110px,15vw,190px);left:50%;width:58px;height:58px;border:1px solid currentColor;border-radius:50%;display:grid;place-items:center;transform:translateX(-50%);font:300 35px 'Segoe UI',sans-serif;color:#fff;mix-blend-mode:difference;transition:background .25s,scale .25s}.reveal-next:hover{scale:1.1}.reveal-next span{display:block;animation:arrowBob 2s ease-in-out infinite}.reveal-marquee{position:absolute;z-index:2;bottom:-.12em;left:0;right:0;overflow:hidden;color:#fff;mix-blend-mode:difference;font:300 clamp(70px,10vw,160px)/1.15 'Segoe UI','Arial',sans-serif;letter-spacing:-.055em;pointer-events:none}.reveal-marquee>div{display:flex;width:max-content;animation:revealMarquee 28s linear infinite}.reveal-marquee span{flex-shrink:0;white-space:nowrap;padding-right:.25em}.scratch-brush{position:absolute;z-index:5;width:76px;height:76px;border:1px solid #344bc8;border-radius:50%;transform:translate(-50%,-50%);opacity:0;pointer-events:none;transition:opacity .15s}.scratch-brush.active{opacity:.8}.reveal-meta{color:#34392f}.photo-revealed .reveal-meta{color:white;mix-blend-mode:difference}.hero-reveal.leaving .reveal-stage{transform:translateY(-50px);opacity:.15;transition:transform .8s,opacity .8s}@keyframes revealWords{to{opacity:1;transform:none;filter:blur(0)}}@keyframes revealMarquee{to{transform:translateX(-50%)}}
@media(max-width:800px){.hero.hero-reveal{padding-top:80px}.reveal-stage{height:calc(100svh - 80px);min-height:600px}.reveal-introduction{top:27%}.hero-reveal h1{font-size:13vw}.reveal-meta{top:14px}.reveal-meta>div{gap:15px}.reveal-meta>span{font-size:8px;letter-spacing:.6px}.reveal-meta button{font-size:10px}.reveal-photo{object-position:53% center}.scratch-hint{font-size:10px;letter-spacing:1px;top:65%}.reveal-next{bottom:145px;width:50px;height:50px;font-size:30px}.reveal-marquee{font-size:85px;bottom:0}.reveal-welcome{margin-top:12px}.scratch-brush{display:none}}
@media(prefers-reduced-motion:reduce){.hero-reveal[data-state=ready] .reveal-introduction>*{animation:none;opacity:1;transform:none;filter:none}.reveal-marquee>div,.reveal-next span{animation:none}.reveal-loader{transition:none}}
/* Enter the scene, then continue: two distinct, visible actions. */
.reveal-scene{position:absolute;inset:0;isolation:isolate;transform:scale(1);transform-origin:50% 47%;transition:transform 1.1s cubic-bezier(.22,.75,.15,1);will-change:transform}.hero-reveal.is-entered .reveal-scene{transform:scale(1.38)}.hero-reveal h1{font-weight:600;letter-spacing:-.06em}.reveal-next{width:80px;height:80px;background:#344bc8;color:#fff;mix-blend-mode:normal;border:0;box-shadow:0 6px 25px #344bc826;transition:scale .3s,background .3s,box-shadow .3s;bottom:clamp(130px,15vw,190px)}.reveal-next:hover{background:#273daf;box-shadow:0 8px 32px #344bc844;scale:1.07}.reveal-next .reveal-arrow{width:38px;height:38px;animation:none;transform:rotate(0);transition:transform .8s cubic-bezier(.22,.75,.15,1)}.reveal-arrow svg{display:block;width:100%;height:100%;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.hero-reveal.is-entered .reveal-arrow{transform:rotate(90deg)}.reveal-next-label{position:absolute;top:calc(100% + 12px);left:50%;transform:translateX(-50%);color:#344bc8;background:#f9faf7ed;border-radius:4px;padding:3px 8px;font:400 11px/1.5 'Segoe UI','Microsoft YaHei',sans-serif;letter-spacing:1px;white-space:nowrap}.scratch-hint{top:auto;bottom:clamp(242px,26vw,295px)}.hero-reveal.is-entered .reveal-next{box-shadow:0 7px 30px #344bc836}
@media(max-width:800px){.hero-reveal.is-entered .reveal-scene{transform:scale(1.22)}.reveal-next{width:68px;height:68px;bottom:140px}.reveal-next .reveal-arrow{width:33px;height:33px}.reveal-next-label{font-size:10px}.scratch-hint{top:auto;bottom:240px}}
@media(prefers-reduced-motion:reduce){.reveal-scene,.reveal-next .reveal-arrow{transition:none}}
.hero-reveal.is-entered .reveal-marquee{font-size:clamp(80px,12vw,190px);transition:font-size 1.1s cubic-bezier(.22,.75,.15,1)}@media(max-width:800px){.hero-reveal.is-entered .reveal-marquee{font-size:100px}}
/* Keep the entry action clear and the name solid over revealed photography. */
.reveal-introduction .reveal-role,.reveal-introduction .reveal-welcome{display:none}.reveal-introduction{mix-blend-mode:normal;color:#22231f}.reveal-introduction h1{color:#22231f;transition:color .35s ease}.scratch-used .reveal-introduction h1{color:#344bc8}.scratch-used .reveal-hello{color:#344bc8}.scratch-hint{top:auto;bottom:clamp(242px,26vw,295px)}
/* Photographic CDs replace the category bookshelf. */
.disc-carousel{grid-column:1/-1;position:relative;height:480px;width:100%;overflow:clip;perspective:1200px}.disc-carousel .filters{display:block;position:absolute;inset:0;width:100%;height:100%;margin:0;perspective:1200px;transform-style:preserve-3d}.disc-carousel .filters button,.disc-carousel .filters button.active,.disc-carousel .filters button:hover{position:absolute;left:50%;top:47%;width:var(--disc-size);height:var(--disc-size);min-height:0;display:block;flex:none;padding:0;margin:0;border:0;border-radius:0;background:none;isolation:auto;text-align:center;transition:none;color:#454b43;will-change:transform;transform-style:preserve-3d}.disc-body{position:absolute;inset:0;display:block;transform:rotateX(43deg) rotateZ(-22deg);transform-style:preserve-3d;transition:transform .6s cubic-bezier(.2,.7,.2,1);pointer-events:none}.disc-carousel button:hover .disc-body,.disc-carousel button:focus-visible .disc-body{transform:translateY(-10px) rotateX(31deg) rotateZ(-12deg)}.disc-face,.disc-back{position:absolute;inset:0;border-radius:50%;display:block;mask-image:radial-gradient(circle,transparent 0 7.4%,#000 7.8%);-webkit-mask-image:radial-gradient(circle,transparent 0 7.4%,#000 7.8%)}.disc-back{background:#aaaeb0;transform:translateZ(-4px);box-shadow:0 16px 22px #0002}.disc-face{overflow:hidden;background:conic-gradient(#e4e6e5,#b6c0cb,#f6f8f7,#c0beca,#d8dcd5,#f1f3f5,#bac8cc,#e4e6e5);box-shadow:inset 0 0 0 1px #8f9594}.disc-face img{position:absolute;inset:2%;width:96%;height:96%;border-radius:50%;object-fit:cover;mask-image:radial-gradient(circle,transparent 0 15%,#000 15.5%);-webkit-mask-image:radial-gradient(circle,transparent 0 15%,#000 15.5%);filter:saturate(.85)}.disc-reflection{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from -45deg,transparent 0 12%,#fff5 16%,transparent 21% 55%,#d4dffa55 61%,transparent 68% 100%);mix-blend-mode:screen;opacity:.55}.disc-hub{position:absolute;inset:39%;border-radius:50%;background:radial-gradient(circle,transparent 0 32%,#a7afb1 34% 39%,#f0f2f3 40% 55%,#aab0b4 57% 60%,#d9dedc99 62%);box-shadow:0 0 0 1px #ffffff88,inset 0 0 0 1px #89929255}.disc-rim{position:absolute;inset:0;border-radius:50%;border:2px solid #d6d9d6;box-shadow:inset 0 0 0 2px #ffffff66}.disc-label{position:absolute;left:-10%;right:-10%;bottom:-6%;display:flex;align-items:center;justify-content:center;gap:10px;white-space:nowrap;font:400 13px/1.5 'Segoe UI','Microsoft YaHei',sans-serif;pointer-events:none}.disc-label small{font-size:9px;color:#72796f}.disc-selected{opacity:0;color:var(--blue)}.disc-carousel button.active .disc-selected{opacity:1}.disc-carousel button.active .disc-label,.disc-carousel button:hover .disc-label{color:var(--blue)}.disc-preview .disc-label{font-size:16px}.disc-controls{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;gap:20px;border-bottom:1px solid var(--line);padding:0 0 20px;margin:0 0 12px}.disc-controls p{font-size:11px;line-height:1.8;color:#60675e}.disc-controls>div{display:flex;align-items:center;gap:20px}.disc-controls button{min-width:40px;min-height:44px;font-size:11px}.disc-controls .discs-prev,.disc-controls .discs-next{font-size:24px}.disc-controls button:hover{color:var(--blue)}
@media(max-width:700px){.disc-carousel{height:350px}.disc-carousel .filters button{top:43%}.disc-label{font-size:11px;gap:7px;bottom:-10%}.disc-preview .disc-label{font-size:13px}.disc-controls{gap:12px}.disc-controls p{font-size:10px;max-width:170px}.disc-controls>div{gap:3px}.disc-controls button{font-size:10px;min-width:30px}.disc-controls .discs-prev,.disc-controls .discs-next{font-size:21px}}
@media(prefers-reduced-motion:reduce){.disc-body{transition:none}}
/* Match the upright diagonal disc perspective and drawn hover outlines. */
.disc-entry{position:absolute;inset:0;display:block;transform-style:preserve-3d;pointer-events:none}.disc-body{transform:rotateZ(-15deg) rotateY(-32deg) rotateX(23deg)}.disc-carousel button:hover .disc-body,.disc-carousel button:focus-visible .disc-body{transform:translateY(-8px) rotateZ(-15deg) rotateY(-25deg) rotateX(18deg)}.disc-orbits{position:absolute;inset:-7%;width:114%;height:114%;overflow:visible;fill:none;stroke:#353b32;stroke-width:1;pointer-events:none;opacity:0;transition:opacity .25s}.disc-orbits ellipse{stroke-dasharray:500 180;stroke-dashoffset:680;transition:stroke-dashoffset .75s cubic-bezier(.2,.65,.2,1)}.disc-orbits ellipse:nth-child(2){stroke-width:.7;stroke-dasharray:240 100 160 180;transition-delay:.09s}.disc-carousel button:hover .disc-orbits,.disc-carousel button:focus-visible .disc-orbits{opacity:1}.disc-carousel button:hover .disc-orbits ellipse,.disc-carousel button:focus-visible .disc-orbits ellipse{stroke-dashoffset:0}.disc-carousel .disc-label{bottom:-13%}.disc-carousel:not(.discs-arriving) .disc-entry,.disc-carousel:not(.discs-arriving) .disc-label{opacity:0}.discs-arriving .disc-entry{animation:discArrival 1.3s cubic-bezier(.18,.7,.2,1) both;animation-delay:calc(var(--arrival-order)*.12s)}.discs-arriving .disc-label{animation:discLabelIn .6s ease both;animation-delay:calc(.7s + var(--arrival-order)*.12s)}.discs-arrived .disc-entry,.discs-arrived .disc-label{animation:none;opacity:1}.disc-carousel{touch-action:pan-y pinch-zoom}@keyframes discArrival{from{opacity:0;transform:translate3d(var(--arrival-x),var(--arrival-y),-450px) rotateY(-60deg) scale(.35)}35%{opacity:1}to{opacity:1;transform:translate3d(0,0,0) rotateY(0) scale(1)}}@keyframes discLabelIn{from{opacity:0;translate:0 8px}to{opacity:1;translate:0 0}}@media(prefers-reduced-motion:reduce){.discs-arriving .disc-entry,.discs-arriving .disc-label{animation:none;opacity:1}.disc-orbits,.disc-orbits ellipse{transition:none}}
/* Only the projected disc surface receives pointer input, never its square bounds. */
.disc-carousel .filters button{pointer-events:none}.disc-hit{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.disc-hit path{fill:transparent;stroke:none;pointer-events:fill;cursor:pointer}
/* Three uneven pen contours alternate like hand-drawn animation. */
.disc-orbits .sketch-frame{opacity:0}.disc-orbits path{fill:none;stroke:#343a30;stroke-width:1.05;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:750;stroke-dashoffset:750;transition:stroke-dashoffset .65s cubic-bezier(.2,.65,.2,1)}.disc-orbits path+path{stroke-width:.75;stroke:#555b50;transition-delay:.08s}.disc-carousel button:hover .sketch-frame,.disc-carousel button:focus-visible .sketch-frame{animation:sketchFrame .6s steps(1,end) infinite}.disc-carousel button:hover .sketch-frame:nth-child(2),.disc-carousel button:focus-visible .sketch-frame:nth-child(2){animation-delay:-.2s}.disc-carousel button:hover .sketch-frame:nth-child(3),.disc-carousel button:focus-visible .sketch-frame:nth-child(3){animation-delay:-.4s}.disc-carousel button:hover .disc-orbits path,.disc-carousel button:focus-visible .disc-orbits path{stroke-dashoffset:0}@keyframes sketchFrame{0%,32%{opacity:1}33%,100%{opacity:0}}@media(prefers-reduced-motion:reduce){.disc-carousel button:hover .sketch-frame,.disc-carousel button:focus-visible .sketch-frame{animation:none}.disc-carousel button:hover .sketch-frame:first-child,.disc-carousel button:focus-visible .sketch-frame:first-child{opacity:1}.disc-orbits path{transition:none}}
/* A disc tilts in the hand: pointer position changes its physical plane. */
.disc-carousel button.disc-held .disc-body{transform:translateY(-8px) rotateZ(var(--held-z,-15deg)) rotateY(var(--held-y,-25deg)) rotateX(var(--held-x,18deg));transition:transform .24s cubic-bezier(.16,.8,.3,1)}.disc-carousel button.disc-held .disc-reflection{transform:rotate(var(--shine-turn,0deg));transition:transform .24s ease-out;opacity:.7}
/* Keep a stable projected hit surface so tilting never flickers at the edge. */
.disc-entry>.disc-hit{transform:rotateZ(-15deg) rotateY(-32deg) rotateX(23deg);transform-origin:50% 50%}
/* The entry arrow unlocks the rest of the portfolio. */
html.home-gated{height:100%;overflow:hidden;overscroll-behavior:none}html.home-gated body{height:100dvh;overflow:hidden;overscroll-behavior:none}.home-gated .reveal-stage{min-height:0;height:calc(100dvh - 96px)}.header nav a[aria-disabled=true]{color:#8a8d85}.disc-cursor{position:fixed;left:0;top:0;z-index:60;width:68px;height:68px;border-radius:50%;background:#344bc8;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;pointer-events:none;opacity:0;transform:translate(-50%,-50%) scale(.65);transition:opacity .16s,transform .22s;box-shadow:0 3px 18px #263aa52b}.disc-cursor.on{opacity:1;transform:translate(-50%,-50%) scale(1)}.disc-cursor>span{font:400 12px/1.2 'Segoe UI','Microsoft YaHei',sans-serif}.disc-cursor>small{font:400 8px/1 'Segoe UI','Microsoft YaHei',sans-serif;letter-spacing:.7px;color:#e1e5ff}@media(hover:hover) and (pointer:fine){.disc-hit path{cursor:none}}@media(max-width:800px){.home-gated .reveal-stage{height:calc(100dvh - 80px)}}@media(pointer:coarse){.disc-cursor{display:none}}@media(prefers-reduced-motion:reduce){.disc-cursor{transition:none}}
/* Small pen-drawn pointer, anchored at its tip. */
.disc-cursor,.disc-cursor.on{width:32px;height:38px;border-radius:0;background:none;box-shadow:none;display:block;transform:translate(-4px,-3px);transition:opacity .12s}.disc-cursor svg{display:block;width:100%;height:100%;overflow:visible}@media(pointer:coarse){.disc-cursor,.disc-cursor.on{display:none}}
.disc-cursor,.disc-cursor.on{width:16px;height:20px;transform:translate(-2px,-1px)}
.profile-recognition{margin:22px 0;padding:18px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.profile-recognition-label{font-size:10px;color:#62685e;letter-spacing:1px}.profile-recognition ul,.sidebar-recognition{list-style:none;padding:0;margin:12px 0 0}.profile-recognition li{font-size:12px;line-height:1.8;max-width:420px;margin:12px 0;display:flex;align-items:baseline;gap:16px;justify-content:space-between}.recognition-status{font-size:10px;white-space:nowrap;color:var(--blue)}.sidebar-role{color:#344bc8}.sidebar-recognition{font-size:11px;line-height:1.85;color:#454b42}.sidebar-recognition li+li{margin-top:10px}.sidebar-recognition li>span{display:inline-block;margin-left:7px;color:var(--blue);font-size:10px}@media(max-width:800px){.sidebar-recognition{grid-column:1/-1;margin-top:14px}.profile-recognition li{font-size:12px}}
/* English display type: clear sans serif, upright and lightly weighted. */
html[lang=en] #about-title,html[lang=en] #work-title{font-family:'Arial','Helvetica Neue','Segoe UI',sans-serif;font-size:clamp(62px,6.6vw,100px);font-weight:400;line-height:1;letter-spacing:-.055em}html[lang=en] #about-title em,html[lang=en] #work-title em{font-style:normal;font-weight:400}html[lang=en] .about-lead{font-family:'Arial','Helvetica Neue','Segoe UI',sans-serif;font-size:22px!important;font-weight:400;line-height:1.55!important;letter-spacing:-.025em}html[lang=en] .interlude span,html[lang=en] .contact-title,html[lang=en] .contact-dialog h2{font-family:'Arial','Helvetica Neue','Segoe UI',sans-serif;font-weight:400;letter-spacing:-.045em}html[lang=en] .interlude em{font-style:normal}@media(max-width:540px){html[lang=en] #about-title,html[lang=en] #work-title{font-size:65px}html[lang=en] .about-lead{font-size:20px!important}}
/* A quiet, optional soundtrack entry. */
.music-widget{position:fixed;right:24px;bottom:22px;z-index:35;font-family:'Segoe UI','Microsoft YaHei',Arial,sans-serif;color:#292e28}.music-toggle{display:flex;align-items:center;gap:12px;min-height:48px;padding:10px 15px;background:#fffffff5;border:1px solid #d9ddd5;border-radius:5px;box-shadow:0 4px 20px #252c2410;backdrop-filter:blur(10px)}.music-record{width:27px;height:27px;stroke:#344bc8;stroke-width:1}.music-toggle-label{font-size:12px}.music-toggle-arrow{font-size:17px;color:#344bc8;margin-left:12px}.music-toggle:hover{border-color:#344bc8}.music-panel{position:absolute;bottom:calc(100% + 12px);right:0;width:365px;max-width:calc(100vw - 32px);background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 12px 50px #26312320;overflow:hidden}.music-panel[hidden]{display:none}.music-panel-heading{display:flex;align-items:center;justify-content:space-between;padding:19px 19px 12px;gap:12px}.music-heading{font-size:16px;font-weight:400;letter-spacing:-.2px}.music-subtitle{display:block;font-size:10px;color:#697064;margin-top:6px}.music-close{font-size:25px;min-height:40px;min-width:35px;padding:0;color:#5b6255}.music-note{font-size:10px;color:#697064;padding:0 19px 13px}.music-player-slot{min-height:430px;background:#fff}.music-frame{display:block;width:100%;height:430px;border:0}.music-panel-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 19px;border-top:1px solid var(--line);font-size:10px}.music-original{color:#344bc8}.music-stop{font-size:10px;padding:7px 0;color:#545e4d}.music-panel{max-height:calc(100dvh - 110px);overflow-y:auto;overscroll-behavior:contain}.music-panel-bottom a:focus-visible,.music-widget button:focus-visible{outline-offset:3px}.music-toggle[aria-expanded=true] .music-toggle-arrow{transform:rotate(180deg)}@media(max-width:540px){.music-widget{right:15px;bottom:14px}.music-toggle{min-height:43px;padding:8px 12px;gap:8px}.music-record{width:23px;height:23px}.music-toggle-label{font-size:11px}.music-toggle-arrow{margin-left:3px}.music-panel{width:360px}.music-panel-heading{padding-top:14px}}
/* A compact profile, with a small equipment index. */
.profile-recognition{margin:16px 0 12px;padding:12px 0 0;border-bottom:0}.profile-recognition ul{margin-top:8px}.profile-recognition li{justify-content:flex-start;gap:13px;margin:7px 0;line-height:1.65;max-width:none}.about-copy>.profile-placeholder{max-width:none;margin-bottom:12px!important;line-height:1.8!important}.about-details{margin-top:12px;padding-top:10px}.about-details>div{gap:20px;margin:10px 0;line-height:1.6}.profile-equipment{border-top:1px solid var(--line);margin-top:16px;padding-top:13px}.equipment-label{font-size:10px;color:#61685b;margin:0 0 11px}.profile-equipment ul{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 18px;margin:0;padding:0}.profile-equipment li{font-size:11px;line-height:1.5;color:#343a30}.profile-equipment li:before{content:'+';color:#344bc8;margin-right:8px;font-size:10px}@media(max-width:540px){.profile-recognition li{align-items:flex-start;font-size:11px;gap:10px}.recognition-status{padding-top:1px}.profile-equipment ul{gap:8px 12px}.profile-equipment li{font-size:11px}}
/* Expandable personal-work process archive. */
.process-folder{grid-column:1/-1;min-width:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:12px 0 32px;background:#fff}
.process-folder summary{list-style:none;display:flex;align-items:center;gap:22px;padding:28px 0;cursor:pointer}
.process-folder summary::-webkit-details-marker{display:none}
.process-folder summary:focus-visible{outline:2px solid var(--blue);outline-offset:6px}
.process-folder-icon{font-size:30px;color:var(--blue);align-self:flex-start;margin-top:22px}
.process-folder-title{display:flex;flex-direction:column;gap:12px;flex:1}
.process-folder-title small{font-size:10px;color:#73766e;letter-spacing:1px}
.process-folder-title strong{font-size:30px;font-weight:400;letter-spacing:1px}
.process-folder-title>span{font-size:12px;color:#666a62}
.process-folder-preview{display:flex;gap:10px;width:42%;height:110px;align-items:center}
.process-folder-preview img{width:calc((100% - 20px)/3);height:auto;max-height:110px;object-fit:contain}
.process-folder-toggle{font-size:28px;color:var(--blue);width:30px;text-align:center;transition:transform .2s}
.process-folder[open] .process-folder-toggle{transform:rotate(45deg)}
.process-folder-note{font-size:11px;color:#6a6e66;line-height:1.8;padding:0 0 28px 52px;max-width:680px}
.process-folder-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px 28px;padding:0 0 36px}
.process-folder-grid .photo-grid-item:nth-child(n){padding:0;width:100%;margin:0}
.process-folder-grid .photo-grid-button{background:#fff}
.process-folder-grid .photo-grid-button img{width:100%;height:auto;object-fit:contain}
.gallery-thumbs{max-width:100%;overflow-x:auto;overflow-y:hidden;justify-content:flex-start;width:max-content;margin:0 auto;padding:4px;flex-shrink:0}
.gallery-thumbs button{flex-shrink:0}
@media(max-width:600px){.process-folder summary{gap:12px;padding:22px 0}.process-folder-icon{font-size:22px}.process-folder-title strong{font-size:24px}.process-folder-title small{font-size:8px;letter-spacing:.5px}.process-folder-preview{width:26%;height:80px}.process-folder-preview img{display:none}.process-folder-preview img:first-child{display:block;width:100%;max-height:80px}.process-folder-note{padding-left:0}.process-folder-grid{grid-template-columns:1fr;gap:26px}.process-folder-toggle{font-size:23px;width:22px}}
/* Open albums flow directly; series controls live in the archive sidebar. */
.work-collection .projects.photo-grid{display:block;max-width:none;margin:0;min-width:0}
.work-collection .projects.photo-grid[hidden]{display:none}
.process-folder{border:0;margin:0 0 28px;padding:0;scroll-margin-top:115px}
.process-folder:not([open]){display:none}
.process-folder>summary{display:none}
.process-folder-note{padding:0 0 16px;font-size:11px;line-height:1.8}
.process-folder-grid{display:block;columns:2;column-gap:24px;padding:0;column-fill:balance}
.photo-grid .process-folder-grid .photo-grid-item:nth-child(n){display:inline-block;vertical-align:top;break-inside:avoid;page-break-inside:avoid;width:100%;margin:0 0 24px;padding:0;grid-column:auto}
.photo-grid .process-folder-grid .photo-grid-button{display:block;width:100%;aspect-ratio:auto;margin:0;padding:0}
.photo-grid .process-folder-grid .photo-grid-button img{display:block;width:100%;height:auto;object-fit:contain}
.photo-grid .process-folder-grid .photo-grid-caption{padding:9px 0 0;min-height:22px}
.work-index-series .series-nav-row{display:flex;align-items:center;gap:8px}
.work-index-series .series-nav-row>[data-jump-project]{flex:1;min-width:0}
.work-index-series .series-collapse{flex:0 0 30px;width:30px;min-height:34px;justify-content:center;font-size:18px;color:var(--blue)}
.gallery-top{gap:18px}.gallery-close{margin-left:auto}.gallery-nav-toggle{display:flex;align-items:center;gap:9px;min-height:44px;white-space:nowrap;color:var(--blue);padding:0 8px 0 0}.gallery-nav-toggle>span{font-size:18px}
.gallery-navigation{position:absolute;z-index:42;left:22px;top:80px;bottom:110px;width:245px;overflow:auto;background:#fff;border-right:1px solid var(--line);padding:18px 18px 18px 8px;overscroll-behavior:contain}
.gallery-navigation[hidden],.gallery-nav-shade[hidden]{display:none}
.gallery-nav-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;font-size:13px}.gallery-nav-heading strong{font-weight:400}.gallery-nav-close{font-size:24px;min-height:36px;min-width:36px;color:var(--blue)}
.gallery-navigation nav{display:block}.gallery-navigation details{border-top:1px solid #e8e9e3;padding:5px 0}.gallery-navigation summary{list-style:none;cursor:pointer;padding:12px 0;font-size:13px;color:#30372b}.gallery-navigation summary::-webkit-details-marker{display:none}.gallery-navigation summary:after{content:'+';float:right;color:var(--blue)}.gallery-navigation details[open]>summary:after{content:'−'}
.gallery-navigation [data-gallery-project]{display:flex;width:100%;align-items:center;justify-content:space-between;gap:12px;padding:11px 9px;text-align:left;font-size:12px;line-height:1.5;color:#555e4c}.gallery-navigation [data-gallery-project] small{color:#81887a;font-size:10px}.gallery-navigation [aria-current=true]{color:var(--blue);background:#f0f2fc}.gallery-nav-video{display:flex;justify-content:space-between;width:100%;border-top:1px solid var(--line);padding:17px 0;font-size:13px}
.gallery.nav-open .gallery-body,.gallery.nav-open .gallery-bottom{margin-left:258px}.gallery-body,.gallery-bottom{transition:margin-left .25s ease}.gallery-nav-shade{display:none}
@media(max-width:850px){.work-index-series{display:block}.process-folder-grid{column-gap:18px}}
@media(max-width:700px){.gallery-top{gap:10px}.gallery-nav-toggle{font-size:11px;gap:6px}.gallery-top #gallery-title{font-size:11px;min-width:0}.gallery-close{font-size:11px;padding-left:5px}.gallery-navigation{left:0;top:65px;bottom:0;width:min(300px,85vw);padding:18px 22px;border:0;box-shadow:8px 0 35px #0001}.gallery-nav-shade:not([hidden]){display:block;position:absolute;z-index:41;inset:65px 0 0;background:#0002}.gallery.nav-open .gallery-body,.gallery.nav-open .gallery-bottom{margin-left:0}}
@media(max-width:600px){.process-folder-grid{columns:1}.photo-grid .process-folder-grid .photo-grid-item:nth-child(n){margin-bottom:22px}.process-folder{margin-bottom:20px}.work-index-series .series-collapse{min-height:40px}}
@media(prefers-reduced-motion:reduce){.gallery-body,.gallery-bottom{transition:none}}
.work-collection .projects.photo-grid.video-grid,.inline-video-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 24px}
.work-collection .projects.photo-grid.video-grid[hidden]{display:none}
@media(max-width:650px){.work-collection .projects.photo-grid.video-grid,.inline-video-grid{grid-template-columns:1fr;gap:24px}}

.gallery-navigation nav button>span{display:inline;margin-left:0;color:inherit}

/* Five selected Polaroids, with an exposed edge on every draggable print. */
.about-collage .print{width:55%;height:34%;padding:9px 9px 28px}
.about-collage .print-one{left:0;right:auto;top:5%;--r:-10deg;z-index:2}
.about-collage .print-two{left:45%;right:auto;top:15%;--r:9deg;z-index:1}
.about-collage .print-three{left:7%;right:auto;top:35%;--r:-5deg;z-index:3}
.about-collage .print-four{left:46%;right:auto;top:49%;--r:8deg;z-index:4}
.about-collage .print-five{left:4%;right:auto;top:65%;--r:-8deg;z-index:5}
.about-collage .drag-note{bottom:-7%;right:-3%}
@media(max-width:600px){.about-collage .print{padding:6px 6px 22px}.about-collage .drag-note{font-size:20px;bottom:-9%}}

/* Landscape Polaroid frames retain the full selected photograph. */
.about-collage .print{width:60%;height:auto}
.about-collage .print img{width:100%;height:auto;aspect-ratio:3/2;object-fit:contain;background:#fff}
.about-collage .print-two,.about-collage .print-four{left:40%}
@media(max-width:600px){.about-collage{height:500px}}

/* A quiet reminder after fifteen seconds on the entry screen. */
.hero-reveal .reveal-next.entry-reminder{scale:1.28;box-shadow:0 0 0 10px #344bc814,0 12px 42px #344bc84d;transition:scale .7s cubic-bezier(.22,.75,.15,1),box-shadow .7s,background .3s}
.hero-reveal .reveal-next.entry-reminder:hover{scale:1.32}
@media(prefers-reduced-motion:reduce){.hero-reveal .reveal-next.entry-reminder{transition:none}}
