/* ==========================================================================
   情满巴黎诗文选 · 电子书 —— 书页与正文版式
   设计画布：900 x 1273（A5 比例 1:1.414）
   ========================================================================== */

:root {
  --paper: #fdfbf6;
  --paper-edge: #f0e9dc;
  --ink: #2c2a26;
  --ink-soft: #6b6459;
  --ink-faint: #9a9186;
  --gold: #b09a72;
  --rule: #e6dfd2;
  --serif: "Source Han Serif SC", "Noto Serif SC", "Songti SC", "STSong",
           "SimSun", "宋体", "Nimbus Roman No9 L", serif;
  --kai: "Kaiti SC", "STKaiti", "KaiTi", "楷体", "Kaiti TC", "TW-Kai", serif;
  --sans: "PingFang SC", "Microsoft YaHei", "微软雅黑", "Hiragino Sans GB",
          "Helvetica Neue", Arial, sans-serif;
}

/* ---------------------------------------------------------------- 书页 */
.page {
  position: relative;
  width: 900px;
  height: 1273px;
  overflow: hidden;
  box-sizing: border-box;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--serif);
  padding: 66px 76px 78px;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

/* 纸张肌理：极淡的网点与边缘暗角，模拟胶版纸 */
.page::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 3;
  background-image:
    radial-gradient(140% 100% at 50% 50%,
      rgba(255, 255, 255, 0) 58%, rgba(120, 100, 70, 0.045) 100%),
    repeating-linear-gradient(0deg,
      rgba(120, 100, 70, 0.016) 0 1px, transparent 1px 3px),
    repeating-linear-gradient(90deg,
      rgba(120, 100, 70, 0.012) 0 1px, transparent 1px 4px);
}

/* 装订侧阴影由阅读器按左右页分别加类 */
.page.is-left::after,
.page.is-right::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  width: 42px;
  pointer-events: none;
  z-index: 4;
}
.page.is-left::after {
  right: 0;
  background: linear-gradient(to left, rgba(60, 45, 25, 0.085), transparent);
}
.page.is-right::after {
  left: 0;
  background: linear-gradient(to right, rgba(60, 45, 25, 0.085), transparent);
}

/* ---------------------------------------------------------------- 正文行
   版式约定：所有纵向间距一律用 padding（不用 margin），
   以避免外边距折叠使实际高度与分页计算产生偏差。                     */
.ln {
  font-size: 27px;
  line-height: 1.78;
  text-align: justify;
  text-align-last: justify;
  text-justify: inter-ideograph;
  overflow-wrap: break-word;
  word-break: normal;
}
.ln-end { text-align-last: left; }

/* 标点悬挂：行末标点以负外边距越出版心，既守避头点规则又不触发折行 */
.hang { margin-right: -1.02em; }

.blk { margin: 0; }
.blk.p { padding-bottom: 6px; }
.blk.p.cont { padding-bottom: 0; }   /* 段落跨页续排时不加段距 */
/* 段首缩进统一由样式施加，正文自身的前导空白已在生成时剥除。
   缩进加在带 pstart 类的「段落首行」上：该行无论落在页首、页中，
   还是跨页续排片段的中部，缩进都严格跟随段落本身，与分页模型一致。 */
.blk.p .ln.pstart { text-indent: 2em; }

.blk.h { padding: 16px 0 8px; }
.blk.h .ln {
  font-size: 30px;
  line-height: 1.5;
  font-weight: 700;
  text-align: center;
  text-align-last: center;
  letter-spacing: 0.06em;
  color: #55442f;
}

.blk.v { padding: 15px 0; font-family: var(--kai); }
.blk.v .ln {
  font-size: 28px;
  line-height: 1.9;
  text-align: center;
  text-align-last: center;
  letter-spacing: 0.06em;
  color: #3a3128;
}

.blk.n {
  padding: 8px 0 14px 1em;
  border-left: 2px solid #ece5d8;
  color: #736c60;
}
.blk.n .ln {
  font-size: 22px;
  line-height: 1.7;
  text-align: justify;
  text-align-last: left;
}

.blk.by {
  padding: 2px 0 12px;
  text-align: right;
  font-size: 23px;
  color: #6f6759;
  letter-spacing: 0.1em;
}
.blk.d {
  padding: 6px 0 8px;
  text-align: right;
  font-size: 23px;
  color: #6f6759;
  letter-spacing: 0.08em;
}
.blk.cap { padding: 8px 0 18px; text-align: center; color: #7c7468; }
.blk.cap .ln {
  font-size: 21px;
  line-height: 1.6;
  text-align: center;
  text-align-last: center;
  letter-spacing: 0.04em;
}

/* 图片用 box-shadow 做画框，不占布局尺寸，避免几何累计误差 */
/* line-height:0 消除行内替换元素基线下沉，使块高恰为 dh + 26 */
.blk.img { padding: 12px 0 14px; text-align: center; line-height: 0; }
.blk.img img {
  display: inline-block;
  max-width: 100%;
  height: auto;
  background: #fff;
  box-shadow: 0 0 0 5px #fff, 0 2px 9px rgba(80, 60, 30, 0.2);
}

/* ---------------------------------------------------------------- 文章页眉 */
.art-head {
  text-align: center;
  padding-bottom: 40px;
  border-bottom: 1px solid var(--rule);
  position: relative;
}
.art-head::after {
  content: "";
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: -1px;
  width: 64px;
  height: 2px;
  background: var(--gold);
}
.art-title {
  font-size: 36px;
  font-weight: 700;
  line-height: 1.4;
  color: #352d22;
  letter-spacing: 0.03em;
  text-align: center;
}
.art-meta {
  padding-top: 10px;
  font-size: 20px;
  line-height: 1.8;
  color: #8d8478;
  letter-spacing: 0.08em;
  font-family: var(--sans);
}
.art-meta span { margin: 0 9px; }
.art-meta .am-date { font-variant-numeric: tabular-nums; }

/* ---------------------------------------------------------------- 页码 */
.pg-num {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 36px;
  text-align: center;
  font-size: 15px;
  color: var(--ink-faint);
  letter-spacing: 0.14em;
  font-family: var(--sans);
  z-index: 5;
}

.pg-body { position: relative; height: 1129px; box-sizing: border-box; }

/* ================================================================ 封面 */
/* 封面铺满整页：阅读器对封面页用 .page.page-cover 取消页边距 */
.page.page-cover { padding: 0; }

.pg-cover {
  position: relative;
  box-sizing: border-box;
  width: 900px;
  height: 1273px;
  overflow: hidden;
  background: #efe8db;
  padding: 0;
}
.cv-art {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center 42%;
}
.cv-veil {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg,
      rgba(253, 250, 244, 0.96) 0%,
      rgba(253, 250, 244, 0.86) 20%,
      rgba(253, 250, 244, 0.40) 40%,
      rgba(253, 250, 244, 0) 56%);
}
.cv-card {
  position: absolute;
  left: 76px;
  right: 76px;
  top: 88px;
  text-align: center;
  color: #2b2519;
}
.cv-series {
  font-family: var(--sans);
  font-size: 17px;
  letter-spacing: 0.62em;
  color: #8a7a5c;
  text-indent: 0.62em;
}
.cv-rule {
  width: 66px;
  height: 1px;
  background: var(--gold);
  margin: 18px auto 22px;
}
.cv-cn {
  font-family: var(--sans);
  font-size: 20px;
  letter-spacing: 0.42em;
  text-indent: 0.42em;
  color: #7a6a50;
  margin-bottom: 10px;
}
.cv-name {
  font-size: 58px;
  font-weight: 700;
  letter-spacing: 0.15em;
  text-indent: 0.15em;
  line-height: 1.24;
  color: #241d13;
}
.cv-author {
  font-family: var(--sans);
  font-size: 19px;
  letter-spacing: 0.34em;
  text-indent: 0.34em;
  color: #6d5f47;
  margin-top: 32px;
}
.cv-foot {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 38px;
  text-align: center;
  font-family: var(--sans);
  font-size: 14px;
  letter-spacing: 0.2em;
  color: rgba(255, 255, 255, 0.92);
  text-shadow: 0 1px 6px rgba(40, 30, 15, 0.55);
  z-index: 5;
}

/* ================================================================ 卷首语 */
/* 素页只改变纵向留白：横向版心与正文页一致（748px），否则目录栏会被压窄 */
.pg-plain { padding: 26px 0 12px; }
.pf-wrap { position: relative; height: 100%; }
.pf-kicker {
  font-family: var(--sans);
  font-size: 15px;
  line-height: 1.6;
  letter-spacing: 0.5em;
  color: #a2946f;
  text-indent: 0.5em;
}
.pf-title {
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.6;
  letter-spacing: 0.4em;
  color: #8d8170;
  margin-top: 6px;
  text-indent: 0.4em;
}
.pf-name {
  font-size: 46px;
  font-weight: 700;
  letter-spacing: 0.16em;
  color: #2f281d;
  margin-top: 26px;
  line-height: 1.3;
}
.pf-rule {
  width: 100%;
  height: 1px;
  background: var(--rule);
  margin: 30px 0 30px;
}
.pf-head {
  font-family: var(--sans);
  font-size: 15px;
  line-height: 1.6;
  letter-spacing: 0.5em;
  color: #8d8170;
  margin-bottom: 22px;
  text-indent: 0.5em;
}
/* 卷首语为散文段落，左对齐；若继承 .ln 的 justify 会把单行拉成字距疏离 */
.pf-ln {
  font-size: 27px;
  line-height: 2.15;
  text-align: left;
  text-align-last: left;
  color: #3b3428;
}
.pf-first { text-indent: 2em; }
.pf-stat {
  position: absolute;
  bottom: 4px;
  left: 0;
  right: 0;
  text-align: center;
  font-family: var(--sans);
  font-size: 14px;
  line-height: 1.6;
  letter-spacing: 0.18em;
  color: #a9a094;
  border-top: 1px solid var(--rule);
  padding-top: 18px;
}

/* ================================================================ 目录 */
.toc-wrap { position: relative; height: 100%; }
.toc-title {
  font-size: 30px;
  line-height: 1.35;
  font-weight: 700;
  letter-spacing: 0.1em;
  color: #332b20;
  border-bottom: 2px solid var(--gold);
  padding-bottom: 14px;
  text-align: center;
}
.toc-title-cont {
  font-size: 22px;
  line-height: 1.35;
  border-bottom: 1px solid var(--rule);
}
.toc-sub {
  text-align: center;
  font-family: var(--sans);
  font-size: 14px;
  line-height: 1.6;
  letter-spacing: 0.6em;
  color: #a0968a;
  margin: 12px 0 26px;
  text-indent: 0.6em;
}
.toc-cols { display: flex; gap: 22px; }
.toc-col { flex: 1; min-width: 0; }
.toc-item {
  display: flex;
  align-items: baseline;
  font-size: 21px;
  line-height: 1.5;
  padding: 4.5px 0;
  border-bottom: 1px dotted #ece5d8;
  cursor: pointer;
}
.toc-item:hover .ti-t { color: #9a6b1f; }
.toc-item:hover .ti-p { color: #9a6b1f; }
/* 卷内最多 132 篇，须容三位数编号，否则会与标题贴连 */
.ti-no {
  flex: none;
  width: 36px;
  color: #a99c85;
  font-family: var(--sans);
  font-size: 16px;
  font-variant-numeric: tabular-nums;
}
/* 标题按内容取宽，仅在确实超出栏宽时才收缩并省略（不再硬性截断） */
.ti-t {
  flex: 0 1 auto;
  min-width: 0;
  color: #3b3428;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ti-d {
  flex: 1;
  border-bottom: 1px dotted #d8cfbd;
  margin: 0 4px 3px;
  min-width: 6px;
}
.ti-p {
  flex: none;
  color: #7d7263;
  font-family: var(--sans);
  font-size: 16px;
  font-variant-numeric: tabular-nums;
}

/* ================================================================ 版权页 */
.pg-plain.pg-colophon, .pg-colophon { padding: 0; }
.cb-wrap {
  position: absolute;
  left: 130px;
  right: 130px;
  top: 50%;
  transform: translateY(-50%);
  text-align: center;
}
.cb-line { font-size: 21px; color: #3b3428; margin: 10px 0; letter-spacing: 0.08em; }
.cb-line1 { font-size: 34px; font-weight: 700; letter-spacing: 0.2em; }
.cb-small { font-family: var(--sans); font-size: 15px; color: #6f6759; letter-spacing: 0.1em; }
.cb-rule { width: 90px; height: 1px; background: var(--gold); margin: 30px auto; }
.cb-note {
  font-size: 15px;
  line-height: 2;
  color: #857c6e;
  text-align: justify;
  text-indent: 2em;
  margin: 0 auto 26px;
  font-family: var(--sans);
}
.cb-end { margin-top: 22px; }
