:root{
  --paper:#f7f4ef; --ink:#1c1a17; --muted:#6f6862; --line:#ddd5c9;
  --seal:#a8342a; --card:#fffdf9;
  --serif:"Noto Serif SC","Songti SC","SimSun",serif;
  --brush:"Ma Shan Zheng","Kaiti SC","STKaiti",cursive;
  --pad:clamp(1.25rem,5vw,3.5rem);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--serif);line-height:1.85;
  -webkit-font-smoothing:antialiased;
}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
.wrap{max-width:1180px;margin:0 auto;padding:0 var(--pad)}
.wrap.col{max-width:780px}

/* ---------- 页眉 / 签名 logo ---------- */
header{
  position:sticky;top:0;z-index:50;background:rgba(247,244,239,.92);
  backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line);
}
.bar{display:flex;align-items:center;gap:1.5rem;height:72px}
.logo{display:flex;align-items:center;gap:.65rem;margin-right:auto}
.logo .sign{font-family:var(--brush);font-size:2.05rem;line-height:1;letter-spacing:.06em}
.logo .seal{
  width:30px;height:30px;background:var(--seal);color:#fff;border-radius:3px;
  display:grid;place-items:center;font-size:.82rem;line-height:1;letter-spacing:0;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.35);
}
nav ul{display:flex;gap:1.75rem;list-style:none;margin:0;padding:0}
nav a{font-size:.95rem;padding:.35rem 0;border-bottom:1.5px solid transparent;transition:border-color .2s,color .2s}
nav a:hover{color:var(--seal)}
nav a[aria-current="page"]{border-bottom-color:var(--seal);color:var(--seal)}
.menu{display:none}
.menu summary{list-style:none;cursor:pointer;width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--line);border-radius:4px}
.menu summary::-webkit-details-marker{display:none}
.menu summary i{display:block;width:18px;height:1.5px;background:var(--ink);position:relative}
.menu summary i::before,.menu summary i::after{content:"";position:absolute;left:0;width:18px;height:1.5px;background:var(--ink)}
.menu summary i::before{top:-6px}.menu summary i::after{top:6px}

/* ---------- 通用 ---------- */
.section{padding:clamp(2.5rem,7vw,5rem) 0}
.section+.section{border-top:1px solid var(--line)}
.eyebrow{font-size:.78rem;letter-spacing:.32em;color:var(--seal);margin:0 0 .65rem;text-transform:uppercase}
h1{font-size:clamp(1.9rem,5vw,3rem);line-height:1.25;margin:0 0 1rem;font-weight:700;letter-spacing:.02em}
h2{font-size:clamp(1.35rem,3vw,1.85rem);margin:0 0 1.25rem;font-weight:600;letter-spacing:.03em}
h3{font-size:1.08rem;margin:0 0 .35rem;font-weight:600}
.lead{font-size:clamp(1.02rem,2.2vw,1.22rem);color:#3a3530;max-width:62ch}
.meta{font-size:.88rem;color:var(--muted);letter-spacing:.04em}
.rule{height:1px;background:var(--line);border:0;margin:0}
.page-head{padding-block:clamp(2.25rem,6vw,3.75rem) clamp(1.5rem,4vw,2.25rem)}
.page-head p{margin:.35rem 0 0}

/* ---------- 首页 ---------- */
.hero{display:grid;grid-template-columns:minmax(0,1.9fr) minmax(0,1fr);gap:clamp(1.75rem,5vw,4.5rem);align-items:center}
.hero figure{margin:0 auto;position:relative}
.hero img{width:100%;border-radius:2px;filter:saturate(.97)}
.hero .name{font-size:clamp(2.6rem,7vw,4.25rem);line-height:1.1;letter-spacing:.1em;margin:.15rem 0 .85rem}
.tags{display:flex;flex-wrap:wrap;gap:.5rem .65rem;margin:1.35rem 0 0;padding:0;list-style:none}
.tags li{font-size:.82rem;letter-spacing:.05em;color:#4a443e;border:1px solid var(--line);padding:.32rem .78rem;border-radius:99px;background:var(--card)}

/* ---------- 首页轮播 ---------- */
.banner{padding-block:clamp(1.75rem,4.5vw,2.85rem)}
.banner-box{position:relative;--bh:clamp(280px,36vw,440px)}
.banner-track{
  position:relative;display:flex;gap:1rem;overflow-x:auto;
  scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch;
}
.banner-track::-webkit-scrollbar{display:none}
.banner-slide{
  flex:0 0 100%;scroll-snap-align:start;margin:0;position:relative;
  background:var(--card);border:1px solid var(--line);border-radius:2px;
  overflow:hidden;cursor:zoom-in;
}
.banner-slide .pic{display:block;width:100%;height:var(--bh);object-fit:cover;background:#e9e2d7}
.banner-slide figcaption{
  position:absolute;left:0;right:0;bottom:0;
  padding:clamp(2rem,5vw,3.25rem) clamp(1.15rem,2.5vw,1.75rem) clamp(1.15rem,2.5vw,1.55rem);
  background:linear-gradient(to top,rgba(18,16,14,.8),rgba(18,16,14,.35) 55%,transparent);
}
.banner-slide .t{font-size:clamp(1.12rem,2.4vw,1.42rem);font-weight:600;line-height:1.5;letter-spacing:.02em;color:#fff}
.banner-slide .m{font-size:.88rem;color:rgba(255,255,255,.82);margin-top:.4rem;letter-spacing:.04em}
.banner-prev,.banner-next{
  position:absolute;top:calc(var(--bh) / 2);transform:translateY(-50%);
  width:42px;height:42px;border:0;border-radius:50%;background:rgba(247,244,239,.92);
  color:var(--ink);font-size:1.35rem;line-height:1;cursor:pointer;z-index:2;
  box-shadow:0 10px 24px -14px rgba(28,26,23,.5);transition:background .2s;
}
.banner-prev:hover,.banner-next:hover{background:#fff}
.banner-prev{left:.65rem}
.banner-next{right:.65rem}
.banner-dots{display:flex;justify-content:center;gap:.55rem;margin-top:1.15rem}
.banner-dots button{
  width:8px;height:8px;padding:0;border:0;border-radius:50%;
  background:var(--line);cursor:pointer;transition:background .2s,transform .2s;
}
.banner-dots button[aria-current="true"]{background:var(--seal);transform:scale(1.25)}

/* ---------- 作品 ---------- */
.yearbar{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 2.25rem;padding:0;list-style:none}
.yearbar a{font-size:.9rem;letter-spacing:.08em;padding:.38rem .95rem;border:1px solid var(--line);border-radius:99px;background:var(--card);transition:.2s}
.yearbar a:hover{border-color:var(--seal);color:var(--seal)}
.year-group{margin:0 0 3.25rem}
.year-group>.yr{
  display:flex;align-items:baseline;gap:1rem;margin:0 0 1.35rem;
  font-size:1.55rem;font-weight:700;letter-spacing:.12em;
}
.year-group>.yr::after{content:"";flex:1;height:1px;background:var(--line)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:clamp(1.15rem,2.5vw,1.9rem)}
.card{
  margin:0;background:var(--card);border:1px solid var(--line);border-radius:2px;
  overflow:hidden;cursor:zoom-in;transition:transform .28s,box-shadow .28s;
}
.card:hover{transform:translateY(-4px);box-shadow:0 14px 34px -18px rgba(28,26,23,.42)}
.card .ph{aspect-ratio:4/3;overflow:hidden;background:#e9e2d7}
.card .ph img{width:100%;height:100%;object-fit:cover;transition:transform .5s}
.card:hover .ph img{transform:scale(1.045)}
.card figcaption{padding:.95rem 1.05rem 1.15rem}
.card .t{font-size:1.02rem;font-weight:600;letter-spacing:.02em;line-height:1.5}
.card .m{font-size:.82rem;color:var(--muted);margin-top:.3rem;letter-spacing:.03em}
.card .note{font-size:.79rem;color:var(--seal);margin-top:.42rem;line-height:1.6}

/* ---------- 列表（文章 / 出版 / 展览 / 动态）---------- */
.list{margin:0;padding:0;list-style:none}
.list>li{
  display:grid;grid-template-columns:1fr;gap:.35rem;
  padding:1.55rem 0;border-top:1px solid var(--line);
}
.list>li:first-child{border-top:0;padding-top:.35rem}
.list .top{display:flex;flex-wrap:wrap;align-items:baseline;gap:.55rem 1.15rem}
.list .top .t{font-size:1.12rem;font-weight:600}
.list .desc{color:#4a443e;max-width:70ch;margin:.35rem 0 0}

.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(285px,1fr));gap:clamp(1.15rem,2.5vw,1.85rem)}
.pub{background:var(--card);border:1px solid var(--line);border-radius:2px;overflow:hidden}
.pub img{width:100%;aspect-ratio:3/2;object-fit:cover;background:#e9e2d7}
.pub .body{padding:1.15rem 1.25rem 1.4rem}
.pub .t{font-size:1.12rem;font-weight:600;line-height:1.55}
.shot{margin:0 0 1.35rem;cursor:zoom-in}
.shot img{width:100%;background:#e9e2d7}

.news{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:clamp(1.15rem,2.5vw,1.85rem)}
.news article{background:var(--card);border:1px solid var(--line);border-radius:2px;overflow:hidden}
.news img{width:100%;aspect-ratio:3/2;object-fit:cover;cursor:zoom-in;transition:transform .5s}
.news article:hover img{transform:scale(1.04)}
.news .body{padding:1.05rem 1.2rem 1.35rem}
.news .date{font-size:.82rem;letter-spacing:.12em;color:var(--seal)}
.news .t{font-size:1.08rem;font-weight:600;margin:.28rem 0 .3rem;line-height:1.55}

/* ---------- 文章正文 ---------- */
.article-body{max-width:70ch;margin:2rem 0 0;font-size:1.06rem;color:#2e2a26}
.article-body p{margin:0 0 1.15rem;text-indent:2em}
.article-body .sign{text-align:right;color:var(--muted);font-size:.94rem;margin-top:2rem}
details.fold summary{
  cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:.55rem;
  font-size:.92rem;letter-spacing:.08em;color:var(--seal);padding:.42rem 0;
}
details.fold summary::-webkit-details-marker{display:none}
details.fold summary::before{content:"＋";font-size:.95rem}
details.fold[open] summary::before{content:"−"}
details.fold .article-body{border-left:2px solid var(--line);padding-left:clamp(1rem,3vw,2rem);margin-top:1.25rem}

/* ---------- 灯箱 ---------- */
dialog#box{
  border:0;padding:0;background:transparent;max-width:min(94vw,1180px);width:100%;
}
dialog#box::backdrop{background:rgba(18,16,14,.88);backdrop-filter:blur(6px)}
dialog#box .frame{background:var(--paper);border-radius:3px;overflow:hidden;position:relative}
dialog#box img{width:100%;max-height:78vh;object-fit:contain;background:#12100e}
dialog#box .cap{padding:.95rem 1.15rem;display:flex;flex-wrap:wrap;gap:.35rem 1.1rem;align-items:baseline}
dialog#box .cap .t{font-weight:600;font-size:1.05rem}
dialog#box .cap .m{font-size:.86rem;color:var(--muted)}
.lb-nav{position:absolute;inset:0;display:flex;justify-content:space-between;pointer-events:none}
.lb-nav button{
  pointer-events:auto;align-self:center;width:46px;height:46px;border:0;border-radius:50%;
  background:rgba(247,244,239,.9);color:var(--ink);font-size:1.35rem;cursor:pointer;
  margin:0 .65rem;line-height:1;transition:background .2s;
}
.lb-nav button:hover{background:#fff}
.lb-close{
  position:absolute;top:.65rem;right:.65rem;width:38px;height:38px;border:0;border-radius:50%;
  background:rgba(247,244,239,.92);font-size:1.15rem;cursor:pointer;line-height:1;z-index:2;
}

/* ---------- 页脚 ---------- */
footer{border-top:1px solid var(--line);padding:2.75rem 0 3.25rem;margin-top:1rem;color:var(--muted);font-size:.88rem}
footer .row{display:flex;flex-wrap:wrap;gap:.65rem 2rem;justify-content:space-between;align-items:center}
footer .sign{font-family:var(--brush);font-size:1.55rem;color:var(--ink);letter-spacing:.08em}

/* ---------- 响应式 ---------- */
@media (max-width:900px){
  .hero{grid-template-columns:1fr;gap:2.25rem}
  .hero figure{max-width:420px}
}
@media (max-width:760px){
  .banner-prev,.banner-next{width:36px;height:36px;font-size:1.15rem}
  .banner-slide figcaption{position:static;background:none;padding:1.05rem 1.15rem 1.25rem}
  .banner-slide .t{color:var(--ink)}
  .banner-slide .m{color:var(--muted)}
  .bar{height:64px}
  .logo .sign{font-size:1.72rem}
  nav.primary{display:none}
  .menu{display:block;position:relative}
  .menu[open] .panel{
    position:absolute;right:0;top:calc(100% + .65rem);min-width:185px;
    background:var(--card);border:1px solid var(--line);border-radius:3px;
    box-shadow:0 18px 40px -22px rgba(28,26,23,.5);padding:.45rem 0;
  }
  .menu .panel ul{display:block;list-style:none;margin:0;padding:0}
  .menu .panel a{display:block;padding:.62rem 1.15rem;font-size:.96rem;border:0}
  .menu .panel a[aria-current="page"]{background:rgba(168,52,42,.07)}
  .grid,.cards,.news{grid-template-columns:1fr 1fr}}
@media (max-width:520px){
  .grid,.cards,.news{grid-template-columns:1fr}
  .card .ph{aspect-ratio:5/4}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}
