/* ============================================================
   Sophia — shared design system (V1, multi-page)
   保留既有文学感：Cormorant Garamond / Noto Serif SC / DM Mono
   色板 ink / paper / accent(#c45a32) / muted / line / warm
   ============================================================ */

:root {
  --ink:    #1a1814;
  --paper:  #f7f5f0;
  --accent: #c45a32;
  --muted:  #9a9080;
  --line:   #e0dcd3;
  --warm:   #ede8e0;

  /* 字号阶梯（10 级，沿用既有规范） */
  --fs-mega:  clamp(3.4rem, 8vw, 7rem);     /* 巨型标题 / 关于名字 */
  --fs-xl:    clamp(2rem, 4vw, 3rem);       /* section 大标题 */
  --fs-lg:    clamp(1.7rem, 3.4vw, 2.6rem); /* 首屏引言 / 区块引言 */
  --fs-md:    clamp(1.4rem, 2.6vw, 2rem);   /* 中引言 */
  --fs-card:  1.3rem;                        /* 卡片标题 */
  --fs-quote: 1.2rem;                        /* 强调引言 */
  --fs-body:  clamp(0.95rem, 1.15vw, 1.08rem);
  --fs-note:  0.82rem;
  --fs-label: 0.62rem;                        /* 标签/导航/元信息 mono */
  --fs-micro: 0.58rem;                        /* 编号/图注 */

  --pad-x: 4rem;
  --pad-y: 8rem;
  --maxw: 1200px;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }

body {
  background: var(--paper);
  color: var(--ink);
  font-family: 'Noto Serif SC', serif;
  font-weight: 300;
  line-height: 1.85;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}

/* ── 字体角色 ── */
.serif   { font-family: 'Cormorant Garamond', serif; }
.mono    { font-family: 'DM Mono', monospace; }
.ita     { font-style: italic; }

a { color: inherit; }

/* ── 导航 ── */
.site-nav {
  position: fixed; top: 0; left: 0; width: 100%;
  padding: 1.5rem var(--pad-x);
  display: flex; justify-content: space-between; align-items: center;
  z-index: 100;
  mix-blend-mode: normal;
}
.site-nav .logo {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.15rem; font-style: italic; letter-spacing: 0.04em;
  color: var(--muted); text-decoration: none; cursor: pointer;
  transition: color .3s;
}
.site-nav .logo:hover { color: var(--accent); }
.site-nav ul {
  list-style: none; display: flex; gap: 2.4rem; align-items: center;
}
.site-nav ul a {
  font-family: 'DM Mono', monospace; font-size: var(--fs-label);
  color: var(--muted); text-decoration: none;
  letter-spacing: 0.12em; text-transform: uppercase;
  transition: color .3s; position: relative; padding-bottom: 2px;
}
.site-nav ul a:hover,
.site-nav ul a.active { color: var(--ink); }
.site-nav ul a.say { color: var(--accent); }
.site-nav ul a.say:hover { color: var(--ink); }
.site-nav ul a.active::after {
  content: ''; position: absolute; left: 0; right: 0; bottom: -2px;
  height: 1px; background: var(--accent);
}
.lang-switch {
  display: flex; align-items: center; gap: .15rem;
  font-family: 'DM Mono', monospace; font-size: var(--fs-label);
  letter-spacing: 0.1em;
}
.lang-btn {
  background: none; border: none; cursor: pointer;
  padding: .3rem .5rem; color: var(--muted);
  font-family: inherit; font-size: inherit; letter-spacing: inherit;
  text-transform: uppercase; transition: color .3s;
}
.lang-btn:hover { color: var(--accent); }
.lang-btn.active { color: var(--ink); }

/* 浅色区块上的导航反色 */
.site-nav.on-dark .logo,
.site-nav.on-dark ul a { color: rgba(247,245,240,.7); }
.site-nav.on-dark ul a.active { color: #fff; }
.site-nav.on-dark .lang-btn { color: rgba(247,245,240,.6); }
.site-nav.on-dark .lang-btn.active { color: #fff; }

/* 首页浅色 Hero 上的导航（截图版式：天空明亮，文字用深色） */
body.hero-light .site-nav .logo { color: var(--ink); }
body.hero-light .site-nav ul a { color: rgba(26,24,20,.55); }
body.hero-light .site-nav ul a:hover,
body.hero-light .site-nav ul a.active { color: var(--ink); }
body.hero-light .site-nav ul a.say { color: var(--accent); }
body.hero-light .site-nav ul a.say:hover { color: var(--ink); }
body.hero-light .lang-btn { color: rgba(26,24,20,.5); }
body.hero-light .lang-btn:hover { color: var(--accent); }
body.hero-light .lang-btn.active { color: var(--ink); }

/* 系列详情页顶部导航：用浅底深色，覆盖在 Hero 暗图上也可读 */
body.lens-detail .site-nav {
  background: rgba(247,245,240,0.94);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
body.lens-detail .site-nav .logo { color: var(--ink); }
body.lens-detail .site-nav ul a { color: rgba(26,24,20,.55); }
body.lens-detail .site-nav ul a:hover,
body.lens-detail .site-nav ul a.active { color: var(--ink); }
body.lens-detail .site-nav ul a.say { color: var(--accent); }
body.lens-detail .site-nav ul a.say:hover { color: var(--ink); }
body.lens-detail .lang-btn { color: rgba(26,24,20,.5); }
body.lens-detail .lang-btn:hover { color: var(--accent); }
body.lens-detail .lang-btn.active { color: var(--ink); }

/* ── 三语切换（统一用 :lang，全站共享 siteLang） ── */
.lang-en, .lang-ru { display: none; }
:lang(en) .lang-zh, :lang(en) .lang-ru { display: none; }
:lang(en) .lang-en { display: inline; }
:lang(ru) .lang-zh, :lang(ru) .lang-en { display: none; }
:lang(ru) .lang-ru { display: inline; }
/* 区块级（整段）切换 */
.lang-block { display: block; }
:lang(en) .lang-block.lang-zh,
:lang(en) .lang-block.lang-ru { display: none; }
:lang(ru) .lang-block.lang-zh,
:lang(ru) .lang-block.lang-en { display: none; }

/* ── 通用排版 ── */
.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 var(--pad-x); }
.section { padding: var(--pad-y) var(--pad-x); }
.eyebrow {
  font-family: 'DM Mono', monospace; font-size: var(--fs-label);
  letter-spacing: 0.25em; color: var(--accent);
  text-transform: uppercase; margin-bottom: 1.1rem;
}
.display {
  font-family: 'Cormorant Garamond', serif; font-weight: 300;
  font-size: var(--fs-xl); line-height: 1.1; color: var(--ink);
}
.lead {
  font-family: 'Cormorant Garamond', serif; font-style: italic;
  font-weight: 300; font-size: var(--fs-lg); line-height: 1.5;
  color: var(--ink); max-width: 22em;
}
.measure { max-width: 38rem; }
p.body { font-size: var(--fs-body); line-height: 2; color: var(--ink); opacity: .85; }

/* 入口 / 世界门户卡片 */
.portal {
  display: block; text-decoration: none; color: inherit;
  border-top: 1px solid var(--line); padding: 2.4rem 0;
  transition: opacity .4s;
}
.portal:hover { opacity: .68; }
.portal .p-index {
  font-family: 'DM Mono', monospace; font-size: var(--fs-micro);
  letter-spacing: .2em; color: var(--muted);
}
.portal .p-title {
  font-family: 'Cormorant Garamond', serif; font-size: var(--fs-lg);
  font-weight: 300; color: var(--ink); margin: .6rem 0 .4rem;
}
.portal .p-q {
  font-family: 'Cormorant Garamond', serif; font-style: italic;
  font-size: var(--fs-md); color: var(--accent);
}
.portal .p-go {
  font-family: 'DM Mono', monospace; font-size: var(--fs-label);
  letter-spacing: .15em; color: var(--muted); text-transform: uppercase;
  margin-top: 1rem; display: inline-block;
}

/* ── 占位符（按最终比例设计，非丑灰块） ── */
.ph {
  position: relative; overflow: hidden;
  background:
    linear-gradient(135deg, var(--warm) 0%, var(--line) 100%);
  display: flex; align-items: center; justify-content: center;
}
.ph::after {
  content: attr(data-label);
  font-family: 'DM Mono', monospace; font-size: var(--fs-micro);
  letter-spacing: .08em; color: var(--muted); text-align: center;
  padding: 1.2rem; text-transform: uppercase; line-height: 1.6;
  max-width: 90%;
}
.ph--photo  { aspect-ratio: 4 / 5; }
.ph--wide   { aspect-ratio: 16 / 9; }
.ph--square { aspect-ratio: 1 / 1; }
.ph--tall   { aspect-ratio: 3 / 4; }
.ph--cover  { aspect-ratio: 21 / 9; }
.ph.dark { background: linear-gradient(135deg, #2a2620, #1a1814); }
.ph.dark::after { color: rgba(247,245,240,.45); }

/* ── Lens：私人摄影展 / 展览动线（摄影书叙事） ── */

/* Opening Scene — 全屏巨图 + 极简题词 */
.lens-open {
  position: relative; min-height: calc(100svh - 72px);
  display: flex; align-items: flex-end; overflow: hidden;
  background: var(--ink);
}
.lens-open-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; display: block;
  animation: lensKen 24s ease-out forwards;
}
@keyframes lensKen { from { transform: scale(1.06); } to { transform: scale(1); } }
.lens-open-veil {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(26,24,20,.72) 0%, rgba(26,24,20,.16) 42%, rgba(26,24,20,0) 70%);
}
.lens-open-text { position: relative; z-index: 2; padding: var(--pad-x); max-width: 48rem; }
.lens-open-title {
  font-family: 'Cormorant Garamond', serif; font-weight: 200;
  font-size: var(--fs-mega); line-height: .98; color: #f7f5f0; letter-spacing: .01em;
}
.lens-open-poem {
  font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 300;
  font-size: var(--fs-lg); color: rgba(247,245,240,.92); line-height: 1.5; margin-top: 1.4rem;
}
.lens-open-cue {
  position: absolute; bottom: 2.2rem; right: var(--pad-x); z-index: 2;
  font-family: 'DM Mono', monospace; font-size: var(--fs-micro);
  letter-spacing: .24em; text-transform: uppercase; color: rgba(247,245,240,.72);
  animation: lensCue 3.4s ease-in-out infinite;
}
@keyframes lensCue { 0%,100% { transform: translateY(0); opacity:.72; } 50% { transform: translateY(6px); opacity:.4; } }

/* 展览主体 */
.exhibit { max-width: var(--maxw); margin: 0 auto; }

/* 章节（情绪，不是标签） */
.chapter { max-width: var(--maxw); margin: 0 auto; padding: 8.5rem var(--pad-x); }
.chapter + .chapter { border-top: 1px solid var(--line); }
.chapter-mark {
  font-family: 'DM Mono', monospace; font-size: 0.74rem;
  letter-spacing: .32em; text-transform: uppercase; color: var(--accent);
  display: flex; align-items: center; gap: .9rem;
}
.chapter-mark::before {
  content: ''; width: 2.4rem; height: 1px; background: var(--accent); opacity: .55;
}
.chapter-title {
  font-family: 'Cormorant Garamond', serif; font-weight: 300;
  font-size: var(--fs-xl); line-height: 1.12; color: var(--ink);
  margin-top: 1.4rem; letter-spacing: .005em;
}
.chapter-quote {
  font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 300;
  font-size: clamp(1.5rem, 2.6vw, 2rem); color: var(--ink); line-height: 1.55;
  max-width: 20em; margin: 3.2rem 0 2.8rem;
}

/* 单帧照片 */
.plate { margin: 0; overflow: hidden; background: var(--warm); }
.plate img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 1.6s ease; }
.plate:hover img { transform: scale(1.025); }
.plate--giant   { aspect-ratio: 2 / 1; }
.plate--wide    { aspect-ratio: 16 / 9; }
.plate--tall    { aspect-ratio: 3 / 4; }
.plate--square  { aspect-ratio: 1 / 1; }
.plate--portrait{ aspect-ratio: 4 / 5; }

/* 小图组合（错落留白，不是网格） */
.plate-group { display: grid; gap: 3.2rem; align-items: end; margin-top: 3rem; }
.plate-group--2a { grid-template-columns: 1.35fr 1fr; }
.plate-group--2b { grid-template-columns: 1fr 1.35fr; }
.plate-group--3  { grid-template-columns: 1fr 1fr 1fr; gap: 2.4rem; }

/* 图注：只显示 标题 + 一句观察（不显示地点/日期/相机）
   左侧细竖线锚定，像美术馆展签；字号明显小于章节文字，让照片成为主角 */
.cap { position: relative; margin-top: 1.2rem; padding-left: 1.1rem; }
.cap::before {
  content: ''; position: absolute; left: 0; top: .35rem; bottom: .35rem;
  width: 2px; background: var(--accent); opacity: .55;
}
.cap-title {
  display: block; font-family: 'Cormorant Garamond', 'Noto Serif SC', serif;
  font-weight: 500; font-size: 1.2rem; color: var(--ink); line-height: 1.35;
}
.cap-note {
  display: block; font-family: 'Cormorant Garamond', 'Noto Serif SC', serif;
  font-size: 0.95rem; color: var(--muted); margin-top: .5rem;
  line-height: 1.6; max-width: 32em;
}

/* 中文在斜体容器中强制正体（中文无斜体设计，合成斜体不美） */
.chapter-quote .lang-zh,
.lens-open-poem .lang-zh,
.lens-outro p .lang-zh { font-style: normal; }

/* 收束 */
.lens-outro { max-width: var(--maxw); margin: 0 auto; padding: 9rem var(--pad-x) 11rem; text-align: center; }
.lens-outro p {
  font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 300;
  font-size: var(--fs-lg); color: var(--ink); line-height: 1.6; max-width: 24em; margin: 0 auto;
}
.lens-outro a {
  display: inline-block; margin-top: 2.4rem;
  font-family: 'DM Mono', monospace; font-size: var(--fs-label);
  letter-spacing: .18em; text-transform: uppercase; color: var(--accent);
  text-decoration: none; border-bottom: 1px solid var(--accent); padding-bottom: .3rem;
}


/* ── Lens V2：摄影展概览（参考图 1） ── */

.lens-hero {
  position: relative;
  min-height: 100vh;
  display: grid;
  grid-template-columns: 36% 1fr;
  background: var(--paper);
}
.lens-hero-text {
  position: relative;
  padding: calc(4rem + 72px) var(--pad-x) var(--pad-x);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.lens-hero-title {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 200;
  font-size: clamp(4.2rem, 9.5vw, 8.5rem);
  line-height: 0.92;
  letter-spacing: 0.02em;
  color: var(--ink);
}
.lens-hero-poem {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 300;
  font-size: var(--fs-md);
  color: var(--ink);
  opacity: 0.82;
  line-height: 1.55;
  max-width: 18em;
  margin-top: 1.4rem;
}
.lens-hero-poem .lang-zh { font-style: normal; }
.lens-hero-side {
  position: absolute;
  left: var(--pad-x);
  bottom: var(--pad-x);
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-micro);
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--muted);
}
.lens-hero-img {
  width: 100%;
  height: 100vh;
  object-fit: cover;
  display: block;
}

/* Series list */
.lens-series-list { background: var(--paper); }

.series-row {
  display: flex;
  gap: 4rem;
  padding: 5.5rem var(--pad-x);
  border-top: 1px solid var(--line);
  text-decoration: none;
  color: inherit;
  transition: background 0.45s ease;
}
.series-row:hover { background: rgba(255,255,255,0.45); }
.series-row:nth-child(even) { flex-direction: row-reverse; }

.series-meta {
  width: 30%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  flex-shrink: 0;
}
.series-num {
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-micro);
  letter-spacing: 0.28em;
  color: var(--accent);
  text-transform: uppercase;
  margin-bottom: 1rem;
}
.series-title {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 300;
  font-size: var(--fs-xl);
  line-height: 1.05;
  color: var(--ink);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.series-quote {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 300;
  font-size: var(--fs-note);
  color: var(--muted);
  line-height: 1.7;
  max-width: 24em;
  margin: 1.2rem 0 1.6rem;
}
.series-quote .lang-zh { font-style: normal; }
.series-go {
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-label);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink);
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  transition: color 0.3s;
}
.series-row:hover .series-go { color: var(--accent); }

.series-collage {
  flex: 1;
  display: grid;
  gap: 1.4rem;
  align-items: stretch;
  min-height: 420px;
}

.tile {
  margin: 0;
  overflow: hidden;
  background: var(--warm);
  position: relative;
}
.tile img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 1.2s ease;
}
.tile:hover img { transform: scale(1.03); }

/* LIGHT collage：大图左 + 两小右 */
.series-collage--light {
  grid-template-columns: 1.6fr 1fr;
  grid-template-rows: 1fr 1fr;
}
.series-collage--light .tile:first-child { grid-row: 1 / 3; }

/* EARTH collage：大图左 + 竖图右 */
.series-collage--earth {
  grid-template-columns: 1.6fr 1fr;
  grid-template-rows: 1fr;
}

/* MOMENTS collage：高左 + 中 + 大右 */
.series-collage--moments {
  grid-template-columns: 1fr 1fr 1.5fr;
  grid-template-rows: 1fr 1fr;
}
.series-collage--moments .tile:nth-child(1) { grid-row: 1 / 3; }
.series-collage--moments .tile:nth-child(3) { grid-row: 1 / 3; }

/* PEOPLE collage：左双小图 + 中间文字 + 右大图 */
.series-row--people {
  display: grid;
  grid-template-columns: 1fr 28% 1fr;
  gap: 1.6rem;
  align-items: stretch;
}
.series-row--people .series-collage-left {
  display: grid;
  grid-template-rows: 1fr 1fr;
  gap: 1.4rem;
}
.series-row--people .series-meta {
  width: auto;
  text-align: center;
  align-items: center;
}
.series-row--people .tile--right {
  height: 100%;
}

/* ── Series Detail Pages（参考图 2-4） ── */

.series-hero {
  position: relative;
  min-height: 92vh;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
}
.series-hero-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
}
.series-hero-veil {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(to top, rgba(26,24,20,0.58) 0%, rgba(26,24,20,0.15) 50%, rgba(26,24,20,0) 78%);
  z-index: 1;
}
.series-hero-inner {
  position: relative;
  z-index: 2;
  width: 100%;
  padding: var(--pad-x);
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 2rem;
}
.series-hero-label {
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-micro);
  letter-spacing: 0.22em;
  color: rgba(247,245,240,0.65);
  text-transform: uppercase;
}
.series-hero-title {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 200;
  font-style: italic;
  font-size: clamp(3.8rem, 9.5vw, 8rem);
  color: #f7f5f0;
  line-height: 0.95;
  margin-top: 0.6rem;
}
.series-hero-desc {
  max-width: 340px;
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: var(--fs-note);
  color: rgba(247,245,240,0.82);
  line-height: 1.7;
  text-align: right;
}
.series-hero-desc .lang-zh { font-style: normal; }
.series-hero-scroll {
  position: absolute;
  bottom: 2.2rem;
  right: var(--pad-x);
  z-index: 2;
  width: 44px;
  height: 44px;
  border: 1px solid rgba(247,245,240,0.35);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: border-color 0.3s, background 0.3s;
}
.series-hero-scroll:hover {
  background: rgba(26,24,20,0.25);
  border-color: rgba(247,245,240,0.55);
}
.series-hero-scroll span {
  width: 8px;
  height: 8px;
  border-right: 1px solid rgba(247,245,240,0.75);
  border-bottom: 1px solid rgba(247,245,240,0.75);
  transform: rotate(45deg) translateY(-2px);
}

/* Editorial split */
.series-editorial {
  display: grid;
  grid-template-columns: 55% 45%;
  min-height: 80vh;
}
.series-editorial-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.series-editorial-panel {
  background: var(--warm);
  padding: var(--pad-x);
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.sep-label {
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-micro);
  letter-spacing: 0.22em;
  color: var(--accent);
  text-transform: uppercase;
}
.sep-title {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 300;
  font-size: var(--fs-xl);
  line-height: 1.12;
  color: var(--ink);
  margin: 1.2rem 0;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
.sep-text {
  font-size: var(--fs-body);
  color: var(--ink);
  opacity: 0.85;
  line-height: 2;
  max-width: 34em;
}
.sep-text .lang-zh { font-style: normal; }
.sep-back {
  margin-top: 2.2rem;
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-label);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink);
  text-decoration: none;
  border-bottom: 1px solid var(--accent);
  padding-bottom: 3px;
  display: inline-block;
  width: max-content;
  transition: color 0.3s;
}
.sep-back:hover { color: var(--accent); }

/* Gallery grid */
.series-gallery {
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 7rem var(--pad-x);
}
.sg-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.6rem;
}
.sg-item {
  margin: 0;
  position: relative;
  overflow: hidden;
  background: var(--warm);
}
.sg-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 1s ease;
}
.sg-item:hover img { transform: scale(1.03); }
.sg-item.wide { grid-column: span 2; }
.sg-item.tall { grid-row: span 2; }
.sg-cap {
  padding: 1rem 0 0;
}
.sg-cap-title {
  display: block;
  font-family: 'Cormorant Garamond', 'Noto Serif SC', serif;
  font-weight: 500;
  font-size: 1.1rem;
  color: var(--ink);
  line-height: 1.35;
}
.sg-cap-note {
  display: block;
  font-family: 'Cormorant Garamond', 'Noto Serif SC', serif;
  font-size: 0.9rem;
  color: var(--muted);
  margin-top: 0.35rem;
  line-height: 1.55;
  max-width: 32em;
}
.sg-cap-note .lang-zh,
.sg-cap-title .lang-zh { font-family: 'Noto Serif SC', serif; }

/* ── Projects ── */
.project { max-width: var(--maxw); margin: 0 auto; }
.project .p-visual {
  width: 100%; aspect-ratio: 16 / 9; margin-bottom: 2.5rem;
}
.project .p-name {
  font-family: 'Cormorant Garamond', serif; font-weight: 300;
  font-size: var(--fs-xl); color: var(--ink);
}
.project .p-line {
  font-family: 'Cormorant Garamond', serif; font-style: italic;
  font-size: var(--fs-md); color: var(--accent); max-width: 24em;
  margin: 1rem 0 2rem; line-height: 1.5;
}
.project .p-actions { display: flex; gap: 2rem; flex-wrap: wrap; }
.behind { margin-top: 5rem; border-top: 1px solid var(--line); padding-top: 3rem; }
.behind .b-act { margin-bottom: 2.6rem; }
.behind .b-label {
  font-family: 'DM Mono', monospace; font-size: var(--fs-label);
  letter-spacing: .22em; text-transform: uppercase; color: var(--accent);
}
.behind .b-text {
  font-size: var(--fs-body); max-width: 40rem; margin-top: .9rem;
  line-height: 2; color: var(--ink); opacity: .85;
}

/* ── About：Why Sophia? 五幕 ── */
.act {
  min-height: 92vh; display: flex; flex-direction: column;
  justify-content: center; padding: 8rem var(--pad-x);
  position: relative; overflow: hidden;
}
.act .act-q {
  font-family: 'Cormorant Garamond', serif; font-style: italic;
  font-weight: 300; font-size: var(--fs-lg); line-height: 1.5;
  color: var(--ink); max-width: 20em;
}
.act .act-small {
  font-family: 'DM Mono', monospace; font-size: var(--fs-note);
  letter-spacing: .04em; color: var(--muted); margin-top: 1.4rem; max-width: 30em;
}
.bg-s {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%);
  font-family: 'Cormorant Garamond', serif; font-style: italic;
  font-size: clamp(22rem, 46vw, 44rem); line-height: .8;
  color: var(--ink); opacity: .04; pointer-events: none; z-index: 0; user-select: none;
}
.act-tight { position: relative; z-index: 2; }

/* Act III — Wisdom 叠层（philosophia 意象底图） */
.wisdom-act { position: relative; overflow: hidden; }
.wisdom-visual {
  position: absolute; inset: 0; z-index: 0;
  background: url('../images/philosophia.webp') center 42% / contain no-repeat;
  opacity: .16;
  pointer-events: none;
  mask-image: radial-gradient(ellipse at center, rgba(0,0,0,1) 0%, rgba(0,0,0,0) 72%);
  -webkit-mask-image: radial-gradient(ellipse at center, rgba(0,0,0,1) 0%, rgba(0,0,0,0) 72%);
}
.wisdom-stack {
  position: relative; z-index: 1;
  text-align: center; max-width: 760px; margin: 0 auto;
  padding: 2rem;
}
.wisdom-stack .w {
  font-family: 'Cormorant Garamond', serif; font-weight: 300;
  font-size: var(--fs-xl); line-height: 1.35; color: var(--ink);
}
.wisdom-stack .w small {
  display: block; font-family: 'DM Mono', monospace; font-size: var(--fs-micro);
  letter-spacing: .22em; color: var(--muted); text-transform: uppercase; margin-top: .5rem;
}
.wisdom-stack .arrow { color: var(--muted); font-size: var(--fs-md); margin: 1.4rem 0; }
.wisdom-stack .w.em { color: var(--accent); font-style: italic; }

/* Act IV — 碎片（看似无关，故意） */
.fragments {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 2.6rem; margin-top: 3.5rem; max-width: var(--maxw);
}
.frag { display: flex; flex-direction: column; }
.frag:nth-child(3n+2) { margin-top: 3rem; }
.frag:nth-child(3n)   { margin-top: 1.4rem; }
.frag .f-cap {
  font-family: 'DM Mono', monospace; font-size: var(--fs-micro);
  letter-spacing: .06em; color: var(--muted); margin-top: .8rem; line-height: 1.5;
}
.frag.wide { grid-column: span 2; }

/* Act V — 收束 */
.act-v .camus {
  font-family: 'Noto Serif SC', serif; font-weight: 400;
  font-size: var(--fs-quote); color: var(--accent); line-height: 1.8;
  max-width: 30em; margin: 0 auto; text-align: center;
}
.act-v .camus small {
  display: block; font-family: 'DM Mono', monospace; font-size: var(--fs-note);
  color: var(--muted); margin-top: 1rem; letter-spacing: .04em;
}
.act-v .final {
  font-family: 'Cormorant Garamond', serif; font-style: italic;
  font-size: var(--fs-lg); color: var(--ink); text-align: center;
  max-width: 18em; margin: 3.5rem auto 0; line-height: 1.5;
}

@media (max-width: 760px) {
  .fragments { grid-template-columns: 1fr; gap: 2rem; }
  .frag:nth-child(n) { margin-top: 0; }
  .frag.wide { grid-column: span 1; }
}

/* ── About：第四幕三联插图 ── */
.ab-triptych {
  display: grid;
  grid-template-columns: 1fr 1.65fr 1fr;
  align-items: start;
  gap: 1.6rem;
  margin-top: 3.8rem;
}
.ab-tri-item { margin: 0; }
.ab-tri-frame {
  position: relative;
  overflow: hidden;
  background: #e8e4dc;
}
.ab-tri-left .ab-tri-frame,
.ab-tri-right .ab-tri-frame { aspect-ratio: 4 / 5; }
.ab-tri-center .ab-tri-frame { aspect-ratio: 3 / 2; }
.ab-tri-frame img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 1.1s cubic-bezier(.2,.8,.2,1);
}
.ab-tri-item:hover .ab-tri-frame img { transform: scale(1.04); }
.ab-tri-item figcaption {
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-micro);
  letter-spacing: .06em;
  color: var(--muted);
  margin-top: .9rem;
  line-height: 1.5;
}
.ab-tri-id {
  color: var(--accent);
  margin-right: .55rem;
}

@media (max-width: 760px) {
  .ab-triptych {
    grid-template-columns: 1fr;
    gap: 2.2rem;
    margin-top: 3rem;
  }
  .ab-tri-left .ab-tri-frame,
  .ab-tri-right .ab-tri-frame { aspect-ratio: 4 / 5; }
  .ab-tri-center .ab-tri-frame { aspect-ratio: 3 / 2; }
}

/* ── Letter 详情页：展览式布局（参考摄影师个站） ── */
.letter-exhibit { padding-bottom: 0; }

/* 顶部 full-width 大图 */
.le-hero {
  width: 100%;
  height: 78vh;
  min-height: 420px;
  max-height: 900px;
  position: relative;
  overflow: hidden;
  background: #e8e4dc;
}
.le-hero-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.le-hero.le-missing,
.le-editorial-left.le-missing,
.le-editorial-right.le-missing {
  background: repeating-linear-gradient(45deg, #ece7df, #ece7df 10px, #e8e4dc 10px, #e8e4dc 20px);
}

/* 中间编辑分屏：左小图 + 文字 + 右大竖图 */
.le-editorial {
  display: grid;
  grid-template-columns: 1fr 1.55fr 1fr;
  align-items: start;
  gap: 2.6rem;
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 5rem var(--pad-x) 4rem;
}
.le-editorial-left,
.le-editorial-right {
  margin: 0;
  position: relative;
  overflow: hidden;
  background: #e8e4dc;
}
.le-editorial-left { aspect-ratio: 4 / 3; margin-top: 4.5rem; }
.le-editorial-right { aspect-ratio: 4 / 5; }
.le-editorial-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 1.1s cubic-bezier(.2,.8,.2,1);
}
.le-editorial-left:hover .le-editorial-img,
.le-editorial-right:hover .le-editorial-img { transform: scale(1.04); }

.le-editorial-text { padding: 0 .5rem; }
.le-num {
  display: block;
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-micro);
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 1.2rem;
}
.le-title {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 300;
  font-size: clamp(2.2rem, 5vw, 3.6rem);
  line-height: 1.1;
  color: var(--ink);
  margin: 0 0 1.8rem;
}
.le-title .lang-zh,
.le-title .lang-ru { font-style: normal; }
.le-body {
  font-family: 'Noto Serif SC', serif;
  font-weight: 300;
  font-size: var(--fs-body);
  line-height: 1.9;
  color: var(--ink);
}
.le-body p { margin: 0 0 1.4rem; }
.le-body p:last-child { margin-bottom: 0; }

/* 底部画廊 */
.le-gallery-section {
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 2rem var(--pad-x) 5rem;
}
.le-gallery {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.6rem;
}
.le-gallery .g-item { margin: 0; }
.le-gallery .g-item:nth-child(1) { grid-column: span 2; }
.le-gallery .g-item:nth-child(4n) { grid-column: span 2; }
.le-gallery .g-frame {
  position: relative;
  overflow: hidden;
  background: #e8e4dc;
  aspect-ratio: 3 / 2;
}
.le-gallery .g-item.is-portrait .g-frame { aspect-ratio: 3 / 4; }
.le-gallery .g-frame img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 1.1s cubic-bezier(.2,.8,.2,1);
}
.le-gallery .g-item:hover .g-frame img { transform: scale(1.04); }
.le-gallery .g-cap {
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-micro);
  letter-spacing: .03em;
  color: var(--muted);
  margin-top: .85rem;
  line-height: 1.55;
}
.le-gallery .g-cap .g-id { color: var(--accent); margin-right: .45rem; }

/* 底部导航 */
.le-nav {
  display: flex;
  justify-content: space-between;
  gap: 1.5rem;
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 2.5rem var(--pad-x) 5rem;
  border-top: 1px solid rgba(0,0,0,.08);
}
.le-nav a {
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-micro);
  letter-spacing: .06em;
  color: var(--ink);
  text-decoration: none;
  transition: color .25s ease;
}
.le-nav a:hover { color: var(--accent); }

@media (max-width: 760px) {
  .le-hero { height: 52vh; min-height: 280px; }
  .le-editorial {
    grid-template-columns: 1fr;
    gap: 2.4rem;
    padding: 3rem var(--pad-x) 2.5rem;
  }
  .le-editorial-left,
  .le-editorial-right { margin-top: 0; }
  .le-editorial-left { aspect-ratio: 3 / 2; }
  .le-editorial-right { aspect-ratio: 3 / 4; }
  .le-title { font-size: clamp(1.9rem, 8vw, 2.6rem); }
  .le-gallery { grid-template-columns: 1fr; gap: 2rem; }
  .le-gallery .g-item:nth-child(1),
  .le-gallery .g-item:nth-child(4n) { grid-column: span 1; }
  .le-gallery .g-frame { aspect-ratio: 3 / 2; }
  .le-gallery .g-item.is-portrait .g-frame { aspect-ratio: 3 / 4; }
  .le-nav {
    flex-direction: column;
    align-items: flex-start;
    gap: .8rem;
    padding: 2rem var(--pad-x) 3.5rem;
  }
}

/* ── Journal：思想星图（SVG constellation） ── */
/* 进入 Journal 的第一视觉 = 会呼吸的星图；文字标浮在星图左上角，安静不抢 */
.jr-hero { min-height: 30vh; padding-bottom: 1.5rem; }
.jr-hero-label {
  position: relative; z-index: 5;
  max-width: var(--maxw); margin: 0 auto; padding: 1.6rem var(--pad-x) 1.2rem;
  pointer-events: none;
}
.jr-hero-label .eyebrow {
  font-family: 'DM Mono', monospace; font-size: var(--fs-micro);
  letter-spacing: .22em; text-transform: uppercase; color: var(--accent);
  margin: 0 0 .8rem;
}
.jr-hero-label .j-title {
  font-family: 'Cormorant Garamond', serif; font-weight: 300;
  font-size: var(--fs-xl); color: var(--ink); line-height: 1.1;
}
.jr-hero-label .j-lead {
  font-family: 'Cormorant Garamond', serif; font-style: italic;
  font-weight: 300; font-size: var(--fs-md); color: var(--ink);
  max-width: 28em; margin-top: .9rem; line-height: 1.6; opacity: .9;
}
.jr-hero-label .j-sub {
  font-family: 'DM Mono', monospace; font-size: var(--fs-label);
  letter-spacing: .22em; text-transform: uppercase; color: var(--muted);
  margin-top: 1rem;
}

/* 星图容器：紧凑、可呼吸 */
.constellation-wrap {
  position: relative; max-width: var(--maxw); margin: 0 auto;
  min-height: 52vh; max-height: 620px;
  padding: 0 var(--pad-x) 1rem;
}
.constellation-wrap::before {
  /* 极轻纸张颗粒 */
  content: ''; position: absolute; inset: 0; pointer-events: none; opacity: .5;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.035'/></svg>");
}
.constellation-svg {
  display: block; width: 100%; height: auto; max-height: 560px;
  overflow: visible;
}

/* 鼠标流动 canvas：全视口，精确跟随鼠标，事件穿透 */
.journal-cursor {
  position: fixed; inset: 0; z-index: 3;
  width: 100vw; height: 100vh;
  pointer-events: none;
}

/* 连线：Obsidian graph 风格，默认可见 */
.edge {
  stroke: var(--muted); stroke-width: .7; opacity: .16;
  transition: opacity .6s ease, stroke .6s ease;
}
.edge--keyword { stroke: #d8c8b4; opacity: .22; }
.edge--article { stroke: #c8a98a; opacity: .18; }
.edge.is-lit  { opacity: .6; stroke-width: 1.1; }
.edge.is-dim  { opacity: .04; }

/* 节点 */
.node { cursor: pointer; outline: none; transition: opacity .5s ease; }
.node .glow {
  opacity: .45; transform-box: fill-box; transform-origin: center;
  transform: scale(1); transition: opacity .5s ease, transform .5s ease;
}
.node .core { opacity: .9; transition: opacity .5s ease; }
.node .keyword-dot {
  fill: #b9a48a; opacity: .7;
  transition: opacity .5s ease, transform .5s ease, fill .5s ease;
  transform-box: fill-box; transform-origin: center;
}
.node-label {
  font-family: 'Cormorant Garamond', serif;
  pointer-events: none;
  transition: opacity .4s ease, fill .4s ease;
}
.node-label--article {
  font-style: italic; font-size: 14px; fill: var(--ink); opacity: .82;
}
.node-label--keyword {
  font-family: 'DM Mono', monospace; font-style: normal;
  font-size: 10px; letter-spacing: .06em;
  text-transform: uppercase; fill: #8f8276; opacity: .72;
}

.node.is-active .glow { opacity: .95; transform: scale(1.25); }
.node.is-active .core { opacity: 1; }
.node.is-active .node-label--article { opacity: 1; fill: var(--ink); }
.node.is-related .glow { opacity: .78; }
.node.is-related .core { opacity: 1; }
.node.is-related .keyword-dot { opacity: 1; fill: var(--accent); transform: scale(1.3); }
.node.is-related .node-label { opacity: .95; }
.node.is-dim { opacity: .22; }
.node.is-dim .node-label { opacity: .12; }
.node--unwritten .core { opacity: .5; }
.node--unwritten .glow { opacity: .25; }
.node--unwritten .node-label--article { opacity: .55; }
.node:focus-visible .glow { opacity: .95; transform: scale(1.25); }
.node:focus-visible .node-label--article { opacity: 1; }
.node:focus-visible .core { opacity: 1; }

/* 检索（Search / Tags） */
.node.is-match .glow { opacity: .9; }
.node.is-match .core { opacity: 1; }
.node.is-match .keyword-dot { opacity: 1; fill: var(--accent); transform: scale(1.3); }
.node.is-match .node-label { opacity: 1; }
.node.is-filtered { opacity: .1; }
.node.is-filtered .node-label { opacity: 0; }

/* Preview 卡 */
.constellation-preview {
  position: absolute; z-index: 20; max-width: 320px; width: max-content;
  background: rgba(247,245,240,.96); backdrop-filter: blur(3px);
  border: 1px solid var(--line); border-radius: 2px;
  padding: 1.4rem 1.5rem; box-shadow: 0 18px 40px -22px rgba(26,24,20,.45);
  opacity: 0; transform: translateY(6px); pointer-events: none;
  transition: opacity .4s ease, transform .4s ease;
}
.constellation-preview.is-open { opacity: 1; transform: none; pointer-events: auto; }
.constellation-preview .pv-title {
  font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 300;
  font-size: var(--fs-card); color: var(--ink); line-height: 1.3;
}
.constellation-preview .pv-meta {
  font-family: 'DM Mono', monospace; font-size: var(--fs-micro);
  letter-spacing: .1em; color: var(--muted); text-transform: uppercase;
  margin: .6rem 0 .8rem;
}
.constellation-preview .pv-excerpt {
  font-family: 'Noto Serif SC', serif; font-weight: 300; font-size: var(--fs-body);
  line-height: 1.8; color: var(--ink); opacity: .82; max-width: 26em;
}
.constellation-preview .pv-soon {
  font-family: 'Cormorant Garamond', serif; font-style: italic;
  font-size: var(--fs-note); color: var(--muted); margin-top: .9rem;
}
.constellation-preview .pv-action {
  display: inline-block; margin-top: 1rem;
  font-family: 'DM Mono', monospace; font-size: var(--fs-label);
  letter-spacing: .14em; text-transform: uppercase; color: var(--accent);
  text-decoration: none; border-bottom: 1px solid var(--accent); padding-bottom: 2px;
}
.constellation-preview .pv-action:hover { opacity: .65; }

/* ── 寻找：检索工具 ── */
.jr-find { max-width: var(--maxw); margin: 0 auto; padding-top: 1.4rem; }
.find-label {
  font-family: 'DM Mono', monospace; font-size: var(--fs-label);
  letter-spacing: .25em; text-transform: uppercase; color: var(--accent);
}
.find-row {
  display: flex; flex-wrap: wrap; gap: 1.4rem 2rem; align-items: center;
  margin-top: 1.4rem; border-bottom: 1px solid var(--line); padding-bottom: 1.6rem;
}
.find-search {
  flex: 1 1 260px; min-width: 220px;
  font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: var(--fs-md);
  color: var(--ink); background: transparent; border: none;
  border-bottom: 1px solid var(--line); padding: .5rem 0;
}
.find-search:focus { outline: none; border-bottom-color: var(--accent); }
.find-tags { display: flex; flex-wrap: wrap; gap: .6rem; }
.find-chip {
  font-family: 'DM Mono', monospace; font-size: var(--fs-micro); letter-spacing: .08em;
  text-transform: uppercase; color: var(--muted); background: var(--warm);
  border: 1px solid var(--line); border-radius: 999px; padding: .35rem .85rem;
  cursor: pointer; transition: color .3s, background .3s, border-color .3s;
}
.find-chip:hover { color: var(--ink); }
.find-chip.active { color: var(--paper); background: var(--accent); border-color: var(--accent); }
.find-note {
  font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: var(--fs-note);
  color: var(--muted); margin-top: 1.4rem;
}
.find-note a { color: var(--accent); text-decoration: none; border-bottom: 1px solid var(--accent); padding-bottom: 1px; }

/* ── Selected Stories：经典 editorial ── */
.selected { max-width: var(--maxw); margin: 2.4rem auto 0; }
.selected .sel-head {
  font-family: 'Cormorant Garamond', serif; font-weight: 300; font-size: var(--fs-xl);
  color: var(--ink); border-top: 1px solid var(--line); padding-top: 2.4rem;
}
.selected .sel-sub {
  font-family: 'DM Mono', monospace; font-size: var(--fs-label);
  letter-spacing: .22em; text-transform: uppercase; color: var(--accent); margin-top: .8rem;
}
.sel-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 3rem; margin-top: 3rem; }
.sel-item { display: block; text-decoration: none; color: inherit; }
.sel-item .sel-cover {
  width: 100%; aspect-ratio: 4 / 3; object-fit: cover;
  transition: opacity .5s ease;
}
.sel-item:hover .sel-cover { opacity: .85; }

/* 浏览全部文章：精选之后的入口 */
.browse-all { margin-top: 3rem; text-align: center; }
.browse-cta {
  display: inline-block;
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-label);
  letter-spacing: .22em; text-transform: uppercase;
  color: var(--accent); text-decoration: none;
  border: 1px solid var(--line);
  padding: .9rem 1.7rem; border-radius: 999px;
  transition: background .4s ease, color .4s ease, border-color .4s ease;
}
.browse-cta:hover { background: var(--accent); color: #fff; border-color: var(--accent); }
.sel-item .sel-type {
  font-family: 'DM Mono', monospace; font-size: var(--fs-label);
  letter-spacing: .2em; text-transform: uppercase; color: var(--muted); margin-top: 1.2rem;
}
.sel-item .sel-title {
  font-family: 'Cormorant Garamond', serif; font-weight: 300; font-size: var(--fs-lg);
  color: var(--ink); line-height: 1.25; margin: .7rem 0 .6rem; transition: color .3s;
}
.sel-item:hover .sel-title { color: var(--accent); }
.sel-item .sel-desc {
  font-family: 'Noto Serif SC', serif; font-weight: 300; font-size: var(--fs-body);
  line-height: 1.9; color: var(--ink); opacity: .82; max-width: 30em;
}
.sel-item .sel-go {
  font-family: 'DM Mono', monospace; font-size: var(--fs-label);
  letter-spacing: .14em; text-transform: uppercase; color: var(--accent);
  margin-top: 1rem; display: inline-block;
}
.browse-all {
  margin-top: 3.5rem; border-top: 1px solid var(--line); padding-top: 2.4rem;
  text-align: center;
}
.browse-all a {
  font-family: 'DM Mono', monospace; font-size: var(--fs-label);
  letter-spacing: .16em; text-transform: uppercase; color: var(--accent);
  text-decoration: none; border-bottom: 1px solid var(--accent); padding-bottom: 3px;
  transition: opacity .3s;
}
.browse-all a:hover { opacity: .6; }

/* ── Archive（Browse all stories） ── */
.archive { max-width: var(--maxw); margin: 0 auto; }
.archive .ar-controls {
  display: flex; flex-wrap: wrap; gap: 1.2rem 1.6rem; align-items: center;
  margin: 2.5rem 0 2.5rem; border-bottom: 1px solid var(--line); padding-bottom: 2rem;
}
.archive .ar-search {
  flex: 1 1 240px; min-width: 200px;
  font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: var(--fs-md);
  color: var(--ink); background: transparent; border: none;
  border-bottom: 1px solid var(--line); padding: .5rem 0;
}
.archive .ar-search:focus { outline: none; border-bottom-color: var(--accent); }
.archive .ar-filters { display: flex; flex-wrap: wrap; gap: .6rem; }
.archive .ar-chip {
  font-family: 'DM Mono', monospace; font-size: var(--fs-micro); letter-spacing: .1em;
  text-transform: uppercase; color: var(--muted); background: var(--warm);
  border: 1px solid var(--line); border-radius: 999px; padding: .35rem .85rem;
  cursor: pointer; transition: color .3s, background .3s, border-color .3s;
}
.archive .ar-chip:hover { color: var(--ink); }
.archive .ar-chip.active { color: var(--paper); background: var(--accent); border-color: var(--accent); }
.ar-list { display: flex; flex-direction: column; }
.ar-row {
  display: grid; grid-template-columns: 7rem 1fr auto; gap: 1.6rem; align-items: baseline;
  border-top: 1px solid var(--line); padding: 1.8rem 0; text-decoration: none; color: inherit;
  transition: opacity .3s;
}
.ar-row:hover { opacity: .62; }
.ar-row .ar-date {
  font-family: 'DM Mono', monospace; font-size: var(--fs-micro);
  letter-spacing: .1em; color: var(--muted);
}
.ar-row .ar-title {
  font-family: 'Cormorant Garamond', serif; font-weight: 300; font-size: var(--fs-md);
  color: var(--ink); line-height: 1.3;
}
.ar-row .ar-tags {
  font-family: 'DM Mono', monospace; font-size: var(--fs-micro);
  letter-spacing: .08em; color: var(--muted); text-align: right; max-width: 18rem;
}
.ar-row.is-soon .ar-title { color: var(--muted); font-style: italic; }
.ar-empty {
  font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: var(--fs-md);
  color: var(--muted); padding: 3rem 0; text-align: center;
}

@media (max-width: 720px) {
  .sel-grid { grid-template-columns: 1fr; gap: 2.6rem; }
  .ar-row { grid-template-columns: 1fr; gap: .4rem; }
  .ar-row .ar-tags { text-align: left; }
}

/* ── 滚动揭示动画（只服务叙事） ── */
.reveal { opacity: 0; transform: translateY(22px); transition: opacity .9s ease, transform .9s ease; }
.reveal.visible { opacity: 1; transform: none; }
@keyframes fadeUp { to { opacity: 1; transform: translateY(0); } }

/* ═══ 首页 Hero Slideshow：大图 + 大字 + 左右渐进切换 ═══ */
.hero-slideshow {
  position: relative;
  width: 100%;
  height: 100vh;
  min-height: 560px;
  overflow: hidden;
}

/* 轨道：所有幻灯片堆叠 */
.hs-track {
  position: relative;
  width: 100%;
  height: 100%;
}

/* 单张幻灯片：绝对定位全屏，默认透明/左偏移 */
.hs-slide {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  opacity: 0;
  visibility: hidden;
  transition: opacity 1.2s ease, visibility 1.2s ease;
  z-index: 1;
}
.hs-slide--active {
  opacity: 1;
  visibility: visible;
  z-index: 2;
}
.hs-slide--prev {
  opacity: 0;
  visibility: hidden;
  z-index: 0;
}

/* ── 背景图层（全屏 cover） ── */
.hs-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  transform: scale(1.04);
  transition: transform 8s ease-out;
}
.hs-slide--active .hs-bg {
  transform: scale(1);
}
/* 图片加载失败时显示占位 */
.hs-bg-fallback {
  display: none; /* 有背景图时隐藏；JS 检测失败后显示 */
}
.hs-bg--fallback .hs-bg-fallback {
  display: flex;
}

/* 单图 Hero：保留右侧悬崖的深沉，左侧天空不过度压暗 */
.hero-slideshow--single .hs-bg::after {
  content: '';
  position: absolute;
  inset: 0;
  background:
    linear-gradient(to right, rgba(247,245,240,.18) 0%, rgba(247,245,240,0) 42%, rgba(26,24,20,.22) 100%),
    linear-gradient(to top, rgba(26,24,20,.18) 0%, transparent 40%);
  pointer-events: none;
}

/* 三图交叉淡入 Hero（P194 / P284 / P308） */
.hero-crossfade {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  animation: heroFade 18s infinite;
  will-change: opacity;
}
.hero-crossfade:nth-child(1) { animation-delay: 0s; }
.hero-crossfade:nth-child(2) { animation-delay: 6s; }
.hero-crossfade:nth-child(3) { animation-delay: 12s; }
@keyframes heroFade {
  0%   { opacity: 0; }
  4%   { opacity: 1; }
  30%  { opacity: 1; }
  34%  { opacity: 0; }
  100% { opacity: 0; }
}

/* ── 文字内容区（左侧对齐，参考截图布局） ── */
.hs-content {
  position: relative;
  z-index: 3;
  max-width: 620px;
  padding: 0 var(--pad-x);
  transform: translateX(-30px);
  opacity: 0;
  transition: transform 1s cubic-bezier(.22,.9,.3,1), opacity 1s ease;
  transition-delay: .3s;
}
.hs-slide--active .hs-content {
  transform: none;
  opacity: 1;
}

/* 大标题（截图中的「此刻，我正拍下一道影子。」）— 深色，压在天光上 */
.hs-title {
  font-family: 'Noto Serif SC', serif;
  font-weight: 400;
  font-size: clamp(2rem, 5.5vw, 4.4rem);
  line-height: 1.32;
  color: var(--ink);
  margin-bottom: 1.6rem;
  letter-spacing: .03em;
}
:lang(en) .hs-title,
:lang(ru) .hs-title {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 300;
  font-style: italic;
}
.hs-title br { display: block; }

/* 副标题描述（「进入 Sophia 的世界 →」） */
.hs-sub {
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-note);
  letter-spacing: .16em;
  color: rgba(26,24,20,.65);
  text-transform: uppercase;
  margin-top: .5rem;
}

/* ── 右侧竖排诗意文字（截图：「思想是路 / 影像是诗」） ── */
.hs-accent {
  position: absolute;
  right: var(--pad-x);
  top: 28%;
  z-index: 3;
  writing-mode: vertical-rl;
  text-orientation: mixed;
  font-family: 'Noto Serif SC', serif;
  font-weight: 300;
  font-size: clamp(.62rem, 1vw, .82rem);
  letter-spacing: .35em;
  color: rgba(26,24,20,.55);
  line-height: 1.8;
  opacity: 0;
  transform: translateY(15px);
  transition: opacity 1s ease .7s, transform 1s ease .7s;
}
:lang(en) .hs-accent,
:lang(ru) .hs-accent {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 300;
  letter-spacing: .25em;
}
.hs-slide--active .hs-accent {
  opacity: 1;
  transform: none;
}
.hs-accent br { display: block; }

/* 单图 Hero 不需要箭头、点、滚动提示 */
.hero-slideshow--single .hs-arrow,
.hero-slideshow--single .hs-dots,
.hero-slideshow--single .hs-scroll-hint { display: none; }

/* ── 左右箭头 ── */
.hs-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;
  width: 44px;
  height: 44px;
  border: 1px solid rgba(247,245,240,.35);
  border-radius: 50%;
  background: rgba(26,24,20,.2);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  color: rgba(247,245,240,.75);
  font-size: 1.3rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all .35s ease;
  line-height: 1;
  padding: 0;
}
.hs-arrow:hover {
  background: rgba(26,24,20,.45);
  border-color: rgba(247,245,240,.55);
  color: #f7f5f0;
}
.hs-arrow--prev { left: 1.5rem; }
.hs-arrow--next { right: 1.5rem; }

/* ── 底部指示点 ── */
.hs-dots {
  position: absolute;
  bottom: 2.5rem;
  left: 50%;
  transform: translateX(-50%);
  z-index: 10;
  display: flex;
  gap: .65rem;
}
.hs-dot {
  width: 28px;
  height: 3px;
  border: none;
  border-radius: 2px;
  background: rgba(247,245,250,.3);
  cursor: pointer;
  padding: 0;
  transition: all .5s ease;
  position: relative;
}
.hs-dot:hover { background: rgba(247,245,250,.55); }
.hs-dot.active {
  background: rgba(247,245,250,.85);
  width: 40px;
}

/* 进度条动画（当前 slide 的 dot 自动缩短表示剩余时间） */
.hs-dot.active::after {
  content: '';
  position: absolute;
  right: 0;
  top: 0;
  height: 100%;
  width: 0;
  background: rgba(196,90,50,.7);
  border-radius: 2px;
  animation: hs-progress 7s linear forwards;
}
@keyframes hs-progress {
  from { width: 0%; }
  to   { width: 100%; }
}

/* ── 向下滚动提示 ── */
.hs-scroll-hint {
  position: absolute;
  bottom: 3rem;
  left: var(--pad-x);
  z-index: 5;
  display: flex;
  align-items: center;
  gap: 1rem;
  opacity: 0;
  animation: fadeUp 1s ease forwards 2s;
}
.hs-scroll-hint::before {
  content: '';
  width: 36px;
  height: 1px;
  background: rgba(247,245,240,.35);
}
.hs-scroll-hint span {
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-micro);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(247,245,240,.45);
}

/* ── 首页：三章节入口（横向三栏，贴截图版式：无卡片区，纯文字栏） ── */
.home-chapters {
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 5.5rem var(--pad-x);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 3.5rem;
  background: var(--paper);
}
.home-chapters .chapter {
  display: flex; flex-direction: column;
  padding: 1.2rem 0 0;
  text-decoration: none; color: inherit;
  background: transparent; border: none;
  transition: opacity .4s ease;
}
.home-chapters .chapter:hover {
  opacity: .72;
}
.home-chapters .ch-num {
  font-family: 'DM Mono', monospace; font-size: var(--fs-micro);
  letter-spacing: .22em; color: var(--muted); text-transform: uppercase;
}
.home-chapters .ch-title {
  font-family: 'Cormorant Garamond', serif; font-weight: 300;
  font-size: var(--fs-xl); line-height: 1.1; color: var(--ink);
  margin: 1.2rem 0 .7rem;
  text-transform: lowercase;
}
.home-chapters .ch-q {
  font-family: 'Noto Serif SC', serif; font-weight: 400;
  font-size: var(--fs-card); color: var(--accent);
  margin-bottom: .9rem; line-height: 1.4;
}
.home-chapters .ch-sub {
  font-family: 'Cormorant Garamond', serif; font-style: italic;
  font-weight: 300; font-size: var(--fs-note); color: var(--muted);
  line-height: 1.75; flex: 1;  /* 推箭头到底部 */
}
:lang(zh) .home-chapters .ch-sub {
  font-family: 'Noto Serif SC', serif; font-style: normal; font-weight: 300;
}
.home-chapters .ch-go {
  font-family: 'DM Mono', monospace; font-size: var(--fs-label);
  letter-spacing: .14em; text-transform: uppercase; color: var(--ink);
  margin-top: 2rem; transition: color .3s ease;
}
.home-chapters .chapter:hover .ch-go { color: var(--accent); }

/* 首页门户列表（保留兼容旧页引用） */
.portals { max-width: var(--maxw); margin: 0 auto; }
.portals .portal:last-of-type { border-bottom: 1px solid var(--line); }

/* Say Hello 收束 */
.say-section {
  padding: 9rem var(--pad-x); text-align: center;
  border-top: 1px solid var(--line);
}
.say-section .say-line {
  font-family: 'Cormorant Garamond', serif; font-style: italic;
  font-size: var(--fs-lg); color: var(--ink); line-height: 1.5;
  max-width: 20em; margin: 0 auto 2.4rem;
}
.say-link {
  font-family: 'DM Mono', monospace; font-size: var(--fs-label);
  letter-spacing: .15em; text-transform: uppercase; color: var(--accent);
  text-decoration: none; border-bottom: 1px solid var(--accent);
  padding-bottom: 3px; transition: opacity .3s;
}
.say-link:hover { opacity: .65; }

/* ── Letters from the World ── */
.letters-home .site-nav {
  background: rgba(247,245,240,.96);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.letters-hero {
  min-height: 100vh;
  display: grid;
  grid-template-columns: 55% 45%;
  background: var(--paper);
}
.letters-hero-wall {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: calc(5rem + 60px) 5rem 5rem;
  position: relative;
}
.letters-hero-label {
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-micro);
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 2rem;
}
.letters-hero-title {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 300;
  font-size: clamp(2.6rem, 5.5vw, 5rem);
  line-height: 1.05;
  color: var(--ink);
  margin-bottom: 1rem;
}
.letters-hero-sub {
  font-family: 'Noto Serif SC', serif;
  font-weight: 300;
  font-size: clamp(1.1rem, 2vw, 1.5rem);
  letter-spacing: .12em;
  color: var(--accent);
  margin-bottom: 3.5rem;
}
.letters-hero-quote {
  max-width: 460px;
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 300;
  font-size: clamp(1.05rem, 1.6vw, 1.35rem);
  line-height: 1.7;
  color: var(--muted);
  border-left: 1px solid var(--line);
  padding-left: 1.8rem;
}
:lang(zh) .letters-hero-quote {
  font-family: 'Noto Serif SC', serif;
  font-style: normal;
  font-size: clamp(1rem, 1.5vw, 1.2rem);
  line-height: 2;
}
.letters-hero-gallery {
  background: #12100d;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: calc(4rem + 60px) 3rem 4rem;
  position: relative;
}
.letters-hero-img {
  max-width: 82%;
  max-height: 68vh;
  object-fit: contain;
  border: 10px solid #0e0c0a;
  box-shadow: 0 30px 80px -30px rgba(0,0,0,.6);
}
.letters-hero-caption {
  position: absolute;
  right: 2.5rem;
  bottom: 2.5rem;
  font-family: 'DM Mono', monospace;
  font-size: .52rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: rgba(247,245,240,.35);
  writing-mode: vertical-rl;
  text-orientation: mixed;
}

/* 五封信列表 */
.letters-list {
  max-width: 1100px;
  margin: 0 auto;
  padding: 8rem var(--pad-x);
  background: var(--paper);
}
.letters-list-head {
  display: flex;
  align-items: baseline;
  gap: 1.5rem;
  margin-bottom: 4rem;
}
.letters-list-label {
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-micro);
  letter-spacing: .18em;
  color: var(--accent);
}
.letters-list-head h2 {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 300;
  font-size: var(--fs-xl);
  color: var(--ink);
}
:lang(zh) .letters-list-head h2 {
  font-family: 'Noto Serif SC', serif;
  font-weight: 400;
}
.letter-card {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: 3rem;
  padding: 3.2rem 0;
  border-top: 1px solid var(--line);
}
.letter-card:last-child { border-bottom: 1px solid var(--line); }
.letter-num {
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-label);
  letter-spacing: .1em;
  color: var(--accent);
  text-transform: uppercase;
}
.letter-title {
  margin-bottom: 1.4rem;
}
.letter-title span {
  display: block;
}
.letter-title .lang-en {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 300;
  font-size: var(--fs-lg);
  color: var(--ink);
  line-height: 1.2;
  margin-bottom: .35rem;
}
.letter-title .lang-zh {
  font-family: 'Noto Serif SC', serif;
  font-weight: 400;
  font-size: var(--fs-md);
  color: var(--muted);
}
.letter-title .lang-ru {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 300;
  font-size: var(--fs-note);
  color: var(--muted);
  margin-top: .5rem;
}
.letter-desc p {
  margin-bottom: 1rem;
}
.letter-desc .lang-en {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 400;
  font-size: 1.12rem;
  line-height: 1.8;
  color: var(--ink);
}
.letter-desc .lang-zh {
  font-family: 'Noto Serif SC', serif;
  font-weight: 300;
  font-size: 1.02rem;
  line-height: 2;
  color: var(--ink);
  opacity: .9;
}
.letter-desc .lang-ru {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 300;
  font-size: 1.05rem;
  line-height: 1.75;
  color: var(--muted);
}

.letters-outro {
  padding: 7rem var(--pad-x);
  text-align: center;
  background: var(--paper);
  border-top: 1px solid var(--line);
}
.letters-outro p {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 300;
  font-size: var(--fs-md);
  color: var(--muted);
  margin-bottom: 1.8rem;
}
:lang(zh) .letters-outro p {
  font-family: 'Noto Serif SC', serif;
  font-style: normal;
}
.letters-outro a {
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-label);
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--accent);
  text-decoration: none;
  border-bottom: 1px solid var(--accent);
  padding-bottom: 3px;
  transition: opacity .3s;
}
.letters-outro a:hover { opacity: .65; }

/* ── Letter detail (二级页) ── */
.letter-detail-hero {
  max-width: var(--maxw); margin: 0 auto;
  padding: calc(4rem + 60px) var(--pad-x) 2.5rem;
}
.letter-detail-num {
  font-family: 'DM Mono', monospace; font-size: var(--fs-micro);
  letter-spacing: .26em; text-transform: uppercase; color: var(--accent);
  display: block; margin-bottom: 1.3rem;
}
.letter-detail-title {
  font-family: 'Cormorant Garamond', serif; font-weight: 300;
  font-size: clamp(2rem, 6vw, 4.2rem); line-height: 1.08; color: var(--ink);
}
.letter-detail-title .lang-zh {
  font-family: 'Noto Serif SC', serif; font-weight: 400;
  font-size: clamp(1.3rem, 3.6vw, 2.2rem); display: block;
  margin-top: .7rem; color: var(--muted);
}
.letter-detail-title .lang-ru {
  display: block; font-style: italic; font-size: clamp(.95rem, 2.2vw, 1.5rem);
  margin-top: .4rem; color: var(--muted);
}
.letter-detail-body {
  max-width: var(--maxw); margin: 0 auto;
  padding: 1.5rem var(--pad-x) 5rem;
  display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; align-items: start;
}
.letter-detail-text p {
  font-family: 'Noto Serif SC', serif; font-weight: 300;
  font-size: var(--fs-md); line-height: 1.95; color: var(--ink); margin-bottom: 1.4rem;
}
.letter-detail-text .lang-en {
  font-family: 'Cormorant Garamond', serif; font-style: italic;
  font-size: var(--fs-lg); line-height: 1.7;
}
.letter-detail-text .lang-zh { font-style: normal; }
/* letter gallery — editorial single-column; base rules at ~line 1722 */
.letter-detail-nav {
  max-width: var(--maxw); margin: 0 auto;
  padding: 2rem var(--pad-x) 5rem;
  display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
  border-top: 1px solid var(--line);
}
.letter-detail-nav a {
  font-family: 'DM Mono', monospace; font-size: var(--fs-label);
  letter-spacing: .1em; text-transform: uppercase; color: var(--ink); text-decoration: none;
}
.letter-detail-nav a:hover { color: var(--accent); }
a.letter-card { text-decoration: none; color: inherit; cursor: pointer; }
a.letter-card:hover .letter-num { color: var(--accent); }
a.letter-card:hover .letter-title .lang-en { color: var(--accent); }

/* ── 主展画廊（数据驱动，letter 详情页） ── */
.letter-detail-gallery {
  max-width: 960px;
  margin: 3.4rem auto 1rem;
  padding: 0 var(--pad-x);
}
.g-item { margin: 0 0 4.8rem; }
.g-item.is-landscape { max-width: 960px; }
.g-item.is-portrait  { max-width: 540px; }
.g-item.is-square    { max-width: 720px; }
.g-item.is-opening,
.g-item.is-ending    { max-width: 1080px; }
.g-item.is-landscape,
.g-item.is-portrait,
.g-item.is-square,
.g-item.is-opening,
.g-item.is-ending    { margin-left: auto; margin-right: auto; }
.g-frame {
  position: relative;
  overflow: hidden;
  background: #ece7df;
}
.g-frame img {
  width: 100%; height: auto;
  object-fit: initial;
  display: block;
  transition: transform 1.4s cubic-bezier(.2,.8,.2,1), opacity .6s ease;
}
.g-item:hover .g-frame img { transform: scale(1.02); }
.g-frame.g-missing::after {
  content: attr(data-id) " · 待放入";
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  font-family: 'DM Mono', monospace;
  font-size: .72rem; letter-spacing: .16em;
  color: var(--muted);
}
.g-cap {
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-micro);
  letter-spacing: .03em;
  color: var(--muted);
  margin-top: 1.1rem;
  line-height: 1.65;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity .6s ease, transform .6s ease;
}
.g-item:hover .g-cap { opacity: 1; transform: none; }
.g-cap .g-id { color: var(--accent); margin-right: .5rem; }
/* opening / ending 仅以图注区分，不破坏无边框 editorial 调性 */

/* ── 精选 18（lens.html） ── */
.featured {
  max-width: var(--maxw);
  margin: 6rem auto 0;
  padding: 0 var(--pad-x);
}
.featured-head { margin-bottom: 2.6rem; }
.featured-label {
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-micro);
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--muted);
}
.featured-head h2 {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 300;
  font-style: italic;
  font-size: var(--fs-xl);
  color: var(--ink);
  margin-top: 1rem;
  line-height: 1.2;
}
.featured-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem 1.8rem;
}
.feat-item { text-decoration: none; color: inherit; display: block; }
.feat-item .g-frame { aspect-ratio: 4 / 5; }
.feat-item:hover .g-frame img { transform: scale(1.04); }
.feat-cap {
  font-family: 'DM Mono', monospace;
  font-size: var(--fs-micro);
  letter-spacing: .03em;
  color: var(--muted);
  margin-top: .85rem;
  line-height: 1.6;
  display: block;
}
.feat-cap .g-id { color: var(--accent); margin-right: .5rem; }

@media (max-width: 768px) {
  .letter-detail-gallery { grid-template-columns: 1fr; gap: 1.8rem; }
  .letter-detail-gallery .g-cap { opacity: 1; transform: none; }
  .featured { margin-top: 4rem; }
  .featured-grid { grid-template-columns: repeat(2, 1fr); gap: 1.4rem; }
}
@media (max-width: 480px) {
  .featured-grid { grid-template-columns: 1fr; }
}

/* ── Footer ── */
.site-footer {
  padding: 3rem var(--pad-x); border-top: 1px solid var(--line);
  display: flex; justify-content: space-between; align-items: center; gap: 1rem;
  flex-wrap: wrap;
}
.site-footer span, .site-footer a {
  font-family: 'DM Mono', monospace; font-size: var(--fs-micro);
  letter-spacing: .08em; color: var(--muted); text-decoration: none;
}
.site-footer a:hover { color: var(--accent); }

/* ── 响应式 ── */
@media (max-width: 900px) {
  :root { --pad-x: 2rem; --pad-y: 5rem; }
  .site-nav ul { gap: 1.3rem; }
  .site-nav ul a { font-size: .56rem; }
}
@media (max-width: 620px) {
  .site-nav { padding: 1.2rem 1.4rem; }
  .site-nav ul { display: none; }
  .site-nav .lang-switch { margin-left: auto; }

  /* Hero 封面 移动端 */
  .hero-slideshow { min-height: 480px; }
  .hs-content { max-width: 90%; padding: 0 1.8rem; }
  .hs-title { font-size: clamp(1.5rem, 7vw, 2.4rem); }
  .hs-sub { font-size: .62rem; letter-spacing: .1em; }
  .hs-accent { display: none; } /* 竖排文字移动端隐藏 */

  /* Journal 星图 */
  .jr-hero-label { position: static; max-width: none; margin-bottom: 1rem; text-shadow: none; padding-bottom: 0; }
  .constellation-wrap { min-height: 42vh; max-height: 420px; padding-bottom: .5rem; }
  .constellation-svg { max-height: 360px; }
  .node-label--article { font-size: 12px; }
  .node-label--keyword { font-size: 8px; }

  /* 首页章节：移动端单列 */
  .home-chapters { grid-template-columns: 1fr; gap: 2.4rem; padding: 3.5rem var(--pad-x); }
  .home-chapters .chapter { padding: 1rem 0 0; }
  .home-chapters .ch-go { margin-top: 1.6rem; }

  /* Lens 展览：移动端单列 */
  .lens-open { min-height: 78svh; }
  .lens-open-title { font-size: var(--fs-xl); }
  .lens-open-poem { font-size: var(--fs-md); }
  .lens-open-cue { display: none; }
  .chapter { padding: 5rem 1.6rem; }
  .chapter-title { font-size: var(--fs-lg); }
  .chapter-quote { font-size: var(--fs-md); margin: 2rem 0; }
  .plate-group { grid-template-columns: 1fr; gap: 2rem; }
  .plate--giant { aspect-ratio: 3 / 2; }
  .lens-outro { padding: 6rem 1.6rem 7rem; }

  /* Lens V2 移动端 */
  .lens-hero { grid-template-columns: 1fr; min-height: auto; }
  .lens-hero-text { padding: calc(4rem + 60px) 1.8rem 2.5rem; min-height: 60vh; }
  .lens-hero-side { display: none; }
  .lens-hero-img { height: 62vh; }
  .series-row,
  .series-row:nth-child(even),
  .series-row--people {
    flex-direction: column;
    display: flex;
    gap: 2.2rem;
    padding: 3.5rem 1.6rem;
  }
  .series-meta { width: 100%; }
  .series-title { font-size: var(--fs-lg); }
  .series-collage {
    min-height: auto;
    grid-template-columns: 1fr !important;
    grid-template-rows: auto !important;
  }
  .series-collage .tile { grid-row: auto !important; grid-column: auto !important; }
  .series-collage--moments,
  .series-collage--earth,
  .series-collage--light { grid-template-columns: 1fr; }
  .series-row--people .series-collage-left { grid-template-rows: auto; }

  /* Letters from the World 移动端 */
  .letters-hero { grid-template-columns: 1fr; min-height: auto; }
  .letters-hero-wall { padding: calc(4rem + 60px) 1.8rem 3rem; }
  .letters-hero-quote { max-width: none; }
  .letters-hero-gallery { padding: 0 1.8rem 3rem; background: var(--paper); }
  .letters-hero-img { max-width: 100%; max-height: 58vh; border: none; box-shadow: 0 18px 50px -24px rgba(0,0,0,.35); }
  .letters-hero-caption { display: none; }
  .letters-list { padding: 4rem var(--pad-x); }
  .letters-list-head { margin-bottom: 2.5rem; }
  .letter-card { grid-template-columns: 1fr; gap: 1rem; padding: 2.4rem 0; }
  .letter-num { font-size: var(--fs-micro); }
  .letter-title .lang-en { font-size: var(--fs-md); }
  .letters-outro { padding: 5rem var(--pad-x); }

  /* Letter detail 移动端 */
  .letter-detail-body { grid-template-columns: 1fr; gap: 2.5rem; }
  /* letter gallery is single-column editorial; no grid override */
  .letter-detail-title .lang-zh { font-size: 1.5rem; }
  a.letter-card:active { opacity: .85; }

  /* Series detail 移动端 */
  .series-hero-inner {
    flex-direction: column;
    align-items: flex-start;
    gap: 1.2rem;
    padding: 1.8rem;
  }
  .series-hero-desc { text-align: left; max-width: none; }
  .series-hero-scroll { right: 1.8rem; }
  .series-editorial { grid-template-columns: 1fr; min-height: auto; }
  .series-editorial-img { height: 52vh; }
  .series-editorial-panel { padding: 3rem 1.8rem; }
  .sg-grid { grid-template-columns: 1fr; }
  .sg-item.wide { grid-column: span 1; }
}

/* ── 减少动效偏好 ── */
@media (prefers-reduced-motion: reduce) {
  .layer-float { animation: none; }
  .layer-parallax { transition: none; transform: none !important; }
  .reveal { transition: none; opacity: 1; transform: none; }
  .plate img { transition: none; }
  .lens-open-img, .lens-open-cue { animation: none; }

  /* Hero */
  .hs-slide,
  .hs-bg,
  .hs-content,
  .hs-accent { transition: none !important; animation: none !important; }
  .hs-slide--active { opacity: 1; visibility: visible; }
  .hs-slide--active .hs-bg { transform: scale(1); }
  .hs-slide--active .hs-content { transform: none; opacity: 1; }
  .hs-slide--active .hs-accent { opacity: 1; transform: none; }
}
