/* ═══════════════════════════════════════════════════════════
   星寒连载小说 — 数据仓书架板块 + 单页阅读器 (仅 .nv-*)
   只依赖 book.css 变量与 .article-card / .ba-* 基样;
   自带 reveal / section-head / 按钮兜底, 不依赖 pragmata。
   ═══════════════════════════════════════════════════════════ */

/* ─── 兜底动画/排版 (book.css 单加载也成立) ─── */
/* 目录(.nv-vol)是功能内容, 永远即时可见, 绝不参与隐藏式 reveal(否则首屏下方目录会一直隐形) */
.nv-toc-head, .nv-toc-syn, .nv-vol, .nv-toc-index, .nv-chap-list, .nv-chap { opacity: 1 !important; }
.nv-toc-head.reveal, .nv-toc-syn.reveal {
  opacity: 0 !important; transform: translateY(16px);
  transition: opacity .65s ease, transform .65s cubic-bezier(.22,.61,.36,1);
}
.nv-toc-head.reveal.in, .nv-toc-syn.reveal.in { opacity: 1 !important; transform: none; }

.nv-toc-syn .library-section-head,
.nv-toc-index .library-section-head { margin: 0 0 16px; }
.nv-toc-syn .section-overline,
.nv-toc-index .section-overline {
  display: block; font-family: var(--mono, monospace);
  font-size: 10px; letter-spacing: .26em; text-transform: uppercase;
  color: var(--gilt, #b8860b); margin-bottom: 6px;
}
.nv-toc-syn .library-section-head h2,
.nv-toc-index .library-section-head h2 {
  margin: 0; font-family: var(--cn, serif); font-weight: 560;
  font-size: clamp(20px, 2vw, 26px); color: var(--ink, #e9f7ff);
}
.nv-toc-syn .library-section-head i,
.nv-toc-index .library-section-head i {
  font-family: var(--old, serif); font-style: italic; font-weight: 400;
  font-size: .62em; color: var(--ink-faded, #8ca2b3); margin-left: 10px;
}

/* ─── 书架网格 (覆盖 .article-shelf 的 4 列, 改横向书卡) ─── */
.nv-shelf {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(330px, 460px));
  justify-content: start;
  gap: 18px;
}

/* ─── 书架卡片 (Data/ 文章索引下方; 继承 .article-card 底纹/边框/悬浮) ─── */
.nv-card {
  flex-direction: row;
  gap: 16px;
  align-items: stretch;
  min-height: 0;
}
.nv-card-cover {
  flex: 0 0 128px;
  margin: 0;
  align-self: flex-start;
  border: 1px solid rgba(60,35,12,.5);
  box-shadow: 4px 4px 0 rgba(60,35,12,.16);
  background: var(--leather-dark, #1a0f08);
  overflow: hidden;
}
.nv-card-cover img { display: block; width: 128px; height: 192px; object-fit: cover; }
.nv-card-body { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; }
.nv-card-body h3 { margin-top: 10px; }
.nv-card-body .article-en { margin-top: 6px; }
.nv-card-body .article-desc { margin-top: 12px; }
@media (max-width: 560px) {
  .nv-card { flex-direction: column; }
  .nv-card-cover { flex-basis: auto; align-self: stretch; }
  .nv-card-cover img { width: 100%; height: 260px; }
}

/* ─── 阅读器: 目录页 封面头图 + 简介 + 章节 ─── */
.nv-toc-head {
  display: flex; gap: clamp(20px, 4vw, 38px); align-items: flex-start;
  padding: clamp(20px, 4vw, 40px);
  border: 1px solid rgba(60,35,12,.5);
  background:
    linear-gradient(180deg, rgba(255,248,224,.10), transparent 60%),
    rgba(20,12,8,.5);
  box-shadow: 6px 6px 0 rgba(60,35,12,.16);
  margin: 0 0 30px;
}
.nv-toc-cover {
  flex: 0 0 230px; margin: 0; overflow: hidden;
  border: 1px solid var(--gilt-deep, #7d5b09);
  box-shadow: 0 16px 42px rgba(0,0,0,.5);
}
.nv-toc-cover img { display: block; width: 230px; height: 345px; object-fit: cover; }
.nv-toc-titlebox { flex: 1 1 auto; min-width: 0; }
.nv-toc-titlebox .roman {
  font-family: var(--mono, monospace); font-size: 11px; letter-spacing: .24em;
  text-transform: uppercase; color: var(--gilt, #b8860b);
}
.nv-toc-titlebox h1 {
  margin: 10px 0 8px; font-family: var(--cn, serif); font-weight: 600;
  font-size: clamp(26px, 3.4vw, 40px); line-height: 1.18; color: var(--ink, #e9f7ff);
}
.nv-toc-titlebox h1 small {
  display: block; margin-top: 8px; font-family: var(--old, serif); font-style: italic;
  font-size: .42em; font-weight: 400; color: var(--ink-faded, #8ca2b3);
}
.nv-toc-small   { margin: 0 0 12px; font-size: 14px; color: var(--ink-mute, #5d7284); }
.nv-toc-tagline { margin: 0 0 16px; font-family: var(--cn, serif); font-size: 16px; line-height: 1.75; color: var(--ink, #e9f7ff); }
.nv-toc-meta    { font-family: var(--mono, monospace); font-size: 11px; letter-spacing: .08em; color: var(--ink-faded, #8ca2b3); }
.nv-toc-byline  { margin-top: 5px; font-size: 13px; color: var(--ink-mute, #5d7284); }
.nv-toc-actions { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 22px; }
.nv-toc-actions a {
  display: inline-block; padding: 11px 22px;
  font-family: var(--mono, monospace); font-size: 12px; letter-spacing: .12em;
  text-transform: uppercase; border: 1px solid var(--gilt-deep, #7d5b09);
  color: var(--ink, #e9f7ff); transition: background .2s, color .2s, border-color .2s;
}
.nv-toc-actions .library-primary { background: var(--gilt, #b8860b); color: var(--leather-dark, #1a0f08); border-color: var(--gilt, #b8860b); }
.nv-toc-actions a:hover { border-color: var(--gilt-bright, #ffd36a); color: var(--gilt-bright, #ffd36a); }
.nv-toc-actions .library-primary:hover { background: var(--gilt-bright, #ffd36a); color: var(--leather-dark, #1a0f08); }
.nv-toc-syn { margin: 0 0 32px; }
.nv-toc-syn p { font-family: var(--cn, serif); line-height: 2; margin: 0 0 15px; color: var(--ink, #e9f7ff); }
@media (max-width: 680px) {
  .nv-toc-head { flex-direction: column; align-items: center; text-align: center; }
  .nv-toc-cover { flex-basis: auto; }
  .nv-toc-actions { justify-content: center; }
}

/* ─── 阅读器: 分卷 + 章节行 ─── */
.nv-vol { margin: 0 0 28px; }
.nv-vol-head {
  display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap;
  padding-bottom: 10px; border-bottom: 1px solid rgba(60,35,12,.45); margin-bottom: 14px;
}
.nv-vol-tag { font-family: var(--mono, monospace); font-size: 12px; letter-spacing: .16em; color: var(--gilt, #b8860b); }
.nv-vol-head h2 { margin: 0; font-family: var(--cn, serif); font-size: 21px; color: var(--ink, #e9f7ff); }
.nv-vol-status { margin-left: auto; font-family: var(--mono, monospace); font-size: 11px; color: var(--ink-mute, #5d7284); }
.nv-vol-note { margin: -6px 0 14px; font-size: 13px; color: var(--ink-mute, #5d7284); }
.nv-chap-list { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 8px 16px; }
@media (max-width: 640px) { .nv-chap-list { grid-template-columns: 1fr; } }
.nv-chap {
  display: flex; align-items: center; gap: 12px; padding: 11px 14px;
  border: 1px solid rgba(60,35,12,.45);
  background: rgba(20,12,8,.4);
  color: var(--ink, #e9f7ff);
  transition: border-color .18s, transform .18s, background .18s;
}
.nv-chap:hover { border-color: var(--gilt, #b8860b); background: rgba(40,26,13,.5); transform: translateX(3px); }
.nv-chap-no { flex: 0 0 auto; font-family: var(--mono, monospace); font-size: 12px; color: var(--ink-mute, #5d7284); }
.nv-chap-title { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-family: var(--cn, serif); }
.nv-chap-go { flex: 0 0 auto; font-size: 12px; color: var(--gilt, #b8860b); opacity: 0; transition: opacity .18s; }
.nv-chap:hover .nv-chap-go { opacity: 1; }

/* ─── 阅读器: 正文系统框 (邪龙逆天式直贴, 复用 .ba-body 羊皮纸语境) ─── */
.nv-chap-body .nv-sys {
  font-family: var(--mono, monospace);
  font-size: .9em; line-height: 1.85; letter-spacing: .02em;
  margin: 1.5em auto; padding: .85em 1.15em; max-width: 88%;
  color: var(--gilt-bright, #ffd36a);
  background: linear-gradient(180deg, rgba(125,91,9,.20), rgba(20,12,8,.42));
  border: 1px solid var(--gilt-deep, #7d5b09);
}
.nv-chap-head .roman { color: var(--gilt, #b8860b); }
.nv-chap-nav small { display: block; font-size: 11px; opacity: .72; }
