:root{
  --bg:#f3f7f3; --bg2:#e9efe9; --panel:#ffffff; --panel2:#e6eee6;
  --line:#d2dfd2; --ink:#1c2e23; --muted:#4f6255; --faint:#7f9085;
  --accent:#1f8a5f;      /* 淡绿主色:链接/激活/按钮 */
  --accent2:#2f9e6b;     /* 次绿:次要高亮 */
  --accent-soft:rgba(31,138,95,.12);
  --radius:14px; --shadow:0 8px 24px rgba(31,70,45,.10);
  --navh:56px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth; scroll-padding-top:calc(var(--navh) + 8px)}
body{
  margin:0; padding-top:var(--navh);
  background:var(--bg); color:var(--ink); color:var(--ink);
  font-family:"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",-apple-system,"Segoe UI",Roboto,sans-serif;
  -webkit-font-smoothing:antialiased; line-height:1.7; font-size:16px;
}
a{color:var(--accent); text-decoration:none}
a:hover{text-decoration:underline}
.app{min-height:100vh; display:flex; flex-direction:column;}

/* ---------- top nav (fixed, 3-level mega menu) ---------- */
.site-nav{
  position:fixed; top:0; left:0; right:0; z-index:1000;
  height:var(--navh); display:flex; align-items:center; gap:16px;
  padding:0 22px; background:rgba(255,255,255,.97); border-bottom:1px solid var(--line);
  backdrop-filter:blur(8px);
}
.nav-brand{display:flex; align-items:center; gap:8px; font-weight:700; color:var(--ink); font-size:16px; white-space:nowrap;}
.nav-brand:hover{text-decoration:none; color:var(--accent);}
.nav-ico{font-size:20px;}
.nav-menu{display:flex; gap:4px; margin-left:6px; flex-wrap:nowrap;}
.nav-item{position:relative;}
.nav-cat{display:block; padding:8px 14px; border-radius:8px; color:var(--muted); cursor:pointer; font-weight:600; font-size:15px; transition:.15s; white-space:nowrap;}
.nav-item:hover .nav-cat, .nav-item.open .nav-cat{color:var(--ink); background:var(--panel2);}
.nav-item.open .nav-cat{color:var(--accent);}
.mega{
  position:absolute; top:calc(100% + 6px); left:0; display:flex;
  min-width:540px; background:var(--panel); border:1px solid var(--line);
  border-radius:12px; box-shadow:var(--shadow);
  opacity:0; visibility:hidden; transform:translateY(-6px);
  transition:opacity .15s, transform .15s, visibility .15s; z-index:1001; overflow:hidden;
}
.nav-item.open .mega{opacity:1; visibility:visible; transform:translateY(0);}
.mega-books{width:218px; flex:none; padding:10px; border-right:1px solid var(--line); background:var(--bg2);}
.mega-book{display:flex; align-items:center; gap:8px; padding:9px 11px; border-radius:8px; color:var(--ink); font-size:14px;}
.mega-book:hover{background:var(--panel2); text-decoration:none;}
.mega-book.active{background:var(--accent-soft); color:var(--accent); font-weight:600;}
.mega-book-n{margin-left:auto; color:var(--faint); font-size:12px;}
.mega-panels{flex:1; padding:10px; max-height:440px; overflow:auto;}
.mega-chapters{display:none;}
.mega-chapters.active{display:flex; flex-direction:column;}
.mega-chapters a{display:flex; gap:10px; padding:8px 12px; border-radius:7px; color:var(--muted); font-size:13.5px;}
.mega-chapters a:hover{color:var(--ink); background:var(--panel2); text-decoration:none;}
.mega-chapters a span{color:var(--accent2); flex:none; font-size:12px;}
@media(max-width:760px){
  .nav-brand-t{display:none;}
  .nav-menu{margin-left:auto; overflow-x:auto;}
  .mega{min-width:min(540px,90vw);}
}

/* ---------- hero ---------- */
.hero{background:linear-gradient(180deg,#ffffff 0,#f3f7f3 100%); border-bottom:1px solid var(--line); padding:56px 20px 40px;}
.hero-inner{max-width:1100px; margin:0 auto; text-align:center;}
.hero-mark{display:inline-block; font-size:13px; letter-spacing:2px; color:var(--accent2); border:1px solid var(--line); padding:6px 16px; border-radius:99px; margin-bottom:18px; background:var(--panel);}
.hero h1{font-size:40px; margin:0 0 10px; font-weight:800; letter-spacing:1px;}
.hero-sub{color:var(--muted); margin:0 0 22px; font-size:16px;}
.hero-stats{display:inline-flex; gap:10px; align-items:center; color:var(--faint); font-size:14px; border:1px solid var(--line); padding:8px 18px; border-radius:99px; background:var(--panel);}

/* ---------- main + shelf ---------- */
.main{max-width:1100px; margin:0 auto; padding:36px 20px 80px; width:100%;}
.shelf{margin-bottom:44px;}
.shelf-head{display:flex; align-items:baseline; justify-content:space-between; margin-bottom:18px; padding-bottom:10px; border-bottom:1px solid var(--line);}
.shelf-cat{font-size:20px; font-weight:700;}
.shelf-n{color:var(--faint); font-size:13px;}
.shelf-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:20px;}

/* ---------- book cards ---------- */
.book-card{
  position:relative; display:flex; gap:16px; padding:20px;
  background:var(--panel); border:1px solid var(--line); border-radius:var(--radius);
  transition:transform .18s, box-shadow .18s, border-color .18s; overflow:hidden;
}
.book-card:hover{transform:translateY(-4px); box-shadow:var(--shadow); border-color:var(--accent); text-decoration:none;}
.book-card::before{content:""; position:absolute; left:0; top:0; bottom:0; width:6px; background:var(--cover);}
.book-spine{font-size:38px; line-height:1; flex:none; width:56px; height:72px; display:flex; align-items:center; justify-content:center; background:linear-gradient(135deg, var(--cover), #00000088); border-radius:8px; box-shadow:inset -6px 0 10px rgba(0,0,0,.35);}
.book-body{min-width:0;}
.book-cat{font-size:12px; color:var(--accent2); letter-spacing:1px; text-transform:uppercase; margin-bottom:6px;}
.book-title{font-size:19px; margin:0 0 6px; font-weight:700;}
.book-sub{color:var(--accent); margin:0 0 8px; font-size:13px; font-weight:600;}
.book-desc{color:var(--muted); margin:0 0 12px; font-size:13.5px; line-height:1.6;}
.book-meta{color:var(--faint); font-size:12px;}
.book-card.sm{padding:16px;}
.book-card.sm .book-spine{font-size:30px; width:48px; height:62px;}

/* ---------- book detail ---------- */
.book-hero{display:flex; gap:26px; align-items:center; padding:44px 20px; border-bottom:1px solid var(--line); background:linear-gradient(160deg, var(--cover), #f3f7f3 85%);}
.back{display:inline-block; color:var(--muted); font-size:14px; margin-bottom:12px;}
.back:hover{color:var(--accent); text-decoration:none;}
.book-cover{font-size:80px; width:150px; height:200px; flex:none; display:flex; align-items:center; justify-content:center; background:linear-gradient(150deg, var(--cover), #00000099); border-radius:14px; box-shadow:var(--shadow), inset -10px 0 20px rgba(0,0,0,.4);}
.book-head-info .book-cat{margin-bottom:8px;}
.book-head-info h1{font-size:34px; margin:0 0 8px;}
.book-sub-big{color:var(--accent); font-size:16px; font-weight:600; margin:0 0 10px;}
.book-desc-big{color:var(--muted); max-width:560px; margin:0 0 16px;}
.toc-card{background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:28px; max-width:760px;}
.toc-title{font-size:22px; margin:0 0 6px;}
.toc-hint{color:var(--faint); margin:0 0 20px; font-size:13px;}
.toc-list{list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); gap:8px;}
.toc-list a{display:flex; align-items:center; gap:12px; color:var(--ink); padding:12px 14px; border-radius:10px; border:1px solid var(--line); background:var(--bg2); transition:.15s;}
.toc-list a:hover{text-decoration:none; border-color:var(--accent); background:var(--panel2);}
.toc-num{color:var(--accent2); font-weight:700; font-size:15px; flex:none;}

/* ---------- reader ---------- */
.book-topbar{display:flex; align-items:center; gap:16px; padding:12px 20px; border-bottom:1px solid var(--line); background:var(--bg2); position:sticky; top:var(--navh); z-index:10;}
.book-topbar .back{margin:0;}
.crumb{color:var(--muted); font-size:14px;}
.reader{display:grid; grid-template-columns:250px 1fr; gap:32px; max-width:1200px; margin:0 auto; padding:30px 20px 80px;}
.reader-side{position:sticky; top:calc(var(--navh) + 56px); align-self:start; max-height:calc(100vh - var(--navh) - 70px); overflow:auto; padding-right:6px;}
.side-book{font-weight:700; margin-bottom:12px; color:var(--accent);}
.side-toc{list-style:none; margin:0; padding:0; border-left:1px solid var(--line);}
.side-toc a{display:flex; gap:10px; padding:7px 12px; color:var(--muted); font-size:13.5px; border-left:2px solid transparent; margin-left:-1px;}
.side-toc a:hover{color:var(--ink); text-decoration:none; background:var(--bg2);}
.side-toc li.on a{color:var(--accent); font-weight:600; border-left-color:var(--accent);}
.side-toc span{color:var(--faint); flex:none;}
.chapter{min-width:0; max-width:820px;}
.chapter-title{font-size:30px; margin:0 0 8px;}
.chapter-sub{color:var(--faint); margin:0 0 26px; font-size:15px; border-bottom:1px solid var(--line); padding-bottom:16px;}
.chapter-nav{margin-bottom:18px;}
.book-side-link{color:var(--muted); font-size:13px;}

/* content typography */
.chapter h2, .chapter h3{border-bottom:1px solid var(--line); padding-bottom:6px; margin-top:1.8em; scroll-margin-top:calc(var(--navh) + 8px);}
.chapter h2{font-size:24px;} .chapter h3{font-size:19px; border-bottom:none;}
.chapter p{margin:1em 0;}
.chapter ul,.chapter ol{padding-left:22px; margin:1em 0;}
.chapter li{margin:4px 0;}
.chapter blockquote{margin:1em 0; padding:8px 18px; border-left:4px solid var(--accent); background:var(--bg2); border-radius:0 8px 8px 0; color:var(--muted);}
.chapter table{border-collapse:collapse; margin:1em 0; width:100%; font-size:14px; display:block; overflow-x:auto;}
.chapter th,.chapter td{border:1px solid var(--line); padding:8px 12px; text-align:left;}
.chapter th{background:var(--panel2); color:var(--ink);}
.chapter code{background:var(--panel2); padding:1px 6px; border-radius:5px; font-size:.92em; color:var(--accent2); font-family:"JetBrains Mono","Fira Code","SF Mono",Consolas,monospace;}
.chapter pre{background:#f7faf7; border:1px solid var(--line); border-radius:10px; padding:16px; overflow-x:auto; font-size:13.5px; line-height:1.6; position:relative;}
.chapter pre code{background:none; padding:0; color:#22352b;}

.copy-btn{position:absolute; top:10px; right:10px; background:var(--panel2); border:1px solid var(--line); color:var(--muted); font-size:12px; padding:4px 10px; border-radius:6px; cursor:pointer; opacity:0; transition:.15s;}
pre:hover .copy-btn{opacity:1;}
.copy-btn:hover{color:var(--ink); border-color:var(--accent);}

.chapter-pager{display:flex; justify-content:space-between; gap:16px; margin-top:48px; padding-top:22px; border-top:1px solid var(--line);}
.nav-prev,.nav-next{color:var(--accent); font-size:14px; max-width:46%;}

/* admonition */
.chapter .admonition{margin:1.2em 0; padding:14px 16px; border-radius:10px; border:1px solid var(--line); background:var(--bg2);}
.chapter .admonition-title{font-weight:700; margin-bottom:6px; color:var(--accent2);}
.chapter .admonition.tip .admonition-title{color:#1f8a5f;}
.chapter .admonition.warning .admonition-title{color:#b26a00;}

#menu-toggle{display:none;}

/* responsive */
@media(max-width:860px){
  .reader{grid-template-columns:1fr;}
  .reader-side{display:none; position:fixed; inset:var(--navh) auto 0 0; width:80%; max-width:320px; background:var(--panel); z-index:30; padding:20px; box-shadow:var(--shadow);}
  .reader-side.open{display:block;}
  .book-topbar{justify-content:space-between;}
  #menu-toggle{display:block; background:var(--panel2); border:1px solid var(--line); color:var(--ink); padding:6px 12px; border-radius:8px;}
  .book-hero{flex-direction:column; text-align:center;}
  .book-cover{width:120px; height:160px; font-size:64px;}
}


/* ---------- 页脚：站点名 + 备案号 ---------- */
.site-footer{
  max-width:1100px; margin:34px auto 46px; padding:18px 16px 0;
  border-top:1px solid rgba(95,199,141,.18);
  text-align:center; font-size:13px; line-height:1.9; color:#8fa79a;
}
.site-footer a{color:#8ee0a6; text-decoration:none}
.site-footer a:hover{text-decoration:underline}
.site-footer .foot-sep{margin:0 10px; opacity:.45}
