/* MuseFrame — gallery stylesheet (2026-10-06 redesign).
   One idea: the page is a gallery wall. Works hang in a mat and a thin frame, each with a small
   wall label (title · exhibition · note). Lots of empty wall. Colour comes from the works; the
   interface stays warm white / ink, with the brand cobalt kept for links and the mark.
   Motion lives here only; JS just adds .js on <html> and .in on revealed elements.
   Everything hidden-before-reveal sits under html.js + prefers-reduced-motion:no-preference,
   so no-JS and reduced-motion readers always get the finished page. */

:root{
  --wall:#F4F2EC;--mat:#FBFAF6;--ink:#1A1916;--ink-2:#3A3833;--muted:#67635C;--line:#DCD7CC;--line-2:#E8E4DB;
  --frame:#2A2824;--cobalt:#1C49D8;--link:#1C49D8;--btn:#1A1916;--on-btn:#F7F5EF;
  --shadow:0 1px 1px rgba(40,32,20,.05),0 22px 40px -30px rgba(40,32,20,.55);
  --display:Georgia,"Iowan Old Style","Palatino Linotype","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC",sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --wrap:1240px;--gut:clamp(20px,5vw,56px);
  --ease:cubic-bezier(.2,.7,.2,1);--t1:160ms;--t2:240ms;--t3:600ms;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root{
    --wall:#161513;--mat:#201F1C;--ink:#ECE8E0;--ink-2:#CFCAC0;--muted:#A6A198;--line:#363330;--line-2:#2A2825;
    --frame:#4A4640;--link:#9AB0FF;--btn:#ECE8E0;--on-btn:#161513;
    --shadow:0 1px 1px rgba(0,0,0,.3),0 24px 44px -30px rgba(0,0,0,.9);
    color-scheme:dark;
  }
}

/* ── base ─────────────────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:84px}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{margin:0;background:var(--wall);color:var(--ink);font:16px/1.75 var(--sans);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto;display:block}
figure{margin:0}
::selection{background:var(--ink);color:var(--wall)}
html{scrollbar-color:var(--line) transparent}
a{color:var(--link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.22em;text-decoration-color:color-mix(in srgb,currentColor 35%,transparent)}
a:hover{text-decoration-color:currentColor}
:focus-visible{outline:2px solid var(--link);outline-offset:3px;border-radius:1px}
h1,h2,h3,h4{font-family:var(--display);font-weight:400;line-height:1.15;margin:0;letter-spacing:-.012em;text-wrap:balance;color:var(--ink)}
p,li,dd,figcaption{text-wrap:pretty}
p{margin:0 0 1em}
em{font-style:italic}
html[lang="zh-CN"] em,html[lang="zh-CN"] .label b,html[lang="zh-CN"] .faq summary,html[lang="zh-CN"] .plan.featured h3,html[lang="zh-CN"] .lb .lbgrid b{font-style:normal}
html[lang="zh-CN"] i[lang="en"],html[lang="zh-CN"] small[lang="en"]{font-style:italic}
.wrap{max-width:var(--wrap);margin:0 auto;padding-inline:var(--gut)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:absolute;left:12px;top:-80px;background:var(--ink);color:var(--wall);padding:10px 16px;z-index:100;text-decoration:none}
.skip:focus{top:12px}

/* small museum-label type: the visual signature, used sparingly */
.eyebrow,.kicker{font:500 11.5px/1.5 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 18px}
.muted{color:var(--muted)}
.lede{font-size:clamp(17px,1.5vw,19px);line-height:1.75;color:var(--ink-2);max-width:34em;margin:0}

/* links that grow an underline from the left */
.go{display:inline-flex;align-items:center;gap:.5em;min-height:44px;color:var(--ink);text-decoration:none;font-weight:500;background:linear-gradient(currentColor,currentColor) 0 calc(100% - 10px)/0 1px no-repeat;transition:background-size var(--t2) var(--ease)}
.go:hover,.go:focus-visible{background-size:100% 1px}
.go::after{content:"→";transition:transform var(--t1) var(--ease)}
.go:hover::after{transform:translateX(3px)}

/* buttons: square, quiet, ink */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:0 24px;border-radius:2px;font:500 15px/1 var(--sans);letter-spacing:.01em;border:1px solid transparent;cursor:pointer;text-decoration:none;transition:background-color var(--t1) var(--ease),color var(--t1) var(--ease),border-color var(--t1) var(--ease),transform var(--t1) var(--ease)}
.btn-primary{background:var(--btn);color:var(--on-btn);border-color:var(--btn)}
.btn-primary:hover{background:var(--cobalt);border-color:var(--cobalt);color:#fff;transform:translateY(-1px)}
.btn-secondary{background:transparent;color:var(--ink);border-color:var(--line)}
.btn-secondary:hover{border-color:var(--ink)}
.btn-row,.actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px;margin-top:36px}

/* ── nav ──────────────────────────────────────────────────────────── */
.nav{position:sticky;top:0;z-index:50;background:var(--wall);border-bottom:1px solid transparent;transition:transform var(--t2) var(--ease),border-color var(--t2) var(--ease)}
.nav.lined{border-bottom-color:var(--line)}
.nav.tuck{transform:translateY(-100%)}
.nav .wrap{display:flex;align-items:center;gap:8px;min-height:64px}
.brand{display:inline-flex;align-items:center;gap:10px;min-height:44px;font:400 21px/1 var(--display);letter-spacing:-.01em;color:var(--ink);text-decoration:none}
.brand svg{width:22px;height:22px}
.brand svg path{stroke:var(--link)}
.nav nav{display:none}
.nav-links{list-style:none;margin:0;padding:0;display:flex;gap:4px}
.nav-links a{display:flex;align-items:center;min-height:44px;padding:0 12px;color:var(--ink-2);font-size:14px;text-decoration:none;background:linear-gradient(currentColor,currentColor) 12px calc(100% - 12px)/0 1px no-repeat;transition:background-size var(--t2) var(--ease),color var(--t1)}
.nav-links a:hover{color:var(--ink);background-size:calc(100% - 24px) 1px}
.nav-right{margin-left:auto;display:flex;align-items:center;gap:8px;font-size:13px;white-space:nowrap}
.lang{display:inline-flex;align-items:center;font:500 12px/1 var(--mono);letter-spacing:.08em}
.lang a,.lang span{display:inline-flex;align-items:center;justify-content:center;min-width:36px;min-height:44px;color:var(--muted);text-decoration:none}
.lang [aria-current]{color:var(--ink)}
.lang a:hover{color:var(--ink)}
.lang>*+*::before{content:"/";color:var(--line);margin-right:8px;margin-left:-4px}
.nav-cta{display:none}
.menubtn,.dclose{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:44px;height:44px;padding:0;color:var(--ink);background:transparent;border:0;cursor:pointer}
.menubtn svg,.dclose svg{width:22px;height:22px}
@media (min-width:900px){
  .nav nav{display:block;margin-left:28px}
  .menubtn{display:none}
  .nav-cta{display:inline-flex;min-height:40px;padding:0 18px;font-size:14px}
  .nav-right{gap:16px}
}

/* drawer: full-screen dialog on small screens */
.drawer{border:0;padding:0;margin:0;max-width:none;max-height:none;width:100vw;height:100dvh;inset:0;background:var(--wall);color:var(--ink)}
.drawer::backdrop{background:rgba(20,18,15,.4)}
.drawer .dhead{display:flex;align-items:center;justify-content:space-between;min-height:64px;padding:0 var(--gut)}
.drawer .brand{font-size:21px}
.drawer .dbody{padding:12px var(--gut) 140px;overflow-y:auto;height:calc(100dvh - 64px)}
.drawer .dsub{font:500 11px/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:36px 0 6px}
.drawer nav a{display:flex;align-items:baseline;gap:12px;min-height:56px;padding:12px 0;font:400 26px/1.2 var(--display);color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line-2)}
.drawer .dsub + nav a{font-size:18px;min-height:48px}
.drawer nav a small{margin-left:auto;font:400 12px/1 var(--sans);color:var(--muted)}
.drawer nav a:hover{color:var(--link)}
.drawer .dfoot{position:fixed;left:0;right:0;bottom:0;padding:16px var(--gut) calc(16px + env(safe-area-inset-bottom));background:var(--wall);border-top:1px solid var(--line)}
.drawer .dfoot .btn{width:100%}
body:has(.drawer[open]){overflow:hidden}
@media (min-width:900px){.drawer,.drawer[open]{display:none}}

/* ── the frame + wall label (the one component everything hangs on) ─ */
.frame{margin:0;background:var(--mat);padding:clamp(14px,5.5%,34px);box-shadow:0 0 0 1px var(--frame),var(--shadow);position:relative}
.frame img,.frame .compare{width:100%;aspect-ratio:4/5;object-fit:cover;background:var(--line-2)}
.frame.thin{padding:clamp(10px,4%,18px)}
.label{margin-top:18px;font-size:12.5px;line-height:1.55;color:var(--muted);max-width:30ch}
.label b,.label .t{display:block;font:italic 400 16px/1.35 var(--display);color:var(--ink);margin-bottom:2px}
.label span{display:block}
.label .no{font:500 11px/1.6 var(--mono);letter-spacing:.12em;text-transform:uppercase;display:block;margin-bottom:6px}

/* ── home: hero ───────────────────────────────────────────────────── */
.hero{padding:clamp(40px,7vw,96px) 0 clamp(64px,8vw,112px)}
.hero .wrap{display:grid;gap:56px;align-items:end}
.hero h1{font-size:clamp(44px,7.6vw,104px);line-height:1.02;letter-spacing:-.03em;margin-bottom:32px}
html[lang="zh-CN"] .hero h1{letter-spacing:-.01em;line-height:1.1;font-size:clamp(42px,7vw,92px)}
.hero h1 em{color:var(--muted)}
.hero-art{justify-self:end;width:100%;max-width:470px}
.hero-art .pic{overflow:hidden}
.hero-art .label{margin-left:auto;text-align:right}
@media (min-width:880px){
  .hero .wrap{grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:clamp(48px,7vw,120px)}
  .hero-copy{padding-bottom:56px}
}
@media (max-width:559px){.hero .actions .btn{width:100%}}

/* ── sections ─────────────────────────────────────────────────────── */
.sec{padding:clamp(80px,11vw,168px) 0;scroll-margin-top:72px}
.sec.tight{padding:clamp(56px,7vw,96px) 0}
.sec.rule{border-top:1px solid var(--line)}
.sec-head{max-width:640px;margin-bottom:clamp(40px,6vw,80px)}
.sec-head h2{font-size:clamp(32px,4.4vw,58px);line-height:1.08}
.sec-head p{margin:22px 0 0;color:var(--ink-2);font-size:17px;max-width:34em}
.sec-head p + p{margin-top:12px}
.split{display:grid;gap:40px}
@media (min-width:900px){.split{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(48px,8vw,140px)}.split .sec-head{margin-bottom:0;position:sticky;top:96px;align-self:start}}

/* before / after pair: big slider + an offset second print */
.pair{display:grid;gap:56px}
.pair-main{max-width:620px}
.pair-side{max-width:380px}
@media (min-width:900px){.pair{grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:clamp(48px,7vw,112px);align-items:start}.pair-side{margin-top:180px}}
.compare{position:relative;overflow:hidden;--pos:50%;user-select:none;-webkit-user-select:none}
.compare img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.cmp-before{clip-path:inset(0 calc(100% - var(--pos)) 0 0)}
.cmp-handle{position:absolute;top:0;bottom:0;left:var(--pos);width:1px;background:#fff;pointer-events:none}
.cmp-handle::after{content:"";position:absolute;top:50%;left:50%;width:40px;height:40px;transform:translate(-50%,-50%);border:1px solid #fff;border-radius:50%;background:rgba(20,18,15,.28);backdrop-filter:blur(2px)}
.cmp-tag{position:absolute;bottom:12px;font:500 10.5px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:#fff;background:rgba(20,18,15,.55);padding:6px 8px;pointer-events:none}
.cmp-tag.l{left:12px}.cmp-tag.r{right:12px}
.cmp-range{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize;-webkit-appearance:none;appearance:none;touch-action:pan-y}
.cmp-range:focus-visible{opacity:1;outline:2px solid #fff;outline-offset:-4px}
.aside-note{margin-top:clamp(56px,7vw,96px);max-width:36em;color:var(--muted);font-size:15px}

/* exhibitions: a staggered hang, not a card grid */
.hang{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:56px 20px}
.hang a{display:block;color:inherit;text-decoration:none}
.hang .frame{transition:transform var(--t2) var(--ease),box-shadow var(--t2) var(--ease)}
.hang a:hover .frame{transform:translateY(-3px)}
.hang h3{font-size:clamp(20px,2vw,26px);line-height:1.2;margin:0 0 4px}
.hang h3 i{display:block;font-size:.66em;color:var(--muted);margin-top:4px}
.hang .label{max-width:34ch}
.hang .label p{margin:6px 0 0;font-size:13.5px;color:var(--ink-2)}
.hang .see{display:inline-block;margin-top:8px;font:500 11px/1.6 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.hang a:hover .see{color:var(--ink)}
@media (min-width:900px){
  .hang{grid-template-columns:repeat(3,minmax(0,1fr));gap:96px clamp(32px,4vw,72px)}
  .hang li:nth-child(3n+2){margin-top:120px}
  .hang li:nth-child(3n){margin-top:48px}
}

/* edition 02: a different rhythm, wide and low */
.press{margin-top:clamp(96px,12vw,180px);display:grid;gap:36px;align-items:center;padding-top:clamp(48px,6vw,72px);border-top:1px solid var(--line)}
.press .frame{max-width:300px}
.press h3{font-size:clamp(26px,3vw,40px);margin-bottom:18px}
.press p{max-width:34em;color:var(--ink-2)}
@media (min-width:760px){.press{grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:clamp(40px,7vw,120px)}.press .frame{justify-self:end;width:100%}}

/* the full catalogue of 30 styles: plain type, like a printed exhibition list */
.catalogue{margin-top:clamp(96px,12vw,180px)}
.catalogue>h3{font-size:clamp(24px,2.6vw,32px);margin-bottom:12px}
.catalogue>p{max-width:40em;color:var(--muted);font-size:15px;margin:0}
.cat-grid{margin-top:48px;display:grid;gap:48px 56px}
@media (min-width:700px){.cat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1100px){.cat-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.cat-group h4{font:400 19px/1.3 var(--display);padding-bottom:10px;border-bottom:1px solid var(--ink);margin-bottom:4px}
.cat-group h4 span{display:block;font:500 10.5px/1.6 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.cat-group ul{list-style:none;margin:0;padding:0}
.cat-group li{padding:12px 0;border-bottom:1px solid var(--line-2);font-size:14px;line-height:1.55;color:var(--muted)}
.cat-group li b{display:block;font-weight:500;color:var(--ink);font-size:15px}
.cat-group li b small{font:italic 400 13px/1 var(--display);color:var(--muted);margin-left:6px}
.cat-group li span{display:block}
.prem{display:inline-block;margin-left:8px;font:500 9.5px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--link);border:1px solid currentColor;padding:3px 5px;vertical-align:2px}

/* how it works */
.steps{list-style:none;margin:0;padding:0;display:grid;gap:40px}
.steps li{padding-top:24px;border-top:1px solid var(--line)}
.steps .n{display:block;font:italic 400 30px/1 var(--display);color:var(--muted);margin-bottom:22px}
.steps h3{font-size:22px;margin-bottom:10px}
.steps p{margin:0;color:var(--ink-2);font-size:15px}
.steps .fine{margin-top:10px;font-size:13px;color:var(--muted)}
@media (min-width:760px){.steps{grid-template-columns:repeat(2,minmax(0,1fr));gap:56px 48px}}
@media (min-width:1100px){.steps{grid-template-columns:repeat(4,minmax(0,1fr))}}
.fit{margin-top:56px;font:400 clamp(20px,2.2vw,27px)/1.45 var(--display);max-width:30em;color:var(--ink)}

/* privacy: one statement + a short list */
.facts{margin:0;display:grid;gap:0}
.facts div{display:grid;gap:6px;padding:26px 0;border-top:1px solid var(--line)}
.facts div:last-child{border-bottom:1px solid var(--line)}
.facts dt{font:400 21px/1.3 var(--display)}
.facts dd{margin:0;color:var(--ink-2);font-size:15px;max-width:36em}
@media (min-width:700px){.facts div{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:32px}}
.colophon{margin-top:clamp(56px,7vw,88px);padding:28px 0 0;border-top:1px solid var(--ink);max-width:46em}
.colophon .eyebrow{margin-bottom:12px;color:var(--ink)}
.colophon p,.privacy-note{margin:0;font-size:15px;line-height:1.8;color:var(--ink-2)}
.colophon strong{font-weight:600;color:var(--ink)}

/* pricing: a gallery price list, one row per edition */
.plans{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink)}
.plan{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 24px;align-items:baseline;padding:24px 0;border-bottom:1px solid var(--line)}
.plan h3{font-size:clamp(20px,2vw,24px);line-height:1.3}
.plan .tag{display:inline-block;margin-left:10px;font:500 10px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--on-btn);background:var(--btn);padding:4px 6px;vertical-align:4px}
.plan .units{grid-column:1;margin:0;font-size:14px;color:var(--muted)}
.plan .price{grid-column:2;grid-row:1;margin:0;text-align:right;font:300 clamp(24px,2.4vw,30px)/1.1 var(--sans);font-variant-numeric:tabular-nums lining-nums;letter-spacing:-.01em;white-space:nowrap}
.plan .price small{font:400 13px/1 var(--sans);color:var(--muted);margin-left:4px}
.plan .cny{grid-column:2;margin:0;text-align:right;font-size:13px;color:var(--muted)}
.plan .buy{grid-column:1 / -1;justify-self:start;margin-top:4px;min-height:40px;font-size:14px}
.plan.featured h3{font-style:italic}
@media (min-width:900px){
  .plan{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr) 190px 150px;gap:4px 40px;align-items:center;padding:28px 0}
  .plan h3{grid-column:1;grid-row:1}
  .plan .units{grid-column:2;grid-row:1 / span 2}
  .plan .price{grid-column:3;grid-row:1}
  .plan .cny{grid-column:3;grid-row:2}
  .plan .buy{grid-column:4;grid-row:1 / span 2;margin:0;justify-self:end}
}
.price-note{margin:28px 0 0;font-size:14px;color:var(--muted);max-width:44em}
.buy-how{margin-top:clamp(56px,7vw,88px);display:grid;grid-template-columns:120px minmax(0,1fr);gap:28px;align-items:start;max-width:820px}
.buy-how img{width:120px;height:120px;background:#fff;padding:6px;box-shadow:0 0 0 1px var(--line)}
.buy-how h3{font-size:22px;margin-bottom:12px}
.buy-how p{margin:0 0 10px;font-size:15px;color:var(--ink-2)}
@media (max-width:559px){.buy-how{grid-template-columns:1fr}}

/* faq */
.faq{border-top:1px solid var(--line);max-width:820px}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;list-style:none;padding:24px 48px 24px 0;font:400 clamp(18px,1.8vw,21px)/1.4 var(--display);position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";position:absolute;right:6px;top:50%;width:12px;height:12px;margin-top:-6px;background:linear-gradient(currentColor,currentColor) center/12px 1px no-repeat,linear-gradient(currentColor,currentColor) center/1px 12px no-repeat;transition:transform var(--t2) var(--ease)}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq summary:hover{color:var(--link)}
.faq .a{padding:0 0 26px;color:var(--ink-2);font-size:15.5px;max-width:40em}
.faq .a p{margin:0 0 .8em}
.faq .a p:last-child{margin:0}

/* closing: start / download */
.closing{text-align:left}
.closing h2{font-size:clamp(36px,5.4vw,72px);line-height:1.05;letter-spacing:-.02em;max-width:12em}
.closing p{margin:24px 0 0;color:var(--ink-2);max-width:32em}
.closing .dl-soon,.closing .note{font-size:14px;color:var(--muted);margin-top:14px}

/* family band + page meta */
.family{padding:40px 0;border-top:1px solid var(--line)}
.family ul{list-style:none;margin:0;padding:0;display:grid;gap:0 40px;grid-template-columns:1fr}
.family a{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;padding:14px 0;border-bottom:1px solid var(--line-2);color:var(--ink);text-decoration:none}
.family a:hover b{color:var(--link)}
.family b{font:400 17px/1.3 var(--display)}
.family span{font-size:13px;color:var(--muted)}
.family .st{margin-left:auto;font:500 10.5px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase}
@media (min-width:800px){.family ul{grid-template-columns:repeat(2,minmax(0,1fr))}}
.pagemeta{padding:28px 0 0;margin:0;font-size:13px;color:var(--muted)}

/* ── footer ───────────────────────────────────────────────────────── */
.footer{margin-top:clamp(40px,6vw,80px);border-top:1px solid var(--line);padding:56px 0 40px;font-size:14px;color:var(--muted)}
.footer .cols{display:grid;gap:36px}
.footer .brand{font-size:24px}
.footer .cols p{margin:12px 0 0;max-width:30ch}
.footer h3{font:500 11px/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink);margin:0 0 14px}
.footer ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.footer a{color:var(--muted);text-decoration:none}
.footer a:hover{color:var(--ink);text-decoration:underline}
.footer .legal{margin-top:48px;padding-top:20px;border-top:1px solid var(--line-2);display:flex;flex-wrap:wrap;gap:8px 28px;font-size:12.5px}
@media (min-width:760px){.footer .cols{grid-template-columns:1.4fr 1fr 1fr 1fr}}
@media (pointer:coarse){
  .footer ul{gap:0}
  .footer ul a,.footer ul span{display:block;padding:11px 0}
  .footer .legal a{display:inline-block;padding:11px 0}
  .crumbs a{display:inline-block;padding:10px 0}
}

/* ── exhibition lightbox ──────────────────────────────────────────── */
.lb{margin:auto;padding:0;width:min(1080px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;background:var(--wall);color:var(--ink);border:0;box-shadow:0 0 0 1px var(--line),0 40px 80px -30px rgba(0,0,0,.5)}
.lb::backdrop{background:rgba(20,18,15,.62)}
.lb .lbhead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:clamp(22px,4vw,44px) clamp(22px,4vw,44px) 0}
.lb .lbhead h3{font-size:clamp(26px,3.4vw,40px)}
.lb .lbhead p{margin:10px 0 0;font-size:15px;color:var(--ink-2);max-width:36em}
.lb .lbhead .kicker{margin-bottom:10px}
.lb .lbgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:36px 18px;padding:36px clamp(22px,4vw,44px) 0;list-style:none;margin:0}
.lb .lbgrid img{width:100%;aspect-ratio:4/5;object-fit:cover;background:var(--mat);padding:8px;box-shadow:0 0 0 1px var(--frame)}
.lb .lbgrid b{display:block;font:italic 400 17px/1.3 var(--display);margin-top:14px}
.lb .lbgrid b small{font:500 11px/1 var(--sans);font-style:normal;color:var(--muted);margin-left:6px}
.lb .lbgrid b .prem{font-style:normal}
.lb .lbgrid span{display:block;font-size:13px;color:var(--muted);line-height:1.5;margin-top:2px}
.lb .lbfoot{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;padding:36px clamp(22px,4vw,44px) clamp(22px,4vw,44px);font-size:13px;color:var(--muted)}
@media (min-width:640px){.lb .lbgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:960px){.lb .lbgrid{grid-template-columns:repeat(4,minmax(0,1fr))}}

/* ── guides + legal pages ─────────────────────────────────────────── */
.crumbs{font:500 11.5px/1.6 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 36px;display:flex;flex-wrap:wrap;gap:6px 10px;align-items:baseline}
.crumbs a{color:var(--muted);text-decoration:none}
.crumbs a:hover{color:var(--ink)}
.crumbs [aria-current]{color:var(--ink)}
.crumbs .sep{opacity:.5}
.article{padding-top:clamp(40px,6vw,88px)}
.article h1{font-size:clamp(34px,5vw,64px);line-height:1.08;letter-spacing:-.02em;margin:0 0 24px;max-width:17em}
html[lang="zh-CN"] .article h1{letter-spacing:0;line-height:1.18;font-size:clamp(30px,4.4vw,54px)}
.article-meta{margin:0 0 40px;font:500 11.5px/1.6 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);display:flex;flex-wrap:wrap;gap:4px 22px}
.article-meta time{font:inherit}
.article .lede{max-width:36em;margin:0 0 clamp(48px,6vw,72px);font-size:clamp(18px,1.7vw,21px);line-height:1.7}

.prose{max-width:40rem;font-size:17px;line-height:1.85;color:var(--ink)}
html[lang="zh-CN"] .prose{line-height:1.95}
.prose>*:first-child{margin-top:0}
.prose h2{font-size:clamp(25px,2.8vw,34px);line-height:1.22;margin:2.4em 0 .7em}
.prose h3{font-size:20px;line-height:1.35;margin:1.9em 0 .5em}
.prose p{margin:0 0 1.15em}
.prose ul,.prose ol{margin:0 0 1.4em;padding-left:1.3em}
.prose li{margin-bottom:.55em}
.prose li::marker{color:var(--muted)}
.prose strong{font-weight:600}
.prose code{font:500 .88em/1.5 var(--mono);background:var(--line-2);padding:2px 6px;overflow-wrap:anywhere}
.prose hr{border:0;border-top:1px solid var(--line);margin:2.6em 0}
.prose .note{margin:2.2em 0;padding:4px 0 4px 24px;border-left:1px solid var(--ink);font:400 19px/1.65 var(--display);color:var(--ink)}
html[lang="zh-CN"] .prose .note{font-size:18px}
.prose .note p:last-child{margin-bottom:0}
.prose figure{margin:2.4em 0}
.prose figcaption{font-size:14.5px;color:var(--ink-2);line-height:1.7}
.prose .fig-inline{display:grid;grid-template-columns:132px minmax(0,1fr);gap:20px;align-items:start}
.prose .fig-inline img{width:132px;aspect-ratio:4/5;object-fit:cover;background:var(--mat);padding:7px;box-shadow:0 0 0 1px var(--frame),var(--shadow)}
.prose .fig-inline figcaption b{font-weight:600;color:var(--ink)}
@media (min-width:640px){.prose .fig-inline{grid-template-columns:180px minmax(0,1fr);gap:32px}.prose .fig-inline img{width:180px;padding:10px}}
.prose .checklist{list-style:none;padding-left:0}
.prose .checklist li{padding-left:1.6em;position:relative}
.prose .checklist li::before{content:"";position:absolute;left:0;top:.95em;width:.8em;height:1px;background:var(--muted)}

.related{margin-top:clamp(72px,9vw,120px);padding-top:28px;border-top:1px solid var(--ink);max-width:40rem}
.related h2{font:500 11.5px/1.5 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.related ul{list-style:none;margin:0;padding:0}
.related li{padding:18px 0;border-bottom:1px solid var(--line-2)}
.related a{font:400 20px/1.35 var(--display);color:var(--ink);text-decoration:none}
.related a:hover{color:var(--link)}
.related p{margin:6px 0 0;font-size:14px;color:var(--muted)}

.cta-box{margin-top:clamp(72px,9vw,120px);max-width:40rem}
.cta-box h2{font-size:clamp(28px,3.4vw,42px);line-height:1.12;margin-bottom:14px}
.cta-box p{margin:0;color:var(--ink-2)}
.cta-box .btn-row{margin-top:28px}

/* guide index: a contents page, not a card grid */
.contents{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink);max-width:980px}
.contents li{display:grid;grid-template-columns:56px minmax(0,1fr);gap:8px 20px;padding:clamp(28px,4vw,44px) 0;border-bottom:1px solid var(--line)}
.contents .num{font:italic 400 26px/1 var(--display);color:var(--muted);padding-top:6px}
.contents h2{font-size:clamp(24px,3vw,38px);line-height:1.18;margin:0 0 12px}
.contents h2 a{color:var(--ink);text-decoration:none;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size var(--t3) var(--ease)}
.contents h2 a:hover{background-size:100% 1px}
.contents p{margin:0;color:var(--ink-2);max-width:36em}
.contents .tag{display:block;font:500 11px/1.6 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:10px}
@media (min-width:760px){.contents li{grid-template-columns:120px minmax(0,1fr)}.contents .num{font-size:34px}}

/* legal: generated by tools/legal/build.py; only the look lives here */
.legal-toc{margin:0 0 clamp(48px,6vw,72px);max-width:44rem;padding:22px 0;border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}
.legal-toc ol{margin:0;padding:0 0 0 1.6em;columns:2;column-gap:40px;font-size:14.5px;line-height:2;color:var(--muted)}
.legal-toc li{break-inside:avoid}
.legal-toc a{color:var(--ink);text-decoration:none}
.legal-toc a:hover{text-decoration:underline}
.legal-body h2{scroll-margin-top:90px;font-size:clamp(22px,2.4vw,28px)}
.legal-body{font-size:16px}
.legal-body table{width:100%;border-collapse:collapse;margin:0 0 1.4em;font-size:14.5px;line-height:1.65;display:block;overflow-x:auto}
.legal-body th,.legal-body td{text-align:left;vertical-align:top;padding:12px 14px 12px 0;border-bottom:1px solid var(--line)}
.legal-body th{font-weight:600;border-bottom-color:var(--ink)}
@media (max-width:640px){.legal-toc ol{columns:1}.legal-body table{font-size:13.5px}}

/* 404 */
.lost h1{font-size:clamp(40px,6vw,80px)}

/* ── motion: hung frames develop like a print in the tray ─────────── */
@media (prefers-reduced-motion:no-preference){
  @view-transition{navigation:auto}
  ::view-transition-old(root),::view-transition-new(root){animation-duration:240ms;animation-timing-function:var(--ease)}

  /* hero: the LCP image is visible from the first frame; only a very slow settle */
  .hero-art .frame img{animation:settle 9s var(--ease) both}
  @keyframes settle{from{transform:scale(1.05)}to{transform:none}}

  html.js [data-reveal]{opacity:0;transform:translateY(16px);transition:opacity 700ms var(--ease),transform 700ms var(--ease);transition-delay:var(--d,0ms)}
  html.js [data-reveal].in{opacity:1;transform:none}

  /* a frame is hung first, then the picture develops on the mat */
  html.js [data-hang] .frame{opacity:0;transform:translateY(14px);transition:opacity 700ms var(--ease),transform 900ms var(--ease);transition-delay:var(--d,0ms)}
  html.js [data-hang] .frame img,html.js [data-hang] .frame .compare{opacity:.08;filter:brightness(1.7) saturate(0) contrast(.6);transition:opacity 1500ms var(--ease),filter 2200ms var(--ease);transition-delay:calc(var(--d,0ms) + 260ms)}
  html.js [data-hang] .label{opacity:0;transition:opacity 700ms var(--ease);transition-delay:calc(var(--d,0ms) + 500ms)}
  html.js [data-hang].in .frame{opacity:1;transform:none}
  html.js [data-hang].in .frame img,html.js [data-hang].in .frame .compare{opacity:1;filter:none}
  html.js [data-hang].in .label{opacity:1}

  .drawer[open]{animation:drawer-in var(--t2) var(--ease)}
  .drawer[open] nav a{animation:rise 520ms var(--ease) both}
  .drawer[open] nav a:nth-child(2){animation-delay:40ms}.drawer[open] nav a:nth-child(3){animation-delay:80ms}
  .drawer[open] nav a:nth-child(4){animation-delay:120ms}.drawer[open] nav a:nth-child(5){animation-delay:160ms}
  .lb[open]{animation:drawer-in var(--t2) var(--ease)}
  .lb[open]::backdrop{animation:fade var(--t2) var(--ease)}
  @keyframes drawer-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
  @keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
  @keyframes fade{from{opacity:0}to{opacity:1}}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
}

@media print{
  .nav,.drawer,.lb,.menubtn,.family{display:none!important}
  .compare .cmp-before{clip-path:none}
  html.js [data-reveal],html.js [data-hang] *{opacity:1!important;transform:none!important;filter:none!important}
}

/* CJK in the small mono labels: keep the tracking for Latin, loosen it for Chinese */
html[lang="zh-CN"] .eyebrow,html[lang="zh-CN"] .kicker,html[lang="zh-CN"] .label .no,html[lang="zh-CN"] .hang .see,
html[lang="zh-CN"] .cat-group h4 span,html[lang="zh-CN"] .crumbs,html[lang="zh-CN"] .article-meta,html[lang="zh-CN"] .related h2,
html[lang="zh-CN"] .drawer .dsub,html[lang="zh-CN"] .footer h3{letter-spacing:.06em;font-family:var(--sans)}
