
:root{
  --bg:#15161a; --bg2:#1c1e24; --panel:#1f2229; --panel2:#262a33;
  --line:#2e333d; --text:#d7d9e0; --muted:#8b909c; --accent:#c9a35e;
  --accent2:#7fa6c9; --draft:#9a7b4f; --final:#5e8d6a;
  --shadow:0 6px 24px rgba(0,0,0,.45);
}
*{box-sizing:border-box;}
:root{ --app-h:100%; }
html,body{height:var(--app-h);margin:0;}
body{
  background:var(--bg); color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  display:flex; flex-direction:column; overflow:hidden;
}
.topbar{
  display:flex; align-items:center; gap:12px; padding:10px 16px;
  background:linear-gradient(180deg,var(--bg2),var(--bg)); border-bottom:1px solid var(--line);
  flex:0 0 auto; z-index:30;
}
.iconbtn{background:none;border:1px solid var(--line);color:var(--text);border-radius:8px;
  width:36px;height:36px;font-size:18px;cursor:pointer;display:none;}
.brand{display:flex;flex-direction:column;line-height:1.15;min-width:120px;}
.bt{font-weight:700;font-size:17px;color:var(--accent);letter-spacing:.5px;}
.ba{font-size:12px;color:var(--muted);}
.brand-title-row{display:flex;align-items:center;gap:8px;}
.title-refresh{
  background:none;border:1px solid var(--line);color:var(--accent);
  border-radius:8px;width:30px;height:30px;font-size:17px;line-height:1;
  cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;
  flex:0 0 auto;
}
.title-refresh:active{background:var(--panel);}
.searchwrap{flex:1;display:flex;justify-content:center;}
#search{
  width:100%;max-width:460px;padding:8px 14px;border-radius:20px;border:1px solid var(--line);
  background:var(--panel);color:var(--text);font-size:14px;outline:none;
}
#search:focus{border-color:var(--accent);}
.tools{display:flex;align-items:center;gap:10px;}
#filter{background:var(--panel);color:var(--text);border:1px solid var(--line);
  border-radius:8px;padding:6px 8px;font-size:13px;}
.progress{font-size:12px;color:var(--muted);white-space:nowrap;}

.layout{flex:1;display:flex;min-height:0;}
.sidebar{
  width:320px;flex:0 0 320px;background:var(--panel);border-right:1px solid var(--line);
  overflow-y:auto;padding:8px 0 40px;
}
.sidebarHead{padding:10px 16px;font-size:12px;color:var(--muted);letter-spacing:2px;}
.nav{padding:0 8px;}
.chap{border-bottom:1px solid var(--line);}
.chapHead{
  display:flex;align-items:center;gap:8px;padding:12px 12px;cursor:pointer;
  font-weight:700;color:var(--accent);font-size:15px;user-select:none;
}
.chapHead .arrow{transition:transform .15s;color:var(--muted);font-size:12px;}
.chap.collapsed .arrow{transform:rotate(-90deg);}
.chapHead .chname{flex:0 0 auto;}
.chapHead .chsub{font-weight:400;color:var(--fg);font-size:13px;opacity:.82;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46%;}
.chapHead .cnt{margin-left:auto;font-size:12px;color:var(--muted);font-weight:400;white-space:nowrap;}
.chapBody{display:block;}
.chap.collapsed .chapBody{display:none;}
.hm{
  display:flex;align-items:baseline;gap:8px;padding:8px 12px 8px 26px;cursor:pointer;
  border-left:2px solid transparent;border-radius:0 6px 6px 0;min-width:0;
}
.hm:hover{background:var(--panel2);}
.hm.active{background:var(--panel2);border-left-color:var(--accent);}
.hm .num{font-size:12px;color:var(--muted);flex:0 0 auto;width:34px;text-align:right;}
.hm .ti{font-size:13.5px;color:var(--text);line-height:1.4;flex:1 1 0;min-width:0;overflow-wrap:anywhere;word-break:break-word;}
.hm .badge{margin-left:auto;font-size:10px;padding:1px 6px;border-radius:10px;flex:0 0 auto;}
.badge.定稿{background:rgba(94,141,106,.18);color:#8fd09b;border:1px solid rgba(94,141,106,.4);}
.badge.bl{background:rgba(200,120,150,.18);color:#e79ab5;border:1px solid rgba(200,120,150,.4);}
.badge.bq{background:rgba(120,160,200,.18);color:#9cc0e0;border:1px solid rgba(120,160,200,.4);}
.hm .badge.bl, .hm .badge.bq{margin-left:0;margin-right:0;}
.hm.read .ti{color:var(--muted);}
.hm mark{background:var(--accent);color:#1a1a1a;border-radius:2px;padding:0 1px;}
.hm-group{display:flex;align-items:center;gap:8px;padding:9px 14px;margin-top:6px;border-top:1px solid var(--border);background:var(--panel2);font-size:12px;font-weight:600;letter-spacing:.5px;cursor:pointer;user-select:none;}
.hm-group:first-child{border-top:none;margin-top:0;}
.hm-group:hover{background:var(--panel);}
.hm-group .hg-caret{display:inline-block;width:12px;color:var(--muted);font-size:11px;flex:none;}
.hm-group .hg-name{color:var(--accent);}
.hm-group .hg-count{color:var(--muted);font-weight:400;font-size:11px;margin-left:auto;}
.hm-group-wrap.collapsed .hm-group-body{display:none;}
.hm-group-wrap.collapsed .hm-group{border-bottom:1px solid var(--border);}

.content{flex:1;overflow-y:auto;padding:24px 32px 80px;min-width:0;min-height:0;}
.crumb{font-size:13px;color:var(--muted);margin-bottom:10px;}
.crumb b{color:var(--accent2);}
.reader{max-width:760px;margin:0 auto;
  font-family:"Songti SC","SimSun","Noto Serif CJK SC","Noto Serif SC",serif;
  font-size:18px;line-height:2;color:#e3e4ea;letter-spacing:.3px;}
.reader h2,.reader h3,.reader h4{color:var(--accent);font-family:inherit;line-height:1.5;margin:1.4em 0 .6em;}
.reader h2{font-size:22px;border-bottom:1px solid var(--line);padding-bottom:.3em;}
.reader h3{font-size:19px;}
.reader p{margin:0 0 1.1em;text-align:justify;}
.reader blockquote{margin:1em 0;padding:.6em 1.1em;border-left:3px solid var(--accent);
  background:rgba(201,163,94,.08);color:#cfc3a6;font-style:normal;border-radius:0 6px 6px 0;}
.reader hr{border:none;border-top:1px solid var(--line);margin:1.6em 0;}
.reader ul,.reader ol{margin:0 0 1.1em;padding-left:1.4em;}
.reader li{margin:.3em 0;}
.reader code{background:var(--panel2);padding:1px 5px;border-radius:4px;font-size:.9em;color:var(--accent2);}
.reader .placeholder{color:var(--muted);text-align:center;margin-top:30vh;font-family:sans-serif;}
.rtitle{font-size:26px;color:var(--accent);text-align:center;margin:0 0 .2em;font-weight:700;letter-spacing:1px;}
/* 日记版：本章首回上方显示的章题目（章名 + 题目要求），位于「回」之前 */
.chap-title-r{ text-align:center; margin:0 0 1.1em; padding:10px 0 12px; border-bottom:1px dashed var(--line); }
.chap-title-r .ct-name{ font-size:18px; color:var(--accent2); font-weight:700; letter-spacing:2px; }
.chap-title-r .ct-sub{ font-size:14px; color:var(--muted); margin-top:4px; font-style:italic; letter-spacing:1px; }
.rsub{text-align:center;color:var(--muted);font-size:13px;margin-bottom:1.4em;font-family:sans-serif;}
.pager{max-width:760px;margin:30px auto 0;display:flex;gap:12px;justify-content:space-between;}
.pagerbtn{flex:1;padding:12px;border:1px solid var(--line);background:var(--panel);color:var(--text);
  border-radius:10px;cursor:pointer;font-size:14px;font-family:sans-serif;}
.pagerbtn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);}
.pagerbtn:disabled{opacity:.35;cursor:not-allowed;}

.scrim{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:20;}

/* ---- 锁屏 / 首页 ---- */
.lock{
  position:fixed; inset:0; z-index:100; display:flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg,#0d0e12 0%,#15161a 45%,#1a1c24 100%);
}
.lock-inner{ text-align:center; max-width:440px; padding:36px 24px; }
.lock-cover{
  width:100%; max-width:380px; border-radius:14px; box-shadow:0 10px 40px rgba(0,0,0,.65);
  margin-bottom:28px;
}
.lock-cover-wrap{ position:relative; display:inline-block; max-width:380px; width:100%; }
.lock-cover-ovl{
  position:absolute; top:10px; right:10px; max-width:90%;
  text-align:right; color:#fff; font-size:9px; line-height:1.4;
  background:rgba(8,9,12,.58); padding:8px 10px; border-radius:9px;
  letter-spacing:.4px; text-shadow:0 1px 3px rgba(0,0,0,.7);
  white-space:nowrap;
  border:1px solid rgba(255,255,255,.16);
}
.lock-title{ font-size:30px; color:var(--accent); letter-spacing:3px; margin:0 0 6px; font-weight:700; }
.lock-motto{ font-size:15px; color:var(--text); opacity:.85; margin:0 0 6px; letter-spacing:2px; font-style:italic; }
/* 首页中文 slogan，单行显示 */
.lock-motto-cn{ font-size:14px; color:var(--text); opacity:.8; margin:0 0 22px; letter-spacing:1px; line-height:1.7; text-align:center; white-space:nowrap; }
.lock-sub{ font-size:14px; color:var(--muted); margin:0 0 32px; letter-spacing:1.5px; line-height:1.3; }
.lock-sign{ font-size:13px; color:var(--muted); opacity:.72; margin:-18px 0 24px; letter-spacing:5px; font-style:italic; }
.lock-form{ display:flex; flex-direction:column; gap:12px; }
.lock-form input{
  padding:13px 18px; border-radius:11px; border:1px solid var(--line);
  background:var(--panel); color:var(--text); font-size:16px; text-align:center;
  outline:none; letter-spacing:3px; font-family:inherit;
}
.lock-form input:focus{ border-color:var(--accent); box-shadow:0 0 0 2px rgba(201,163,94,.2); }
.lock-form button{
  padding:13px; border-radius:11px; border:none; background:var(--accent);
  color:#111; font-size:15px; font-weight:700; cursor:pointer; letter-spacing:2px;
}
.lock-form button:hover{ opacity:.88; }
.lock-form button:active{ transform:scale(.98); }
.lock-err{ color:#e57373; font-size:13px; min-height:20px; margin:0; }

/* ---- 痛苦绝望画面感（序章，位于首页与书架页之间） ---- */
.prologue{
  position:fixed; inset:0; z-index:70; overflow:auto;
  background:#000;
}
.prologue-inner{ position:relative; z-index:1; max-width:760px; margin:0 auto; padding:46px 18px 70px; box-sizing:border-box;
  display:flex; flex-direction:column; align-items:flex-start; text-align:left;
  font-family:"Songti SC","SimSun","Noto Serif CJK SC",serif; }
.pkick{ text-align:center; color:#c62828; font-weight:700; letter-spacing:14px; font-size:21px; margin:0 0 30px; padding-left:14px; align-self:stretch; width:100%; box-sizing:border-box; }
.pscene{ margin:0; max-width:100%; }
.pscene + .pscene{ border-top:1px solid rgba(198,40,40,.42); padding-top:.34em; margin-top:.34em; }
.pscene.pfinal{ border-top:1px solid rgba(198,40,40,.6); padding-top:.4em; margin-top:.4em; }
.pscene p{ margin:.1em 0; font-size:15px; line-height:1.5; color:#b9bdc7;
  font-family:"Songti SC","SimSun","Noto Serif CJK SC",serif; text-align:justify; text-justify:inter-character; }
.pscene p + p{ border-top:1px solid rgba(198,40,40,.16); padding-top:.1em; }
.pscene .plead{ font-size:16px; color:#e3e5ea; font-weight:600; }
.pnum{ color:#c89a6a; font-weight:700; padding:0 1px; }
.pdim,.pbig,.pbig2{ color:#c62828 !important; font-size:15px !important; font-weight:700; letter-spacing:0; margin:.1em 0 !important; line-height:1.5 !important; font-family:"Songti SC","SimSun","Noto Serif CJK SC",serif; }
.pbtn{ margin-top:40px; align-self:center; padding:12px 32px; border-radius:24px; border:1px solid #6c5648;
  background:transparent; color:#cbb59e; font-size:13px; font-weight:700; letter-spacing:3px; cursor:pointer; transition:.18s; }
.pbtn:hover{ background:#6c5648; color:#0c0b0e; }
.pbtn:active{ transform:scale(.97); }
@media (max-width:820px){
  .prologue-inner{ padding:34px 16px 56px; }
  .pkick{ letter-spacing:9px; font-size:18px; margin-bottom:22px; }
  .pscene{ margin-bottom:0; }
  .pscene p{ font-size:14px; line-height:1.5; }
  .pscene .plead{ font-size:14px; }
  .pbtn{ margin-top:28px; }
}

@media (max-width:820px){
  .iconbtn{display:block;}
  .sidebar{position:fixed;left:0;top:0;bottom:0;z-index:25;transform:translateX(-100%);
    transition:transform .2s;box-shadow:var(--shadow);width:min(86vw,320px);overflow-x:hidden;}
  .sidebar.open{transform:translateX(0);}
  .scrim.show{display:block;}
  /* 老内核高度：改由 <head> 内联脚本读取 visualViewport 真实高度写入 --app-h，不再依赖 position:fixed 钉死（旧内核易算错高度、把内容区压成只露一小条） */
  /* 目录抽屉顶部留白，防手机浏览器顶部 UI（地址栏/状态栏）遮挡第一章 */
  /* 抽屉顶部留白须盖过固定顶栏（topbar 高约 56px，z-index:30 高于 sidebar:25，会盖住目录首条/第一章）；
     故 padding-top = 顶栏高度 + 安全区，确保“第1章/第一章/第一条”不被顶栏遮挡 */
  .sidebar{padding-top:calc(60px + env(safe-area-inset-top,0px));}
  .searchwrap{order:3;flex-basis:100%;}
  .content{padding:18px 16px 70px;}
  .reader{font-size:17px;}
  .lock-inner{padding:24px 16px;}
  .lock-cover{max-width:300px;border-radius:10px;}
  .lock-title{font-size:24px;}
  /* 日记版/小说版目录树（共享 renderNav）：长章名、连续无空格七言诗回目标题在手机窄抽屉里真正换行，不再竖排天书 */
  .sidebar{min-width:0;}
  .nav{min-width:0;}
  .chap{min-width:0;}
  .chapHead{flex-wrap:wrap;min-width:0;}
  .chapHead .chname{flex:1 1 auto;min-width:0;}
  .chapHead .chsub{flex:1 1 100%;max-width:100%;white-space:normal;overflow:visible;text-overflow:clip;margin-top:2px;min-width:0;}
  .chapHead .cnt{flex:0 0 auto;}
  .hm{flex-wrap:wrap;min-width:0;}
  .hm .ti{flex:1 1 0;min-width:0;max-width:100%;overflow-wrap:anywhere;word-break:break-all;}
  .hm .badge{margin-left:8px;flex:0 0 auto;}
  /* 书架：手机端顶部/底部留白防浏览器 UI 遮挡，并允许从顶滚动到日记版 */
  .shelf-inner{padding-top:calc(40px + env(safe-area-inset-top,0px));padding-bottom:calc(40px + env(safe-area-inset-bottom,0px));}
}

/* === 新增：书架 / 二级页面 === */
#homeBtn{display:inline-flex;align-items:center;justify-content:center;}
.shelf{
  position:fixed; inset:0; z-index:60; overflow:auto;
  background:linear-gradient(135deg,#0d0e12 0%,#15161a 45%,#1a1c24 100%);
}
/* 严禁 .shelf 用 display:flex + align-items:center 居中：当5个书卡总高超过手机视口时，
   顶部（日记版）会被裁切且无法上滑到达（经典 flex 居中 overflow 顶切坑）。
   改为 block 滚动容器；.shelf-inner 用 min-height:100% + flex 列居中：
   内容矮时桌面仍垂直居中，内容高时从顶部排布且可滚到顶（日记版永远可达）。 */
.shelf-inner{ width:100%; max-width:880px; padding:40px 24px; text-align:center;
  margin:0 auto; min-height:100%; box-sizing:border-box;
  display:flex; flex-direction:column; align-items:center; justify-content:center; }
.shelf-title{ color:var(--accent); font-size:22px; letter-spacing:3px; margin:0 0 36px; font-weight:700; }
.books{ display:flex; gap:28px; justify-content:center; flex-wrap:wrap; }
.bookcard{
  display:flex; gap:18px; align-items:center; text-align:left; text-decoration:none;
  background:var(--panel); border:1px solid var(--line); border-radius:16px;
  padding:22px 26px; width:380px; max-width:100%; cursor:pointer; transition:.18s;
}
.bookcard:hover{ border-color:var(--accent); transform:translateY(-3px); box-shadow:var(--shadow); }
.bc-cover{
  flex:0 0 92px; width:92px; height:128px; border-radius:10px; color:#fff;
  display:flex; align-items:center; justify-content:center; font-size:22px; letter-spacing:4px;
  font-weight:700; writing-mode:vertical-rl; box-shadow:0 6px 20px rgba(0,0,0,.5);
}
.bc-novel{ background:url('../cover.jpeg?v=36') center/cover, linear-gradient(160deg,#3a3024,#6b5436); }
.bc-diary{ background:url('../diary_cover.jpg?v=36') center/cover, linear-gradient(160deg,#23303d,#3a566b); }
.bc-photos{ background:url('../photos_media/p_cover_zhishou.jpg?v=36') center/cover, linear-gradient(160deg,#3d2a2a,#6b3a3a); }
.bc-letters{ background:url('../letters_cover.jpg?v=80') center/cover, linear-gradient(160deg,#2c3a2e,#4a6b52); }
.bc-tapes{ background:url('../tapes_cover.jpg?v=36') center/cover, linear-gradient(160deg,#3a2d3a,#6b4a6b); }
.bc-photo{ background-size:cover; background-position:center; background-repeat:no-repeat; writing-mode:horizontal-tb; }
.tape-list{ max-width:760px; margin:18px auto; }
.tape-item{ background:rgba(255,255,255,.03); border:1px solid var(--line); border-radius:10px; padding:14px 16px; margin:14px 0; }
.tape-meta{ margin-bottom:8px; font-size:14px; }
.tape-date{ color:#e0b0ff; font-weight:600; margin-right:8px; }
.tape-title{ color:var(--muted); }
.tape-audio{ width:100%; }
.tape-audio-wrap{ position:relative; }
.tape-loading{ font-size:13px; color:var(--muted); margin-top:6px; }
.tape-note{ max-width:760px; margin:14px auto 0; white-space:pre-wrap; line-height:1.9; color:#dfe0e6; font-family:"Songti SC","SimSun","Noto Serif CJK SC",serif; font-size:15px; background:rgba(255,255,255,.02); border-left:3px solid var(--accent); padding:10px 14px; border-radius:6px; }

/* 嵌入 HTML 书（卅年祭奠 / 灵魂拷问） */
.htmlbook{ max-width:840px; margin:0 auto; color:#dfe0e6; line-height:1.85; font-size:15.5px; }
.htmlbook h1{ font-size:22px; color:var(--accent); font-weight:700; margin:0 0 .6em; border-bottom:2px solid var(--accent); padding-bottom:.25em; }
.htmlbook h2{ font-size:18px; color:#e8c98a; font-weight:700; margin:1.3em 0 .5em; }
.htmlbook h3{ font-size:16px; color:#cfe3ff; font-weight:600; margin:1.1em 0 .4em; }
.htmlbook p{ margin:.55em 0; }
.htmlbook ul,.htmlbook ol{ margin:.4em 0 .6em 1.3em; padding:0; }
.htmlbook li{ margin:.3em 0; }
.htmlbook b,.htmlbook strong{ color:#ffd9a0; }
.htmlbook blockquote{ margin:.6em 0; padding:.4em 1em; border-left:3px solid var(--accent); background:rgba(255,255,255,.03); color:#cfd2da; }
.htmlbook table{ border-collapse:collapse; width:100%; margin:.6em 0; font-size:14px; }
.htmlbook th,.htmlbook td{ border:1px solid var(--line); padding:6px 10px; text-align:left; }
.htmlbook th{ background:rgba(255,255,255,.06); color:var(--text); }
.htmlbook img{ max-width:100%; height:auto; border-radius:8px; margin:.5em 0; }
.htmlbook a{ color:#9ecbff; }

.bc-meta{ flex:1; min-width:0; }
.bc-name{ font-size:19px; color:var(--text); font-weight:700; margin-bottom:6px; }
.bc-tag{ display:inline-block; font-size:9px; color:var(--accent); border:1px solid var(--accent); border-radius:10px; padding:1px 8px; margin-bottom:8px; }
.bc-desc{ font-size:11px; color:var(--muted); line-height:1.6; }
.bc-desc2, .bc-desc3, .bc-desc4{ font-size:10px; color:var(--muted); opacity:.8; line-height:1.5; margin-top:3px; }
/* 书架分组（方案B：日记 · 及其影像） */
.books-wrap{ display:flex; flex-direction:column; gap:42px; align-items:center; }
.shelf-group{ width:100%; max-width:880px; }
.shelf-group-title{ font-size:13px; color:var(--muted); letter-spacing:3px; text-align:center; margin:0 0 18px; }
.shelf-group-title::before, .shelf-group-title::after{
  content:""; display:inline-block; width:46px; height:1px; background:var(--line);
  vertical-align:middle; margin:0 14px;
}
.bookcard-sub{ border-style:dashed; }
.bookcard-sub .bc-tag{ color:var(--accent2); border-color:var(--accent2); }
/* 上卷五张卡片组：霜灰·寂暗内陷阴翳表达悲伤；中/下卷置于框外不再加框 */
.shelf-group-main{
  border:1px solid rgba(122,136,156,.22);
  border-radius:18px;
  padding:22px 18px;
  background:linear-gradient(180deg,#1a1d24 0%,#13151b 100%);
  box-shadow: inset 0 0 70px rgba(0,0,0,.55), 0 4px 22px rgba(0,0,0,.35);
  margin-bottom:6px;
}
.shelf-group-new{ width:100%; max-width:880px; margin-top:16px; }

/* === 执手时光：画廊 + 灯箱 === */
.gallery{ display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:14px; max-width:1000px; margin:18px auto 0; }
.gitem{ margin:0; cursor:zoom-in; border:1px solid var(--line); border-radius:10px; overflow:hidden; background:#0e0f13; aspect-ratio:1/1; display:flex; align-items:center; justify-content:center; transition:.15s; }
.vitem{ margin:0; border:1px solid var(--line); border-radius:10px; overflow:hidden; background:#000; aspect-ratio:1/1; display:flex; align-items:center; justify-content:center; position:relative; }
.vitem .vvid{ width:100%; height:100%; object-fit:contain; background:#000; display:block; }
.vcap{ position:absolute; left:0; right:0; bottom:0; background:rgba(0,0,0,.55); color:#e8e8e8; font-size:11px; padding:3px 6px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; pointer-events:none; }
.vid-loading{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:var(--muted); font-size:13px; text-align:center; padding:8px; }
.gitem:hover{ border-color:var(--accent); transform:translateY(-2px); }
.gitem img{ width:100%; height:100%; object-fit:cover; display:block; }
/* 相册内文字块（源 docx 排版/文字 还原） */
.ptext{ margin:10px 0; padding:8px 12px; font-family:"Songti SC","SimSun","Noto Serif CJK SC",serif; font-size:15px; line-height:1.9; color:#cfd2da; background:rgba(255,255,255,.03); border-left:3px solid var(--accent2); border-radius:0 6px 6px 0; }
.album-cover{ max-width:1000px; margin:18px auto 0; border-radius:12px; overflow:hidden; box-shadow:0 6px 26px rgba(0,0,0,.5); }
.album-cover img{ width:100%; display:block; }
.lightbox{
  position:fixed; inset:0; z-index:80; display:none; align-items:center; justify-content:center;
  background:rgba(0,0,0,.92); flex-direction:column;
}
.lightbox img{ max-width:92vw; max-height:84vh; border-radius:6px; box-shadow:0 8px 40px rgba(0,0,0,.7); }
.lb-btn{ position:absolute; background:rgba(255,255,255,.1); color:#fff; border:none; cursor:pointer; border-radius:50%; width:46px; height:46px; font-size:24px; line-height:1; display:flex; align-items:center; justify-content:center; transition:.15s; }
.lb-btn:hover{ background:rgba(255,255,255,.25); }
.lb-close{ top:18px; right:18px; }
.lb-prev{ left:18px; top:50%; transform:translateY(-50%); }
.lb-next{ right:18px; top:50%; transform:translateY(-50%); }
.lbcount{ position:absolute; bottom:20px; color:#ddd; font-size:14px; letter-spacing:1px; }

/* === 正文：日记版 === */
.diary{ max-width:760px; margin:0 auto; }
.diary-title{ font-size:20px; color:var(--text); text-align:center; margin:0 0 1.2em; font-weight:600; letter-spacing:1px; font-family:"Songti SC","SimSun","Noto Serif CJK SC",serif; }
.dtable-wrap{ max-width:760px; margin:18px auto; overflow-x:auto; }
.dtable{ width:100%; border-collapse:collapse; font-family:"Songti SC","SimSun","Noto Serif CJK SC",serif; font-size:15px; color:#dfe0e6; background:rgba(255,255,255,.02); }
.dtable th, .dtable td{ border:1px solid var(--line); padding:7px 10px; text-align:left; vertical-align:top; line-height:1.7; }
.dtable th{ background:rgba(127,166,201,.16); color:#cfe2f2; font-weight:600; }
.dtable tr:nth-child(even) td{ background:rgba(255,255,255,.03); }
.dimg{ margin:18px 0; text-align:center; }
.dimg img{ border-radius:10px; box-shadow:0 4px 18px rgba(0,0,0,.45); }
.dtext{ margin:0 0 1em; font-family:"Songti SC","SimSun","Noto Serif CJK SC",serif; font-size:17px; line-height:2; color:#dfe0e6; text-align:justify; }
.ddate{ color:var(--accent2); font-size:14px; font-weight:600; border-left:3px solid var(--accent2); padding-left:10px; margin:1.4em 0 .6em; letter-spacing:1px; }
.badge.diary{ background:rgba(127,166,201,.16); color:#9cc0e0; border:1px solid rgba(127,166,201,.4); }
.letter{ max-width:760px; margin:0 auto; }
.ltext{ margin:0 0 1.1em; font-family:"Songti SC","SimSun","Noto Serif CJK SC",serif; font-size:17px; line-height:2.05; color:#e3e4ea; text-align:justify; }

@media (max-width:820px){
  .bookcard{ width:100%; }
  /* 书架卡片在手机上统一竖排，避免 flex-wrap 导致的首个卡片错位 */
  .books{ flex-direction:column; align-items:stretch; }
  /* 日记/信件内图片在手机上必须限宽，否则内联 max-width:760px 会撑破视口 */
  .dimg img{ max-width:100% !important; height:auto !important; }
  /* 日记/信件正文在手机上防止长串/宽表导致横向滚动 */
  .content{ overflow-x:hidden; }
  .reader,.diary,.letter{ width:100%; }
  .rtitle{ font-size:21px; }
  .rsub{ font-size:12px; line-height:1.7; padding:0 4px; }
  .pagerbtn{ font-size:13px; padding:10px; }
  .reader{ font-size:16px; }
  .dtext,.ddate,.rtitle,.rsub,.ltext,.ptext,.dtable th,.dtable td{ overflow-wrap:anywhere; word-break:break-word; }
  .dtable-wrap{ -webkit-overflow-scrolling:touch; }
}

.ver-badge{position:fixed;right:6px;bottom:6px;font-size:10px;color:var(--muted);opacity:.45;z-index:200;font-family:sans-serif;pointer-events:none;letter-spacing:1px;}

/* ===== 目录页（取自《2574（上）…_12目录.pdf》去除首页） ===== */
.toc{ position:fixed; inset:0; z-index:30; background:#000; overflow-y:auto; -webkit-overflow-scrolling:touch; }
.toc-inner{ max-width:760px; margin:0 auto; padding:46px 18px 70px;
  font-family:"Songti SC","SimSun","Noto Serif CJK SC",serif; }
.toc-head{ position:relative; display:flex; align-items:center; justify-content:space-between; gap:12px; margin:0 0 12px; }
.toc-kick{ color:#c62828; font-weight:700; letter-spacing:10px; font-size:21px;
  margin:0; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.toc-shelf-btn{ padding:6px 16px; border-radius:18px; border:1px solid #6c5648; background:transparent;
  color:#cbb59e; font-size:13px; font-weight:700; letter-spacing:2px; cursor:pointer; flex-shrink:0;
  transition:.18s; font-family:inherit; }
.toc-shelf-btn:hover{ background:#6c5648; color:#0c0b0e; }
.toc-shelf-btn:active{ transform:translateY(-50%) scale(.97); }
.toc-list{ border-top:1px solid rgba(198,40,40,.15); }
.toc-sec{ display:flex; align-items:center; gap:14px; margin:16px 0 2px;
  color:#c62828; font-weight:700; letter-spacing:2px; font-size:17px; }
.toc-sec::before, .toc-sec::after{ content:""; flex:1; height:1px;
  background:rgba(198,40,40,.28); }
.toc-sec.year{ color:#c9cdd6; font-size:15px; letter-spacing:1px; font-weight:600; }
.toc-sec.year::before, .toc-sec.year::after{ background:linear-gradient(90deg,transparent,rgba(255,255,255,.12),transparent); }
.toc-row{ display:flex; align-items:baseline; gap:10px; padding:3px 4px;
  border-bottom:1px solid rgba(255,255,255,.05); line-height:1.5; }
.toc-row .t{ flex:1 1 auto; min-width:0; word-break:break-word; }
.toc-row .pg{ flex:0 0 auto; color:#6f747e; font-size:13px;
  font-family:ui-monospace,Menlo,Consolas,monospace; }
.toc-ch{ text-align:center; justify-content:center; padding-left:0; color:#e9c46a; font-weight:600; font-size:16px; }
.toc-ch .t{ flex:0 1 auto; }
.toc-item{ padding-left:26px; font-size:15px; color:#aeb2bc; }
  /* 回目改为纯文字展示，不再作超链接 */
.toc-enter{ margin-top:36px; }
/* 回目：四句七言排成对齐的两行；回之间不留行距，紧凑排列 */
.toc-hui{ display:grid; grid-template-columns:auto 1fr auto; column-gap:10px; align-items:start;
  padding:3px 4px 3px 26px; line-height:1.5; border-bottom:1px solid rgba(255,255,255,.04); }
.toc-hui .hui-no{ white-space:nowrap; color:#cdd1d9; font-size:14px; padding-top:2px; }
.toc-hui .poem{ display:flex; flex-direction:column; min-width:0; }
.toc-hui .poem .ln{ display:block; white-space:nowrap; }
@media (max-width:820px){
  .prologue-inner{ padding:34px 16px 56px; }
  .pkick{ letter-spacing:9px; font-size:18px; margin-bottom:22px; }
  .pscene{ margin-bottom:0; }
  .pscene p{ font-size:14px; line-height:1.5; }
  .pscene .plead{ font-size:14px; }
  .pbtn{ margin-top:28px; }
}

@media (max-width:820px){
  .iconbtn{display:block;}
  .sidebar{position:fixed;left:0;top:0;bottom:0;z-index:25;transform:translateX(-100%);
    transition:transform .2s;box-shadow:var(--shadow);width:min(86vw,320px);overflow-x:hidden;}
  .sidebar.open{transform:translateX(0);}
  .scrim.show{display:block;}
  /* 老内核高度：改由 <head> 内联脚本读取 visualViewport 真实高度写入 --app-h，不再依赖 position:fixed 钉死（旧内核易算错高度、把内容区压成只露一小条） */
  /* 目录抽屉顶部留白，防手机浏览器顶部 UI（地址栏/状态栏）遮挡第一章 */
  /* 抽屉顶部留白须盖过固定顶栏（topbar 高约 56px，z-index:30 高于 sidebar:25，会盖住目录首条/第一章）；
     故 padding-top = 顶栏高度 + 安全区，确保“第1章/第一章/第一条”不被顶栏遮挡 */
  .sidebar{padding-top:calc(60px + env(safe-area-inset-top,0px));}
  .searchwrap{order:3;flex-basis:100%;}
  .content{padding:18px 16px 70px;}
  .reader{font-size:17px;}
  .lock-inner{padding:24px 16px;}
  .lock-cover{max-width:300px;border-radius:10px;}
  .lock-title{font-size:24px;}
  /* 日记版/小说版目录树（共享 renderNav）：长章名、连续无空格七言诗回目标题在手机窄抽屉里真正换行，不再竖排天书 */
  .sidebar{min-width:0;}
  .nav{min-width:0;}
  .chap{min-width:0;}
  .chapHead{flex-wrap:wrap;min-width:0;}
  .chapHead .chname{flex:1 1 auto;min-width:0;}
  .chapHead .chsub{flex:1 1 100%;max-width:100%;white-space:normal;overflow:visible;text-overflow:clip;margin-top:2px;min-width:0;}
  .chapHead .cnt{flex:0 0 auto;}
  .hm{flex-wrap:wrap;min-width:0;}
  .hm .ti{flex:1 1 0;min-width:0;max-width:100%;overflow-wrap:anywhere;word-break:break-all;}
  .hm .badge{margin-left:8px;flex:0 0 auto;}
  /* 书架：手机端顶部/底部留白防浏览器 UI 遮挡，并允许从顶滚动到日记版 */
  .shelf-inner{padding-top:calc(40px + env(safe-area-inset-top,0px));padding-bottom:calc(40px + env(safe-area-inset-bottom,0px));}
}

/* === 新增：书架 / 二级页面 === */
#homeBtn{display:inline-flex;align-items:center;justify-content:center;}
.shelf{
  position:fixed; inset:0; z-index:60; overflow:auto;
  background:linear-gradient(135deg,#0d0e12 0%,#15161a 45%,#1a1c24 100%);
}
/* 严禁 .shelf 用 display:flex + align-items:center 居中：当5个书卡总高超过手机视口时，
   顶部（日记版）会被裁切且无法上滑到达（经典 flex 居中 overflow 顶切坑）。
   改为 block 滚动容器；.shelf-inner 用 min-height:100% + flex 列居中：
   内容矮时桌面仍垂直居中，内容高时从顶部排布且可滚到顶（日记版永远可达）。 */
.shelf-inner{ width:100%; max-width:880px; padding:40px 24px; text-align:center;
  margin:0 auto; min-height:100%; box-sizing:border-box;
  display:flex; flex-direction:column; align-items:center; justify-content:center; }
.shelf-title{ color:var(--accent); font-size:22px; letter-spacing:3px; margin:0 0 36px; font-weight:700; }
.books{ display:flex; gap:28px; justify-content:center; flex-wrap:wrap; }
.bookcard{
  display:flex; gap:18px; align-items:center; text-align:left; text-decoration:none;
  background:var(--panel); border:1px solid var(--line); border-radius:16px;
  padding:22px 26px; width:380px; max-width:100%; cursor:pointer; transition:.18s;
}
.bookcard:hover{ border-color:var(--accent); transform:translateY(-3px); box-shadow:var(--shadow); }
.bc-cover{
  flex:0 0 92px; width:92px; height:128px; border-radius:10px; color:#fff;
  display:flex; align-items:center; justify-content:center; font-size:22px; letter-spacing:4px;
  font-weight:700; writing-mode:vertical-rl; box-shadow:0 6px 20px rgba(0,0,0,.5);
}
.bc-novel{ background:url('../cover.jpeg?v=36') center/cover, linear-gradient(160deg,#3a3024,#6b5436); }
.bc-diary{ background:url('../diary_cover.jpg?v=36') center/cover, linear-gradient(160deg,#23303d,#3a566b); }
.bc-photos{ background:url('../photos_media/p_cover_zhishou.jpg?v=36') center/cover, linear-gradient(160deg,#3d2a2a,#6b3a3a); }
.bc-letters{ background:url('../letters_cover.jpg?v=80') center/cover, linear-gradient(160deg,#2c3a2e,#4a6b52); }
.bc-tapes{ background:url('../tapes_cover.jpg?v=36') center/cover, linear-gradient(160deg,#3a2d3a,#6b4a6b); }
.bc-photo{ background-size:cover; background-position:center; background-repeat:no-repeat; writing-mode:horizontal-tb; }
.tape-list{ max-width:760px; margin:18px auto; }
.tape-item{ background:rgba(255,255,255,.03); border:1px solid var(--line); border-radius:10px; padding:14px 16px; margin:14px 0; }
.tape-meta{ margin-bottom:8px; font-size:14px; }
.tape-date{ color:#e0b0ff; font-weight:600; margin-right:8px; }
.tape-title{ color:var(--muted); }
.tape-audio{ width:100%; }
.tape-audio-wrap{ position:relative; }
.tape-loading{ font-size:13px; color:var(--muted); margin-top:6px; }
.tape-note{ max-width:760px; margin:14px auto 0; white-space:pre-wrap; line-height:1.9; color:#dfe0e6; font-family:"Songti SC","SimSun","Noto Serif CJK SC",serif; font-size:15px; background:rgba(255,255,255,.02); border-left:3px solid var(--accent); padding:10px 14px; border-radius:6px; }

/* 嵌入 HTML 书（卅年祭奠 / 灵魂拷问） */
.htmlbook{ max-width:840px; margin:0 auto; color:#dfe0e6; line-height:1.85; font-size:15.5px; }
.htmlbook h1{ font-size:22px; color:var(--accent); font-weight:700; margin:0 0 .6em; border-bottom:2px solid var(--accent); padding-bottom:.25em; }
.htmlbook h2{ font-size:18px; color:#e8c98a; font-weight:700; margin:1.3em 0 .5em; }
.htmlbook h3{ font-size:16px; color:#cfe3ff; font-weight:600; margin:1.1em 0 .4em; }
.htmlbook p{ margin:.55em 0; }
.htmlbook ul,.htmlbook ol{ margin:.4em 0 .6em 1.3em; padding:0; }
.htmlbook li{ margin:.3em 0; }
.htmlbook b,.htmlbook strong{ color:#ffd9a0; }
.htmlbook blockquote{ margin:.6em 0; padding:.4em 1em; border-left:3px solid var(--accent); background:rgba(255,255,255,.03); color:#cfd2da; }
.htmlbook table{ border-collapse:collapse; width:100%; margin:.6em 0; font-size:14px; }
.htmlbook th,.htmlbook td{ border:1px solid var(--line); padding:6px 10px; text-align:left; }
.htmlbook th{ background:rgba(255,255,255,.06); color:var(--text); }
.htmlbook img{ max-width:100%; height:auto; border-radius:8px; margin:.5em 0; }
.htmlbook a{ color:#9ecbff; }

.bc-meta{ flex:1; min-width:0; }
.bc-name{ font-size:19px; color:var(--text); font-weight:700; margin-bottom:6px; }
.bc-tag{ display:inline-block; font-size:9px; color:var(--accent); border:1px solid var(--accent); border-radius:10px; padding:1px 8px; margin-bottom:8px; }
.bc-desc{ font-size:11px; color:var(--muted); line-height:1.6; }
.bc-desc2, .bc-desc3, .bc-desc4{ font-size:10px; color:var(--muted); opacity:.8; line-height:1.5; margin-top:3px; }
/* 书架分组（方案B：日记 · 及其影像） */
.books-wrap{ display:flex; flex-direction:column; gap:42px; align-items:center; }
.shelf-group{ width:100%; max-width:880px; }
.shelf-group-title{ font-size:13px; color:var(--muted); letter-spacing:3px; text-align:center; margin:0 0 18px; }
.shelf-group-title::before, .shelf-group-title::after{
  content:""; display:inline-block; width:46px; height:1px; background:var(--line);
  vertical-align:middle; margin:0 14px;
}
.bookcard-sub{ border-style:dashed; }
.bookcard-sub .bc-tag{ color:var(--accent2); border-color:var(--accent2); }
/* 上卷五张卡片组：霜灰·寂暗内陷阴翳表达悲伤；中/下卷置于框外不再加框 */
.shelf-group-main{
  border:1px solid rgba(122,136,156,.22);
  border-radius:18px;
  padding:22px 18px;
  background:linear-gradient(180deg,#1a1d24 0%,#13151b 100%);
  box-shadow: inset 0 0 70px rgba(0,0,0,.55), 0 4px 22px rgba(0,0,0,.35);
  margin-bottom:6px;
}
.shelf-group-new{ width:100%; max-width:880px; margin-top:16px; }

/* === 执手时光：画廊 + 灯箱 === */
.gallery{ display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:14px; max-width:1000px; margin:18px auto 0; }
.gitem{ margin:0; cursor:zoom-in; border:1px solid var(--line); border-radius:10px; overflow:hidden; background:#0e0f13; aspect-ratio:1/1; display:flex; align-items:center; justify-content:center; transition:.15s; }
.vitem{ margin:0; border:1px solid var(--line); border-radius:10px; overflow:hidden; background:#000; aspect-ratio:1/1; display:flex; align-items:center; justify-content:center; position:relative; }
.vitem .vvid{ width:100%; height:100%; object-fit:contain; background:#000; display:block; }
.vcap{ position:absolute; left:0; right:0; bottom:0; background:rgba(0,0,0,.55); color:#e8e8e8; font-size:11px; padding:3px 6px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; pointer-events:none; }
.vid-loading{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:var(--muted); font-size:13px; text-align:center; padding:8px; }
.gitem:hover{ border-color:var(--accent); transform:translateY(-2px); }
.gitem img{ width:100%; height:100%; object-fit:cover; display:block; }
/* 相册内文字块（源 docx 排版/文字 还原） */
.ptext{ margin:10px 0; padding:8px 12px; font-family:"Songti SC","SimSun","Noto Serif CJK SC",serif; font-size:15px; line-height:1.9; color:#cfd2da; background:rgba(255,255,255,.03); border-left:3px solid var(--accent2); border-radius:0 6px 6px 0; }
.album-cover{ max-width:1000px; margin:18px auto 0; border-radius:12px; overflow:hidden; box-shadow:0 6px 26px rgba(0,0,0,.5); }
.album-cover img{ width:100%; display:block; }
.lightbox{
  position:fixed; inset:0; z-index:80; display:none; align-items:center; justify-content:center;
  background:rgba(0,0,0,.92); flex-direction:column;
}
.lightbox img{ max-width:92vw; max-height:84vh; border-radius:6px; box-shadow:0 8px 40px rgba(0,0,0,.7); }
.lb-btn{ position:absolute; background:rgba(255,255,255,.1); color:#fff; border:none; cursor:pointer; border-radius:50%; width:46px; height:46px; font-size:24px; line-height:1; display:flex; align-items:center; justify-content:center; transition:.15s; }
.lb-btn:hover{ background:rgba(255,255,255,.25); }
.lb-close{ top:18px; right:18px; }
.lb-prev{ left:18px; top:50%; transform:translateY(-50%); }
.lb-next{ right:18px; top:50%; transform:translateY(-50%); }
.lbcount{ position:absolute; bottom:20px; color:#ddd; font-size:14px; letter-spacing:1px; }

/* === 正文：日记版 === */
.diary{ max-width:760px; margin:0 auto; }
.diary-title{ font-size:20px; color:var(--text); text-align:center; margin:0 0 1.2em; font-weight:600; letter-spacing:1px; font-family:"Songti SC","SimSun","Noto Serif CJK SC",serif; }
.dtable-wrap{ max-width:760px; margin:18px auto; overflow-x:auto; }
.dtable{ width:100%; border-collapse:collapse; font-family:"Songti SC","SimSun","Noto Serif CJK SC",serif; font-size:15px; color:#dfe0e6; background:rgba(255,255,255,.02); }
.dtable th, .dtable td{ border:1px solid var(--line); padding:7px 10px; text-align:left; vertical-align:top; line-height:1.7; }
.dtable th{ background:rgba(127,166,201,.16); color:#cfe2f2; font-weight:600; }
.dtable tr:nth-child(even) td{ background:rgba(255,255,255,.03); }
.dimg{ margin:18px 0; text-align:center; }
.dimg img{ border-radius:10px; box-shadow:0 4px 18px rgba(0,0,0,.45); }
.dtext{ margin:0 0 1em; font-family:"Songti SC","SimSun","Noto Serif CJK SC",serif; font-size:17px; line-height:2; color:#dfe0e6; text-align:justify; }
.ddate{ color:var(--accent2); font-size:14px; font-weight:600; border-left:3px solid var(--accent2); padding-left:10px; margin:1.4em 0 .6em; letter-spacing:1px; }
.badge.diary{ background:rgba(127,166,201,.16); color:#9cc0e0; border:1px solid rgba(127,166,201,.4); }
.letter{ max-width:760px; margin:0 auto; }
.ltext{ margin:0 0 1.1em; font-family:"Songti SC","SimSun","Noto Serif CJK SC",serif; font-size:17px; line-height:2.05; color:#e3e4ea; text-align:justify; }

@media (max-width:820px){
  .bookcard{ width:100%; }
  /* 书架卡片在手机上统一竖排，避免 flex-wrap 导致的首个卡片错位 */
  .books{ flex-direction:column; align-items:stretch; }
  /* 日记/信件内图片在手机上必须限宽，否则内联 max-width:760px 会撑破视口 */
  .dimg img{ max-width:100% !important; height:auto !important; }
  /* 日记/信件正文在手机上防止长串/宽表导致横向滚动 */
  .content{ overflow-x:hidden; }
  .reader,.diary,.letter{ width:100%; }
  .rtitle{ font-size:21px; }
  .rsub{ font-size:12px; line-height:1.7; padding:0 4px; }
  .pagerbtn{ font-size:13px; padding:10px; }
  .reader{ font-size:16px; }
  .dtext,.ddate,.rtitle,.rsub,.ltext,.ptext,.dtable th,.dtable td{ overflow-wrap:anywhere; word-break:break-word; }
  .dtable-wrap{ -webkit-overflow-scrolling:touch; }
}

.ver-badge{position:fixed;right:6px;bottom:6px;font-size:10px;color:var(--muted);opacity:.45;z-index:200;font-family:sans-serif;pointer-events:none;letter-spacing:1px;}

/* ===== 目录页（取自《2574（上）…_12目录.pdf》去除首页） ===== */
.toc{ position:fixed; inset:0; z-index:30; background:#000; overflow-y:auto; -webkit-overflow-scrolling:touch; }
.toc-inner{ max-width:760px; margin:0 auto; padding:46px 18px 70px;
  font-family:"Songti SC","SimSun","Noto Serif CJK SC",serif; }
.toc-head{ position:relative; display:flex; align-items:center; justify-content:space-between; gap:12px; margin:0 0 12px; }
.toc-kick{ color:#c62828; font-weight:700; letter-spacing:10px; font-size:21px;
  margin:0; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.toc-shelf-btn{ padding:6px 16px; border-radius:18px; border:1px solid #6c5648; background:transparent;
  color:#cbb59e; font-size:13px; font-weight:700; letter-spacing:2px; cursor:pointer; flex-shrink:0;
  transition:.18s; font-family:inherit; }
.toc-shelf-btn:hover{ background:#6c5648; color:#0c0b0e; }
.toc-shelf-btn:active{ transform:translateY(-50%) scale(.97); }
.toc-list{ border-top:1px solid rgba(198,40,40,.15); }
.toc-sec{ display:flex; align-items:center; gap:14px; margin:16px 0 2px;
  color:#c62828; font-weight:700; letter-spacing:2px; font-size:17px; }
.toc-sec::before, .toc-sec::after{ content:""; flex:1; height:1px;
  background:rgba(198,40,40,.28); }
.toc-sec.year{ color:#c9cdd6; font-size:15px; letter-spacing:1px; font-weight:600; }
.toc-sec.year::before, .toc-sec.year::after{ background:linear-gradient(90deg,transparent,rgba(255,255,255,.12),transparent); }
.toc-row{ display:flex; align-items:baseline; gap:10px; padding:3px 4px;
  border-bottom:1px solid rgba(255,255,255,.05); line-height:1.5; }
.toc-row .t{ flex:1 1 auto; min-width:0; word-break:break-word; }
.toc-row .pg{ flex:0 0 auto; color:#6f747e; font-size:13px;
  font-family:ui-monospace,Menlo,Consolas,monospace; }
.toc-ch{ text-align:center; justify-content:center; padding-left:0; color:#e9c46a; font-weight:600; font-size:16px; }
.toc-ch .t{ flex:0 1 auto; }
.toc-item{ padding-left:26px; font-size:15px; color:#aeb2bc; }
  /* 回目改为纯文字展示，不再作超链接 */
.toc-enter{ margin-top:36px; }
/* 回目：四句七言排成对齐的两行；回之间不留行距，紧凑排列 */
.toc-hui{ display:grid; grid-template-columns:auto 1fr auto; column-gap:10px; align-items:start;
  padding:3px 4px 3px 26px; line-height:1.5; border-bottom:1px solid rgba(255,255,255,.04); }
.toc-hui .hui-no{ white-space:nowrap; color:#cdd1d9; font-size:14px; padding-top:2px; }
.toc-hui .poem{ display:flex; flex-direction:column; min-width:0; }
.toc-hui .poem .ln{ display:block; white-space:nowrap; }
@media (max-width:820px){
  .toc-inner{ padding:34px 13px 56px; }
  .toc-kick{ font-weight:700; letter-spacing:6px; font-size:16px; margin:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .toc-ch{ font-size:15px; padding-left:0; }
  .toc-item{ font-size:14px; padding-left:18px; }
  .toc-hui{ column-gap:8px; padding:3px 4px 3px 18px; line-height:1.45; }
  .toc-hui .hui-no{ font-size:13px; }
}


/* === 泪痕纹理框（下卷 + 卅年祭奠 同框）：明显湿痕拖尾 + 暗红晕染呼应"恨" === */
.shelf-group-tear{
  width:100%; max-width:880px; margin-top:16px;
  padding:22px 18px; border-radius:18px;
  /* 与前面框（.shelf-group-main）完全一致：冷灰边 + 寂暗内陷，无泪痕纹理 */
  border:1px solid rgba(122,136,156,.22);
  background:linear-gradient(180deg,#1a1d24 0%,#13151b 100%);
  box-shadow:
    inset 0 0 70px rgba(0,0,0,.55),
    0 4px 22px rgba(0,0,0,.35);
}

/* === 首页锁屏：中卷 / 下卷 行前暗红分割线（同题记） === */
.lock-divider{
  display:block; width:72%; margin:6px auto; height:0;
  border-top:1px solid rgba(198,40,40,.42);
}


/* ===== v146 页面内轻提示（替代 alert，iframe/移动端同样可见）===== */
.z-toast{
  position:fixed; left:50%; top:50%; transform:translate(-50%,-50%) scale(.96);
  background:rgba(12,13,17,.94); color:#e8e6e3; border:1px solid rgba(201,163,94,.35);
  padding:14px 20px; border-radius:10px; font-size:15px; line-height:1.6; text-align:center;
  max-width:78%; z-index:9999; opacity:0; pointer-events:none;
  transition:opacity .18s ease, transform .18s ease;
  box-shadow:0 8px 30px rgba(0,0,0,.6); font-family:inherit;
}
.z-toast.show{ opacity:1; transform:translate(-50%,-50%) scale(1); }
