:root{--wordmark-axis:55px;--font-display:Georgia,"Times New Roman",serif;--font-body:Arial,"PingFang SC","Microsoft YaHei",sans-serif;--bg:#0a0b0b;--fg:#e6e3da;--muted:#9b9e98;--line:#303330;--accent:#bcbd9a;color-scheme:dark;font-family:var(--font-body)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font-size:14px;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input{font:inherit}button{color:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:7px}::selection{background:#b8b9a4;color:#101110}#field{position:fixed;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}body:not(.home) #field{opacity:.16}.site-header{position:relative;height:122px;margin:0 5.7%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:30px}.wordmark{position:absolute;left:0;top:calc(var(--wordmark-axis) - 7px);font-family:var(--font-body);font-size:12px;line-height:14px;letter-spacing:.17em;white-space:nowrap}.mark{font-size:26px;margin:0 11px;color:var(--accent);vertical-align:-2px}.header-note{font-size:10px;color:var(--muted);line-height:1.65;letter-spacing:.05em}.inner-nav{position:absolute;right:0;top:var(--wordmark-axis);transform:translateY(-50%);display:flex;gap:32px;font-family:var(--font-body);font-size:12px;font-weight:400;line-height:14px;letter-spacing:.17em}.inner-nav a{padding:12px 0;position:relative}.inner-nav a[aria-current=page]:after{content:"";position:absolute;bottom:3px;height:1px;background:var(--accent);left:0;right:0}.home .inner-nav{display:none}body:not(.home) .header-note{display:none}main{min-height:calc(100svh - 210px);outline:none}.home-page{min-height:calc(100svh - 210px);position:relative;display:grid;grid-template-columns:1.2fr 1fr;gap:8%;align-content:center;padding:60px 5.7% 84px}.eyebrow{font-size:10px;color:var(--muted);letter-spacing:.15em;text-transform:uppercase;display:flex;align-items:center;gap:15px}.eyebrow:before{content:"";width:25px;height:1px;background:var(--accent)}h1,h2,h3,p{margin:0}.home-title{font-family:var(--font-display);font-size:clamp(66px,7.5vw,120px);font-weight:400;line-height:.98;letter-spacing:-.055em;margin:37px 0 30px}.home-title em{color:#bbbea8;font-weight:400}.home-intro{font-size:12px;line-height:1.9;color:var(--muted);letter-spacing:.02em}.home-index{align-self:center;padding-top:56px}.index-label{display:flex;justify-content:space-between;font-size:9px;color:var(--muted);letter-spacing:.14em;margin-bottom:18px}.index-link{display:grid;grid-template-columns:28px 1fr 24px;column-gap:15px;align-items:center;min-height:118px;border-top:1px solid #444640;position:relative;transition:color .25s,background .25s;padding:20px 4px}.index-link:last-child{border-bottom:1px solid #444640}.index-number{font-family:monospace;font-size:10px;color:var(--muted);align-self:start;padding-top:7px}.index-name{display:block;font-family:var(--font-display);font-size:clamp(28px,3.1vw,46px);letter-spacing:-.035em}.index-description{display:block;font-size:10px;letter-spacing:.04em;color:var(--muted);margin-top:11px}.index-arrow{font-size:25px;font-weight:200;transition:transform .25s;color:#b9bca9}.index-link:hover{color:#fff;background:#bfc2a204}.index-link:hover .index-arrow{transform:translate(4px,-4px)}.home-annotation{position:absolute;bottom:28px;left:5.7%;display:flex;gap:35px;align-items:center;font-size:9px;color:var(--muted);letter-spacing:.1em}.annotation-cross{font-size:18px;color:#b2b6a2}.site-footer{margin:0 5.7%;height:88px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:9px;letter-spacing:.08em;color:var(--muted)}.footer-sep{padding:0 9px;color:#555}.footer-center{font-family:var(--font-display);letter-spacing:0;font-style:italic;font-size:12px}#motion{display:flex;align-items:center;gap:9px;background:transparent;border:0;font-size:9px;padding:12px 0;color:var(--muted)}.motion-dot{height:5px;width:5px;border-radius:50%;background:var(--accent)}#motion[aria-pressed=true] .motion-dot{background:#686d65}.page{padding:65px 5.7% 80px;max-width:1800px;margin:auto}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:35px;margin:27px 0 56px}.page h1{font-family:var(--font-display);font-size:clamp(48px,6.5vw,96px);line-height:1.1;font-weight:400;letter-spacing:-.045em}.page-lead{font-size:12px;line-height:1.9;color:var(--muted);max-width:360px}.note{font-size:10px;line-height:1.7;color:var(--muted)}.photo-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:70px 6%}.photo-card:nth-child(2){margin-top:120px}.photo-card:nth-child(3){grid-column:1/-1;width:65%;margin-top:5px}.photo-cover{overflow:hidden;background:#141714;aspect-ratio:4/3;position:relative}.photo-card:nth-child(2) .photo-cover{aspect-ratio:3/4}.photo-card:nth-child(3) .photo-cover{aspect-ratio:16/9}.photo-cover img,.gallery img{width:100%;height:100%;object-fit:cover;display:block;filter:grayscale(1) brightness(.83);transition:filter .6s,transform .8s}.photo-card:hover img{filter:grayscale(.7) brightness(1);transform:scale(1.025)}.card-meta{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:20px 0;gap:15px}.card-meta h2{font-family:var(--font-display);font-size:27px;font-weight:400}.card-meta p{font-size:10px;color:var(--muted);margin-top:7px}.small-arrow{font-size:21px;color:var(--accent)}.section-note{margin-top:55px;border-top:1px solid var(--line);padding-top:20px}.filters{display:flex;gap:10px;margin-bottom:30px;align-items:center}.filters button{border:1px solid var(--line);background:none;border-radius:0;padding:12px 22px;font-size:11px;color:var(--muted);min-height:44px}.filters button[aria-pressed=true]{background:var(--fg);border-color:var(--fg);color:var(--bg)}.result-count{font-size:10px;color:var(--muted);margin-left:auto}.moving-grid{display:grid;grid-template-columns:1fr 1fr;gap:45px 5%}.code-cover{width:100%;aspect-ratio:16/10;display:block;background:#111412;object-fit:cover}.project-type{font-family:monospace;font-size:9px;color:var(--accent);text-transform:uppercase;letter-spacing:.08em}.moving-card h2{margin:13px 0 8px;font-family:var(--font-display);font-weight:400;font-size:30px}.moving-card .project-sub{font-size:11px;color:var(--muted);line-height:1.8}.moving-card .project-info{display:flex;justify-content:space-between;padding:21px 0 18px;border-bottom:1px solid var(--line)}.back{display:inline-flex;align-items:center;gap:12px;color:var(--muted);font-size:11px;padding:10px 0;margin-bottom:35px}.detail-heading{display:grid;grid-template-columns:1.5fr 1fr;gap:8%;margin-bottom:45px}.detail-heading h1{margin:18px 0 16px}.detail-copy{align-self:end;font-size:12px;line-height:1.95;color:var(--muted)}.facts{display:flex;gap:35px;margin-top:25px;font-family:monospace;font-size:10px;color:var(--muted)}.facts dt{font-size:9px;letter-spacing:.08em;margin-bottom:8px;text-transform:uppercase;color:#b6b8ad}.facts dd{margin:0}.gallery{display:grid;grid-template-columns:1fr 1fr;gap:45px 5%;margin-top:50px}.gallery figure{margin:0}.gallery figure:first-child{grid-column:1/-1}.gallery img{aspect-ratio:4/3}.gallery figure:first-child img{aspect-ratio:16/9}.gallery figcaption{margin-top:14px;font-size:10px;color:var(--muted);display:flex;justify-content:space-between}.detail-bottom{margin-top:70px;border-top:1px solid var(--line);display:flex;justify-content:space-between;padding-top:24px;font-size:13px;gap:25px}.detail-bottom span{color:var(--muted);font-size:10px;display:block;margin-bottom:10px}.experiment{border:1px solid var(--line);background:#0b0f0d;position:relative}.experiment canvas{display:block;width:100%;height:clamp(320px,53vw,660px);touch-action:pan-y}.experiment-toolbar{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:20px 24px;border-top:1px solid var(--line);font-size:11px}.experiment-toolbar label{display:flex;align-items:center;gap:15px;color:var(--muted)}input[type=range]{accent-color:var(--accent);width:120px}.experiment-toolbar button{background:transparent;border:1px solid var(--line);padding:10px 18px;min-height:44px}.experiment-hint{font-size:10px;color:var(--muted);padding:17px 24px;border-top:1px solid var(--line);line-height:1.7}.video-player{width:100%;max-height:72vh;background:#0d1210;display:block;border:1px solid var(--line)}.video-caption{padding:16px 0;font-size:10px;color:var(--muted);line-height:1.8}.about-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:13%;margin-top:40px}.about-statement{font-family:var(--font-display);font-size:clamp(32px,4vw,60px);line-height:1.18;letter-spacing:-.035em}.about-statement em{color:var(--accent)}.about-body{color:var(--muted);line-height:2.2;font-size:13px;margin-top:32px;max-width:560px}.about-body p+p{margin-top:18px}.about-side{padding-top:8px}.about-side section{border-top:1px solid var(--line);padding:24px 0 37px}.about-side h2{font-size:10px;font-weight:400;letter-spacing:.12em;color:var(--muted);margin-bottom:23px}.about-side p{font-size:12px;line-height:1.9}.contact-details{margin-top:20px;user-select:text}.contact-details p+p{margin-top:10px}.contact-details a{overflow-wrap:anywhere;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:4px}.contact-details a:hover{text-decoration-color:var(--accent)}.prototype-note{margin-top:70px;padding:22px 0;border-top:1px solid var(--line);font-size:10px;color:var(--muted);line-height:1.9}.skip{position:fixed;top:10px;left:10px;transform:translateY(-200%);background:var(--fg);color:var(--bg);padding:15px;z-index:10}.skip:focus{transform:none}.no-script{margin:40px 6%;line-height:2}.not-found{padding:120px 0}.page-enter{animation:enter .45s ease both}@keyframes enter{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@media(min-width:1500px){.home-page{grid-template-columns:1.2fr 1fr;gap:13%}.index-link{min-height:140px}}@media(max-width:800px){.site-header{height:100px}.home-page{gap:6%;grid-template-columns:1fr 1fr;padding-top:55px}.home-title{font-size:70px}.index-name{font-size:28px}.index-link{min-height:105px;grid-template-columns:20px 1fr 20px;gap:8px}.footer-center{display:none}.detail-heading{grid-template-columns:1fr;gap:25px}.page-heading{align-items:start;flex-direction:column;gap:20px}.photo-grid{gap:45px 5%}.photo-card:nth-child(2){margin-top:70px}.inner-nav{gap:20px;font-size:11px}.about-grid{gap:8%}.experiment-toolbar{flex-wrap:wrap}}@media(max-width:580px){.site-header{margin:0 6%;height:85px}.mark{margin:0 7px}.header-note{font-size:8px;max-width:130px}.inner-nav{gap:13px;font-size:9px}.home-page{display:block;padding:45px 6% 80px;min-height:calc(100svh - 170px)}.home-title{font-size:clamp(64px,17vw,90px);margin:28px 0 22px}.home-intro{font-size:11px}.home-index{padding-top:44px}.index-label{font-size:8px;margin-bottom:15px}.index-link{min-height:90px;grid-template-columns:25px 1fr 22px;gap:12px;padding:16px 0}.index-name{font-size:32px}.index-description{font-size:9px;margin-top:8px}.home-annotation{bottom:25px;left:6%;font-size:8px;gap:20px}.site-footer{margin:0 6%;height:85px;font-size:8px;gap:10px}#motion{font-size:8px;gap:6px}.page{padding:40px 6% 60px}.page h1{font-size:51px}.page-heading{margin:25px 0 35px}.page-lead{font-size:11px}.photo-grid,.moving-grid{display:block}.photo-card{display:block;margin-bottom:40px}.photo-card:nth-child(2),.photo-card:nth-child(3){margin-top:0;width:100%}.photo-card:nth-child(2) .photo-cover{aspect-ratio:4/3}.moving-card{display:block;margin-bottom:35px}.card-meta h2{font-size:24px}.filters{gap:7px;flex-wrap:wrap}.filters button{padding:11px 16px}.result-count{font-size:9px}.back{margin-bottom:23px}.detail-heading{margin-bottom:30px}.facts{gap:25px}.gallery{display:block;margin-top:30px}.gallery figure{margin-bottom:30px}.gallery figure:first-child img{aspect-ratio:4/3}.detail-bottom{font-size:11px;margin-top:40px}.experiment canvas{height:350px}.experiment-toolbar{padding:15px;gap:15px}.experiment-toolbar label{font-size:10px;gap:10px}input[type=range]{width:90px}.experiment-hint{padding:15px}.about-grid{display:block}.about-side{margin-top:45px}.about-statement{font-size:42px}.prototype-note{margin-top:35px}.inner-nav a{min-height:44px;display:flex;align-items:center}body:not(.home) .site-header{gap:14px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Ensure filtering wins over responsive card display rules. */
[hidden]{display:none!important}
@media(max-width:380px){body:not(.home) .site-header{height:auto;min-height:105px;flex-wrap:wrap;gap:0;align-content:center;padding:12px 0}.inner-nav{width:100%;justify-content:space-between}}

/* PC home: a small signature, an open spatial field and a fixed editorial index. */
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
body.home{display:flex;flex-direction:column;min-height:100svh}
.home .site-header{height:110px;flex-shrink:0;border-bottom:0}
.home .mark{font-size:22px;margin:0 10px}
.home .header-note,.home .footer-center{display:none}
.home main{display:flex;flex:1;min-height:0}
.home-page{flex:1;width:100%;min-height:0;display:grid;grid-template-columns:1fr minmax(360px,470px);gap:8%;align-content:center;padding:28px 11.5% 70px 5.7%}
.home-index{grid-column:2;align-self:center;padding-top:0;width:100%}
.home .index-label{font-size:9px;letter-spacing:.16em;margin:0 0 15px;color:#92998d}
.home .index-link{min-height:128px;grid-template-columns:1fr 24px;column-gap:18px;padding:25px 0;border:0;background:transparent}
.home .index-link:last-child{border:0}
.home .index-link:after{content:"";position:absolute;bottom:0;left:0;right:0;height:1px;background:#a4ad99;opacity:.16;transition:opacity .3s}
.home .index-name{font-size:clamp(40px,3.4vw,56px);font-weight:400;line-height:1.1;letter-spacing:-.04em;color:#dddfd4;transition:color .3s}
.home .index-description{font-size:11px;margin-top:11px;letter-spacing:.035em;color:#959c8f;line-height:1.6}
.home .index-arrow{font-size:21px;opacity:.55;transition:opacity .3s,transform .3s}
.home .index-arrow svg{display:block;width:1em;height:1em}
.home .index-link:hover:after,.home .index-link:focus-visible:after{opacity:.65}
.home .index-link:hover .index-name,.home .index-link:focus-visible .index-name{color:#fafaf0}
.home .index-link:hover .index-arrow,.home .index-link:focus-visible .index-arrow{opacity:1;transform:translate(3px,-3px)}
.field-caption{position:absolute;left:5.7%;bottom:46px;font-size:11px;color:#b6bdac;letter-spacing:.025em;line-height:1.9}
.field-caption p+p{font-size:10px;color:#8e9688;letter-spacing:.08em;margin-top:2px}
:is(.home,.collection-page,.about-page) .site-footer{height:74px;flex-shrink:0;border-top:0;font-size:8px;color:#81897c}
.home #motion{color:#969d8f;min-height:44px}
@media(min-width:1700px){.home-page{padding-right:17%;grid-template-columns:1fr 500px}.home .index-link{min-height:142px}}
@media(min-width:801px) and (max-height:720px){.home .site-header{height:86px}.home-page{padding-top:16px;padding-bottom:56px}.home .index-link{min-height:104px;padding:18px 0}.home .index-name{font-size:40px}:is(.home,.collection-page,.about-page) .site-footer{height:58px}.field-caption{bottom:30px}}
@media(max-width:800px){.home .site-header{height:100px}.home-page{grid-template-columns:1fr minmax(320px,1.1fr);gap:5%;padding-right:6%}.home .index-link{min-height:114px}.home .index-name{font-size:39px}}
@media(max-width:580px){.home .site-header{height:85px}.home-page{display:flex;flex-direction:column;justify-content:center;min-height:560px;padding:70px 6% 115px}.home-index{padding-top:0}.home .index-link{min-height:110px;grid-template-columns:1fr 22px;gap:12px;padding:21px 0}.home .index-name{font-size:38px}.home .index-description{font-size:10px}.field-caption{left:6%;bottom:35px;font-size:10px}.field-caption p+p{font-size:9px}:is(.home,.collection-page,.about-page) .site-footer{height:75px}}
@media(prefers-reduced-motion:reduce){.home .index-link:after,.home .index-name,.home .index-arrow{transition:none}}

/* Localized line loop replaces the full-screen dust layer. */
#field{inset:auto;left:6.5vw;top:49%;width:36vw;max-width:620px;height:min(53vh,500px);transform:translateY(-50%) scale(.8164965809);opacity:.8;background:url('assets/loop-still.svg') center/contain no-repeat}
#field.is-ready{background-image:none}
body:not(.home) #field{display:none}
@media(min-width:1700px){#field{left:8vw;width:35vw}}
@media(max-width:800px){#field{left:3vw;width:37vw;height:42vh}}
/* Mobile: the existing field sits between the wordmark and the index. */
@media(max-width:580px){
  .home-page{justify-content:flex-start;padding-top:230px}
  #field{position:absolute;display:block;left:6vw;top:85px;width:88vw;max-width:none;height:210px;transform:none}
  body:not(.home) #field{display:none}
}

/* Photography keeps its book composition on the shared dark background. */
body.photography-page{background:var(--bg);color:var(--fg)}
.photography-page #motion{display:none}
.collection-page .footer-center{font-size:11px;color:var(--muted)}
.photography-page .page{max-width:1800px}
.collection-index{padding-top:65px;padding-bottom:60px}
.collection-index-heading{margin-bottom:44px}
.collection-index .page-heading{margin:27px 0 24px}
.collection-categories{display:flex;gap:20px;flex-wrap:wrap}
.collection-categories button{position:relative;padding:12px 0;min-height:44px;border:0;background:none;font-size:13px;color:var(--muted);letter-spacing:.015em}
.collection-categories button span{font-size:9px;margin-left:9px;letter-spacing:.04em}
.collection-categories button[aria-pressed=true]{color:var(--fg)}
.collection-categories button[aria-pressed=true]:after{content:"";position:absolute;left:0;right:0;bottom:8px;height:1px;background:var(--fg)}
.photo-book .photo-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:110px 0;align-items:start}
.photo-book .photo-card{margin:0;width:100%}
.photo-book .photo-card:first-child{grid-column:1/9}
.photo-book .photo-card:nth-child(2){grid-column:10/13;margin-top:210px}
.photo-book .photo-card:nth-child(2) .card-meta{gap:12px}
.photo-book .photo-card:nth-child(2) .photo-enter{font-size:0}
.photo-book .photo-card:nth-child(2) .photo-enter span{font-size:15px;margin-left:0}
.photo-book .photo-card:nth-child(3){grid-column:4/12;margin-top:0;width:100%}
.photo-book .photo-card .photo-cover{background:transparent;aspect-ratio:auto;overflow:visible}
.photo-book .photo-cover img{height:auto;object-fit:contain;filter:none;transform:none}
.photo-book .photo-card:first-child .photo-cover{height:auto}
.photo-book .photo-card:first-child .photo-cover img{height:auto;object-fit:contain}
.photo-book .photo-card:first-child .card-meta{width:100%;margin:0}
.collection-index .card-meta{border:0;padding:24px 0 0;justify-content:flex-start;align-items:baseline;gap:18px}
.collection-index .card-meta h2{margin:0;font-size:24px;font-weight:400;letter-spacing:-.025em;line-height:1.25}
.collection-index .card-meta p{margin-bottom:0;font-size:9px;line-height:1.8;margin-top:8px;color:var(--muted)}
.photo-meta-sep{margin:0 8px;color:#a4a69b}
.photo-enter{margin-left:auto;white-space:nowrap;font-size:9px;color:var(--muted);line-height:2}
.photo-enter span{display:inline-block;margin-left:12px;transition:transform .25s}
.photo-card:hover .photo-enter span{transform:translate(2px,-2px)}
.photo-collection-heading{font-size:14px;font-weight:400;letter-spacing:.015em;margin:110px 0 42px;color:var(--fg)}
.photo-collection-heading span{font-size:10px;margin-left:12px;color:var(--muted)}
.collection-index-colophon{border-top:1px solid var(--line);margin-top:88px;padding-top:22px;display:flex;justify-content:space-between;gap:30px;font-size:9px;color:var(--muted);line-height:1.9;letter-spacing:.025em}
.collection-index-colophon>p:last-child{text-align:right}
.collection-index-colophon a{text-decoration:underline;text-underline-offset:3px}
.observation-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:90px 12%;align-items:start}
.observation-card figure{margin:0}
.observation-card img{display:block;width:100%;height:auto}
.observation-card:nth-child(2){margin-top:100px}
.observation-card:nth-child(3){width:78%;margin-top:10px}
.observation-card figcaption{display:flex;justify-content:space-between;gap:12px;margin-top:16px;font-size:9px;color:var(--muted);line-height:1.8}
.project-detail{padding-top:26px}
.project-detail .detail-heading{margin-top:20px;margin-bottom:65px;grid-template-columns:1.3fr 1fr;gap:14%}
.project-detail h1{font-size:clamp(38px,4vw,62px)}
.project-detail .eyebrow:before{display:none}
.project-detail .eyebrow{font-size:9px;letter-spacing:.1em}
.project-detail .facts{gap:28px}
.project-detail .facts dt{color:var(--muted)}
.photography-page .gallery{display:flex;flex-direction:column;gap:90px;margin-top:0}
.photography-page .gallery figure{width:75%;align-self:center}
.photography-page .gallery figure:first-child{width:100%}
.photography-page .gallery figure:nth-child(2){align-self:flex-start;width:64%}
.photography-page .gallery figure:nth-child(3){align-self:flex-end;width:64%}
.photography-page .gallery img{height:auto;aspect-ratio:auto;object-fit:contain;filter:none;transform:none}
.photography-page .gallery figure:first-child img{max-height:76vh;aspect-ratio:auto;object-fit:contain}
.photography-page .gallery figcaption{font-size:9px}
.photography-page .detail-bottom{font-size:12px;margin-top:80px;padding-top:28px}
.observation-detail{padding-top:15px}
.observation-topline{display:flex;justify-content:space-between;align-items:baseline;font-size:9px;color:var(--muted)}
.observation-topline .back{margin-bottom:25px}
.observation-print{margin:0 auto;width:min(100%,1050px)}
.observation-print img{display:block;width:100%;height:65vh;object-fit:contain}
.observation-print figcaption{display:flex;justify-content:space-between;margin-top:24px;gap:20px;font-size:10px;color:var(--muted)}
@media(max-width:800px){.collection-categories{gap:26px}.photo-book .photo-grid{gap:70px 0}.photo-book .photo-card:nth-child(2){grid-column:9/13;margin-top:150px}.photo-book .photo-card:nth-child(3){margin-top:0}.photo-book .photo-enter{font-size:0}.photo-book .photo-enter span{font-size:15px}.project-detail .detail-heading{grid-template-columns:1fr;gap:24px}.observation-grid{gap:60px 8%}}
@media(max-width:580px){.photography-page .site-header{height:85px}.collection-index{padding-top:20px}.collection-index-heading{margin-bottom:28px}.collection-categories{gap:22px}.collection-categories button{font-size:11px}.collection-categories button span{font-size:8px;margin-left:5px}.photo-book .photo-grid{display:block}.photo-book .photo-card{display:block;margin:0 0 48px}.photo-book .photo-card:nth-child(2),.photo-book .photo-card:nth-child(3){width:100%;margin-top:0}.photo-book .photo-card:first-child .photo-cover{height:auto}.photo-book .photo-card:first-child .photo-cover img{height:auto}.collection-index .card-meta{padding-top:17px;gap:12px}.collection-index .card-meta h2{font-size:23px}.collection-index-colophon{margin-top:50px;gap:18px;font-size:8px}.observation-grid{display:block}.observation-card{display:block;margin-bottom:42px}.observation-card:nth-child(2),.observation-card:nth-child(3){width:100%;margin-top:0}.project-detail .detail-heading{margin-bottom:40px}.project-detail h1{font-size:40px}.photography-page .gallery{gap:45px}.photography-page .gallery figure,.photography-page .gallery figure:nth-child(2),.photography-page .gallery figure:nth-child(3){width:100%;margin:0}.photography-page .gallery figure:first-child img{max-height:none}.observation-print img{height:auto;max-height:70vh}.photography-page .detail-bottom{margin-top:45px}}
@media(prefers-reduced-motion:reduce){.photo-enter span{transition:none}}

/* The wordmark follows the homepage position on every route. */
@media(min-width:801px) and (max-height:720px){:root{--wordmark-axis:43px}}
@media(max-width:800px){:root{--wordmark-axis:50px}}
@media(max-width:580px){:root{--wordmark-axis:42.5px}}
@media(max-width:380px){body:not(.home) .inner-nav{top:calc(var(--wordmark-axis) + 34px)}}

/* Corresponding index and detail text shares one typographic rule set. */
.collection-index .card-meta .photo-enter{font-size:9px;font-family:var(--font-body);color:var(--muted)}
.collection-index-colophon .result-count{margin:0;font-size:inherit;font-family:inherit;line-height:inherit;color:inherit}
.project-detail .detail-bottom{font-size:12px;margin-top:80px;padding-top:28px}
@media(max-width:800px){.collection-index .card-meta .photo-enter{font-size:0}.collection-index .card-meta .photo-enter span{font-size:15px}}
@media(max-width:580px){.project-detail .detail-bottom{margin-top:45px}}

/* Home and all three sections share one signature/copyright footer. */
.footer-home-signature,.footer-copyright{display:none}
:is(.home,.collection-page,.about-page) .footer-standard-credit,:is(.home,.collection-page,.about-page) .footer-center,:is(.home,.collection-page,.about-page) #motion{display:none}
:is(.home,.collection-page,.about-page) .footer-home-signature,:is(.home,.collection-page,.about-page) .footer-copyright{display:inline}

/* Keep the shared footer at the viewport bottom on short interior pages. */
body:is(.collection-page,.about-page){display:flex;flex-direction:column;min-height:100svh}
:is(.collection-page,.about-page) .site-header,:is(.collection-page,.about-page) .site-footer{flex-shrink:0}
:is(.collection-page,.about-page) main{flex:1;min-height:0;width:100%}

.external-experiment button{background:transparent;border:1px solid var(--line);color:var(--fg);padding:16px 24px;margin-bottom:18px;min-height:44px}.external-experiment iframe{width:100%;height:min(70vh,740px);border:1px solid var(--line);margin-top:24px;background:var(--bg)}.wordmark{white-space:pre}

/* Photography and moving image share aligned, compact preview windows. */
.collection-index .photo-grid,
.collection-index .observation-grid,
.collection-index .moving-grid{
 display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:48px 42px;align-items:stretch;
}
.collection-index .photo-grid .photo-card,
.collection-index .observation-grid .observation-card,
.collection-index .moving-grid .moving-card{
 display:block;grid-column:auto;width:100%;min-width:0;margin:0;
}
.collection-index .photo-grid .photo-card .photo-cover,
.collection-index .moving-grid .moving-card .code-cover,
.collection-index .observation-card img{
 display:block;width:100%;height:auto;aspect-ratio:5/3;background:#0e100f;
 border:1px solid #1d201d;object-fit:contain;overflow:hidden;
}
.collection-index .photo-grid .photo-card .photo-cover img{
 display:block;width:100%;height:100%;aspect-ratio:auto;object-fit:contain;filter:none;transform:none;
}
.collection-index .photo-grid .card-meta,
.collection-index .moving-grid .card-meta{
 padding:18px 0 16px;border-bottom:1px solid var(--line);align-items:flex-start;gap:12px;
}
.collection-index .card-meta>div{min-width:0;flex:1}
.collection-index .card-meta h2{min-height:2.5em;overflow-wrap:anywhere}
.collection-index .card-meta .photo-enter{font-size:0;line-height:1.8}
.collection-index .card-meta .photo-enter span{font-size:15px;margin-left:0}
.collection-index .observation-card figcaption{padding-bottom:16px;border-bottom:1px solid var(--line)}
.collection-index .photo-collection-heading{margin-top:64px}

/* Use each film’s native aspect ratio within modest display limits. */
.video-player{display:block;width:auto;height:auto;max-width:min(100%,640px);max-height:min(60svh,480px);object-fit:contain;background:var(--bg);margin:0 auto}
.pending-film{width:fit-content;max-width:min(100%,640px);margin:0 auto}
.pending-film img{display:block;width:auto;height:auto;max-width:100%;max-height:min(60svh,480px);object-fit:contain;background:var(--bg)}
.video-player+.video-caption{max-width:640px;margin:0 auto}
@media(max-width:1000px){
 .collection-index .photo-grid,.collection-index .observation-grid,.collection-index .moving-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:42px 28px}
}
@media(max-width:580px){
 .collection-index .photo-grid,.collection-index .observation-grid,.collection-index .moving-grid{grid-template-columns:minmax(0,1fr);gap:34px}
 .collection-index .card-meta h2{min-height:0}
}

/* Follow the curated film order; begin interactive studies on their own row. */
@media(min-width:581px){
 .collection-index .moving-grid.video-archive .moving-card:nth-child(1 of [data-type="Interactive"]){grid-column:1}
}

/* Video titles and descriptions use Chinese first, with English as a secondary line. */
.collection-index .card-meta h2.work-title-cn{font-family:var(--font-body);letter-spacing:0;min-height:1.25em}
.collection-index .card-meta p.work-title-en{font-family:var(--font-display);font-size:14px;line-height:1.5;letter-spacing:0;margin-top:7px;min-height:1.5em}
.bilingual-video-detail h1.work-title-cn{font-family:var(--font-body);letter-spacing:.01em}
.bilingual-video-detail .work-title-en{font-family:var(--font-display);font-size:22px;line-height:1.4;color:var(--muted);margin:0 0 16px}
.bilingual-video-detail .detail-copy>p:first-child{color:var(--fg)}
.bilingual-video-detail .work-description-en{font-size:11px;line-height:1.9;margin-top:15px}

/* A viewing wall followed by a compact bilingual exhibition label. */
.video-exhibition>.back{margin-bottom:16px}
.video-exhibition-stage{display:grid;place-items:center;min-height:clamp(320px,56svh,520px);padding-top:16px}
.video-display{width:100%;max-width:100%;margin:0;text-align:center}
.video-work-label{display:grid;grid-template-columns:minmax(170px,.65fr) minmax(0,1.35fr);gap:72px;width:min(100%,880px);margin:64px auto 0}
.video-exhibition .video-work-label .work-title-cn{font-size:28px;line-height:1.4;margin:0;letter-spacing:.01em;font-weight:400}
.video-exhibition .video-work-label .work-title-en{font-size:17px;line-height:1.5;margin:9px 0 0}
.video-label-facts{display:grid;grid-template-columns:max-content max-content minmax(0,1fr);gap:0 10px;font-size:10px;line-height:2;color:var(--muted);margin-top:21px;font-variant-numeric:tabular-nums}
.video-work-label .detail-copy{align-self:start;min-width:0;max-width:58ch;line-height:2}
.video-work-label .work-description-en{margin-top:17px;line-height:1.95}
.video-exhibition .detail-bottom{margin-top:88px}
@media(max-width:800px){.video-work-label{gap:38px;grid-template-columns:minmax(150px,.7fr) minmax(0,1.3fr);margin-top:50px}}
@media(max-width:580px){.video-exhibition-stage{min-height:290px;padding-top:8px}.video-work-label{grid-template-columns:minmax(0,1fr);gap:28px;margin-top:42px}.video-exhibition .video-work-label .work-title-cn{font-size:25px}.video-label-facts{margin-top:15px}.video-exhibition .detail-bottom{margin-top:55px}}

/* Compose the viewing wall at desktop scale; keep navigation on the site margins. */
@media(min-width:801px){
 .video-exhibition{max-width:none;--exhibition-label:clamp(224px,17vw,248px);--exhibition-gap:clamp(64px,7vw,112px);--film-height:clamp(360px,62svh,520px);--exhibition-width:min(100%,calc(var(--exhibition-label) + var(--exhibition-gap) + min(720px,var(--film-ratio,1.5)*var(--film-height))))}
 .video-exhibition>.back{display:inline-flex;width:auto;margin:0}
 .video-exhibition-layout{display:grid;grid-template-columns:minmax(0,var(--exhibition-label)) minmax(0,1fr);gap:var(--exhibition-gap);align-items:center;min-height:var(--film-height);width:var(--exhibition-width);margin:clamp(48px,6svh,72px) auto 0 max(0px,calc((100% - var(--exhibition-width))/2 - 40px))}
 .video-exhibition-layout .video-exhibition-stage{grid-column:2;grid-row:1;display:grid;place-items:center;min-width:0;min-height:0;padding:0;align-self:center}
 .video-exhibition-layout .video-work-label{grid-column:1;grid-row:1;display:block;width:100%;margin:0;min-width:0}
 .video-exhibition-layout .detail-copy{margin-top:28px;max-width:100%;line-height:1.95;color:var(--muted)}
 .video-exhibition-layout .detail-copy>p:first-child{color:var(--muted)}
 .video-exhibition-layout .work-description-en{margin-top:18px;line-height:1.85;color:#82867f}
 .video-exhibition-layout .video-player,.video-exhibition-layout .pending-film img{max-width:min(100%,720px);max-height:var(--film-height);margin:0 auto}
 .video-exhibition-layout .pending-film{margin:0;max-width:100%}
 .video-exhibition .detail-bottom{width:100%;margin:96px 0 0}
}

/* Local exhibition panels: paint behind the existing layout without moving it. */
body.collection-page #main>.video-exhibition,
body.about-page #main>.page{position:relative;isolation:isolate}
body.collection-page #main>.video-exhibition::before,
body.about-page #main>.page::before{
 content:"";position:absolute;inset:0 0 32px;z-index:-1;pointer-events:none;
 background:#050605;box-shadow:0 0 0 100vmax #050605;clip-path:inset(0 -100vmax);
}
body.about-page #main>.page::before{top:40px}
.video-exhibition .detail-bottom{align-items:flex-end}
@media(max-width:580px){
 body.collection-page #main>.video-exhibition::before{bottom:24px}
 body.about-page #main>.page::before{top:20px;bottom:24px}
}

/* Chinese series names lead; retain the established photography layout. */
.photo-series h1.work-title-cn{font-family:var(--font-body);letter-spacing:.01em}
.photo-series .series-statement{margin-top:24px;max-width:620px}

/* Exhibition rows: show complete prints, with room around each photograph. */
.photography-page .photo-series .gallery{
 display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
 gap:80px clamp(36px,6vw,96px);align-items:start;margin-top:0;
}
.photography-page .photo-series .gallery figure{
 grid-column:auto;width:100%;min-width:0;margin:0;align-self:auto;
}
.photography-page .photo-series .gallery figure img{
 display:block;width:100%;height:100%;
 max-height:100%;aspect-ratio:auto;object-fit:contain;
 object-position:center;filter:none;transform:none;
}
.photography-page .photo-series .gallery figcaption{margin-top:18px;line-height:1.7}
.photo-series .photo-print{display:flex;align-items:center;justify-content:center;width:100%;height:min(72svh,760px);padding:0;border:0;background:transparent;cursor:zoom-in}
.photography-page .observation-print img{
 height:min(60svh,560px);max-height:calc(100svh - 180px);object-fit:contain;
}
@media(max-width:700px){
 .photography-page .photo-series .gallery{grid-template-columns:minmax(0,1fr);gap:48px}
 .photo-series .photo-print{height:min(65svh,560px)}
}
.photo-viewing{overflow:hidden}
.photo-viewer{--viewer-photo-height:max(80px,calc(100dvh - 200px - env(safe-area-inset-top) - env(safe-area-inset-bottom)));position:fixed;inset:0;margin:0;padding:calc(56px + env(safe-area-inset-top)) 28px calc(24px + env(safe-area-inset-bottom));width:100vw;max-width:none;height:100dvh;max-height:none;border:0;background:#050605;color:var(--fg);overflow:hidden}
.photo-viewer[open]{display:flex;flex-direction:column;align-items:center;justify-content:center}
.photo-viewer::backdrop{background:#050605}
.photo-viewer button{border:0;background:transparent;color:var(--fg);min-width:44px;min-height:44px;cursor:pointer}
.viewer-close{position:absolute;right:24px;top:8px;font-size:12px;letter-spacing:.04em}
.photo-original{font-size:11px;color:var(--muted);white-space:nowrap}
.viewer-original{position:absolute;left:28px;top:8px;display:flex;align-items:center;min-height:44px}
.observation-actions{display:flex;align-items:center;gap:20px}
.viewer-stage{margin:0;width:min(100%,calc(var(--viewer-photo-height)*var(--viewer-photo-ratio,1.3333)));flex:none}
.viewer-stage img{display:block;width:100%;height:auto;aspect-ratio:var(--viewer-photo-ratio,1.3333);object-fit:contain}
.viewer-controls,.observation-pagination{display:flex;align-items:center;gap:24px;margin-top:24px}
.viewer-controls{position:static;flex:none;justify-content:center}
.photo-viewer [data-viewer-step],.observation-pagination a{font:inherit;line-height:normal;min-width:44px;min-height:44px;padding:2px 6px;display:flex;align-items:center;justify-content:center}
.viewer-count{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
@media(max-width:700px){.photo-viewer{padding-left:12px;padding-right:12px}.viewer-close{right:12px}.viewer-original{left:12px}.observation-actions{gap:12px}}

.photo-caption{display:flex;flex-direction:column;gap:5px}.photo-date{color:var(--muted);font-variant-numeric:tabular-nums}

/* The observation panel begins above the print and contains its caption and navigation. */
body.photography-page #main>.observation-detail{position:relative;isolation:isolate}
body.photography-page #main>.observation-detail::before{
 content:"";position:absolute;inset:0 0 24px;z-index:-1;pointer-events:none;
 background:#050605;box-shadow:0 0 0 100vmax #050605;clip-path:inset(0 -100vmax);
}

/* Keep each photograph's name and date below its actual lower-right edge. */
.photography-page .photo-series .gallery figure{
 --print-height:min(72svh,760px);
 width:min(100%,calc(var(--print-height)*var(--photo-ratio)));justify-self:center;
}
.photography-page .photo-series .gallery figcaption,
.photography-page .observation-print figcaption{
 flex-direction:column;align-items:flex-end;text-align:right;gap:5px;
}
.photography-page .photo-series .photo-caption{align-items:flex-end}
.photography-page .observation-print{
 width:min(100%,1050px,calc(min(60svh,560px,100svh - 180px)*var(--photo-ratio)));
}
@media(max-width:700px){
 .photography-page .photo-series .gallery figure{--print-height:min(65svh,560px)}
}

/* Project collections share the local exhibition panel beneath their heading. */
.photography-page .photo-project-group .photo-project-panel{position:relative;isolation:isolate}
.photography-page .photo-project-group .photo-project-panel::before{
 content:"";position:absolute;inset:-32px 0 -28px;z-index:-1;pointer-events:none;
 background:#050605;box-shadow:0 0 0 100vmax #050605;clip-path:inset(0 -100vmax);
}
@media(max-width:580px){
 .photography-page .photo-project-group .photo-project-panel::before{top:-24px;bottom:-36px}
}

/* Align the return label with the adjacent work title, beneath its small heading. */
.detail-bottom{align-items:flex-end}

/* Every interior detail uses the same local navigation panel and footer clearance. */
body:not(.home) .detail-bottom{position:relative;isolation:isolate}
body:not(.home) .detail-bottom::before{
 content:"";position:absolute;inset:-32px 0 calc(-1*var(--footer-panel-tail,48px));
 z-index:-1;pointer-events:none;background:#050605;
 box-shadow:0 0 0 100vmax #050605;clip-path:inset(0 -100vmax);
}
.photo-project-group{--footer-panel-tail:28px}
body.photography-page #main>.observation-detail::before{bottom:32px}
@media(max-width:580px){
 body:not(.home) .detail-bottom::before{top:-24px;bottom:-36px}
 body.photography-page #main>.observation-detail::before{bottom:24px}
}

/* Measure caption spacing from the contained photograph, not its exhibition mat. */
.photography-page .photo-series .gallery figure,
.photography-page .observation-print{container-type:inline-size}
.photography-page .observation-print{--print-height:min(60svh,560px,100svh - 180px)}
.photography-page .photo-series .gallery figcaption,
.photography-page .observation-print figcaption{
 margin-top:18px;
 transform:translateY(calc(-1*max(0px,(var(--print-height) - 100cqw/var(--photo-ratio))/2)));
}

/* Mobile prints occupy their real aspect ratio, without a fixed-height mat. */
@media(max-width:700px){
 .photography-page .photo-series .gallery{row-gap:48px}
 .photo-series .photo-print{height:auto;aspect-ratio:var(--photo-ratio)}
 .photography-page .photo-series .gallery figcaption{transform:none}
}

/* Observations form one project: quiet, centered controls below the photograph. */
.observation-pagination{justify-content:center}
.observation-pagination a{color:var(--fg)}

/* Every opened photograph uses the same caption and control spacing. */
.viewer-stage figcaption,.photography-page .observation-print figcaption{
 margin-top:18px;font-size:11px;line-height:18px;text-align:center;
 overflow-wrap:anywhere;color:var(--muted);
}
.photography-page .observation-print figcaption{align-items:center;transform:none}
.photography-page .observation-print img{height:auto;max-height:none;aspect-ratio:var(--photo-ratio);object-fit:contain}

/* Artwork color comes from the image, including on hover and in the viewer. */
.photography-page .photo-card img,.photography-page .photo-print img,
.photography-page .observation-card img,.photography-page .observation-print img,
.photo-viewer img{filter:none;opacity:1;mix-blend-mode:normal}

/* Public navigation icons use paths, never emoji glyphs. */
.site-arrow{display:inline-block;width:1em;height:1em;vertical-align:-.125em;flex:none;overflow:visible}
