
:root{
  --ink:#1b1916; --ink2:#57504a; --ink3:#8d847c;
  --paper:#f7f7f5; --card:#ffffff; --line:#e6e4e0; --line2:#d5d2cc;
  --red:#c0392b; --red2:#a93226; --redbg:#fdf3f1;
  --serif:"Source Han Serif SC","Noto Serif CJK SC","Songti SC",STSong,"SimSun",Georgia,serif;
  --sans:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Source Han Sans SC",
         "Noto Sans CJK SC",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  --fs:19px; --lh:1.8; --measure:36em;
}
html:has(#th-sepia:checked){
  --ink:#3a3126; --ink2:#6f6250; --ink3:#a2907a; --paper:#f5efdf;
  --card:#fbf6ea; --line:#e2d5ba; --line2:#d3c3a2; --redbg:#f6e9e2;
}
html:has(#th-dark:checked){
  --ink:#eceae6; --ink2:#b3ada5; --ink3:#87817a; --paper:#141416;
  --card:#1c1c1f; --line:#2e2e33; --line2:#3d3d44; --redbg:#2a1b19;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--sans);font-size:var(--fs);line-height:var(--lh);
  /* 字重保持 400：Windows 上 500 会落回 400，加描边反而糊（踩过两次，见 §10.22）*/
  font-weight:400;-webkit-tap-highlight-color:transparent}
a{color:var(--ink);text-decoration:none}
a:hover{color:var(--red)}
.wrap{max-width:var(--measure);margin:0 auto;padding:22px 20px 72px;
  padding-left:max(20px,env(safe-area-inset-left));
  padding-right:max(20px,env(safe-area-inset-right))}
.wrap.mid{max-width:56em}

/* ===== 顶栏 ===== */
.hdr{background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30}
.hdr-in{max-width:56em;margin:0 auto;display:flex;align-items:center;gap:14px;
  padding:10px max(20px,env(safe-area-inset-left));min-height:56px;flex-wrap:wrap}
.logo{font-family:var(--serif);font-size:1.5em;font-weight:700;letter-spacing:.04em;
  color:var(--red);flex:none;white-space:nowrap}
.logo:hover{color:var(--red2);text-decoration:none}
.search-box{position:relative;display:flex;align-items:center;flex:1;min-width:160px;max-width:460px}
.search-box input{width:100%;font:inherit;font-size:.82em;height:36px;
  padding:0 36px 0 13px;border:1px solid var(--line2);border-radius:6px;
  background:var(--paper);color:var(--ink);outline:none}
.search-box input:focus{border-color:var(--red);background:#fff}
html:has(#th-dark:checked) .search-box input:focus{background:var(--card)}
.search-box .ico{position:absolute;right:11px;color:var(--ink3);font-size:.8em;pointer-events:none}
.th-switch{display:flex;gap:4px;align-items:center;font-size:11.5px;flex:none;margin-left:auto}
.th-switch input{position:absolute;opacity:0;width:0;height:0}
.th-switch label{cursor:pointer;padding:3px 8px;border:1px solid var(--line);
  border-radius:4px;color:var(--ink2);user-select:none;background:var(--card)}
.th-switch input:checked + label{border-color:var(--red);color:var(--red);font-weight:600}

/* ===== 分类导航（参考站的 玄幻/修真… 一根横条）===== */
.catnav{background:var(--card);border-bottom:1px solid var(--line)}
.catnav-in{max-width:56em;margin:0 auto;display:flex;gap:2px;
  padding:0 max(20px,env(safe-area-inset-left));overflow-x:auto;
  scrollbar-width:none}
.catnav-in::-webkit-scrollbar{display:none}
.catnav a{flex:none;padding:11px 14px;font-size:14px;color:var(--ink2);
  border-bottom:2px solid transparent;white-space:nowrap}
.catnav a:hover{color:var(--red);text-decoration:none}
.catnav a.on{color:var(--red);border-bottom-color:var(--red);font-weight:600}

/* ===== 内容容器 ===== */
.main{max-width:56em;margin:0 auto;padding:16px max(20px,env(safe-area-inset-left)) 60px;
  padding-right:max(20px,env(safe-area-inset-right))}

/* ===== 区块标题（左侧红竖条）===== */
.sh{display:flex;align-items:center;gap:10px;margin:26px 0 14px}
.sh h2{font-size:17px;font-weight:600;margin:0;color:var(--ink)}
.sh h2 .cnt{font-size:11.5px;font-weight:400;color:var(--ink3);margin-left:9px}
.sh h2:before{content:"";display:inline-block;width:4px;height:16px;background:var(--red);
  border-radius:2px;margin-right:9px;vertical-align:-2px}
.sh .more{margin-left:auto;font-size:12.5px;color:var(--ink3);
  border:0;background:none;padding:0;border-radius:0;font-weight:400}
.sh .more:hover{color:var(--red)}

/* ===== 分类区块：封面 + 简介 + 条目 ===== */
.cat{display:grid;grid-template-columns:112px minmax(0,1fr);gap:14px;padding:14px 0;
  border-bottom:1px solid var(--line)}
.cover{display:block;width:112px;height:150px;border-radius:5px;overflow:hidden;
  position:relative;box-shadow:0 2px 8px rgba(0,0,0,.16);flex:none}
.cover .cv{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  writing-mode:vertical-rl;font-family:var(--serif);font-size:19px;font-weight:700;
  color:#fff;letter-spacing:.18em;text-shadow:0 1px 4px rgba(0,0,0,.45);
  padding:12px 0;overflow:hidden;line-height:1.15;text-align:center}
.cover .cv.lat{writing-mode:horizontal-tb;font-family:Georgia,serif;font-size:13px;
  letter-spacing:.02em;padding:10px 8px;line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}
.cover:after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(160deg,rgba(255,255,255,.16),rgba(0,0,0,.22))}
.feat-t{font-size:15.5px;font-weight:600;margin:0 0 3px;line-height:1.45}
.feat-t:hover{color:var(--red)}
.feat-a{font-size:12.5px;color:var(--ink3);margin:0 0 7px}
.feat-d{font-size:13px;color:var(--ink2);line-height:1.7;margin:0;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.catlinks{list-style:none;margin:10px 0 0;padding:0;display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}
.catlinks li{font-size:13.5px;line-height:1.9;overflow:hidden;white-space:nowrap;
  text-overflow:ellipsis}
.catlinks li a{color:var(--ink2)}
.catlinks li a:hover{color:var(--red)}
.catlinks .w{color:var(--ink3);font-size:11.5px;margin-left:.5em}

/* ===== 紧凑书目列表（最新入库 / 全部书目）===== */
.bklist{list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));gap:0 22px}
/* 网格子项默认 min-width:auto，nowrap 文本会把它撑到内容宽（实测 375px 视口里
   行被撑到 559px，整页横向溢出 196px）。凡是内含 nowrap 文本的都要显式归零。 */
.bklist > li,.bklist a,.bklist .t,.bklist .n,
.catlinks li,.catlinks li a,.cat > div,.feat-t,.feat-d,
.catnav a,.results a,.results .t{min-width:0}
.bklist li{border-bottom:1px dotted var(--line)}
.bklist a{display:flex;gap:10px;align-items:baseline;padding:9px 0;
  font-size:14px;min-width:0}
.bklist .tag{flex:none;font-size:11px;color:var(--red);background:var(--redbg);
  border-radius:3px;padding:1px 6px}
.bklist .t{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.bklist .a{flex:none;max-width:8em;color:var(--ink3);font-size:11.5px;
  overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.bklist .n{flex:none;color:var(--ink3);font-size:11.5px;font-variant-numeric:tabular-nums}

/* ===== 书籍页 ===== */
.bkhead{display:grid;grid-template-columns:132px minmax(0,1fr);gap:18px;padding:6px 0 18px;
  border-bottom:1px solid var(--line)}
.bkhead .cover{width:132px;height:176px}
.bkhead h1{font-family:var(--serif);font-size:1.6em;margin:0 0 8px;line-height:1.35}
.info{font-size:13.5px;color:var(--ink2);line-height:2;margin:0}
.info b{color:var(--ink);font-weight:500}
.acts{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;justify-content:center;
  min-height:40px;padding:0 20px;border-radius:5px;font-size:14px;
  background:var(--red);color:#fff;border:1px solid var(--red)}
.btn:hover{background:var(--red2);color:#fff;text-decoration:none}
.btn.ghost{background:var(--card);color:var(--ink);border-color:var(--line2)}
.btn.ghost:hover{border-color:var(--red);color:var(--red);text-decoration:none}

/* 目录：多栏密排（参考站的章节目录观感）*/
.tocgrid{list-style:none;padding:0;margin:6px 0 0;
  column-count:1}                          /* 单栏整行：标题完整、不压缩、不断行 */
.tocgrid li{break-inside:avoid;border-bottom:1px dotted var(--line)}
.tocgrid a{display:block;padding:11px 2px;font-size:15px;color:var(--ink2);
  line-height:1.55;white-space:nowrap;overflow:visible;text-overflow:clip}
.tocgrid a:hover{color:var(--red)}
.tocgrid .n{color:var(--ink3);font-size:12px;margin-right:.4em;
  font-variant-numeric:tabular-nums}

/* ===== 章节页 ===== */
.crumb{font-size:12.5px;color:var(--ink3);margin:0 0 12px;display:flex;gap:6px;flex-wrap:wrap}
.crumb a{color:var(--ink2)}
.crumb .sep{color:var(--line2)}
h1.chapter{font-family:var(--serif);font-size:1.35em;text-align:center;margin:.2em 0 .2em;
  line-height:1.6}
.chnav{display:flex;gap:0;justify-content:center;align-items:center;
  margin:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  background:var(--card);border-radius:6px;overflow:hidden}
.chnav a,.chnav span{flex:1;text-align:center;padding:11px 6px;font-size:14px;color:var(--ink2)}
.chnav a:hover{color:var(--red);background:var(--redbg);text-decoration:none}
.chnav .sepv{flex:none;width:1px;background:var(--line);padding:0;align-self:stretch}
.chnav a.none{opacity:.35;pointer-events:none}
article p{margin:0 0 1.05em;text-indent:2em;text-align:justify;
  text-justify:inter-ideograph;text-align-last:left;word-break:break-word;
  /* 不加 -webkit-text-stroke：Windows 上会让汉字发虚，清晰度反而不如不描边 */
  color:#1a1a1a;letter-spacing:.02em}
html:has(#th-dark:checked) article p{color:var(--ink)}
.poem{margin:1.1em 0 1.5em;text-align:center;color:var(--ink2);
  font-size:.95em;line-height:1.62}
.poem p{margin:0;text-indent:0;text-align:center}

/* ===== 检索结果 ===== */
.search-meta{font-size:12.5px;color:var(--ink3);margin:8px 0 12px}
.results{list-style:none;padding:0;margin:0}
.results li{border-bottom:1px dotted var(--line)}
.results a{display:flex;gap:12px;align-items:baseline;padding:11px 0}
.results .t{flex:1;font-size:15px}
.results .a{color:var(--ink3);font-size:12.5px;max-width:9em;overflow:hidden;
  white-space:nowrap;text-overflow:ellipsis}
.results .m{color:var(--ink3);font-size:11.5px;white-space:nowrap}

/* ===== 续读 / 加载更多 ===== */
.resume{display:flex;align-items:center;gap:10px;padding:10px 14px;
  border:1px solid var(--line2);border-left:3px solid var(--red);border-radius:5px;
  background:var(--card);margin:0 0 14px;flex-wrap:wrap;font-size:13.5px}
.resume .rl{color:var(--red);font-size:11.5px;flex:none;font-weight:600}
.resume .rt{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.resume .rc{color:var(--ink3);font-size:12px;min-width:0;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.resume a{margin-left:auto;flex:none;color:var(--red);font-size:13px}
.more-wrap{display:flex;justify-content:center;margin:24px 0 0}
.more{font:inherit;font-size:.82em;padding:10px 32px;border-radius:5px;
  border:1px solid var(--line2);background:var(--card);color:var(--ink2);cursor:pointer}
.more:hover{border-color:var(--red);color:var(--red)}
.more[disabled]{opacity:.45;cursor:default}
.list-end{text-align:center;color:var(--ink3);font-size:12px;margin:20px 0 0;display:none}
.list-end.on{display:block}

footer.site{border-top:1px solid var(--line);background:var(--card);margin-top:32px;
  padding:20px;text-align:center;color:var(--ink3);font-size:12px;line-height:1.9}
footer.site a{color:var(--ink2)}
footer.site a:hover{color:var(--red)}

.crawler-nav{display:flex;gap:12px;justify-content:space-between;margin:26px 0 0;font-size:13px}
.crawler-nav a{padding:8px 16px;border:1px solid var(--line);border-radius:5px}
.sr{position:absolute;left:-9999px}

/* ===== 响应式 ===== */
@media (max-width:860px){
  /* 窄屏放不下一行，允许自然折行，但仍不截断 */
  .tocgrid a{white-space:normal;word-break:break-word}
}
@media (max-width:640px){
  :root{--fs:17px;--lh:1.72}
  /* 顶栏两行：站名+主题 / 搜索框 */
  .hdr-in{min-height:auto;padding:7px 12px 8px;gap:7px}
  .logo{font-size:1.22em}
  .th-switch label{padding:3px 7px;font-size:11px}
  .search-box{order:3;flex:1 1 100%;max-width:none}
  .search-box input{height:34px;font-size:.86em}
  .catnav-in{padding:0 12px;gap:0}
  .catnav a{padding:9px 9px;font-size:13px}
  .main{padding:10px 12px 40px}
  /* 分类区块：小缩略图 + 两列 6 条（原来 12 条单列太长）*/
  .cat{grid-template-columns:64px minmax(0,1fr);gap:10px;padding:12px 0}
  .cover,.cat-head .cover{width:64px;height:86px}
  .cover .cv{font-size:12.5px;letter-spacing:.08em;padding:6px 0}
  .cover .cv.lat{font-size:10.5px;padding:5px 4px;line-height:1.25}
  .feat-t{font-size:14.5px;margin-bottom:2px}
  .feat-a{font-size:11.5px;margin-bottom:5px}
  .feat-d{font-size:12px;line-height:1.6;-webkit-line-clamp:1}
  .catlinks{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px;margin-top:7px}
  .catlinks li{font-size:12.5px;line-height:1.75}
  .catlinks li:nth-child(n+7){display:none}
  .catlinks .w{display:none}
  .sh{margin:18px 0 8px}
  .sh h2{font-size:15.5px}
  .sh .more{font-size:11.5px}
  .bklist{grid-template-columns:minmax(0,1fr)}
  .bklist a{padding:8px 0;font-size:13.5px}
  .bklist .a{max-width:6em}
  .bklist .t{white-space:normal;word-break:break-word}
  .bkhead{grid-template-columns:88px 1fr;gap:11px}
  .bkhead .cover{width:88px;height:118px}
  .bkhead h1{font-size:1.22em;margin-bottom:6px}
  .info{font-size:12.5px;line-height:1.85}
  .btn{min-height:36px;padding:0 15px;font-size:13px}
  .tocgrid a{padding:9px 2px;font-size:13.5px}
  h1.chapter{font-size:1.12em;margin-bottom:.5em}
  .chnav a,.chnav span{font-size:12.5px;padding:10px 3px}
  article p{margin-bottom:1em}
  .resume{padding:8px 10px;font-size:12.5px}
  .resume a{width:auto;margin-left:auto;padding:5px 12px}
}
/* ---- 语言切换器（紧凑胶囊 + 下拉菜单）---- */
.langsel{position:relative;flex:none;font-size:12px;line-height:1}
.langsel>summary{list-style:none;display:inline-flex;align-items:center;gap:5px;
  height:28px;padding:0 10px;border:1px solid var(--line);border-radius:999px;
  background:var(--card);color:var(--ink2);cursor:pointer;white-space:nowrap;
  font-size:12.5px;font-family:inherit}
.langsel>summary::-webkit-details-marker{display:none}
.langsel>summary::marker{content:"";display:none}
.langsel>summary::before{content:"";width:11px;height:11px;border-radius:50%;
  border:1.2px solid currentColor;opacity:.75;flex:none;
  background:linear-gradient(currentColor,currentColor) center/100% 1.1px no-repeat,
    linear-gradient(currentColor,currentColor) center/1.1px 100% no-repeat}
.langsel>summary::after{content:"";width:0;height:0;
  border-left:3.5px solid transparent;border-right:3.5px solid transparent;
  border-top:4.5px solid var(--ink3);margin-left:1px}
.langsel[open]>summary,.langsel>summary:hover{border-color:var(--red);color:var(--red)}
.langsel[open]>summary::after{border-top-color:var(--red)}
.langmenu{position:absolute;right:0;top:calc(100% + 8px);z-index:60;background:var(--card);
  border:1px solid var(--line2);border-radius:12px;
  box-shadow:0 18px 44px -20px var(--shadow);padding:6px;display:grid;
  grid-template-columns:1fr 1fr;gap:2px;min-width:252px;
  max-height:min(60vh,340px);overflow:auto}
.langmenu a{padding:7px 10px;border-radius:7px;color:var(--ink2);
  font-size:12.5px;white-space:nowrap;text-decoration:none;display:block}
.langmenu a:hover{background:var(--paper);color:var(--red)}
.langmenu a[aria-current="true"]{color:var(--red);font-weight:600;background:var(--paper)}
.langmenu a[aria-current="true"]::after{content:" ✓";font-size:11px}
/* ---- 全部书目 / 大部头精选 / 国家分类页：两行式行布局 ----
   第一行 = 体例徽标 + 书名（**允许换行，不截断**）
   第二行 = 作者（左） + 字数（右）
   早先是单行 flex + nowrap，长书名被省略号切掉（用户："两列后作品名称显示不全"）。 */
.bklist{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 26px;
  border-top:1px solid var(--line);margin-top:4px;list-style:none;padding:0}
.bklist>li{border-bottom:1px solid var(--line)}
.bklist a{padding:7px 6px;border-radius:6px;font-size:13.5px;
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;
  column-gap:8px;row-gap:1px;align-items:baseline}
.bklist a:hover{background:var(--paper)}
.bklist a:hover .t{color:var(--red)}
.bklist .tag{grid-area:1/1;font-size:10.5px;padding:1px 5px;border-radius:4px;
  align-self:center}
.bklist .t{grid-area:1/2/2/4;white-space:normal;word-break:break-word;
  line-height:1.4;overflow:visible;text-overflow:clip}
.bklist .a{grid-area:2/1/3/3;font-size:10.5px;color:var(--ink3);line-height:1.5;
  max-width:none;white-space:normal;word-break:break-word;overflow:visible;
  text-overflow:clip;min-width:0}
.bklist .n{grid-area:2/3;font-size:10.5px;color:var(--ink3);line-height:1.5;
  white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums}
/* 加载更多：与站内按钮同款胶囊 */
#more{display:block;margin:28px auto 2px;min-height:40px;padding:0 28px;
  border:1px solid var(--red);border-radius:999px;background:transparent;
  color:var(--red);font-family:inherit;font-size:14px;cursor:pointer;
  transition:background .15s ease,color .15s ease}
#more:hover{background:var(--red);color:#fff}
#more:disabled{opacity:.55;border-color:var(--line2);color:var(--ink3);cursor:default}
.list-end{text-align:center;color:var(--ink3);font-size:12.5px;margin:14px 0 0}
/* 页脚：网站地图链接前补分隔，避免与上句黏连 */
footer.site a{margin:0 2px}
footer.site a[href$="sitemap.xml"]::before{content:"·";margin-right:7px;color:var(--ink3)}
footer.site a[href$="sitemap.xml"]{margin-left:2px}
@media (max-width:640px){
  /* 注意：本块必须留在上面 .bklist 桌面规则之后。
     之前把桌面规则写在移动端 @media 之后，导致 390px 宽仍按两列排，
     书名被挤成省略号、行高塌陷（实测截图整行只剩标点和灰字）。 */
  .bklist{grid-template-columns:minmax(0,1fr);gap:0}
  .bklist a{padding:10px 4px;font-size:13.5px}
  .bklist .t{line-height:1.42}
  .bklist .a{max-width:none;font-size:10px}
  .bklist .n{font-size:10px}
  .bklist .tag{font-size:10px}
  #more{width:100%;max-width:320px;margin:22px auto 2px}
}
@media print{
  body{background:#fff;color:#000;font-size:11pt}
  .hdr,.catnav,.chnav,footer.site,.more-wrap,.resume{display:none}
  .wrap,.main{max-width:none;padding:0}
  a{color:#000}
}
