:root{--paper:#f2f0eb;--ink:#151515;--muted:#797771;--line:rgba(21,21,21,.18);--ease:cubic-bezier(.16,1,.3,1)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"DM Sans",sans-serif;font-weight:300}body.menu-open{overflow:hidden}a{color:inherit;text-decoration:none}img{display:block;width:100%;height:100%;object-fit:cover}::selection{background:#222;color:#fff}
.loader{position:fixed;z-index:99;inset:0;background:#111;color:#eee;display:grid;place-items:center;transition:transform 1.1s var(--ease) .25s}.loader span{font-size:clamp(2rem,7vw,6rem);letter-spacing:.25em;animation:pulse 1s ease infinite alternate}.loader i{position:absolute;bottom:0;left:0;width:0;height:2px;background:#eee;animation:load 1.25s var(--ease) forwards}.loaded .loader{transform:translateY(-100%)}@keyframes pulse{to{opacity:.35}}@keyframes load{to{width:100%}}
.site-header{position:absolute;z-index:20;top:0;left:0;width:100%;padding:34px 4vw;display:flex;justify-content:space-between;align-items:flex-start;color:#fff}.logo{font-size:16px;line-height:1;letter-spacing:.22em;font-weight:500}.logo span{display:block;font-size:8px;letter-spacing:.37em;margin-top:8px}.site-header nav{display:flex;gap:34px;font-size:11px;letter-spacing:.18em;text-transform:uppercase}.site-header nav a{position:relative}.site-header nav a:after{content:"";position:absolute;left:0;bottom:-6px;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease)}.site-header nav a:hover:after{transform:scaleX(1);transform-origin:left}.menu-toggle{display:none;background:none;border:0}
.hero{height:100svh;min-height:650px;position:relative;overflow:hidden;color:#fff}.hero-media{position:absolute;inset:-8%;will-change:transform}.hero-media img{filter:saturate(.72) contrast(.95)}.hero-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.42),transparent 60%),linear-gradient(0deg,rgba(0,0,0,.22),transparent 40%)}.hero-copy{position:absolute;left:8.2vw;top:50%;transform:translateY(-48%)}.eyebrow{font-size:10px;letter-spacing:.24em;text-transform:uppercase;margin:0 0 28px}.hero h1{font-family:"Noto Serif SC",serif;font-weight:300;font-size:clamp(58px,9.3vw,145px);letter-spacing:-.055em;line-height:.88;margin:0}.hero h1 .line{display:block;overflow:hidden}.hero h1 i{font-style:normal;display:block;transform:translateY(110%);transition:transform 1.25s var(--ease)}.loaded .hero h1 i{transform:none}.hero h1 .line:nth-child(2) i{transition-delay:.12s;font-style:italic}.intro{font-family:"Noto Serif SC",serif;font-size:13px;line-height:2;letter-spacing:.12em;margin:34px 0 0 42vw}.hero-index{position:absolute;right:4vw;bottom:34px;text-align:right;font-size:9px;line-height:1.8;letter-spacing:.2em}.scroll-cue{position:absolute;left:4vw;bottom:35px;display:flex;align-items:center;gap:14px;font-size:9px;letter-spacing:.2em}.scroll-cue i{display:block;width:50px;height:1px;background:#fff;transform-origin:left;animation:scrollLine 2s ease-in-out infinite}@keyframes scrollLine{0%,100%{transform:scaleX(.2)}50%{transform:scaleX(1)}}
.work{padding:150px 4vw 180px}.section-head{display:grid;grid-template-columns:1fr 2fr 1fr;align-items:start;margin-bottom:140px}.section-head>p,.about-label,.contact>p{font-size:10px;letter-spacing:.2em;text-transform:uppercase}.section-head h2{font-family:"Noto Serif SC",serif;font-weight:300;font-size:clamp(32px,4vw,62px);line-height:1.45;margin:0}.section-head>span{justify-self:end;font-size:10px;letter-spacing:.15em;color:var(--muted)}.project{margin-bottom:160px}.project-image{display:block;overflow:hidden;position:relative;background:#d8d5cf}.project-image img{transition:transform 1.4s var(--ease);filter:saturate(.78)}.project-image:hover img{transform:scale(1.035)}.project-wide .project-image{height:min(72vw,900px)}.project-meta{display:grid;grid-template-columns:1fr 1fr auto;padding-top:17px;border-top:1px solid var(--line);margin-top:17px;align-items:baseline}.project-meta h3{font-family:"Noto Serif SC",serif;font-size:19px;font-weight:400;letter-spacing:.08em;margin:0}.project-meta p,.project-meta b{font-size:9px;text-transform:uppercase;letter-spacing:.19em;margin:0;font-weight:400;color:var(--muted)}.project-pair{display:grid;grid-template-columns:5fr 4fr;gap:10vw;align-items:start}.project-tall .project-image{height:73vw;max-height:960px}.project-offset{margin-top:240px}.project-offset .project-image{height:51vw;max-height:680px}.project-cinema{width:78%;margin-left:auto}.project-cinema .project-image{height:42vw;max-height:650px}.view-dot{position:absolute;width:72px;height:72px;border-radius:50%;background:rgba(245,243,238,.9);color:#111;display:grid;place-items:center;font-size:9px;letter-spacing:.15em;pointer-events:none;opacity:0;transform:translate(-50%,-50%) scale(.5);transition:opacity .25s,transform .4s var(--ease)}.magnetic:hover .view-dot{opacity:1;transform:translate(-50%,-50%) scale(1)}
.about{border-top:1px solid var(--line);padding:120px 4vw 180px;display:grid;grid-template-columns:1fr 2fr 1.2fr;gap:5vw}.about-copy{display:flex;flex-direction:column;justify-content:space-between}.quote{font-family:"Noto Serif SC",serif;font-size:clamp(27px,3.4vw,52px);line-height:1.65;margin:0}.bio{max-width:470px;margin-top:120px;font-size:13px;line-height:2;display:grid;grid-template-columns:1.35fr 1fr;gap:45px}.bio p{margin:0}.bio p:last-child{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.about-image{margin:0;height:620px}.about-image{overflow:hidden;background:#d8d5cf}.about-image img{filter:none;object-position:52% 43%}
.contact{background:#151515;color:#eee;padding:110px 4vw 45px}.contact>p{color:#aaa}.contact h2{font-family:"Noto Serif SC",serif;font-size:clamp(48px,8vw,125px);line-height:1.07;font-weight:300;letter-spacing:-.04em;margin:130px 0 90px}.contact h2 em{font-weight:300;color:#888}.email{border-bottom:1px solid #666;padding:0 0 18px;font-size:clamp(18px,2vw,30px);display:flex;justify-content:space-between}.email span{transition:transform .35s}.email:hover span{transform:translate(7px,-7px)}footer{border-top:1px solid #333;margin-top:150px;padding-top:28px;display:flex;justify-content:space-between;font-size:9px;letter-spacing:.15em;text-transform:uppercase;color:#888}footer div{display:flex;gap:30px}footer a:hover{color:#fff}
.reveal{opacity:0;transform:translateY(42px);transition:opacity .9s var(--ease),transform .9s var(--ease)}.reveal.in{opacity:1;transform:none}
@media(max-width:760px){.site-header{padding:25px 20px;position:absolute}.site-header nav{position:fixed;inset:0;background:#151515;display:flex;flex-direction:column;justify-content:center;align-items:center;font-family:"Noto Serif SC",serif;font-size:36px;gap:28px;transform:translateY(-100%);transition:transform .8s var(--ease)}.menu-open .site-header nav{transform:none}.menu-toggle{display:block;z-index:2;padding:8px;width:38px}.menu-toggle i{height:1px;background:#fff;display:block;margin:7px 0;transition:.3s}.menu-open .menu-toggle i:first-child{transform:translateY(4px) rotate(45deg)}.menu-open .menu-toggle i:last-child{transform:translateY(-4px) rotate(-45deg)}.hero-copy{left:20px;right:20px}.hero h1{font-size:15vw;line-height:.95}.intro{margin:30px 0 0 15vw}.hero-index{right:20px}.scroll-cue{left:20px}.work{padding:100px 20px}.section-head{display:block;margin-bottom:90px}.section-head h2{margin:30px 0}.section-head>span{display:block}.project{margin-bottom:100px}.project-wide .project-image{height:115vw}.project-pair{display:block}.project-tall .project-image,.project-offset .project-image{height:125vw}.project-offset{margin-top:0}.project-cinema{width:100%}.project-cinema .project-image{height:65vw}.project-meta{grid-template-columns:1fr auto}.project-meta p{display:none}.about{padding:90px 20px 120px;display:block}.about-copy{margin:50px 0}.bio{margin-top:70px;display:block}.bio p+ p{margin-top:30px}.about-image{height:115vw}.contact{padding:80px 20px 35px}.contact h2{margin:90px 0 65px;font-size:14vw}footer{display:block;margin-top:100px}footer div{margin-top:25px;gap:18px;flex-wrap:wrap}.view-dot{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.loader{display:none}.hero h1 i,.reveal{transition:none;transform:none;opacity:1}.project-image img{transition:none}}

.header-right{display:flex;align-items:center;gap:42px}.language{display:flex;align-items:center;gap:8px;font-size:9px;letter-spacing:.18em}.language i{font-style:normal;opacity:.4}.language span{opacity:.48}.language a{transition:opacity .3s}.language a:hover{opacity:.5}
html[lang="ja"] .hero h1,html[lang="ja"] .quote,html[lang="ja"] .section-head h2,html[lang="ja"] .project-meta h3,html[lang="ja"] .contact h2{font-family:"Noto Serif JP",serif}
html[lang="zh-CN"] .quote,html[lang="zh-CN"] .section-head h2,html[lang="zh-CN"] .project-meta h3,html[lang="zh-CN"] .contact h2{font-family:"Noto Serif SC",serif}
@media(max-width:760px){.header-right{gap:12px}.language{position:relative;z-index:3;margin-right:4px}.menu-open .language{color:#fff}}


/* Collection index */
.collection-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:90px 2.2vw}.collection-card{grid-column:span 4}.collection-card:nth-child(5n+2),.collection-card:nth-child(5n+4){margin-top:100px}.collection-cover{display:block;position:relative;overflow:hidden;aspect-ratio:4/5;background:#d8d5cf}.collection-cover img{transition:transform 1.25s var(--ease);filter:saturate(.82)}.collection-cover span{position:absolute;right:16px;bottom:14px;background:rgba(242,240,235,.92);padding:10px 12px;font-size:8px;letter-spacing:.18em;opacity:0;transform:translateY(8px);transition:.4s var(--ease)}.collection-cover:hover img{transform:scale(1.035)}.collection-cover:hover span{opacity:1;transform:none}.collection-info{display:grid;grid-template-columns:1fr auto;gap:7px;padding-top:14px}.collection-info h3{font-family:"Noto Serif SC",serif;font-size:17px;font-weight:400;margin:0}.collection-info p{grid-row:2;font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0}.collection-info b{grid-row:1/3;grid-column:2;font-size:9px;font-weight:400;color:var(--muted)}

/* Individual collection pages */
.collection-page{background:#f2f0eb}.collection-header{position:relative;color:var(--ink);padding-bottom:0}.collection-header .menu-toggle{display:none}.back-link{font-size:9px;letter-spacing:.15em;text-transform:uppercase}.collection-hero{min-height:72vh;padding:17vh 4vw 8vh;display:grid;grid-template-columns:1fr 3fr;align-content:center;border-bottom:1px solid var(--line)}.collection-hero p,.collection-hero span{font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.collection-hero h1{grid-column:2;font-family:"Noto Serif SC",serif;font-size:clamp(48px,8vw,120px);font-weight:300;line-height:1.1;letter-spacing:-.04em;margin:0}.collection-hero span{grid-column:2;margin-top:38px}.collection-gallery{padding:110px 4vw 170px}.collection-photo{margin:0 auto 140px;max-width:1500px}.collection-photo:nth-child(3n+2){width:72%;margin-left:0}.collection-photo:nth-child(3n){width:66%;margin-right:0}.collection-photo img{width:100%;height:auto;max-height:none;object-fit:contain;background:#e4e1db}.collection-photo figcaption{font-size:8px;letter-spacing:.18em;color:var(--muted);padding-top:10px;border-top:1px solid var(--line);margin-top:10px}.collection-footer{display:flex;justify-content:space-between;padding:35px 4vw 50px;border-top:1px solid var(--line);font-size:9px;letter-spacing:.16em;text-transform:uppercase}
html[lang="ja"] .collection-info h3,html[lang="ja"] .collection-hero h1{font-family:"Noto Serif JP",serif}html[lang="zh-CN"] .collection-info h3,html[lang="zh-CN"] .collection-hero h1{font-family:"Noto Serif SC",serif}
@media(max-width:900px){.collection-card{grid-column:span 6}.collection-card:nth-child(5n+2),.collection-card:nth-child(5n+4){margin-top:0}.collection-card:nth-child(even){margin-top:70px}.collection-hero{display:block;padding:18vh 20px 9vh;min-height:65vh}.collection-hero h1{margin-top:50px}.collection-hero span{display:block}.collection-gallery{padding:75px 20px 110px}.collection-photo,.collection-photo:nth-child(3n+2),.collection-photo:nth-child(3n){width:100%;margin:0 0 75px}.collection-header{padding:24px 20px}.collection-header .header-right{gap:18px}.back-link{font-size:8px}}
@media(max-width:560px){.collection-grid{display:block}.collection-card,.collection-card:nth-child(even){margin:0 0 70px}.collection-cover{aspect-ratio:4/5}.collections-home{padding-bottom:90px}.collection-header .language{font-size:8px}.back-link{max-width:90px;text-align:right;line-height:1.5}.collection-hero h1{font-size:13vw}}

/* Keep every gallery image fully visible within one screen. */
.collection-photo img{display:block;width:auto;max-width:100%;height:auto;max-height:78svh;object-fit:contain;margin:0 auto}
@media(max-width:900px){.collection-photo img{max-height:74svh}}

/* Preserve serif descenders (g, q, y) inside the animated hero line mask. */
.hero h1 .line{padding-bottom:.17em;margin-bottom:-.17em}

/* Remove the reveal mask once the entrance animation has finished. */
.hero h1{line-height:1.02}
.hero-type-visible .hero h1 .line{overflow:visible}

/* Mobile crop keeps the bridge tower and perched seabirds in view. */
@media(max-width:760px){.hero-media img{object-position:62% center}}

/* Refined contact panel */
.contact h2{letter-spacing:-.025em;max-width:15ch}
.contact-methods{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.contact-method{position:relative;min-height:132px;border:1px solid #3b3b3b;padding:22px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:18px;align-items:end;color:#d8d8d8;transition:background .35s,color .35s,border-color .35s,transform .35s}
.contact-method:hover{background:#eee;color:#151515;border-color:#eee;transform:translateY(-3px)}
.contact-icon{align-self:start;width:28px;height:28px}
.contact-icon svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round}
.contact-icon svg .icon-fill{fill:currentColor;stroke:none}
.contact-copy{display:flex;min-width:0;flex-direction:column;gap:10px}
.contact-copy small{font-size:8px;line-height:1;letter-spacing:.22em;color:#7f7f7f;transition:color .35s}
.contact-copy strong{overflow-wrap:anywhere;font-size:clamp(12px,1.15vw,16px);font-weight:400;letter-spacing:.04em}
.contact-method:hover .contact-copy small{color:#555}
.contact-method b{font-size:19px;font-weight:300;transition:transform .35s}
.contact-method:hover b{transform:translate(5px,-5px)}
.footer-motto{font-family:"Noto Serif SC",serif;font-size:12px;letter-spacing:.08em;text-transform:none;color:#bbb}
html[lang="ja"] .footer-motto{font-family:"Noto Serif JP",serif}
@media(max-width:760px){.contact h2{max-width:none}.contact-methods{grid-template-columns:1fr}.contact-method{min-height:92px;padding:18px}.contact-icon{width:25px;height:25px}.footer-motto{width:100%}}
/* Brand icon and aligned footer motto */
.contact-icon svg.brand-logo{fill:currentColor;stroke:none}
.footer-motto,html[lang="ja"] .footer-motto{font-family:inherit;font-size:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit}

/* Draw the outbound indicator in CSS to avoid the blue emoji icon on mobile. */
.contact-method b{display:block;position:relative;width:30px;height:30px;border:1px solid currentColor;border-radius:50%;font-size:0;line-height:0}
.contact-method b::before{content:"";position:absolute;top:8px;right:8px;width:8px;height:8px;border-top:1px solid currentColor;border-right:1px solid currentColor}
.contact-method b::after{content:"";position:absolute;left:8px;bottom:9px;width:12px;height:1px;background:currentColor;transform:rotate(-45deg);transform-origin:left center}
@media(max-width:760px){.contact-method b{width:28px;height:28px}.contact-method b::before{top:7px;right:7px}.contact-method b::after{left:7px;bottom:8px}}

/* Keep each localized contact statement to its intentional two-line break. */
@media(max-width:760px){
  .contact h2{white-space:nowrap}
  html[lang="en"] .contact h2{font-size:10vw}
  html[lang="zh-CN"] .contact h2{font-size:8vw}
  html[lang="ja"] .contact h2{font-size:7.5vw}
}

/* Desktop contact statements also keep the authored two-line rhythm. */
.contact h2{max-width:none;white-space:nowrap}
@media(min-width:761px){html[lang="ja"] .contact h2{font-size:clamp(44px,7vw,112px)}}

/* Site-wide copyright notice */
.site-copyright{line-height:1.8}
.contact footer>.site-copyright{max-width:48em}
.collection-footer{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:28px}
.collection-footer .site-copyright{text-align:center;color:var(--muted)}
.collection-footer a:last-child{justify-self:end}
@media(max-width:760px){.contact footer>.site-copyright{max-width:32em}.collection-footer{grid-template-columns:1fr auto;gap:18px}.collection-footer .site-copyright{grid-column:1/-1;grid-row:2;text-align:left}.collection-footer a:last-child{justify-self:end}}