/* =========================================================
   WorkBuddy 实战电子书 · 高级质感阅读器
   ========================================================= */
:root{
  --serif:"Noto Serif SC","Source Han Serif SC","Songti SC","STSong",Georgia,"Times New Roman",serif;
  --sans:"Noto Sans SC","PingFang SC","Microsoft YaHei","Hiragino Sans GB",system-ui,sans-serif;
  --mono:"JetBrains Mono",Menlo,Consolas,"Courier New",monospace;
  --fs:19px; --lh:1.95; --font:var(--serif);
  --radius:18px; --ease:cubic-bezier(.22,.61,.36,1);
}
/* ---------- 阅读主题 ---------- */
[data-theme="dark"]{
  --bg:#0e1014; --paper:#161922; --ink:#e4e1d8; --muted:#97928a;
  --accent:#e0ad4e; --line:#272b34; --soft:#1d212b;
  --chrome:rgba(22,25,34,.82); --chrome-ink:#e4e1d8; --shadow:0 20px 60px rgba(0,0,0,.55);
}
[data-theme="light"]{
  --bg:#ece7dc; --paper:#fbfaf5; --ink:#2c2822; --muted:#8c8475;
  --accent:#b07d2b; --line:#e6ddca; --soft:#f1ebdd;
  --chrome:rgba(251,250,245,.86); --chrome-ink:#2c2822; --shadow:0 18px 50px rgba(120,100,60,.18);
}
[data-theme="sepia"]{
  --bg:#e3d2ad; --paper:#f4e8cf; --ink:#473826; --muted:#9a875f;
  --accent:#a9742f; --line:#e2cfa3; --soft:#ecdcb8;
  --chrome:rgba(244,232,207,.88); --chrome-ink:#473826; --shadow:0 18px 50px rgba(120,90,40,.22);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{
  font-family:var(--sans); background:var(--bg); color:var(--ink);
  overflow-x:hidden; transition:background .5s var(--ease),color .5s var(--ease);
}
.hidden{display:none !important}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
img{max-width:100%}

/* ===================== 封面 ===================== */
.cover{position:fixed;inset:0;overflow-y:auto;z-index:30;animation:fade .8s var(--ease);background:#0e1014}
.cover-bg{position:fixed;inset:0;background:
  radial-gradient(120% 90% at 20% 10%,#1b2a4a 0%,#0e1014 55%),
  radial-gradient(120% 120% at 85% 90%,#3a2348 0%,transparent 60%);
  background-color:#0e1014}
.cover-bg::after{content:"";position:fixed;inset:0;
  background:radial-gradient(60% 50% at 50% 30%,rgba(224,173,78,.12),transparent 70%)}
.cover-glow{position:fixed;width:60vmax;height:60vmax;left:50%;top:30%;transform:translate(-50%,-50%);
  background:conic-gradient(from 0deg,transparent,rgba(224,173,78,.10),transparent 30%,rgba(80,120,220,.10),transparent 60%);
  filter:blur(40px);animation:spin 22s linear infinite;pointer-events:none}
.cover-inner{position:relative;z-index:2;max-width:1080px;margin:0 auto;padding:9vh 24px 30px}
.cover-badge{display:inline-block;font-size:13px;letter-spacing:.18em;color:#e0ad4e;
  border:1px solid rgba(224,173,78,.5);padding:7px 16px;border-radius:999px;margin-bottom:26px;
  background:rgba(224,173,78,.06);backdrop-filter:blur(6px)}
.cover-title{font-family:var(--serif);font-weight:700;font-size:clamp(44px,9vw,86px);line-height:1.04;
  margin:0;color:#f6f1e6;letter-spacing:.02em;text-shadow:0 4px 40px rgba(0,0,0,.5)}
.cover-title span{color:#e0ad4e}
.cover-sub{font-family:var(--serif);font-size:clamp(16px,3.4vw,22px);color:#cfc7b6;margin:18px 0 0;letter-spacing:.06em}
.cover-lead{color:#a9a395;line-height:2;font-size:15px;margin:22px auto 0;max-width:520px}
.btn-enter{margin-top:34px;padding:15px 38px;border-radius:999px;font-size:17px;font-weight:600;
  color:#1a140a;background:linear-gradient(135deg,#f0c869,#e0ad4e);border:0;
  box-shadow:0 12px 34px rgba(224,173,78,.42);transition:transform .25s var(--ease),box-shadow .25s var(--ease)}
.btn-enter:hover{transform:translateY(-2px);box-shadow:0 18px 44px rgba(224,173,78,.55)}
.btn-enter:active{transform:translateY(0)}
.cover-note{margin-top:20px;font-size:13px;color:#7e7869}
.cover-foot{position:absolute;bottom:20px;font-size:12px;color:#6b665a;z-index:2}
@keyframes spin{to{transform:translate(-50%,-50%) rotate(360deg)}}
@keyframes fade{from{opacity:0}to{opacity:1}}

/* ===================== 登录门 ===================== */
.gate{position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;animation:fade .4s}
.gate-bg{position:absolute;inset:0;background:rgba(8,9,12,.74);backdrop-filter:blur(8px)}
.gate-card{position:relative;z-index:2;width:min(420px,92vw);background:linear-gradient(160deg,#1b1f29,#121521);
  border:1px solid rgba(255,255,255,.09);border-radius:24px;padding:34px 30px;color:#e9e6dd;
  box-shadow:0 30px 90px rgba(0,0,0,.6);animation:pop .45s var(--ease)}
@keyframes pop{from{transform:translateY(18px) scale(.96);opacity:0}to{transform:none;opacity:1}}
.gate-close{position:absolute;right:16px;top:14px;font-size:24px;color:#8d887b;line-height:1}
.gate-head{text-align:center;margin-bottom:22px}
.gate-logo{font-size:40px}
.gate-head h2{font-family:var(--serif);margin:8px 0 8px;font-size:24px;color:#f4efe3}
.gate-head p{font-size:13.5px;color:#a9a395;line-height:1.7;margin:0}
.gate-head b{color:#e0ad4e}
#loginForm label{display:block;font-size:13px;color:#b9b3a6;margin:14px 0 7px}
#loginForm input{width:100%;padding:14px 16px;border-radius:14px;border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.04);color:#f4efe3;font-size:16px;outline:none;transition:border .2s,background .2s}
#loginForm input:focus{border-color:#e0ad4e;background:rgba(224,173,78,.07)}
.gate-err{color:#ff8e7a;font-size:13px;min-height:18px;margin-top:10px}
#loginBtn{width:100%;margin-top:18px;padding:14px;border-radius:14px;font-size:16px;font-weight:600;
  color:#1a140a;background:linear-gradient(135deg,#f0c869,#e0ad4e);border:0;
  box-shadow:0 10px 26px rgba(224,173,78,.4)}
#loginBtn:disabled{opacity:.6}
.gate-tip{margin-top:16px;text-align:center;font-size:12px;color:#7e7869}

/* ===================== 阅读器 ===================== */
.reader{position:fixed;inset:0;display:flex;flex-direction:column;background:var(--bg);
  animation:fade .5s var(--ease)}
.topbar{height:58px;flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:0 14px;
  background:var(--chrome);backdrop-filter:blur(18px);border-bottom:1px solid var(--line);
  color:var(--chrome-ink);z-index:12;position:relative}
.tb-btn{width:40px;height:40px;border-radius:12px;font-size:18px;display:flex;align-items:center;justify-content:center;
  transition:background .2s;color:var(--chrome-ink)}
.tb-btn:hover{background:rgba(127,127,127,.14)}
.tb-title{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.tb-book{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-ch{font-family:var(--serif);font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-actions{display:flex;gap:4px}

.layout{flex:1;position:relative;overflow:hidden;min-height:0}
.toc{position:absolute;top:0;bottom:0;left:0;width:320px;background:var(--soft);border-right:1px solid var(--line);
  overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
  z-index:11;color:var(--ink);transition:transform .35s var(--ease)}
.toc-head{position:sticky;top:0;background:var(--soft);z-index:2;display:flex;align-items:center;justify-content:space-between;padding:18px 18px 12px;
  font-family:var(--serif);font-size:18px;font-weight:600;border-bottom:1px solid var(--line)}
.toc-close{font-size:22px;color:var(--muted);display:none}
.toc-scroll{padding:8px 10px 20px}
.toc-part{margin-top:14px}
.toc-part>div:first-child{font-size:12px;letter-spacing:.12em;color:var(--accent);padding:6px 12px;font-weight:600}
.toc-ch{padding:9px 12px;border-radius:10px;font-size:14.5px;cursor:pointer;display:flex;align-items:center;gap:9px;
  color:var(--ink);transition:background .18s}
.toc-ch:hover{background:rgba(127,127,127,.12)}
.toc-ch.active{background:rgba(224,173,78,.16);color:var(--accent);font-weight:600}
.toc-ch .dot{width:7px;height:7px;border-radius:50%;background:var(--line);flex:0 0 auto}
.toc-ch.done .dot{background:var(--accent)}
.toc-progress{position:sticky;bottom:0;background:var(--soft);z-index:2;padding:12px 16px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}
.toc-progress-bar{height:5px;border-radius:99px;background:var(--line);overflow:hidden;margin-bottom:6px}
#tocProgFill{height:100%;width:0;background:linear-gradient(90deg,#e0ad4e,#f0c869);transition:width .4s}

.pane{position:absolute;top:0;bottom:0;left:320px;right:0;overflow-y:auto;overflow-x:hidden;scroll-behavior:smooth;
  -webkit-overflow-scrolling:touch;overscroll-behavior:contain;
  background:var(--paper);transition:background .5s var(--ease)}
.content{max-width:46rem;margin:0 auto;padding:46px 30px 120px;animation:chfade .5s var(--ease)}
@keyframes chfade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.content .loading{color:var(--muted);text-align:center;padding:60px 0}

/* 阅读排版 */
.content .ch-title{font-family:var(--serif);font-size:30px;line-height:1.3;font-weight:700;
  margin:0 0 8px;color:var(--ink)}
.content .ch-title::after{content:"";display:block;width:54px;height:3px;border-radius:3px;
  background:linear-gradient(90deg,var(--accent),transparent);margin:18px 0 30px}
.content .sec-title{font-family:var(--serif);font-weight:600;color:var(--ink);margin:38px 0 14px;line-height:1.4}
.content .sec-title:nth-of-type(1){}
.content h3.sec-title{font-size:22px}
.content h4.sec-title{font-size:19px;color:var(--accent)}
.content h5.sec-title{font-size:17px}
.content p{font-family:var(--font);font-size:var(--fs);line-height:var(--lh);margin:0 0 1.15em;
  color:var(--ink);text-align:justify;word-break:break-word}
.content p.spacer{height:.4em;margin:0}
.content .ch-title + p::first-letter{float:left;font-family:var(--serif);font-size:3.4em;line-height:.82;
  font-weight:700;padding:6px 12px 0 0;color:var(--accent)}
.content strong{color:var(--ink);font-weight:700}
.content em{font-style:italic}
.content u{text-decoration-color:var(--accent)}
.content blockquote{margin:1.3em 0;padding:14px 20px;border-left:4px solid var(--accent);
  background:var(--soft);border-radius:0 12px 12px 0;color:var(--muted);font-family:var(--serif);font-size:17px;font-style:italic}
.content .dialogue{font-family:var(--serif);background:var(--soft);border:1px solid var(--line);
  border-radius:14px;padding:16px 20px;margin:1.3em 0;line-height:1.9;color:var(--ink);font-size:16.5px}
.content .ebook-list{margin:1em 0 1.3em;padding-left:1.4em}
.content .ebook-list li{font-family:var(--font);font-size:var(--fs);line-height:var(--lh);margin-bottom:.5em}
.content pre.code{background:var(--soft);border:1px solid var(--line);border-radius:12px;padding:16px 18px;
  overflow-x:auto;max-width:100%;margin:1.3em 0}
/* 提示词 / 代码框：保留原文换行，同时允许长行自动折行，不再挤成一行 */
.content pre.code code{font-family:var(--mono);font-size:14px;line-height:1.7;color:var(--ink);
  white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere}
.content figure.ebook-figure{margin:1.6em 0;text-align:center}
.content figure.ebook-figure img{border-radius:12px;box-shadow:var(--shadow);border:1px solid var(--line);
  max-width:100%;height:auto;max-height:80vh;cursor:zoom-in;transition:transform .3s var(--ease)}
.content figcaption{font-size:13px;color:var(--muted);margin-top:10px;line-height:1.6}
.content .table-note{font-size:13px;color:var(--muted);margin:.4em 0 1.2em;font-style:italic}
.tbl-wrap{overflow-x:auto;margin:1.4em 0;border-radius:12px;border:1px solid var(--line)}
.ebook-table{border-collapse:collapse;width:100%;font-family:var(--sans);font-size:14.5px}
.ebook-table th,.ebook-table td{border:1px solid var(--line);padding:10px 12px;text-align:left;vertical-align:top;
  word-break:break-word;overflow-wrap:anywhere;line-height:1.7}
.ebook-table th{background:var(--soft);color:var(--ink);font-weight:600}
.ebook-table td{color:var(--ink)}
/* 章内小节标题：目录锚点定位 + 跳转高亮 */
.content .sec-title{scroll-margin-top:24px}
.content .sec-title.lv2{color:var(--accent)}
.content .sec-title.lv3{color:var(--ink);opacity:.92}
.content .sec-title.lv4,.content .sec-title.lv5,.content .sec-title.lv6{color:var(--muted);opacity:.95}
.content .sec-title.sec-flash{animation:secFlash 1.6s var(--ease)}
@keyframes secFlash{0%,22%{background:color-mix(in srgb,var(--accent) 26%,transparent);box-shadow:0 0 0 8px color-mix(in srgb,var(--accent) 20%,transparent)}100%{background:transparent;box-shadow:none}}
.content .li-item{padding-left:1.2em;border-left:2px solid var(--line)}

.pane-nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:50%;
  background:var(--chrome);color:var(--chrome-ink);font-size:26px;display:flex;align-items:center;justify-content:center;
  box-shadow:var(--shadow);z-index:10;opacity:.0;transition:opacity .3s,transform .2s}
.layout:hover .pane-nav{opacity:.85}
.pane-nav:hover{transform:translateY(-50%) scale(1.08);opacity:1}
.pane-nav.prev{left:334px}.pane-nav.next{right:14px}

.progress-bar{position:fixed;left:0;right:0;bottom:0;height:3px;background:transparent;z-index:14}
#progFill{height:100%;width:0;background:linear-gradient(90deg,#e0ad4e,#f0c869);transition:width .15s linear}

/* 底部移动栏 */
.botbar{display:none;height:54px;flex:0 0 auto;align-items:center;gap:6px;padding:0 8px;
  background:var(--chrome);backdrop-filter:blur(18px);border-top:1px solid var(--line);color:var(--chrome-ink);z-index:12}
.bot-btn{flex:1;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  font-size:17px;color:var(--chrome-ink)}
.bot-btn span{font-size:10px;font-family:var(--sans)}
.bot-prog{flex:2;height:6px;border-radius:99px;background:var(--line);overflow:hidden;margin:0 4px}
#botProgFill{height:100%;width:0;background:linear-gradient(90deg,#e0ad4e,#f0c869);transition:width .15s linear}

/* 面板（设置/书签） */
.panel{position:fixed;inset:0;z-index:20;display:flex;align-items:flex-end;justify-content:center}
.panel-card{width:min(460px,94vw);background:var(--paper);border:1px solid var(--line);
  border-radius:20px 20px 0 0;padding:8px 22px 26px;box-shadow:var(--shadow);animation:slideup .35s var(--ease);
  color:var(--ink);max-height:80vh;overflow-y:auto}
@keyframes slideup{from{transform:translateY(100%)}to{transform:none}}
.panel-head{display:flex;align-items:center;justify-content:space-between;padding:14px 0 8px;
  font-family:var(--serif);border-bottom:1px solid var(--line);margin-bottom:6px}
.panel-head h3{margin:0;font-size:19px}
.panel-x{font-size:24px;color:var(--muted)}
.set-row{display:flex;align-items:center;justify-content:space-between;padding:16px 0;border-bottom:1px solid var(--line)}
.set-row>span{font-size:15px}
.stepper{display:flex;align-items:center;gap:14px}
.stepper button{padding:6px 14px;border-radius:10px;background:var(--soft);border:1px solid var(--line);font-size:14px}
#fsVal{min-width:26px;text-align:center;font-weight:600}
.seg{display:flex;background:var(--soft);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.seg button{padding:8px 16px;font-size:14px;color:var(--muted);transition:.2s}
.seg button.on{background:var(--accent);color:#1a140a;font-weight:600}
.bm-list{padding:10px 0}
.bm-empty{color:var(--muted);font-size:14px;text-align:center;padding:30px 10px;line-height:1.8}
.bm-item{padding:12px 14px;border:1px solid var(--line);border-radius:12px;margin-bottom:10px;cursor:pointer;
  display:flex;justify-content:space-between;align-items:center;gap:10px}
.bm-item:hover{background:var(--soft)}
.bm-item .bm-ch{font-family:var(--serif);font-weight:600;font-size:15px}
.bm-item .bm-pb{font-size:12px;color:var(--muted)}
.bm-item .bm-del{color:#ff8e7a;font-size:18px}

.overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:15;opacity:0;pointer-events:none;transition:opacity .3s}
.overlay.show{opacity:1;pointer-events:auto}

.toast{position:fixed;left:50%;bottom:80px;transform:translateX(-50%) translateY(20px);
  background:rgba(20,22,28,.94);color:#fff;padding:11px 22px;border-radius:999px;font-size:14px;z-index:50;
  opacity:0;pointer-events:none;transition:.3s;box-shadow:0 10px 30px rgba(0,0,0,.4)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* 图片放大 */
.imgzoom{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.9);display:flex;align-items:center;
  justify-content:center;animation:fade .25s}
.imgzoom img{max-width:94vw;max-height:94vh;border-radius:10px}
.imgzoom::after{content:"✕";position:absolute;top:18px;right:22px;color:#fff;font-size:30px}

/* ===================== 响应式 ===================== */
@media (max-width:860px){
  .toc{position:absolute;inset:0 auto 0 0;height:100%;transform:translateX(-100%);box-shadow:var(--shadow)}
  .toc.open{transform:none}
  .toc-close{display:block}
  .pane{left:0;right:0}
  .pane-nav{display:none}
  .botbar{display:flex}
  .content{padding:30px 20px 110px}
  .content .ch-title{font-size:25px}
}
@media (min-width:861px){
  .content .ch-title{font-size:32px}
}
@media (max-width:480px){
  .content{padding:24px 16px 110px}
  .content p{font-size:var(--fs)}
}

/* ===================== 落地首页（升级版） ===================== */
.cover-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:46px;align-items:center;text-align:left}
.cover-text{max-width:560px}
.cover-badge{display:inline-block;font-size:13px;letter-spacing:.18em;color:#e0ad4e;
  border:1px solid rgba(224,173,78,.5);padding:7px 16px;border-radius:999px;margin-bottom:22px;
  background:rgba(224,173,78,.06);backdrop-filter:blur(6px)}
.cover-title{font-family:var(--serif);font-weight:700;font-size:clamp(42px,8vw,80px);line-height:1.04;
  margin:0;color:#f6f1e6;letter-spacing:.02em;text-shadow:0 4px 40px rgba(0,0,0,.5)}
.cover-title span{color:#e0ad4e}
.cover-sub{font-family:var(--serif);font-size:clamp(16px,3vw,21px);color:#cfc7b6;margin:18px 0 0;letter-spacing:.06em}
.cover-lead{color:#a9a395;line-height:2;font-size:15px;margin:20px 0 0;max-width:520px}
.cover-cta{display:flex;align-items:center;gap:16px;margin-top:28px;flex-wrap:wrap}
.cover-price{font-size:14px;color:#cfc7b6}
.cover-stats{display:flex;gap:30px;margin-top:26px}
.cover-stats div{display:flex;flex-direction:column}
.cover-stats b{font-family:var(--serif);font-size:30px;color:#e0ad4e}
.cover-stats span{font-size:12px;color:#8c8475;margin-top:2px}
.cover-book{display:flex;justify-content:center}
.book3d{position:relative;width:250px;height:350px;transform:perspective(1200px) rotateY(-18deg) rotateX(4deg);
  transform-style:preserve-3d;transition:transform .6s var(--ease)}
.book3d:hover{transform:perspective(1200px) rotateY(-7deg) rotateX(2deg)}
.book3d-cover{position:absolute;inset:0;border-radius:6px 12px 12px 6px;background:linear-gradient(160deg,#243056,#141a2e);
  border:1px solid rgba(224,173,78,.45);box-shadow:0 30px 70px rgba(0,0,0,.6),inset 0 0 0 6px rgba(255,255,255,.03);
  padding:28px 24px;display:flex;flex-direction:column;color:#f4efe3;overflow:hidden}
.book3d-cover::before{content:"";position:absolute;left:0;top:0;bottom:0;width:11px;background:linear-gradient(180deg,#e0ad4e,#b07d2b)}
.book3d-badge{font-size:10px;letter-spacing:.22em;color:#e0ad4e;border:1px solid rgba(224,173,78,.5);border-radius:999px;padding:4px 9px;align-self:flex-start}
.book3d-title{font-family:var(--serif);font-weight:700;font-size:28px;line-height:1.1;margin-top:24px}
.book3d-sub{font-size:12px;color:#cfc7b6;margin-top:10px;line-height:1.5}
.book3d-line{flex:1}
.book3d-foot{font-size:10px;color:#8c8475;letter-spacing:.12em}
.book3d-side{position:absolute;left:-13px;top:9px;bottom:9px;width:13px;background:linear-gradient(90deg,#0c1020,#161d33);
  transform:rotateY(90deg);transform-origin:right;border-radius:3px}
.cover-features{max-width:1080px;margin:26px auto 0;padding:0 24px 40px;display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.feat{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:22px 18px;text-align:center;transition:transform .25s var(--ease),border-color .25s}
.feat:hover{transform:translateY(-4px);border-color:rgba(224,173,78,.4)}
.feat-ic{font-size:30px}
.feat h3{font-family:var(--serif);font-size:16px;margin:10px 0 6px;color:#f4efe3}
.feat p{font-size:12.5px;color:#a9a395;line-height:1.7;margin:0}
.cover-foot{position:relative;z-index:2;text-align:center;font-size:12px;color:#6b665a;padding:10px 0 24px}

/* ===================== 账户 / 用户中心 ===================== */
.account{position:relative}
.acc-chip{display:flex;align-items:center;gap:8px;padding:5px 10px 5px 6px;border-radius:999px;
  background:rgba(127,127,127,.14);cursor:pointer;transition:background .2s}
.acc-chip:hover{background:rgba(127,127,127,.24)}
.acc-av{width:32px;height:32px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:700;color:#1a140a;overflow:hidden;background:#e0ad4e}
.acc-av img{width:100%;height:100%;object-fit:cover}
.acc-av.sm{width:38px;height:38px;font-size:13px}
.acc-av.lg{width:84px;height:84px;font-size:20px;border-radius:20px}
.acc-name{font-size:13px;max-width:110px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.acc-caret{font-size:10px;color:var(--muted)}
.acc-menu{position:absolute;right:0;top:48px;width:220px;background:var(--paper);border:1px solid var(--line);
  border-radius:16px;box-shadow:var(--shadow);padding:10px;z-index:30;color:var(--ink);animation:pop .25s var(--ease)}
.acc-menu-head{display:flex;align-items:center;gap:10px;padding:8px 6px 12px;border-bottom:1px solid var(--line);margin-bottom:8px}
.acc-menu-head>div{display:flex;flex-direction:column;line-height:1.3;min-width:0}
#accMenuName{font-weight:600;font-size:14px}
.acc-menu-sub{font-size:11px;color:var(--muted)}
.acc-menu-item{display:block;width:100%;text-align:left;padding:11px 12px;border-radius:10px;font-size:14px;color:var(--ink);transition:background .18s}
.acc-menu-item:hover{background:var(--soft)}

.uc-card{max-width:520px;max-height:86vh;overflow-y:auto}
.uc-profile{display:flex;flex-direction:column;align-items:center;text-align:center;padding:6px 0 16px}
.uc-av-wrap{position:relative;margin-bottom:12px}
.uc-av-edit{position:absolute;right:-6px;bottom:-6px;background:var(--accent);color:#1a140a;border-radius:999px;
  font-size:12px;font-weight:600;padding:5px 12px;box-shadow:0 4px 12px rgba(0,0,0,.3)}
.uc-name{font-family:var(--serif);font-size:19px;font-weight:600}
.uc-phone{font-size:13px;color:var(--muted);margin-top:2px}
.uc-nick{margin-top:14px;width:200px;padding:10px 14px;border-radius:12px;border:1px solid var(--line);
  background:var(--soft);color:var(--ink);font-size:14px;text-align:center;outline:none}
.uc-save{margin-top:10px;padding:9px 22px;border-radius:12px;background:var(--accent);color:#1a140a;font-weight:600;font-size:14px}
.uc-av-picker{margin:6px 0 4px;text-align:center}
.uc-av-row{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-bottom:12px}
.uc-av-opt{width:46px;height:46px;border-radius:14px;border:2px solid transparent;cursor:pointer;transition:.2s}
.uc-av-opt.sel{border-color:var(--accent);transform:scale(1.06)}
.uc-upload{display:inline-block;padding:9px 18px;border-radius:12px;border:1px dashed var(--line);color:var(--muted);font-size:13px;cursor:pointer}
.uc-h{font-family:var(--serif);font-size:16px;margin:18px 0 10px;padding-top:14px;border-top:1px solid var(--line)}
.uc-books{}
.uc-book{display:flex;align-items:center;gap:14px;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--soft)}
.uc-book-cover{width:52px;height:70px;border-radius:8px;background:linear-gradient(160deg,#243056,#141a2e);
  display:flex;align-items:center;justify-content:center;font-size:26px;color:#e0ad4e;flex:0 0 auto;box-shadow:var(--shadow)}
.uc-book-info{flex:1;min-width:0;text-align:left}
.uc-book-title{font-family:var(--serif);font-weight:600;font-size:15px}
.uc-book-sub{font-size:12px;color:var(--muted);margin:3px 0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.uc-book-prog{height:6px;border-radius:99px;background:var(--line);overflow:hidden;margin-bottom:5px}
.uc-book-prog-fill{height:100%;width:0;background:linear-gradient(90deg,#e0ad4e,#f0c869)}
.uc-book-pct{font-size:11px;color:var(--muted)}
.uc-book-go{flex:0 0 auto;padding:10px 16px;border-radius:12px;background:var(--accent);color:#1a140a;font-weight:600;font-size:13px}

/* 章节末尾翻页引导 */
.ch-end{margin-top:46px;padding-top:30px;border-top:1px dashed var(--line);text-align:center}
.ch-end-line{width:60px;height:3px;border-radius:3px;background:linear-gradient(90deg,var(--accent),transparent);margin:0 auto 18px}
.ch-end-tip{font-family:var(--serif);font-size:17px;color:var(--ink);margin:0 0 16px}
.ch-end-btn{display:inline-block;padding:13px 26px;border-radius:999px;font-size:15px;font-weight:600;
  color:#1a140a;background:linear-gradient(135deg,#f0c869,#e0ad4e);box-shadow:0 10px 26px rgba(224,173,78,.4);margin:4px}
.ch-end-btn:active{transform:translateY(1px)}
.ch-end-prev{display:block;margin:14px auto 0;font-size:13px;color:var(--muted);text-decoration:underline;background:none}
.ch-end-hint{font-size:12px;color:var(--muted);margin:16px 0 0}

/* 预设头像配色 */
.av-a1{background:linear-gradient(135deg,#f0c869,#e0ad4e)}
.av-a2{background:linear-gradient(135deg,#6aa9ff,#3b6fd4);color:#fff}
.av-a3{background:linear-gradient(135deg,#ff8a8a,#e0556f);color:#fff}
.av-a4{background:linear-gradient(135deg,#7be0a8,#36b97a);color:#0d2a1c}
.av-a5{background:linear-gradient(135deg,#c79bff,#8a5cf0);color:#fff}
.av-a6{background:linear-gradient(135deg,#5fe0d8,#2bb0c4);color:#06262a}

/* 移动端落地页适配 */
@media (max-width:860px){
  .cover-grid{grid-template-columns:1fr;text-align:center;gap:28px}
  .cover-text{margin:0 auto}
  .cover-book{order:-1}
  .cover-stats{justify-content:center}
  .cover-features{grid-template-columns:repeat(2,1fr)}
}

/* =========================================================
   资料宝典 · 首页（清新 / 炫酷 / 大气）—— 独立于阅读主题
   ========================================================= */
.library{position:absolute;inset:0;overflow-y:auto;z-index:30;color:#14213d;
  background:linear-gradient(165deg,#eaf1ff 0%,#f4efff 42%,#e8faf3 100%);}
.lib-aurora{position:fixed;inset:-20% -10% auto -10%;height:70vh;pointer-events:none;z-index:0;
  background:
    radial-gradient(40% 60% at 20% 20%,rgba(91,124,255,.30),transparent 60%),
    radial-gradient(40% 60% at 80% 10%,rgba(224,173,78,.28),transparent 60%),
    radial-gradient(50% 60% at 60% 60%,rgba(20,184,166,.24),transparent 60%);
  filter:blur(36px);animation:auroraMove 18s ease-in-out infinite alternate}
@keyframes auroraMove{0%{transform:translate3d(-2%,0,0) scale(1)}100%{transform:translate3d(3%,2%,0) scale(1.08)}}
@keyframes spin{to{transform:translate(-50%,-50%) rotate(360deg)}}
@keyframes fade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

.lib-nav{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;
  padding:16px clamp(18px,5vw,56px);backdrop-filter:blur(10px);
  background:linear-gradient(180deg,rgba(255,255,255,.7),rgba(255,255,255,.32))}
.lib-logo{font-family:var(--serif);font-weight:700;font-size:19px;color:#14213d}
.lib-logo span{color:#3b5bdb}
.lib-nav-links{display:flex;align-items:center;gap:22px}
.lib-nav-links a{color:#41507a;text-decoration:none;font-size:14.5px;font-weight:500;transition:color .2s}
.lib-nav-links a:hover{color:#3b5bdb}
.lib-nav-enter{margin-left:6px;padding:10px 20px;border-radius:999px;font-weight:600;font-size:14px;color:#1a140a;
  background:linear-gradient(135deg,#f0c869,#e0ad4e);box-shadow:0 8px 22px rgba(224,173,78,.4)}

.lib-hero{position:relative;z-index:2;max-width:1100px;margin:0 auto;padding:7vh clamp(18px,5vw,40px) 40px;text-align:center}
.lib-badge{display:inline-block;font-size:13px;letter-spacing:.12em;color:#7a5a14;
  border:1px solid rgba(224,173,78,.55);padding:8px 18px;border-radius:999px;margin-bottom:24px;
  background:rgba(224,173,78,.10);backdrop-filter:blur(6px)}
.lib-title{font-family:var(--serif);font-weight:800;font-size:clamp(40px,8vw,82px);line-height:1.05;margin:0;
  color:#101a36;text-shadow:0 6px 40px rgba(59,91,219,.12)}
.lib-title span{background:linear-gradient(120deg,#3b5bdb,#14b8a6 60%,#e0ad4e);-webkit-background-clip:text;background-clip:text;color:transparent}
.lib-sub{font-family:var(--serif);font-size:clamp(16px,3vw,21px);color:#46567f;margin:20px 0 0;font-weight:600}
.lib-lead{color:#5b6b8c;line-height:2;font-size:15.5px;margin:20px auto 0;max-width:640px}

.lib-search{position:relative;max-width:620px;margin:34px auto 0}
.lib-search-ic{position:absolute;left:18px;top:50%;transform:translateY(-50%);font-size:17px;opacity:.6}
.lib-search input{width:100%;padding:16px 18px 16px 48px;border-radius:999px;font-size:15px;color:#1a2238;
  border:1px solid rgba(59,91,219,.18);background:rgba(255,255,255,.85);box-shadow:0 10px 30px rgba(59,91,219,.10);outline:none}
.lib-search input:focus{border-color:#3b5bdb;box-shadow:0 10px 36px rgba(59,91,219,.18)}

.lib-stats{display:flex;flex-wrap:wrap;justify-content:center;gap:14px;margin:38px auto 0;max-width:760px}
.lib-stat{flex:1 1 140px;background:rgba(255,255,255,.7);border:1px solid rgba(255,255,255,.7);border-radius:18px;
  padding:20px 12px;box-shadow:0 10px 30px rgba(40,60,120,.10);backdrop-filter:blur(8px)}
.lib-stat b{display:block;font-family:var(--serif);font-size:clamp(26px,4vw,38px);color:#3b5bdb}
.lib-stat span{font-size:13px;color:#5b6b8c}

.lib-hero-cta{margin-top:34px;display:flex;flex-direction:column;align-items:center;gap:12px}
.lib-price{font-size:13px;color:#7a5a14;font-weight:600}

.lib-filter{position:relative;z-index:2;max-width:1180px;margin:18px auto 0;padding:0 clamp(14px,4vw,24px);
  display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.lib-tab{padding:9px 18px;border-radius:999px;font-size:13.5px;font-weight:600;color:#46567f;
  background:rgba(255,255,255,.66);border:1px solid rgba(59,91,219,.14);transition:all .2s var(--ease)}
.lib-tab:hover{color:#3b5bdb}
.lib-tab.on{color:#fff;background:linear-gradient(135deg,#3b5bdb,#14b8a6);border-color:transparent;
  box-shadow:0 8px 20px rgba(59,91,219,.3)}
.lib-count{text-align:center;color:#6b7aa0;font-size:13px;margin:14px 0 8px;position:relative;z-index:2}

.lib-grid{position:relative;z-index:2;max-width:1180px;margin:6px auto 0;padding:6px clamp(14px,4vw,24px) 30px;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(258px,1fr));gap:18px}
.lib-card{position:relative;background:rgba(255,255,255,.78);border:1px solid rgba(255,255,255,.8);border-radius:20px;
  padding:22px 20px 18px;box-shadow:0 12px 32px rgba(40,60,120,.10);backdrop-filter:blur(10px);
  transition:transform .28s var(--ease),box-shadow .28s var(--ease),border-color .28s;
  cursor:pointer;overflow:hidden}
.lib-card::before{content:"";position:absolute;inset:0;border-radius:20px;padding:1px;
  background:linear-gradient(135deg,rgba(59,91,219,.5),rgba(224,173,78,.4));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;
  opacity:0;transition:opacity .28s}
.lib-card:hover{transform:translateY(-6px);box-shadow:0 22px 48px rgba(40,60,120,.20);border-color:transparent}
.lib-card:hover::before{opacity:1}
.lib-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.lib-card-ic{width:48px;height:48px;display:flex;align-items:center;justify-content:center;font-size:24px;border-radius:14px;
  background:linear-gradient(135deg,rgba(59,91,219,.14),rgba(224,173,78,.16))}
.lib-card-layer{font-size:11.5px;color:#3b5bdb;background:rgba(59,91,219,.10);padding:4px 10px;border-radius:999px;font-weight:600}
.lib-card-num{position:absolute;right:16px;top:48px;font-family:var(--serif);font-size:34px;font-weight:800;color:rgba(59,91,219,.10)}
.lib-card-title{font-family:var(--serif);font-size:18px;color:#14213d;margin:4px 0 8px;font-weight:700}
.lib-card-desc{font-size:13px;line-height:1.7;color:#5b6b8c;margin:0 0 16px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.lib-card-foot{display:flex;align-items:center;justify-content:space-between;font-size:12.5px}
.lib-card-count{color:#46567f}
.lib-card-go{color:#3b5bdb;font-weight:600}

.lib-cta{position:relative;z-index:2;max-width:1000px;margin:30px auto 10px;padding:0 clamp(14px,4vw,24px)}
.lib-cta-card{background:linear-gradient(135deg,rgba(16,26,54,.95),rgba(27,42,74,.92));border-radius:24px;
  padding:40px 30px;text-align:center;color:#fff;box-shadow:0 26px 60px rgba(16,26,54,.3)}
.lib-cta-book{font-size:46px;margin-bottom:10px}
.lib-cta-card h3{font-family:var(--serif);font-size:clamp(20px,3.4vw,27px);margin:0 0 12px}
.lib-cta-card p{color:#c4ccea;line-height:1.9;font-size:14.5px;max-width:620px;margin:0 auto 22px}

.lib-faq{position:relative;z-index:2;max-width:1000px;margin:36px auto 10px;padding:0 clamp(14px,4vw,24px)}
.lib-faq h3{font-family:var(--serif);font-size:22px;color:#14213d;text-align:center;margin:0 0 18px}
.faq-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.faq{background:rgba(255,255,255,.72);border:1px solid rgba(255,255,255,.7);border-radius:16px;padding:18px;box-shadow:0 8px 22px rgba(40,60,120,.08)}
.faq b{color:#3b5bdb;font-size:14.5px;display:block;margin-bottom:6px}
.faq p{font-size:13px;line-height:1.7;color:#5b6b8c;margin:0}

.lib-foot{position:relative;z-index:2;text-align:center;color:#7b88ad;font-size:13px;padding:34px 16px 40px}

/* 资料详情弹窗 */
.lib-modal{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:20px;
  background:rgba(12,18,38,.55);backdrop-filter:blur(6px)}
.lib-modal-card{position:relative;max-width:520px;width:100%;background:#fff;border-radius:24px;padding:34px 30px;
  box-shadow:0 30px 80px rgba(12,18,38,.4);animation:fade .3s var(--ease)}
.lib-modal-x{position:absolute;right:18px;top:16px;font-size:24px;color:#9aa3bd;line-height:1}
.lib-modal-ic{width:64px;height:64px;display:flex;align-items:center;justify-content:center;font-size:34px;border-radius:18px;
  background:linear-gradient(135deg,rgba(59,91,219,.14),rgba(224,173,78,.16));margin-bottom:14px}
.lib-modal-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.lib-tag{font-size:12px;color:#3b5bdb;background:rgba(59,91,219,.10);padding:4px 11px;border-radius:999px}
.lib-modal-card h3{font-family:var(--serif);font-size:22px;color:#14213d;margin:0 0 12px}
.lib-modal-desc{font-size:14px;line-height:1.9;color:#46567f;margin:0 0 16px}
.lib-modal-meta{display:flex;gap:18px;font-size:13px;color:#6b7aa0;margin-bottom:22px}
.lib-modal-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.lib-modal-prev{display:inline-block;padding:13px 22px;border-radius:999px;font-weight:600;font-size:14px;color:#14b8a6;
  background:rgba(20,184,166,.12);text-decoration:none}

/* 控制台 / 用户中心 */
.console{position:absolute;inset:0;overflow-y:auto;z-index:30;color:#14213d;
  background:linear-gradient(165deg,#eef2ff 0%,#f5f0ff 45%,#e9faf4 100%)}
.cs-aurora{position:fixed;inset:-20% -10% auto -10%;height:60vh;pointer-events:none;z-index:0;
  background:radial-gradient(40% 60% at 15% 10%,rgba(91,124,255,.26),transparent 60%),
    radial-gradient(40% 60% at 85% 5%,rgba(224,173,78,.24),transparent 60%);filter:blur(38px);animation:auroraMove 20s ease-in-out infinite alternate}
.cs-top{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;
  padding:16px clamp(18px,5vw,48px);backdrop-filter:blur(10px);background:linear-gradient(180deg,rgba(255,255,255,.72),rgba(255,255,255,.34))}
.cs-logo{font-family:var(--serif);font-weight:700;font-size:18px;color:#14213d}
.cs-logo span{color:#3b5bdb}
.cs-top-links{display:flex;align-items:center;gap:18px}
.cs-top-links a{color:#41507a;text-decoration:none;font-size:14px;font-weight:500}
.cs-top-links a:hover{color:#3b5bdb}
.cs-wrap{position:relative;z-index:2;max-width:1180px;margin:0 auto;padding:26px clamp(16px,4vw,32px) 50px;
  display:grid;grid-template-columns:232px 1fr;gap:24px}
.cs-side{position:sticky;top:84px;align-self:start;background:rgba(255,255,255,.74);border:1px solid rgba(255,255,255,.8);
  border-radius:20px;padding:14px;box-shadow:0 12px 32px rgba(40,60,120,.10);backdrop-filter:blur(10px);height:max-content}
.cs-side-title{font-size:12px;color:#8a93b3;padding:6px 10px 10px;letter-spacing:.1em}
.cs-nav{display:flex;flex-direction:column;gap:4px}
.cs-nav button{text-align:left;padding:11px 14px;border-radius:12px;font-size:14.5px;font-weight:600;color:#46567f;transition:all .2s}
.cs-nav button:hover{background:rgba(59,91,219,.08);color:#3b5bdb}
.cs-nav button.on{background:linear-gradient(135deg,#3b5bdb,#14b8a6);color:#fff;box-shadow:0 8px 18px rgba(59,91,219,.28)}
.cs-main{min-width:0}
.cs-greet{display:flex;align-items:center;gap:16px;background:linear-gradient(135deg,rgba(16,26,54,.95),rgba(27,42,74,.92));
  border-radius:22px;padding:24px 26px;color:#fff;box-shadow:0 22px 50px rgba(16,26,54,.28);margin-bottom:22px}
.cs-greet-av{width:62px;height:62px;border-radius:18px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
  font-size:24px;font-weight:700;color:#1a140a;background:linear-gradient(135deg,#f0c869,#e0ad4e)}
.cs-greet h2{font-family:var(--serif);font-size:23px;margin:0 0 6px}
.cs-greet p{margin:0;color:#c4ccea;font-size:13.5px}
.cs-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:14px;margin-bottom:24px}
.cs-card{background:rgba(255,255,255,.78);border:1px solid rgba(255,255,255,.8);border-radius:18px;padding:18px;
  box-shadow:0 10px 28px rgba(40,60,120,.10);backdrop-filter:blur(10px)}
.cs-card b{display:block;font-family:var(--serif);font-size:30px;color:#3b5bdb}
.cs-card span{font-size:12.5px;color:#5b6b8c}
.cs-section{background:rgba(255,255,255,.78);border:1px solid rgba(255,255,255,.8);border-radius:20px;padding:24px;
  box-shadow:0 10px 28px rgba(40,60,120,.10);backdrop-filter:blur(10px);margin-bottom:22px}
.cs-section h3{font-family:var(--serif);font-size:19px;color:#14213d;margin:0 0 16px;display:flex;align-items:center;gap:8px}
.cs-ring{display:flex;align-items:center;gap:20px}
.cs-ring svg{flex:0 0 auto}
.cs-ring-txt b{font-family:var(--serif);font-size:26px;color:#3b5bdb;display:block}
.cs-ring-txt span{font-size:13px;color:#5b6b8c}
.cs-book{display:flex;align-items:center;gap:16px;background:rgba(59,91,219,.06);border:1px solid rgba(59,91,219,.14);
  border-radius:16px;padding:16px}
.cs-book-cover{width:54px;height:54px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:28px;
  background:linear-gradient(135deg,rgba(59,91,219,.16),rgba(224,173,78,.18))}
.cs-book-info{flex:1;min-width:0}
.cs-book-title{font-family:var(--serif);font-size:16px;color:#14213d;font-weight:700}
.cs-book-sub{font-size:13px;color:#5b6b8c;margin:4px 0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cs-book-prog{height:8px;border-radius:6px;background:rgba(59,91,219,.12);overflow:hidden}
.cs-book-prog-fill{height:100%;background:linear-gradient(90deg,#3b5bdb,#14b8a6);width:0}
.cs-book-pct{font-size:12px;color:#5b6b8c;margin-top:6px}
.cs-book-go{flex:0 0 auto;padding:11px 18px;border-radius:12px;background:linear-gradient(135deg,#f0c869,#e0ad4e);color:#1a140a;font-weight:600;font-size:13px;border:none;cursor:pointer}
.cs-lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.cs-lib{padding:14px;border-radius:14px;background:rgba(59,91,219,.06);border:1px solid rgba(59,91,219,.12);cursor:pointer;transition:all .2s}
.cs-lib:hover{background:rgba(59,91,219,.12)}
.cs-lib-ic{font-size:22px}
.cs-lib-name{font-size:13px;font-weight:600;color:#14213d;margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cs-lib-sub{font-size:11.5px;color:#5b6b8c;margin-top:2px}
.cs-form{display:flex;flex-direction:column;gap:14px;max-width:420px}
.cs-av-row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.cs-av-opt{width:46px;height:46px;border-radius:13px;cursor:pointer;border:2px solid transparent;font-weight:700;font-size:14px}
.cs-av-opt.sel{border-color:#3b5bdb;box-shadow:0 0 0 3px rgba(59,91,219,.2)}
.cs-upload{display:inline-block;padding:10px 16px;border-radius:12px;background:rgba(59,91,219,.1);color:#3b5bdb;font-size:13px;font-weight:600;cursor:pointer}
.cs-input{padding:12px 14px;border-radius:12px;border:1px solid rgba(59,91,219,.18);font-size:14px;background:#fff;color:#14213d;outline:none}
.cs-input:focus{border-color:#3b5bdb}
.cs-save{padding:12px 18px;border-radius:12px;background:linear-gradient(135deg,#3b5bdb,#14b8a6);color:#fff;font-weight:600;border:none;cursor:pointer;align-self:flex-start}
.cs-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid rgba(59,91,219,.1)}
.cs-row:last-child{border-bottom:none}
.cs-row b{color:#14213d;font-size:14px}
.cs-row span{color:#5b6b8c;font-size:13px}
.cs-empty{color:#6b7aa0;font-size:13.5px;text-align:center;padding:20px}
.cs-quick{display:flex;flex-wrap:wrap;gap:12px}
.cs-qbtn{flex:1 1 150px;padding:14px;border-radius:14px;background:rgba(59,91,219,.07);border:1px solid rgba(59,91,219,.14);
  color:#14213d;font-weight:600;font-size:14px;cursor:pointer;text-align:center;transition:all .2s}
.cs-qbtn:hover{background:rgba(59,91,219,.14)}
.cs-hidden{display:none !important}

@media (max-width:860px){
  .cs-wrap{grid-template-columns:1fr}
  .cs-side{position:relative;top:0;display:flex;gap:8px;overflow-x:auto}
  .cs-side-title{display:none}
  .cs-nav{flex-direction:row}
  .cs-nav button{white-space:nowrap}
  .lib-nav-links a{display:none}
}

/* =========================================================
   手机端 APP 化（PWA）：底部 Tab 栏 / 安全区 / 安装引导 / 闪屏
   ========================================================= */
:root{--tabh:62px}
html,body{overscroll-behavior:none;-webkit-tap-highlight-color:transparent}
body{touch-action:manipulation}

/* 底部主导航：默认仅手机端显示 */
.app-tabbar{display:none}
@media (max-width:860px){
  .app-tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:35;
    height:calc(var(--tabh) + env(safe-area-inset-bottom));
    padding-bottom:env(safe-area-inset-bottom);
    background:rgba(255,255,255,.90);backdrop-filter:blur(18px) saturate(1.5);
    -webkit-backdrop-filter:blur(18px) saturate(1.5);
    border-top:1px solid rgba(59,91,219,.14);box-shadow:0 -8px 26px rgba(30,50,100,.12);
    align-items:stretch;-webkit-user-select:none;user-select:none}
  .app-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
    color:#7b88ad;font-size:11px;font-weight:600;position:relative;border:none;background:transparent;
    transition:color .2s}
  .app-tab-ic{font-size:21px;line-height:1;filter:grayscale(.55) opacity(.75);transition:transform .2s,filter .2s}
  .app-tab.on{color:#3b5bdb}
  .app-tab.on .app-tab-ic{filter:none;transform:translateY(-2px)}
  .app-tab.on::before{content:"";position:absolute;top:0;width:28px;height:3px;border-radius:0 0 4px 4px;
    background:linear-gradient(90deg,#3b5bdb,#14b8a6)}
  /* 首页 / 控制台内容不被 Tab 栏遮挡 */
  .library{padding-bottom:calc(var(--tabh) + env(safe-area-inset-bottom) + 16px)}
  .console{padding-bottom:calc(var(--tabh) + env(safe-area-inset-bottom) + 16px)}
  /* 阅读器：保留原阅读工具栏，整体上移一个 Tab 高度，形成 APP 双层底栏 */
  body.in-reader .reader{padding-bottom:calc(var(--tabh) + env(safe-area-inset-bottom))}
  body.in-reader .app-tabbar{z-index:12}
  body.in-reader .progress-bar{bottom:calc(var(--tabh) + env(safe-area-inset-bottom))}
  /* 登录门 / 弹窗打开时不显示主导航 */
  body.gate-open .app-tabbar{display:none !important}
  .toc.open ~ .botbar{opacity:.35}
}
/* 桌面端彻底隐藏 */
@media (min-width:861px){
  .app-tabbar{display:none !important}
  .pwa-install{bottom:24px;left:auto;right:24px;max-width:420px}
}

/* 独立窗口(APP) 状态栏安全区 */
body.is-app .lib-nav{padding-top:calc(16px + env(safe-area-inset-top))}
body.is-app .cs-top{padding-top:calc(16px + env(safe-area-inset-top))}
body.is-app .topbar{height:calc(58px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top)}

/* 安装到主屏幕提示 */
.pwa-install{position:fixed;left:12px;right:12px;z-index:55;
  bottom:calc(var(--tabh) + env(safe-area-inset-bottom) + 12px);
  display:flex;align-items:center;gap:12px;padding:13px 14px;border-radius:18px;
  background:rgba(255,255,255,.96);border:1px solid rgba(59,91,219,.16);
  box-shadow:0 18px 46px rgba(20,35,80,.24);backdrop-filter:blur(12px);
  animation:fade .35s var(--ease)}
.pwa-install.hidden{display:none !important}
.pwa-install-ic{font-size:26px;flex:0 0 auto}
.pwa-install-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.pwa-install-txt b{font-size:14px;color:#14213d}
.pwa-install-txt span{font-size:12px;color:#5b6b8c;line-height:1.5}
.pwa-install-go{flex:0 0 auto;padding:10px 18px;border:none;border-radius:999px;font-size:13px;font-weight:700;
  color:#fff;background:linear-gradient(135deg,#3b5bdb,#14b8a6);cursor:pointer}
.pwa-install-x{flex:0 0 auto;font-size:20px;color:#9aa3bd;line-height:1;padding:0 2px;background:none;border:none;cursor:pointer}

/* 首页「安装 APP」入口按钮 */
.lib-app-btn{margin-top:6px;padding:10px 22px;border-radius:999px;font-size:13.5px;font-weight:600;
  color:#3b5bdb;background:rgba(255,255,255,.78);border:1px solid rgba(59,91,219,.24);cursor:pointer;
  transition:all .2s var(--ease)}
.lib-app-btn:hover{background:#fff;transform:translateY(-2px);box-shadow:0 10px 24px rgba(59,91,219,.18)}

/* 启动闪屏 */
.pwa-splash{position:fixed;inset:0;z-index:999;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:16px;color:#eaf0ff;
  background:radial-gradient(90% 70% at 25% 15%,#1b2a4a 0%,#0b1020 62%),#0b1020;
  transition:opacity .5s ease,visibility .5s ease}
.pwa-splash.out{opacity:0;visibility:hidden;pointer-events:none}
.pwa-splash-ic{width:88px;height:88px;border-radius:24px;display:flex;align-items:center;justify-content:center;
  font-size:46px;background:linear-gradient(135deg,rgba(59,91,219,.35),rgba(224,173,78,.28));
  box-shadow:0 18px 50px rgba(0,0,0,.4),inset 0 0 0 1px rgba(255,255,255,.14);
  animation:splashPop .7s var(--ease)}
.pwa-splash b{font-family:var(--serif);font-size:21px;letter-spacing:.04em}
.pwa-splash small{color:#93a2c6;font-size:12px;letter-spacing:.18em}
.pwa-splash-bar{margin-top:10px;width:120px;height:3px;border-radius:3px;background:rgba(255,255,255,.12);overflow:hidden}
.pwa-splash-bar i{display:block;height:100%;width:40%;border-radius:3px;background:linear-gradient(90deg,#3b5bdb,#e0ad4e);
  animation:splashLoad 1s ease-in-out infinite}
@keyframes splashPop{from{opacity:0;transform:scale(.8) translateY(10px)}to{opacity:1;transform:none}}
@keyframes splashLoad{0%{transform:translateX(-100%)}100%{transform:translateX(320%)}}

/* =========================================================
   PDF 藏经阁 · 典藏资料馆（深空金 / 高大上）
   ========================================================= */
.vault{position:absolute;inset:0;overflow-y:auto;z-index:30;color:#e9eefc;
  background:radial-gradient(120% 80% at 15% 0%,#182544 0%,#0b1020 58%),
    radial-gradient(100% 90% at 90% 100%,#241a3e 0%,transparent 60%),#0b1020}
.vault-aurora{position:fixed;inset:-25% -15% auto -15%;height:80vh;pointer-events:none;z-index:0;
  background:radial-gradient(38% 60% at 18% 15%,rgba(91,124,255,.30),transparent 62%),
    radial-gradient(36% 60% at 82% 10%,rgba(224,173,78,.24),transparent 62%),
    radial-gradient(42% 60% at 55% 65%,rgba(20,184,166,.16),transparent 62%);
  filter:blur(40px);animation:auroraMove 20s ease-in-out infinite alternate}
.vault-grain{position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.16;
  background-image:radial-gradient(rgba(255,255,255,.10) 1px,transparent 1px);background-size:22px 22px}
.vault > *:not(.vault-aurora):not(.vault-grain){position:relative;z-index:2}

.vault-nav{position:sticky;top:0;z-index:8;display:flex;align-items:center;justify-content:space-between;
  padding:16px clamp(18px,5vw,56px);backdrop-filter:blur(16px);
  background:linear-gradient(180deg,rgba(11,16,32,.92),rgba(11,16,32,.48));
  border-bottom:1px solid rgba(224,173,78,.14)}
.vault-logo{font-family:var(--serif);font-weight:700;font-size:19px;color:#f2e6c8;text-decoration:none}
.vault-logo span{color:#e0ad4e}
.vault-nav-links{display:flex;align-items:center;gap:24px}
.vault-nav-links a{color:#a9b6d6;text-decoration:none;font-size:14px;transition:color .2s}
.vault-nav-links a:hover{color:#e0ad4e}
.vault-nav-cta{padding:10px 20px;border-radius:999px;border:none;font-weight:700;font-size:13.5px;color:#1a140a;
  background:linear-gradient(135deg,#f6d588,#e0ad4e);box-shadow:0 10px 26px rgba(224,173,78,.32);cursor:pointer}

.vault-hero{max-width:1200px;margin:0 auto;padding:7vh clamp(18px,5vw,40px) 30px;
  display:grid;grid-template-columns:1.15fr .85fr;gap:40px;align-items:center}
.vault-badge{display:inline-block;font-size:12.5px;letter-spacing:.14em;color:#f0d18a;
  border:1px solid rgba(224,173,78,.42);padding:8px 18px;border-radius:999px;margin-bottom:24px;
  background:rgba(224,173,78,.09)}
.vault-title{font-family:var(--serif);font-weight:800;font-size:clamp(48px,8vw,88px);line-height:1.02;margin:0;color:#fff}
.vault-title span{background:linear-gradient(120deg,#f6d588,#e0ad4e 50%,#f0b7a0);
  -webkit-background-clip:text;background-clip:text;color:transparent}
.vault-sub{font-family:var(--serif);font-size:clamp(16px,2.4vw,21px);color:#e8d9b8;margin:20px 0 0;font-weight:600}
.vault-lead{color:#a7b4d4;line-height:2;font-size:14.5px;margin:18px 0 0}
.vault-hero-btns{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.vault-gold-btn{padding:14px 28px;border-radius:999px;border:none;font-size:15px;font-weight:700;color:#1a140a;
  background:linear-gradient(135deg,#f6d588,#e0ad4e);box-shadow:0 14px 34px rgba(224,173,78,.32);
  cursor:pointer;transition:transform .2s,box-shadow .2s}
.vault-gold-btn:hover{transform:translateY(-3px);box-shadow:0 20px 44px rgba(224,173,78,.42)}
.vault-ghost-btn{display:inline-flex;align-items:center;justify-content:center;padding:13px 24px;border-radius:999px;
  font-size:14px;font-weight:600;color:#dbe4fb;text-decoration:none;cursor:pointer;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.18);transition:all .2s}
.vault-ghost-btn:hover{background:rgba(255,255,255,.12);color:#fff}
.vault-price{font-size:12.5px;color:#e0ad4e;margin:14px 0 0;letter-spacing:.04em}

.vault-hero-art{position:relative;height:340px;display:flex;align-items:center;justify-content:center}
.vault-art-glow{position:absolute;width:300px;height:300px;border-radius:50%;
  background:radial-gradient(circle,rgba(224,173,78,.24),transparent 70%);filter:blur(24px)}
.vault-stack{position:relative;width:250px;height:300px;transform:perspective(900px) rotateY(-18deg) rotateX(6deg);
  transform-style:preserve-3d;transition:transform .6s var(--ease)}
.vault-hero-art:hover .vault-stack{transform:perspective(900px) rotateY(-8deg) rotateX(3deg) translateY(-8px)}
.vault-book{position:absolute;left:0;right:0;height:74px;border-radius:8px;padding:14px 20px;
  display:flex;flex-direction:column;justify-content:center;color:#1a140a;
  box-shadow:0 18px 40px rgba(0,0,0,.42),inset 0 0 0 1px rgba(255,255,255,.35);
  border-left:9px solid rgba(0,0,0,.22)}
.vault-book span{font-family:var(--serif);font-size:17px;font-weight:800}
.vault-book small{font-size:11px;opacity:.72;margin-top:3px}
.vault-book.b1{top:10px;background:linear-gradient(120deg,#f6d588,#e0ad4e)}
.vault-book.b2{top:88px;background:linear-gradient(120deg,#f2b98a,#e08f5a)}
.vault-book.b3{top:166px;background:linear-gradient(120deg,#a8c3ff,#5b7ce0);color:#0d1730}
.vault-book.b4{top:244px;background:linear-gradient(120deg,#9fe3cf,#3fb59a);color:#082a24}

.vault-stats{max-width:1180px;margin:20px auto 0;padding:0 clamp(18px,5vw,32px);
  display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.vault-stat{background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.10);border-radius:20px;
  padding:20px 18px;backdrop-filter:blur(10px);display:flex;flex-direction:column;gap:4px;position:relative;overflow:hidden}
.vault-stat::after{content:"";position:absolute;right:-30px;top:-30px;width:90px;height:90px;border-radius:50%;
  background:radial-gradient(circle,rgba(224,173,78,.18),transparent 70%)}
.vault-stat-ic{font-size:22px;margin-bottom:4px}
.vault-stat b{font-family:var(--serif);font-size:clamp(24px,3.4vw,34px);color:#f4d38c;line-height:1.1}
.vault-stat span{font-size:12.5px;color:#9eaccd}

.vault-vols{max-width:1180px;margin:26px auto 0;padding:0 clamp(18px,5vw,32px);
  display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.vault-vol{display:flex;align-items:center;gap:16px;text-align:left;padding:20px;border-radius:20px;cursor:pointer;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.10);color:#e9eefc;
  backdrop-filter:blur(10px);transition:all .25s var(--ease)}
.vault-vol:hover{border-color:rgba(224,173,78,.45);transform:translateY(-3px);background:rgba(255,255,255,.08)}
.vault-vol.on{border-color:#e0ad4e;background:linear-gradient(120deg,rgba(224,173,78,.16),rgba(59,91,219,.12));
  box-shadow:0 14px 36px rgba(224,173,78,.16)}
.vault-vol-num{font-family:var(--serif);font-size:32px;font-weight:800;color:rgba(224,173,78,.38);flex:0 0 auto}
.vault-vol-ic{font-size:28px;flex:0 0 auto}
.vault-vol-info{flex:1;min-width:0}
.vault-vol-info h4{font-family:var(--serif);font-size:16px;margin:0 0 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vault-vol-info p{font-size:12px;color:#9eaccd;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vault-vol-meta{text-align:right;flex:0 0 auto;display:flex;flex-direction:column;gap:3px}
.vault-vol-meta b{font-family:var(--serif);font-size:22px;color:#f4d38c}
.vault-vol-meta span{font-size:11.5px;color:#9eaccd}

.vault-body{max-width:1180px;margin:34px auto 0;padding:0 clamp(14px,4vw,32px);
  display:grid;grid-template-columns:276px 1fr;gap:22px;align-items:start}
.vault-side{position:sticky;top:88px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.10);
  border-radius:22px;backdrop-filter:blur(14px);overflow:hidden;box-shadow:0 18px 44px rgba(0,0,0,.28)}
.vault-side-head{padding:20px 18px 14px;border-bottom:1px solid rgba(255,255,255,.09);
  background:linear-gradient(160deg,rgba(224,173,78,.12),transparent)}
.vault-side-kicker{font-size:10px;letter-spacing:.22em;color:#e0ad4e;margin-bottom:8px}
.vault-side-head h3{font-family:var(--serif);font-size:19px;margin:0 0 5px;color:#fff}
.vault-side-head p{font-size:11.5px;color:#8e9dc0;margin:0}
.vault-side-scroll{max-height:min(58vh,560px);overflow-y:auto;padding:10px 10px 16px}
.vault-side-scroll::-webkit-scrollbar{width:5px}
.vault-side-scroll::-webkit-scrollbar-thumb{background:rgba(224,173,78,.35);border-radius:6px}
.vault-side-foot{display:flex;justify-content:space-between;gap:8px;padding:12px 16px;font-size:11.5px;color:#9eaccd;
  border-top:1px solid rgba(255,255,255,.09)}
.vault-side-foot b{color:#f4d38c}
.vault-tree-all{width:100%;display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:12px;
  color:#cdd7f0;font-size:13.5px;font-weight:600;background:rgba(255,255,255,.04);border:1px solid transparent;
  cursor:pointer;margin-bottom:8px;text-align:left}
.vault-tree-all span:nth-child(2){flex:1}
.vault-tree-all b{font-size:11px;color:#8e9dc0;font-weight:500}
.vault-tree-all.on{background:linear-gradient(120deg,rgba(224,173,78,.20),rgba(59,91,219,.16));
  border-color:rgba(224,173,78,.36);color:#ffe6ad}
.vault-tree-all-ic{color:#e0ad4e}
.vault-tree-vol{font-size:10.5px;letter-spacing:.14em;color:#7e8db2;padding:12px 10px 6px;text-transform:uppercase}
.vault-tree-group{margin-bottom:4px}
.vault-tree-g{width:100%;display:flex;align-items:center;gap:8px;padding:10px 10px;border-radius:11px;
  color:#c2cee9;font-size:12.8px;background:transparent;border:none;cursor:pointer;text-align:left;transition:all .2s}
.vault-tree-g:hover{background:rgba(255,255,255,.06);color:#fff}
.vault-tree-group.on .vault-tree-g{background:rgba(59,91,219,.18);color:#fff}
.vault-tree-ic{font-size:16px;flex:0 0 auto}
.vault-tree-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vault-tree-num{font-size:11px;color:#8e9dc0;background:rgba(255,255,255,.07);padding:2px 7px;border-radius:999px}
.vault-tree-arrow{font-size:11px;color:#8e9dc0;transition:transform .2s}
.vault-tree-group.on .vault-tree-arrow{transform:rotate(180deg);color:#e0ad4e}
.vault-tree-list{display:none;padding:2px 0 8px 12px;border-left:1px solid rgba(224,173,78,.22);margin-left:18px}
.vault-tree-group.on .vault-tree-list{display:block}
.vault-tree-pdf{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border:none;border-radius:8px;
  background:transparent;color:#94a3c6;font-size:11.5px;text-align:left;cursor:pointer;transition:all .18s}
.vault-tree-pdf:hover{background:rgba(224,173,78,.12);color:#ffe6ad}
.vault-tree-pdf i{font-style:normal;font-family:var(--serif);font-size:10.5px;color:#e0ad4e;flex:0 0 20px}
.vault-tree-pdf span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.vault-main{min-width:0}
.vault-tools{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:20px}
.vault-search{position:relative;flex:1 1 260px}
.vault-search span{position:absolute;left:16px;top:50%;transform:translateY(-50%);font-size:16px;opacity:.65}
.vault-search input{width:100%;padding:13px 16px 13px 44px;border-radius:999px;font-size:14px;color:#eaf0ff;
  background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);outline:none;transition:all .2s}
.vault-search input::placeholder{color:#7e8db2}
.vault-search input:focus{border-color:rgba(224,173,78,.55);background:rgba(255,255,255,.10);
  box-shadow:0 0 0 3px rgba(224,173,78,.10)}
.vault-filters{display:flex;flex-wrap:wrap;gap:8px}
.vault-chip{padding:9px 15px;border-radius:999px;font-size:12.5px;font-weight:600;color:#9eaccd;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);cursor:pointer;transition:all .2s}
.vault-chip:hover{color:#fff}
.vault-chip.on{color:#1a140a;background:linear-gradient(135deg,#f6d588,#e0ad4e);border-color:transparent}
.vault-main-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:24px}
.vault-crumb{font-size:11.5px;color:#e0ad4e;letter-spacing:.1em;margin-bottom:8px}
.vault-main-head h2{font-family:var(--serif);font-size:clamp(20px,3vw,27px);margin:0 0 8px;color:#fff}
.vault-main-head p{font-size:13px;color:#9eaccd;line-height:1.8;margin:0;max-width:620px}
.vault-count{flex:0 0 auto;font-size:12px;color:#f4d38c;background:rgba(224,173,78,.12);
  border:1px solid rgba(224,173,78,.26);padding:8px 14px;border-radius:999px;white-space:nowrap}
.vault-section-label{display:flex;align-items:center;gap:12px;margin:8px 0 16px;color:#dfe7fb;font-size:13px;font-weight:600}
.vault-section-label i{flex:1;height:1px;background:linear-gradient(90deg,rgba(224,173,78,.35),transparent)}
.vault-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(224px,1fr));gap:14px;margin-bottom:30px}
.vault-pdf{position:relative;min-height:172px;padding:18px 16px 14px 22px;border-radius:16px;text-align:left;
  color:#12203c;border:none;cursor:pointer;overflow:hidden;transition:transform .28s var(--ease),box-shadow .28s;
  box-shadow:0 14px 32px rgba(0,0,0,.30)}
.vault-pdf:hover{transform:translateY(-6px) rotate(-.6deg);box-shadow:0 24px 48px rgba(0,0,0,.45)}
.vault-pdf::after{content:"";position:absolute;right:-26px;bottom:-26px;width:100px;height:100px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.42),transparent 70%)}
.vault-pdf.c1{background:linear-gradient(140deg,#f8dfa2,#e0ad4e)}
.vault-pdf.c2{background:linear-gradient(140deg,#f4bd97,#e18d5c);color:#3a1b0c}
.vault-pdf.c3{background:linear-gradient(140deg,#b7ccff,#6a86df);color:#0e1a3a}
.vault-pdf.c4{background:linear-gradient(140deg,#a9e8d3,#45b79c);color:#082a24}
.vault-pdf.c5{background:linear-gradient(140deg,#d9c2ff,#9875d8);color:#21123c}
.vault-pdf.c6{background:linear-gradient(140deg,#f2c0cf,#dc809d);color:#3a1020}
.vault-pdf-spine{position:absolute;left:0;top:0;bottom:0;width:9px;background:rgba(0,0,0,.20);
  border-right:1px solid rgba(255,255,255,.35)}
.vault-pdf-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.vault-pdf-no{font-family:var(--serif);font-size:20px;font-weight:800;opacity:.62}
.vault-pdf-tag{font-size:10px;font-weight:800;letter-spacing:.08em;padding:3px 9px;border-radius:999px;
  background:rgba(0,0,0,.16);color:inherit}
.vault-pdf-title{font-family:var(--serif);font-size:15px;font-weight:700;line-height:1.55;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;min-height:70px}
.vault-pdf-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:12px;
  font-size:10.5px;opacity:.72}
.vault-pdf-foot span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vault-pdf-foot b{font-weight:700;white-space:nowrap}
.vault-empty{grid-column:1/-1;padding:38px 16px;text-align:center;color:#8e9dc0;font-size:13.5px;
  background:rgba(255,255,255,.04);border:1px dashed rgba(255,255,255,.14);border-radius:16px}

.vault-assets{display:flex;flex-direction:column;gap:7px;margin-bottom:16px}
.vault-asset{display:flex;align-items:center;gap:12px;width:100%;padding:11px 14px;border-radius:12px;text-align:left;
  color:#d9e2fa;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.08);cursor:pointer;transition:all .18s}
.vault-asset:hover{background:rgba(224,173,78,.10);border-color:rgba(224,173,78,.28)}
.vault-asset-ic{font-size:17px;flex:0 0 auto;width:30px;height:30px;border-radius:9px;display:flex;
  align-items:center;justify-content:center;background:rgba(255,255,255,.08)}
.vault-asset-ic.video{background:rgba(91,124,255,.22)}
.vault-asset-ic.doc{background:rgba(20,184,166,.20)}
.vault-asset-ic.img{background:rgba(224,173,78,.20)}
.vault-asset-name{flex:1;min-width:0;font-size:12.8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vault-asset-kind{flex:0 0 auto;font-size:10.5px;color:#8e9dc0;background:rgba(255,255,255,.06);
  padding:3px 9px;border-radius:999px}
.vault-asset-size{flex:0 0 auto;font-size:11px;color:#a9b6d6;width:64px;text-align:right}
.vault-more{width:100%;padding:12px;border-radius:12px;color:#f0d18a;font-size:13px;font-weight:600;
  background:rgba(224,173,78,.08);border:1px solid rgba(224,173,78,.22);cursor:pointer}
.vault-more:hover{background:rgba(224,173,78,.16)}

.vault-cta{max-width:1180px;margin:44px auto 0;padding:0 clamp(14px,4vw,32px)}
.vault-cta-card{text-align:center;border-radius:26px;padding:46px 28px;
  background:linear-gradient(135deg,rgba(224,173,78,.13),rgba(59,91,219,.16));
  border:1px solid rgba(224,173,78,.28);box-shadow:0 26px 60px rgba(0,0,0,.30)}
.vault-cta-ic{font-size:46px;margin-bottom:12px}
.vault-cta-card h3{font-family:var(--serif);font-size:clamp(21px,3.4vw,29px);color:#fff;margin:0 0 14px}
.vault-cta-card p{color:#a9b6d6;line-height:1.9;font-size:14px;max-width:640px;margin:0 auto 24px}
.vault-cta-note{font-size:12px;color:#8e9dc0;margin-top:16px}
.vault-foot{text-align:center;color:#6f7da0;font-size:12.5px;padding:36px 16px calc(40px + var(--tabh) + env(safe-area-inset-bottom))}

.vault-modal{position:fixed;inset:0;z-index:70;display:flex;align-items:center;justify-content:center;padding:20px;
  background:rgba(5,9,20,.72);backdrop-filter:blur(8px)}
.vault-modal.hidden{display:none !important}
.vault-modal-card{position:relative;max-width:520px;width:100%;padding:32px 30px;border-radius:24px;
  color:#e9eefc;background:linear-gradient(160deg,#1b2444,#111730);border:1px solid rgba(224,173,78,.24);
  box-shadow:0 34px 80px rgba(0,0,0,.55);animation:fade .3s var(--ease)}
.vault-modal-x{position:absolute;right:18px;top:14px;font-size:25px;color:#8996ba;background:none;border:none;cursor:pointer}
.vault-modal-cover{width:60px;height:60px;border-radius:16px;display:flex;align-items:center;justify-content:center;
  font-size:32px;margin-bottom:14px}
.vault-modal-cover.c1{background:linear-gradient(135deg,#f6d588,#e0ad4e)}
.vault-modal-cover.c3{background:linear-gradient(135deg,#a8c3ff,#5b7ce0)}
.vault-modal-tags{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}
.vault-modal-tags span{font-size:11px;color:#f0d18a;background:rgba(224,173,78,.12);
  border:1px solid rgba(224,173,78,.24);padding:4px 10px;border-radius:999px}
.vault-modal-card h3{font-family:var(--serif);font-size:21px;line-height:1.5;color:#fff;margin:0 0 12px}
.vault-modal-desc{font-size:13px;line-height:1.9;color:#a9b6d6;margin:0 0 16px}
.vault-modal-meta{display:flex;flex-wrap:wrap;gap:16px;font-size:12px;color:#c7d2ee;margin-bottom:12px}
.vault-modal-path{font-size:11px;color:#7e8db2;background:rgba(255,255,255,.05);padding:10px 12px;
  border-radius:10px;word-break:break-all;margin-bottom:22px}
.vault-modal-actions{display:flex;flex-wrap:wrap;gap:10px}

body.on-vault .app-tabbar{background:rgba(12,18,38,.93);border-top-color:rgba(224,173,78,.20);
  box-shadow:0 -8px 26px rgba(0,0,0,.35)}
body.on-vault .app-tab{color:#8996ba}
body.on-vault .app-tab.on{color:#f4d38c}
body.on-vault .app-tab.on::before{background:linear-gradient(90deg,#f6d588,#e0ad4e)}
body.on-vault .pwa-install{bottom:calc(var(--tabh) + env(safe-area-inset-bottom) + 12px)}

@media (max-width:860px){
  .vault-hero{grid-template-columns:1fr;padding-top:5vh;text-align:center}
  .vault-hero-btns,.vault-hero-txt{justify-content:center;display:flex;flex-direction:column;align-items:center}
  .vault-hero-art{height:250px;order:-1}
  .vault-stack{transform:perspective(900px) rotateY(-10deg) rotateX(4deg) scale(.86)}
  .vault-stats{grid-template-columns:repeat(2,1fr)}
  .vault-vols{grid-template-columns:1fr}
  .vault-body{grid-template-columns:1fr}
  .vault-side{position:relative;top:0}
  .vault-side-scroll{max-height:230px}
  .vault-nav-links a{display:none}
  .vault-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}
  .vault-main-head{flex-direction:column;align-items:flex-start}
}

/* =========================================================
   阅读器改版：无感连续翻页 + 左侧导航重做 + 顶栏质感
   ========================================================= */
.content.swap{animation:chSwap .26s var(--ease)}
@keyframes chSwap{from{opacity:.5;transform:translateY(7px)}to{opacity:1;transform:none}}
.ch-block{position:relative}
.ch-sep{display:flex;align-items:center;gap:14px;margin:60px 0 36px;
  color:var(--muted);font-size:11.5px;letter-spacing:.16em}
.ch-sep i{flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--line),transparent)}
.ch-sep span{white-space:nowrap;opacity:.85}
.ch-soft-end{display:flex;align-items:center;gap:14px;margin:54px 0 8px;
  color:var(--muted);font-size:11px;letter-spacing:.18em;opacity:.5}
.ch-soft-end i{flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--line),transparent)}
.ch-soft-end span{white-space:nowrap}

/* 顶栏 */
.topbar{background:linear-gradient(180deg,var(--chrome),color-mix(in srgb,var(--chrome) 88%,var(--bg)));
  border-bottom:1px solid var(--line);box-shadow:0 6px 22px rgba(0,0,0,.12)}
.topbar::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;
  background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.5}
.tb-title{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.tb-book{font-family:var(--serif);font-size:12px;color:var(--muted);letter-spacing:.04em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-ch{font-family:var(--serif);font-size:15px;font-weight:600;color:var(--chrome-ink);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-btn{border-radius:12px;transition:background .2s,transform .2s,color .2s}
.tb-btn:hover{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent);transform:translateY(-1px)}
.botbar{background:linear-gradient(180deg,var(--chrome),color-mix(in srgb,var(--chrome) 90%,var(--bg)));
  border-top:1px solid var(--line)}
.bot-btn{border-radius:12px;transition:color .2s,transform .2s}
.bot-btn:hover{color:var(--accent);transform:translateY(-2px)}

/* 左侧目录（TOC）重做 */
#toc{background:linear-gradient(170deg,var(--soft),color-mix(in srgb,var(--soft) 88%,var(--bg)));
  border-right:1px solid var(--line);box-shadow:14px 0 40px rgba(0,0,0,.16)}
#toc .toc-head{display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:16px 16px 14px;font-size:15px;border-bottom:1px solid var(--line);
  background:linear-gradient(140deg,color-mix(in srgb,var(--accent) 10%,var(--soft)),var(--soft))}
#toc .toc-brand{display:flex;align-items:center;gap:11px;min-width:0}
#toc .toc-cover{width:38px;height:46px;flex:0 0 auto;border-radius:6px;display:flex;align-items:center;
  justify-content:center;font-size:20px;color:#1a140a;
  background:linear-gradient(140deg,#f6d588,#e0ad4e);box-shadow:0 6px 16px rgba(224,173,78,.28),inset -4px 0 0 rgba(0,0,0,.16)}
#toc .toc-brand-txt{display:flex;flex-direction:column;gap:3px;min-width:0}
#toc .toc-brand-txt b{font-family:var(--serif);font-size:14px;color:var(--ink);font-weight:700;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#toc .toc-brand-txt span{font-size:10.5px;color:var(--muted);letter-spacing:.06em}
#toc .toc-close{width:30px;height:30px;border-radius:10px;display:flex;align-items:center;justify-content:center;
  font-size:20px;color:var(--muted);background:transparent;border:1px solid transparent;flex:0 0 auto}
#toc .toc-close:hover{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}
#toc .toc-scroll{padding:8px 12px 24px;scrollbar-width:thin;scrollbar-color:var(--accent) transparent}
#toc .toc-scroll::-webkit-scrollbar{width:5px}
#toc .toc-scroll::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--accent) 60%,transparent);border-radius:6px}
#toc .toc-part{margin:14px 0 6px}
#toc .toc-part-h{display:flex;align-items:center;gap:9px;padding:8px 8px 10px;margin-bottom:4px;
  border-bottom:1px solid var(--line);font-family:var(--serif);font-size:12.5px;font-weight:700;color:var(--ink)}
#toc .toc-part-h i{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;
  border-radius:7px;font-style:normal;font-size:10px;letter-spacing:0;color:#1a140a;
  background:linear-gradient(135deg,#f0c869,#e0ad4e);flex:0 0 auto}
#toc .toc-part-h span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#toc .toc-ch{display:grid;grid-template-columns:26px 1fr 12px;align-items:center;gap:8px;
  padding:9px 10px;margin:2px 0;border-radius:10px;color:var(--ink);cursor:pointer;position:relative;
  border:1px solid transparent;transition:background .2s,transform .2s,border-color .2s}
#toc .toc-ch:hover{background:color-mix(in srgb,var(--accent) 9%,transparent);transform:translateX(3px)}
#toc .toc-ch.active{background:linear-gradient(100deg,color-mix(in srgb,var(--accent) 22%,transparent),transparent);
  border-color:color-mix(in srgb,var(--accent) 30%,transparent)}
#toc .toc-ch.active::before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;
  border-radius:0 3px 3px 0;background:var(--accent)}
#toc .toc-ch-no{font-family:var(--serif);font-size:10.5px;color:var(--muted);opacity:.75}
#toc .toc-ch.active .toc-ch-no{color:var(--accent);opacity:1;font-weight:700}
#toc .toc-ch-txt{font-size:12.8px;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#toc .toc-ch.active .toc-ch-txt{font-weight:600;color:var(--ink)}
#toc .toc-ch-dot{width:7px;height:7px;border-radius:50%;border:1.5px solid var(--line);justify-self:center}
#toc .toc-ch.done .toc-ch-dot{border-color:var(--accent);background:var(--accent)}
#toc .toc-ch.active .toc-ch-dot{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}
#toc .toc-progress{padding:14px 16px 16px;background:linear-gradient(0deg,var(--soft),color-mix(in srgb,var(--soft) 86%,transparent));
  border-top:1px solid var(--line)}
#toc .toc-prog-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px;font-size:11.5px;color:var(--muted)}
#toc .toc-prog-top b{font-family:var(--serif);font-size:13px;color:var(--accent)}
#toc .toc-progress-bar{height:6px;border-radius:6px;background:color-mix(in srgb,var(--ink) 10%,transparent);overflow:hidden}
#toc .toc-progress-bar > div{height:100%;width:0;border-radius:6px;
  background:linear-gradient(90deg,var(--accent),#f0c869);transition:width .3s var(--ease)}
#toc .toc-prog-hint{font-size:10px;color:var(--muted);opacity:.7;margin-top:9px;letter-spacing:.03em}

/* ---- 完整多级目录：搜索 + 折叠小节树 ---- */
#toc .toc-search{position:relative;display:flex;align-items:center;gap:8px;padding:10px 14px;
  border-bottom:1px solid var(--line);background:var(--soft)}
#toc .toc-search-ic{font-size:17px;color:var(--accent);line-height:1}
#toc .toc-search input{flex:1;min-width:0;background:transparent;border:0;outline:0;
  color:var(--ink);font-size:12.5px;font-family:inherit}
#toc .toc-search input::placeholder{color:var(--muted);opacity:.75}
#toc .toc-search button{width:22px;height:22px;border:0;border-radius:6px;cursor:pointer;
  background:transparent;color:var(--muted);font-size:16px;line-height:1}
#toc .toc-search button:hover{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent)}
#toc .toc-part-h em{margin-left:auto;font-style:normal;font-size:10px;color:var(--muted);
  background:color-mix(in srgb,var(--ink) 7%,transparent);border-radius:99px;padding:2px 7px;flex:0 0 auto}
#toc .toc-ch-wrap{position:relative}
#toc .toc-ch{padding-right:46px}
#toc .toc-toggle{position:absolute;right:5px;top:8px;display:flex;align-items:center;gap:2px;
  height:26px;padding:0 5px;border:0;border-radius:8px;cursor:pointer;background:transparent;
  color:var(--muted);font-size:10px;z-index:1}
#toc .toc-toggle span{opacity:.7}
#toc .toc-toggle i{font-style:normal;font-size:15px;line-height:1;transition:transform .2s var(--ease)}
#toc .toc-toggle:hover{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}
#toc .toc-ch-wrap.expanded .toc-toggle i{transform:rotate(90deg)}
#toc .toc-sec-box{display:none;margin:2px 0 8px 12px;padding:2px 0 2px 10px;
  border-left:1px solid color-mix(in srgb,var(--accent) 34%,transparent)}
#toc .toc-ch-wrap.expanded .toc-sec-box{display:block}
#toc .toc-sec{display:flex;align-items:flex-start;gap:7px;cursor:pointer;position:relative;
  padding:5px 6px;border-radius:7px;font-size:11.6px;line-height:1.45;color:var(--muted);
  transition:background .18s,color .18s}
#toc .toc-sec:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--ink)}
#toc .toc-sec-bar{width:5px;height:5px;border-radius:50%;flex:0 0 auto;margin-top:6px;
  background:color-mix(in srgb,var(--accent) 55%,transparent)}
#toc .toc-sec.lv2{padding-left:6px;color:var(--ink);font-weight:600}
#toc .toc-sec.lv2 .toc-sec-bar{width:7px;height:7px;background:var(--accent);margin-top:5px}
#toc .toc-sec.lv3{padding-left:18px}
#toc .toc-sec.lv4{padding-left:30px;font-size:11px;opacity:.9}
#toc .toc-sec.lv5,#toc .toc-sec.lv6{padding-left:40px;font-size:10.8px;opacity:.8}
#toc .toc-sec-txt{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#toc .toc-sec.lv2 .toc-sec-txt,#toc .toc-sec.lv3 .toc-sec-txt{white-space:normal}
#toc .toc-search-sum{font-size:11px;color:var(--muted);padding:10px 8px}
#toc .toc-search-sum b{color:var(--accent);font-size:13px}
#toc .toc-hit{display:flex;align-items:center;gap:8px;padding:9px 10px;margin:2px 0;
  border-radius:9px;cursor:pointer;color:var(--ink);font-size:12px;line-height:1.4}
#toc .toc-hit:hover{background:color-mix(in srgb,var(--accent) 13%,transparent)}
#toc .toc-hit-tag{flex:0 0 auto;font-size:9.5px;padding:2px 6px;border-radius:5px;
  background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent)}
#toc .toc-hit-sec{flex-wrap:wrap}
#toc .toc-hit-sec .toc-hit-txt{min-width:0;max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#toc .toc-hit-sec small{flex-basis:100%;padding-left:30px;font-size:10px;color:var(--muted)}
#toc .toc-empty{padding:26px 12px;text-align:center;font-size:12px;color:var(--muted)}

/* 控制台左侧导航重做 */
.cs-side{background:linear-gradient(165deg,rgba(255,255,255,.92),rgba(240,245,255,.80));
  border:1px solid rgba(255,255,255,.9);border-radius:22px;box-shadow:0 18px 42px rgba(40,60,120,.14)}
.cs-side-user{display:flex;align-items:center;gap:10px;padding:14px;margin-bottom:10px;border-radius:16px;
  background:linear-gradient(135deg,rgba(16,26,54,.96),rgba(27,42,74,.92));color:#fff}
.cs-side-av{width:40px;height:40px;flex:0 0 auto;border-radius:12px;display:flex;align-items:center;justify-content:center;
  font-size:19px;color:#1a140a;background:linear-gradient(135deg,#f6d588,#e0ad4e)}
.cs-side-user div:last-child{display:flex;flex-direction:column;gap:2px;min-width:0}
.cs-side-user b{font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cs-side-user span{font-size:10.5px;color:#a9b6d6}
.cs-side-title{padding:4px 12px 8px;letter-spacing:.16em;color:#8a93b3}
.cs-nav{gap:5px}
.cs-nav button{position:relative;padding:12px 14px;border-radius:12px;font-size:14px;
  border:1px solid transparent;transition:all .2s var(--ease)}
.cs-nav button:hover{background:rgba(59,91,219,.09);transform:translateX(2px)}
.cs-nav button.on{background:linear-gradient(135deg,#3b5bdb,#14b8a6);color:#fff;border-color:transparent;
  box-shadow:0 10px 22px rgba(59,91,219,.28)}
.cs-side-badge{margin-top:12px;padding:11px 12px;border-radius:12px;text-align:center;font-size:11.5px;font-weight:600;
  color:#7a5a14;background:linear-gradient(120deg,rgba(224,173,78,.18),rgba(224,173,78,.08));
  border:1px solid rgba(224,173,78,.28)}
@media (max-width:860px){
  .cs-side-user,.cs-side-badge{display:none}
  #toc .toc-ch{grid-template-columns:24px 1fr 10px}
}

/* 首页「新资料入库」横幅 + 控制台链接按钮 */
.lib-news{display:flex;align-items:center;gap:14px;width:min(620px,100%);margin-top:14px;padding:14px 18px;
  border-radius:18px;text-decoration:none;text-align:left;color:#14213d;
  background:linear-gradient(120deg,rgba(16,26,54,.95),rgba(27,42,74,.92));
  border:1px solid rgba(224,173,78,.38);box-shadow:0 16px 38px rgba(16,26,54,.24);
  transition:transform .25s var(--ease),box-shadow .25s var(--ease)}
.lib-news:hover{transform:translateY(-3px);box-shadow:0 22px 48px rgba(16,26,54,.34)}
.lib-news-ic{font-size:28px;flex:0 0 auto}
.lib-news-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.lib-news-txt b{font-size:13.5px;color:#f4d38c}
.lib-news-txt small{font-size:11.5px;color:#a9b6d6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lib-news-go{flex:0 0 auto;font-size:12.5px;font-weight:700;color:#1a140a;padding:8px 14px;border-radius:999px;
  background:linear-gradient(135deg,#f6d588,#e0ad4e)}
.cs-qbtn{text-decoration:none;display:block}
@media (max-width:480px){.lib-news-go{display:none}}

/* 旧内核回退：不支持 color-mix 时仍保留底色 */
.topbar{background:var(--chrome)}
.botbar{background:var(--chrome)}
#toc{background:var(--soft)}
#toc .toc-head{background:var(--soft)}
#toc .toc-progress{background:var(--soft)}
#toc .toc-ch.active{background:rgba(224,173,78,.14)}

/* =========================================================
   目录抽屉滚动修复（手机 / PAD / PC）
   复现结论（390x844 触屏真实浏览器）：
     目录区域 elementFromPoint 命中 #overlay（遮罩 z-index 15 > 目录 11，
     pointer-events:auto），手指滑动全部被遮罩吃掉，scrollTop 恒为 0；
     且滚动压在带 transform 过渡的 .toc 上，iOS 惯性滚动易失效。
   方案：目录置于遮罩之上；头部 / 搜索 / 进度作为 flex 固定项，
        只有 .toc-scroll 承担滚动，并显式 touch-action:pan-y。
   ========================================================= */
#toc{
  z-index:18;                       /* > overlay 15、tabbar 12；< panel 20 / gate 40 */
  display:flex;flex-direction:column;
  overflow:hidden;                  /* 滚动全部交给 .toc-scroll */
  overscroll-behavior:contain;
}
#toc .toc-head,#toc .toc-search,#toc .toc-progress{
  position:relative;top:auto;bottom:auto;flex:0 0 auto;z-index:2;
}
#toc .toc-scroll{
  flex:1 1 auto;min-height:0;
  overflow-y:auto;overflow-x:hidden;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
  touch-action:pan-y;               /* 明确允许纵向手指滑动 */
  padding-bottom:calc(24px + env(safe-area-inset-bottom));
}
#toc .toc-scroll::-webkit-scrollbar{width:5px}
#toc .toc-scroll::-webkit-scrollbar-thumb{
  background:color-mix(in srgb,var(--accent) 60%,transparent);border-radius:6px}
/* 离屏小节跳过渲染，441 条小节的「附录」章也不卡 */
#toc .toc-sec{content-visibility:auto;contain-intrinsic-size:auto 25px}
/* 目录打开时锁住 body，避免滑动穿透 */
body.toc-open{overflow:hidden}
@media (max-width:860px){
  #toc{width:min(86vw,340px);will-change:transform}
  .toc.open{transform:none}
  body.toc-open .botbar{opacity:.35}
  body.toc-open .app-tabbar{z-index:12}   /* 低于目录，避免盖住底部滑动 */
}
@media (min-width:861px){
  body.toc-open{overflow:auto}            /* 桌面端目录常驻，不锁页面 */
}

/* =========================================================
   听书播放器（HTML5 audio + MediaSession，锁屏 / 后台连续播放）
   ========================================================= */
.player{position:absolute;left:0;right:0;bottom:14px;z-index:16;
  display:flex;flex-direction:column;align-items:center;gap:10px;
  padding:0 12px;pointer-events:none}
.player>*{pointer-events:auto}
.pl-mini,.pl-sheet{width:min(560px,100%);border-radius:16px;
  border:1px solid var(--line);box-shadow:0 14px 40px rgba(30,25,12,.26);
  background:linear-gradient(135deg,color-mix(in srgb,var(--chrome) 94%,#e0ad4e),var(--chrome));
  backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);
  color:var(--chrome-ink)}
.pl-mini{display:flex;align-items:center;gap:11px;padding:9px 10px 9px 12px}
.pl-mini-play{width:38px;height:38px;flex:0 0 auto;border-radius:50%;font-size:14px;
  color:#1a140a;background:linear-gradient(140deg,#f0c869,#e0ad4e);
  box-shadow:0 4px 14px rgba(224,173,78,.35)}
.pl-mini-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.pl-mini-txt b{font-size:12.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-mini-txt span{font-size:10.5px;opacity:.7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-mini-open,.pl-mini-x,.pl-head>button{width:30px;height:30px;flex:0 0 auto;
  border-radius:9px;font-size:17px;opacity:.7}
.pl-mini-open:hover,.pl-mini-x:hover,.pl-head>button:hover{
  background:color-mix(in srgb,var(--ink) 10%,transparent);opacity:1}
.pl-sheet{max-height:min(72vh,560px);overflow-y:auto;overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;touch-action:pan-y;padding:14px 16px 16px}
.pl-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.pl-head-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.pl-head-txt b{font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-head-txt span{font-size:10.5px;opacity:.65}
.pl-prog{height:6px;border-radius:99px;background:color-mix(in srgb,var(--ink) 12%,transparent);overflow:hidden}
.pl-prog>div{height:100%;width:0;border-radius:99px;
  background:linear-gradient(90deg,#e0ad4e,#f0c869);transition:width .15s linear}
.pl-times{display:flex;justify-content:space-between;font-size:10px;opacity:.6;margin:5px 0 12px}
.pl-controls{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:14px}
.pl-controls button{width:44px;height:44px;border-radius:14px;font-size:17px;
  display:flex;align-items:center;justify-content:center;flex-direction:column;
  background:color-mix(in srgb,var(--ink) 7%,transparent)}
.pl-controls button small{font-size:8px;line-height:1;margin-top:-2px;opacity:.7}
.pl-controls .pl-play{width:56px;height:56px;border-radius:50%;font-size:19px;
  color:#1a140a;background:linear-gradient(140deg,#f0c869,#e0ad4e);
  box-shadow:0 6px 20px rgba(224,173,78,.35)}
.pl-controls button:hover,.pl-speed:hover,.pl-voice:hover{
  background:color-mix(in srgb,var(--accent) 16%,transparent)}
.pl-row{margin-bottom:12px}
.pl-row>label{display:block;font-size:10.5px;letter-spacing:.1em;opacity:.6;margin-bottom:7px}
.pl-speeds{display:flex;flex-wrap:wrap;gap:6px}
.pl-speed{padding:6px 12px;border-radius:9px;font-size:11.5px;
  background:color-mix(in srgb,var(--ink) 7%,transparent)}
.pl-speed.on{background:linear-gradient(140deg,#f0c869,#e0ad4e);color:#1a140a;font-weight:700}
.pl-voice-group{margin-bottom:9px}
.pl-group-name{display:block;font-size:10px;opacity:.55;margin:0 0 5px 2px}
.pl-voices{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:7px}
.pl-voice{display:flex;flex-direction:column;gap:2px;align-items:flex-start;
  padding:8px 10px;border-radius:11px;text-align:left;
  background:color-mix(in srgb,var(--ink) 6%,transparent);border:1px solid transparent}
.pl-voice b{font-size:11.5px}
.pl-voice small{font-size:9.5px;opacity:.65;line-height:1.35}
.pl-voice.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,transparent)}
.pl-voice.on b{color:var(--accent)}
.pl-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
  padding-top:10px;border-top:1px solid var(--line)}
.pl-switch{display:flex;align-items:center;gap:6px;font-size:11px;cursor:pointer}
.pl-switch input{accent-color:var(--accent)}
.pl-tip{font-size:10px;opacity:.55}
.pl-note{font-size:10px;line-height:1.6;opacity:.6;margin-top:9px}
@media (max-width:860px){
  /* 避开阅读工具栏(54px) + 底部 Tab(62px) + 安全区 */
  .player{bottom:calc(54px + var(--tabh) + env(safe-area-inset-bottom) + 10px)}
  .bot-prog{flex:1}
  .pl-controls{gap:6px}
  .pl-controls button{width:40px;height:40px}
  .pl-controls .pl-play{width:52px;height:52px}
}
