
:root{--bg:#0a0f1e;--bg2:#0d1326;--panel:#10172b;--ink:#dfe4ef;--dim:#8b93a7;--faint:#5a6175;
--warm:#e8c98a;--cold:#8fb6d9;--line:#222a42;--maxw:34em}
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{background:var(--bg);color:var(--ink);font-family:"Noto Serif SC","Source Han Serif SC","Songti SC",serif;
font-size:17px;line-height:2.05;letter-spacing:.02em}
body.day{--bg:#f6efe3;--bg2:#fff8ed;--panel:#fffaf2;--ink:#332b24;--dim:#746b60;--faint:#9d8f80;
--warm:#9b6b2d;--cold:#52758f;--line:#e3d3bd;color-scheme:light}
body.day .stars{opacity:.28;filter:sepia(.35);mix-blend-mode:multiply}
a{color:inherit;text-decoration:none}
.stars{position:fixed;inset:0;pointer-events:none;opacity:.5;z-index:0;
background-image:radial-gradient(1px 1px at 12% 28%,#fff8,transparent),
radial-gradient(1px 1px at 67% 11%,#fff6,transparent),
radial-gradient(1.5px 1.5px at 83% 64%,#fff7,transparent),
radial-gradient(1px 1px at 35% 77%,#fff5,transparent),
radial-gradient(1px 1px at 54% 43%,#fff4,transparent),
radial-gradient(1.5px 1.5px at 22% 58%,#fff6,transparent),
radial-gradient(1px 1px at 91% 33%,#fff5,transparent),
radial-gradient(1px 1px at 44% 9%,#fff7,transparent)}
.wrap{position:relative;z-index:1;max-width:var(--maxw);margin:0 auto;padding:0 1.4em 6em}
#bar{position:fixed;top:0;left:0;height:2px;background:var(--warm);width:0;z-index:9;transition:width .1s}
.music{display:inline-flex;align-items:center;gap:.35em;border:1px solid #e8c98a55;border-radius:999px;
padding:.32em .7em;background:#0d1326cc;color:var(--warm);font:inherit;font-size:.78em;letter-spacing:.08em;cursor:pointer;transition:.2s}
.music:hover,.music.on{border-color:var(--warm);color:#fff;box-shadow:0 0 16px #e8c98a33}
.music.on .music-icon{animation:pulse 1.4s ease-in-out infinite}
.music-icon{font-size:1.05em;line-height:1}
.theme-fab{position:fixed;top:1.1em;right:clamp(1em,4vw,2em);z-index:8;border:1px solid var(--line);border-radius:999px;
padding:.36em .9em;background:#0c1124cc;color:var(--dim);font:inherit;font-size:.82em;letter-spacing:.1em;cursor:pointer;backdrop-filter:blur(8px);transition:.18s}
.theme-fab:hover{border-color:var(--warm);color:var(--warm);box-shadow:0 0 18px #e8c98a22}
body.day .music,body.day .booknav a,body.day .theme-fab{background:#fff8eedd}
@keyframes pulse{50%{transform:scale(1.25)}}

/* ===== 书架首页（网格） ===== */
.shelf-head{text-align:center;padding:12vh 0 1vh}
.shelf-head h1{font-size:1.5em;font-weight:600;letter-spacing:.35em;color:var(--ink)}
.shelf-head p{color:var(--faint);font-size:.82em;letter-spacing:.2em;margin-top:.8em}
.shelf{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));
gap:2.6em 1.8em;max-width:60em;margin:6vh auto 0}
.bookcard{display:block;text-align:left;transition:.25s}
.bookcard .cv{position:relative;width:100%;aspect-ratio:2/3;border-radius:7px;overflow:hidden;
box-shadow:0 10px 34px #000a;background:var(--bg2);transition:.25s}
.bookcard .cv img{width:100%;height:100%;object-fit:cover;display:block}
.bookcard:hover .cv{transform:translateY(-6px);box-shadow:0 18px 44px #000c}
.bookcard .bt{font-size:.95em;font-weight:600;letter-spacing:.03em;margin:.85em 0 .25em;color:var(--ink);
line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bookcard .ba{color:var(--dim);font-size:.74em;letter-spacing:.05em;
white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.foot{color:var(--faint);font-size:.75em;text-align:center;margin:9vh 0 3vh;letter-spacing:.1em}

/* ===== 书目录页 ===== */
.booknav{position:fixed;top:1.1em;left:clamp(1em,4vw,2em);z-index:8}
.booknav a{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;
padding:.36em .9em;background:#0c1124cc;color:var(--dim);font-size:.82em;letter-spacing:.1em;backdrop-filter:blur(8px);transition:.18s}
.booknav a:hover{border-color:var(--warm);color:var(--warm);box-shadow:0 0 18px #e8c98a22}
.bookhome{text-align:center;padding:9vh 0 2vh}
.bookhome .cv{display:inline-block;width:min(56%,260px);aspect-ratio:2/3;border-radius:6px;overflow:hidden;box-shadow:0 8px 50px #0009}
.bookhome .cv img{width:100%;height:100%;object-fit:cover}
.bookhome h1{font-size:1.7em;font-weight:600;letter-spacing:.12em;margin:1.1em 0 .3em}
.bookhome .sub{color:var(--dim);font-size:.82em;letter-spacing:.1em}
.bookhome .blurb{color:var(--faint);font-size:.9em;line-height:2;margin:1.4em auto 0;max-width:24em}
.toc{margin-top:3.5em}
.toc h2{font-size:.85em;color:var(--warm);letter-spacing:.3em;margin:2.4em 0 .9em;font-weight:400;opacity:.85}
.toc a.it{display:block;padding:.5em .2em;border-bottom:1px solid var(--line);color:var(--dim);font-size:.92em;transition:.15s}
.toc a.it:hover{color:var(--ink);padding-left:.6em}
.backshelf{display:inline-block;margin-top:3.5em;color:var(--faint);font-size:.82em;letter-spacing:.15em}
.backshelf:hover{color:var(--ink)}

/* ===== 章节阅读页（仿真翻书 StPageFlip） ===== */
body.rd{height:100vh;overflow:hidden;display:flex;flex-direction:column}
.rd-top{flex:0 0 auto;height:50px;display:flex;align-items:center;gap:1em;padding:0 clamp(1em,4vw,2em);
border-bottom:1px solid var(--line);background:#0c1124ee;position:relative;z-index:6;backdrop-filter:blur(8px)}
.rd-top .rd-toc{font-size:1.25em;color:var(--dim);line-height:1;padding:.1em .2em;transition:.15s}
.rd-top .rd-toc,.rd-linkbtn{border:0;background:transparent;font:inherit;cursor:pointer}
.rd-top .rd-toc:hover,.rd-linkbtn:hover{color:var(--warm)}
.rd-top .rd-name{flex:1;min-width:0;color:var(--ink);font-size:.88em;letter-spacing:.04em;
white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rd-top .rd-links{display:flex;align-items:center;gap:1.05em;font-size:.8em;color:var(--dim)}
.rd-top .rd-links a,.rd-linkbtn{color:var(--dim);letter-spacing:.08em;transition:.15s}.rd-top .rd-links a:hover,.rd-linkbtn:hover{color:var(--warm)}
.rd-stage{flex:1 1 auto;position:relative;z-index:1;overflow:hidden;display:flex;
align-items:center;justify-content:center;user-select:none;-webkit-user-select:none}
#book{margin:0 auto}
#src{display:none}
.page{background:linear-gradient(180deg,#151b30,#0f152a);color:var(--ink)}
.page-inner{height:100%;box-sizing:border-box;padding:30px 28px;overflow:hidden;
font-size:16.5px;line-height:1.95;letter-spacing:.01em}
.page-inner .rd-chead{margin:0 0 1.1em}
.page-inner .rd-chead .vol{color:var(--faint);font-size:.72em;letter-spacing:.4em}
.page-inner .rd-chead .num{font-size:1.4em;font-weight:400;letter-spacing:.06em;margin-top:.3em;color:var(--ink)}
.page-inner .overture{color:var(--dim);font-style:italic;border-left:2px solid var(--line);
padding-left:1em;margin:0 0 1.2em;font-size:.9em}
.page-inner .overture p{margin:.3em 0;text-indent:0}
.page-inner p{margin:0 0 .85em;text-indent:2em}
.page-inner figure.ins,.page-inner .cover{margin:.5em 0;display:flex;align-items:center;justify-content:center}
.page-inner figure.ins img,.page-inner .cover img{max-width:100%;max-height:100%;object-fit:contain;border-radius:4px;box-shadow:0 4px 20px #0007}
.page-inner .log{margin:.8em 0;padding:.7em .9em;border:1px solid var(--line);border-radius:7px;background:#0d1326;font-size:.84em;color:var(--dim)}
.page-inner hr{border:0;text-align:center;margin:1em 0;height:1em}
.page-inner hr:after{content:"✦ ✦ ✦";color:var(--faint);font-size:.7em;letter-spacing:.8em;padding-left:.8em}
.rd-bottom{flex:0 0 auto;height:58px;display:flex;align-items:center;justify-content:space-between;
padding:0 clamp(1em,5vw,3.5em);border-top:1px solid var(--line);background:#0c1124ee;position:relative;z-index:6}
.rd-btn{border:1px solid var(--line);background:transparent;color:var(--dim);font:inherit;font-size:.84em;
letter-spacing:.1em;border-radius:999px;padding:.42em 1.4em;cursor:pointer;transition:.18s}
.rd-btn:hover{border-color:var(--warm);color:var(--warm)}
.rd-page{color:var(--faint);font-size:.78em;letter-spacing:.15em;font-variant-numeric:tabular-nums}
.toc-overlay{position:fixed;inset:0;z-index:30;display:none}
body.toc-open .toc-overlay{display:block}
.toc-shade{position:absolute;inset:0;background:#0008;backdrop-filter:blur(3px)}
.toc-drawer{position:absolute;top:0;right:0;width:min(88vw,380px);height:100%;overflow:auto;background:var(--panel);
border-left:1px solid var(--line);box-shadow:-16px 0 48px #0009;padding:1.15em 1.2em 2em}
.toc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.8em;color:var(--ink);letter-spacing:.18em}
.toc-close{border:1px solid var(--line);background:transparent;color:var(--dim);border-radius:999px;width:2em;height:2em;cursor:pointer;font:inherit}
.toc-close:hover{border-color:var(--warm);color:var(--warm)}
.rd-toc-list h2{font-size:.78em;color:var(--warm);font-weight:400;letter-spacing:.25em;margin:1.6em 0 .55em}
.rd-toc-list a{display:block;padding:.48em .55em;border-bottom:1px solid var(--line);color:var(--dim);font-size:.9em;transition:.15s}
.rd-toc-list a:hover,.rd-toc-list a.cur{color:var(--ink);background:var(--bg2);padding-left:.9em}
body.day .rd-top,body.day .rd-bottom{background:#fff8eedd}
body.day .page{background:linear-gradient(180deg,#fffaf2,#f6ecdf);color:var(--ink)}
body.day .page-inner .log{background:#fff3df}
body.day .toc-shade{background:#3b2a1680}
body.day .toc-drawer{box-shadow:-16px 0 48px #8b6b3a45}
@media(max-width:760px){body{font-size:16px}.rd-top .rd-links{gap:.8em}.music-text{display:none}.rd-linkbtn{font-size:.92em}.theme-fab{top:.8em;right:.8em}.booknav{top:.8em;left:.8em}}
