/* ═══════════════════════════════════════════════════
   阳明心学 · H5 设计系统
   水墨宣纸 × 朱砂点染 · 移动优先 · 桌面自适应
   ═══════════════════════════════════════════════════ */
:root{
  --paper:#f6f2ea;
  --paper2:#efe8db;
  --paper3:#e6ddcc;
  --card:#fffdf8;
  --ink:#26221c;
  --ink2:#5a5348;
  --ink3:#8d8578;
  --line:rgba(38,34,28,.10);
  --line2:rgba(38,34,28,.06);
  --cinnabar:#a8402c;
  --cinnabar-d:#8a3322;
  --cinnabar-l:#f4e2db;
  --gold:#b08a45;
  --gold-l:#f1e7d3;
  --inkblue:#2c3e4e;
  --inkblue-d:#1f2d3a;
  --shadow:0 1px 2px rgba(38,34,28,.05),0 6px 20px rgba(38,34,28,.06);
  --shadow-lg:0 2px 6px rgba(38,34,28,.06),0 16px 40px rgba(38,34,28,.10);
  --r:14px;
  --serif:"Noto Serif SC","Source Han Serif SC","Songti SC","STSong","SimSun",Georgia,serif;
  --kai:"KaiTi","STKaiti","Kaiti SC","DFKai-SB","FangSong",var(--serif);
  --tab-h:58px;
  --head-h:56px;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{scroll-behavior:smooth}
body{
  font-family:var(--serif);
  background:var(--paper);
  color:var(--ink);
  line-height:1.8;
  font-size:16px;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:var(--cinnabar);text-decoration:none}
button{font-family:inherit;cursor:pointer}
::selection{background:var(--cinnabar-l);color:var(--cinnabar-d)}

/* ─────────── 顶栏 ─────────── */
.topbar{
  position:fixed;top:0;left:0;right:0;height:var(--head-h);z-index:60;
  display:flex;align-items:center;gap:10px;padding:0 14px;
  background:rgba(246,242,234,.86);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line2);
}
.topbar .seal{
  width:34px;height:34px;flex:none;border-radius:8px;
  background:linear-gradient(150deg,var(--cinnabar),var(--cinnabar-d));
  color:#fff;display:flex;align-items:center;justify-content:center;
  font-size:15px;font-family:var(--kai);box-shadow:0 2px 8px rgba(168,64,44,.35);
}
.topbar .brand{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.topbar .brand b{font-size:16px;letter-spacing:2px;color:var(--ink)}
.topbar .brand small{font-size:10.5px;letter-spacing:2px;color:var(--ink3)}
.topbar .spacer{flex:1}
.topnav{display:none;align-items:center;gap:2px;overflow-x:auto;scrollbar-width:none;max-width:calc(100vw - 220px)}
.topnav::-webkit-scrollbar{display:none}
.topnav a{
  flex:none;font-size:14px;letter-spacing:1px;color:var(--ink2);
  padding:7px 11px;border-radius:9px;transition:.15s;
}
.topnav a:hover{background:var(--paper2);color:var(--ink)}
.topnav a.on{color:var(--cinnabar-d);background:var(--cinnabar-l);font-weight:700}
.iconbtn{
  width:38px;height:38px;flex:none;border:1px solid var(--line);border-radius:10px;
  background:var(--card);color:var(--ink2);font-size:17px;display:flex;align-items:center;justify-content:center;
}
.iconbtn:active{transform:scale(.94)}

/* ─────────── 抽屉 ─────────── */
.scrim{position:fixed;inset:0;background:rgba(20,16,10,.42);opacity:0;pointer-events:none;transition:.25s;z-index:70}
.scrim.on{opacity:1;pointer-events:auto}
.drawer{
  position:fixed;top:0;right:0;bottom:0;width:min(300px,84vw);z-index:80;
  background:var(--paper);box-shadow:-8px 0 30px rgba(0,0,0,.16);
  transform:translateX(102%);transition:transform .28s cubic-bezier(.22,.8,.3,1);
  display:flex;flex-direction:column;padding:16px 14px calc(16px + env(safe-area-inset-bottom));overflow-y:auto;
}
.drawer.on{transform:none}
.drawer .dhead{display:flex;align-items:center;gap:10px;padding:4px 6px 14px;border-bottom:1px solid var(--line);margin-bottom:10px}
.drawer .dhead .seal{width:36px;height:36px;border-radius:8px;background:linear-gradient(150deg,var(--cinnabar),var(--cinnabar-d));color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--kai);font-size:16px}
.drawer .dhead b{font-size:16px;letter-spacing:2px}
.drawer .dhead small{display:block;font-size:10.5px;letter-spacing:1.5px;color:var(--ink3)}
.drawer .groupt{font-size:11px;letter-spacing:3px;color:var(--ink3);padding:12px 8px 5px}
.drawer a.dlink{
  display:flex;align-items:center;gap:10px;padding:10px 10px;border-radius:10px;
  color:var(--ink2);font-size:15px;letter-spacing:1px;
}
.drawer a.dlink .ic{
  width:24px;height:24px;flex:none;border-radius:6px;background:var(--gold-l);color:var(--cinnabar-d);
  display:flex;align-items:center;justify-content:center;font-family:var(--kai);font-size:13px;
}
.drawer a.dlink.on .ic{background:var(--cinnabar);color:#fff}
.drawer a.dlink.on{background:var(--cinnabar-l);color:var(--cinnabar-d);font-weight:700}
.drawer a.dlink:active{background:var(--paper2)}

/* ─────────── 底部标签栏（移动） ─────────── */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:60;height:calc(var(--tab-h) + env(safe-area-inset-bottom));
  padding-bottom:env(safe-area-inset-bottom);
  display:flex;background:rgba(255,253,248,.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-top:1px solid var(--line2);
}
.tabbar button{
  flex:1;border:none;background:transparent;color:var(--ink3);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  font-size:10.5px;letter-spacing:1px;
}
.tabbar button .ti{
  width:26px;height:26px;border-radius:7px;background:var(--paper2);color:var(--ink2);
  display:flex;align-items:center;justify-content:center;font-family:var(--kai);font-size:14px;line-height:1;transition:.15s;
}
.tabbar button.on{color:var(--cinnabar-d)}
.tabbar button.on .ti{background:var(--cinnabar);color:#fff;transform:translateY(-1px)}

/* ─────────── 主容器 ─────────── */
#view{
  padding-top:var(--head-h);
  padding-bottom:calc(var(--tab-h) + env(safe-area-inset-bottom) + 18px);
  min-height:100vh;
}
.wrap{max-width:1080px;margin:0 auto;padding:0 16px}
.view-enter{animation:viewIn .34s cubic-bezier(.22,.8,.3,1)}
@keyframes viewIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* ─────────── 通用组件 ─────────── */
.sec{padding:34px 0 6px}
.sec-head{display:flex;align-items:baseline;gap:12px;margin-bottom:4px}
.sec-head .no{
  font-family:var(--kai);font-size:15px;color:#fff;background:var(--cinnabar);
  width:30px;height:30px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;flex:none;align-self:center;
}.sec-head h2{font-size:23px;letter-spacing:3px;color:var(--ink)}
.sec-head .en{font-size:11px;letter-spacing:2px;color:var(--ink3)}
.sec-desc{color:var(--ink2);font-size:14px;letter-spacing:.5px;margin:6px 0 20px}
.rule{height:2px;border:none;background:linear-gradient(90deg,var(--cinnabar) 0%,var(--gold-l) 40%,transparent 85%);margin:8px 0 22px}

.card{background:var(--card);border:1px solid var(--line2);border-radius:var(--r);box-shadow:var(--shadow);padding:20px}
.card + .card{margin-top:14px}
.card h3{font-size:18px;letter-spacing:2px;color:var(--ink);margin-bottom:8px}
.card h3 .tag{display:inline-block;font-size:10.5px;letter-spacing:2px;color:var(--gold);border:1px solid var(--gold);border-radius:10px;padding:1px 9px;margin-left:8px;vertical-align:2px;font-weight:400}
.card p{margin-bottom:8px;font-size:15px;color:var(--ink2)}
.card p:last-child{margin-bottom:0}

.quote{
  background:linear-gradient(160deg,var(--paper2),var(--card));
  border-left:3px solid var(--cinnabar);border-radius:0 12px 12px 0;
  padding:16px 18px;margin:12px 0;font-family:var(--kai);font-size:16.5px;line-height:2;color:var(--ink);
}
.quote footer{font-family:var(--serif);font-size:12px;color:var(--ink3);margin-top:8px;letter-spacing:1px;text-align:right}

.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.chips .c{font-size:12px;color:var(--cinnabar-d);background:var(--cinnabar-l);border-radius:14px;padding:3px 12px;letter-spacing:1px}

.grid{display:grid;gap:14px}
.g2{grid-template-columns:1fr}
.g3{grid-template-columns:1fr}

.btn{
  display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:10px;
  background:var(--card);color:var(--ink2);font-size:13.5px;letter-spacing:1px;padding:8px 16px;transition:.15s;
}
.btn:hover{border-color:var(--cinnabar);color:var(--cinnabar-d)}
.btn.primary{background:var(--cinnabar);border-color:var(--cinnabar);color:#fff}
.btn.primary:hover{background:var(--cinnabar-d)}
.btn:active{transform:scale(.97)}

.banner{
  position:relative;border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow);
  min-height:170px;display:flex;align-items:flex-end;
}
.banner img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.banner .veil{position:absolute;inset:0;background:linear-gradient(180deg,transparent 30%,rgba(20,16,10,.62) 100%)}
.banner .bt{position:relative;padding:18px;color:#fff}
.banner .bt b{font-size:19px;letter-spacing:3px;display:block;text-shadow:0 1px 8px rgba(0,0,0,.4)}
.banner .bt span{font-size:12.5px;letter-spacing:1px;opacity:.92}

/* ─────────── 首页 ─────────── */
.hero{
  position:relative;overflow:hidden;margin-top:0;
  padding:44px 20px 34px;
  background:
    linear-gradient(180deg,rgba(246,242,234,.30) 0%,rgba(246,242,234,.72) 55%,var(--paper) 100%),
    url("../img/hero-inkwash.jpg") center 62%/cover no-repeat;
}
.hero .kicker{
  display:inline-block;font-size:11.5px;letter-spacing:4px;color:var(--cinnabar-d);
  border:1px solid rgba(168,64,44,.4);background:rgba(255,253,248,.6);border-radius:16px;padding:3px 14px;margin-bottom:16px;
}
.hero h1{font-size:38px;line-height:1.35;letter-spacing:5px;font-weight:700;color:var(--ink)}
.hero h1 em{font-style:normal;font-family:var(--kai);color:var(--cinnabar)}
.hero .sub{margin-top:12px;font-size:14.5px;color:var(--ink2);letter-spacing:1.5px;max-width:34em}
.hero .portrait{
  margin-top:22px;display:flex;gap:16px;align-items:center;
}
.hero .portrait img{
  width:96px;height:120px;object-fit:cover;object-position:top;border-radius:8px;
  border:1px solid var(--line);box-shadow:var(--shadow-lg);filter:saturate(.85) contrast(1.03);
}
.hero .portrait .pmeta b{display:block;font-size:16px;letter-spacing:2px}
.hero .portrait .pmeta span{display:block;font-size:12px;color:var(--ink3);letter-spacing:1px;margin-top:2px}
.hero .stats{
  margin-top:24px;display:grid;grid-template-columns:repeat(2,1fr);gap:1px;
  background:var(--line2);border:1px solid var(--line2);border-radius:12px;overflow:hidden;
}
.hero .stats .s{background:rgba(255,253,248,.82);padding:12px 14px}
.hero .stats .s b{display:block;font-size:14.5px;color:var(--cinnabar-d);letter-spacing:1px}
.hero .stats .s span{font-size:11px;color:var(--ink3);letter-spacing:.5px}

.daily{
  margin-top:20px;background:var(--card);border:1px solid var(--line2);border-radius:var(--r);
  box-shadow:var(--shadow);padding:20px;position:relative;overflow:hidden;
}
.daily::before{
  content:"日";position:absolute;right:-6px;top:-14px;font-family:var(--kai);font-size:88px;
  color:var(--cinnabar);opacity:.06;line-height:1;
}
.daily .dt{font-size:11px;letter-spacing:3px;color:var(--gold);margin-bottom:8px}
.daily .dq{font-family:var(--kai);font-size:18px;line-height:1.9;color:var(--ink)}
.daily .ds{font-size:12px;color:var(--ink3);margin-top:8px;letter-spacing:1px;text-align:right}
.daily .dact{margin-top:12px;display:flex;gap:8px}

.entrygrid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.entrygrid a{
  background:var(--card);border:1px solid var(--line2);border-radius:12px;padding:16px 14px;
  box-shadow:var(--shadow);color:var(--ink);position:relative;overflow:hidden;transition:.15s;
}
.entrygrid a:active{transform:scale(.98)}
.entrygrid a .ei{
  width:34px;height:34px;border-radius:9px;background:var(--gold-l);color:var(--cinnabar-d);
  display:flex;align-items:center;justify-content:center;font-family:var(--kai);font-size:16px;margin-bottom:10px;
}
.entrygrid a b{display:block;font-size:15px;letter-spacing:2px;color:var(--ink)}
.entrygrid a span{display:block;font-size:11.5px;color:var(--ink3);margin-top:3px;letter-spacing:.5px}
.entrygrid a::after{
  content:"›";position:absolute;right:12px;top:14px;color:var(--ink3);font-size:16px;
}
.entrygrid a.wide{grid-column:1/-1}

.chain{display:flex;flex-wrap:wrap;gap:10px;align-items:stretch}
.chain .card{margin:0}

/* ─────────── 时间线 ─────────── */
.tl{position:relative;margin-left:8px;padding-left:26px}
.tl::before{content:"";position:absolute;left:5px;top:8px;bottom:8px;width:2px;background:linear-gradient(180deg,var(--gold),var(--cinnabar-l))}
.tl .item{position:relative;padding:0 0 22px}
.tl .item::before{
  content:"";position:absolute;left:-26px;top:7px;width:12px;height:12px;border-radius:50%;
  background:var(--card);border:3px solid var(--cinnabar);
}
.tl .item.key::before{background:var(--cinnabar);box-shadow:0 0 0 4px var(--cinnabar-l)}
.tl .item .yr{font-size:14.5px;color:var(--cinnabar-d);font-weight:700;letter-spacing:1px}
.tl .item .ev{font-size:14.5px;color:var(--ink2);margin-top:2px}
.tl .item .ev b{color:var(--ink)}
.tl .item .ev small{display:inline-block;color:var(--gold);font-size:12px;margin-left:4px}

/* ─────────── 心学 tabs ─────────── */
.tabs{background:var(--card);border:1px solid var(--line2);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.tabbar-h{display:flex;overflow-x:auto;background:var(--paper2);border-bottom:1px solid var(--line2);scrollbar-width:none}
.tabbar-h::-webkit-scrollbar{display:none}
.tabbar-h button{
  flex:none;border:none;background:transparent;color:var(--ink2);font-size:14.5px;letter-spacing:2px;
  padding:13px 18px;border-bottom:3px solid transparent;
}
.tabbar-h button.on{color:var(--cinnabar-d);border-bottom-color:var(--cinnabar);background:var(--card);font-weight:700}
.tabpanel{display:none;padding:22px 18px}
.tabpanel.on{display:block;animation:viewIn .3s}
.tabpanel .k{display:inline-block;font-size:11px;letter-spacing:3px;color:var(--gold);border:1px solid var(--gold);border-radius:12px;padding:2px 12px;margin-bottom:10px}
.tabpanel h4{font-size:21px;letter-spacing:2px;color:var(--ink);margin:2px 0 12px}
.tabpanel ul{margin:8px 0 8px 1.3em;color:var(--ink2);font-size:14.5px}
.tabpanel li{margin-bottom:6px}

/* ─────────── 金字塔 ─────────── */
.pyr{display:flex;flex-direction:column;align-items:center;gap:8px;margin:8px 0}
.pyr .layer{width:100%;text-align:center;border-radius:10px;padding:14px 12px;color:#fff;box-shadow:var(--shadow)}
.pyr .layer b{display:block;font-size:16.5px;letter-spacing:2px;margin-bottom:3px}
.pyr .layer span{font-size:12px;letter-spacing:.5px;display:block;opacity:.92}
.pyr .l1{background:linear-gradient(150deg,#5b7d54,#7a9a6e);max-width:52%}
.pyr .l2{background:linear-gradient(150deg,#3f6f96,#5b8cab);max-width:68%}
.pyr .l3{background:linear-gradient(150deg,#b08a45,#c8a463);max-width:84%}
.pyr .l4{background:linear-gradient(150deg,#2c3e4e,#46596b);max-width:100%}
.pyr .lbl{font-size:12px;color:var(--ink3);letter-spacing:2px;margin-top:8px;text-align:center}

/* ─────────── 阅读器 ─────────── */
.reader-bar{
  position:sticky;top:var(--head-h);z-index:40;background:rgba(246,242,234,.94);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line2);padding:10px 0;
}
.reader-bar .row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.vtabs{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;flex:1}
.vtabs::-webkit-scrollbar{display:none}
.vtabs button{
  flex:none;border:1px solid var(--line);background:var(--card);color:var(--ink2);
  border-radius:16px;padding:6px 15px;font-size:13.5px;letter-spacing:2px;
}
.vtabs button.on{background:var(--cinnabar);border-color:var(--cinnabar);color:#fff}
.reader-bar select{
  font-family:inherit;font-size:13.5px;padding:7px 10px;border:1px solid var(--line);
  border-radius:9px;background:var(--card);color:var(--ink);max-width:46vw;
}
.reader-tools{display:flex;gap:6px;align-items:center;margin-top:8px;flex-wrap:wrap}
.reader-tools button{
  border:1px solid var(--line);background:var(--card);color:var(--ink2);border-radius:8px;
  padding:5px 11px;font-size:12.5px;letter-spacing:1px;
}
.reader-tools button.on{background:var(--inkblue);border-color:var(--inkblue);color:#fff}
.reader-tools .fs{font-size:12px;color:var(--ink3);letter-spacing:1px}
.progress{height:3px;background:var(--paper3);border-radius:2px;overflow:hidden;margin-top:8px}
.progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--cinnabar),var(--gold));transition:width .1s}

.reader-panel{background:var(--card);border:1px solid var(--line2);border-radius:var(--r);box-shadow:var(--shadow);padding:26px 18px;margin-top:14px}
.reader-panel .ch-title{font-size:21px;letter-spacing:3px;color:var(--ink);text-align:center;margin-bottom:4px}
.reader-panel .ch-juan{text-align:center;font-size:12px;color:var(--ink3);letter-spacing:3px;margin-bottom:6px}
.reader-panel .ch-count{text-align:center;font-size:11.5px;color:var(--ink3);margin-bottom:18px}
.entry{padding:16px 2px;border-bottom:1px dashed var(--line);line-height:2.05;font-size:var(--fs,16px)}
.entry:last-child{border-bottom:none}
.entry .e-no{
  display:inline-block;background:var(--paper2);color:var(--cinnabar-d);border:1px solid var(--line2);
  border-radius:7px;font-size:11.5px;letter-spacing:1px;padding:0 8px;margin-right:9px;vertical-align:2px;
}
.entry.kai,.reader-panel.kai .entry{font-family:var(--kai)}
.entry mark{background:#f3e3b0;color:var(--ink);border-radius:3px;padding:0 2px}
/* 原文·今译对照 */
.reader-panel.bilingual .bi{border-bottom:1px dashed var(--line)}
.reader-panel.bilingual .bi:last-child{border-bottom:none}
.reader-panel.bilingual .entry{border-bottom:none}
.tr-block{
  margin:0 0 16px;padding:13px 15px;background:var(--paper2);border-left:3px solid var(--gold);
  border-radius:0 10px 10px 0;line-height:1.95;font-size:calc(var(--fs,16px) - 1.5px);color:var(--ink2);
}
.tr-block.none{border-left-color:var(--line);background:transparent}
.tr-label{
  display:inline-block;font-size:11px;letter-spacing:2px;color:var(--gold);border:1px solid rgba(176,138,69,.4);
  border-radius:5px;padding:0 6px;margin-bottom:6px;font-family:var(--kai)
}
.tr-block.none .tr-label{color:var(--ink3);border-color:var(--line)}
.tr-text.muted{color:var(--ink3);font-style:italic;font-size:13px}
.pager{display:flex;justify-content:space-between;gap:10px;margin:16px 0 4px}
.pager button{
  flex:1;border:1px solid var(--line);background:var(--card);color:var(--cinnabar-d);
  border-radius:10px;padding:11px;font-size:14px;letter-spacing:2px;
}
.pager button:disabled{opacity:.4}

/* ─────────── 检索 ─────────── */
.searchbox{position:relative;margin:6px 0 4px}
.searchbox input{
  width:100%;font-family:inherit;font-size:16px;letter-spacing:1px;color:var(--ink);
  padding:14px 44px 14px 16px;border:1.5px solid var(--line);border-radius:12px;background:var(--card);outline:none;
}
.searchbox input:focus{border-color:var(--cinnabar);box-shadow:0 0 0 3px var(--cinnabar-l)}
.searchbox .go{
  position:absolute;right:6px;top:6px;bottom:6px;width:36px;border:none;border-radius:9px;
  background:var(--cinnabar);color:#fff;font-size:15px;
}
.search-sum{font-size:13px;color:var(--ink2);letter-spacing:1px;margin:12px 0 8px}
.search-sum b{color:var(--cinnabar-d)}
.rgroup{margin-bottom:22px}
.rgroup .rg-t{font-size:15.5px;letter-spacing:2px;color:var(--cinnabar-d);border-left:3px solid var(--cinnabar);padding-left:10px;margin-bottom:10px}
.ritem{
  background:var(--card);border:1px solid var(--line2);border-left:3px solid var(--gold);
  border-radius:10px;padding:12px 14px;margin-bottom:9px;box-shadow:var(--shadow);
}
.ritem .r-meta{font-size:11px;color:var(--ink3);letter-spacing:1px;margin-bottom:4px}
.ritem .r-meta b{color:var(--cinnabar)}
.ritem .r-text{font-size:14.5px;line-height:1.9;color:var(--ink)}
.ritem .r-text mark{background:#f3e3b0;border-radius:3px;padding:0 2px}
.ritem .jump{display:inline-block;margin-top:6px;font-size:12px;color:var(--cinnabar);letter-spacing:1px}
.empty{text-align:center;color:var(--ink3);padding:50px 0;font-size:14px;letter-spacing:2px}
.hotwords{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.hotwords button{border:1px solid var(--line);background:var(--card);color:var(--ink2);border-radius:14px;padding:4px 13px;font-size:12.5px;letter-spacing:1px}

/* ─────────── 思维导图 ─────────── */
.mm{background:var(--card);border:1px solid var(--line2);border-radius:var(--r);box-shadow:var(--shadow);padding:16px 12px;overflow-x:auto}
.mm ul{list-style:none;margin:0;padding-left:0}
.mm ul ul{padding-left:18px;border-left:1px dashed var(--line);margin-left:9px}
.mm li{margin:5px 0}
.mm .node{
  display:inline-flex;align-items:center;gap:7px;font-size:14px;color:var(--ink);
  background:var(--paper2);border:1px solid var(--line2);border-radius:9px;padding:5px 11px;letter-spacing:.5px;
}
.mm .node.lv0{background:linear-gradient(150deg,var(--inkblue),var(--inkblue-d));color:#fff;font-size:16px;letter-spacing:2px;padding:9px 18px}
.mm .node.lv1{background:var(--cinnabar-l);border-color:rgba(168,64,44,.25);color:var(--cinnabar-d);font-weight:700}
.mm .node.lv2{background:var(--paper2);color:var(--ink)}
.mm .node.branch{cursor:pointer;user-select:none;transition:transform .12s,box-shadow .12s,border-color .12s}
.mm .node.branch:hover{border-color:var(--gold);box-shadow:0 2px 8px rgba(176,138,69,.22)}
.mm .node.branch:active{transform:scale(.985)}
.mm .node.leaf{background:var(--card);color:var(--ink2);font-size:13px}
.mm .ntx{line-height:1.35}
.mm .tw{width:17px;height:17px;flex:none;border:1px solid var(--line);border-radius:5px;background:var(--card);color:var(--cinnabar-d);font-size:12px;font-weight:700;line-height:1;display:inline-flex;align-items:center;justify-content:center;font-style:normal}
.mm .node.lv0 .tw{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.4);color:#fff}
.mm .tw.dot{color:var(--gold);font-size:9px}
.mm .tw.dot::before{content:"●"}

/* ─────────── 名句卡片 ─────────── */
.qgrid{display:grid;grid-template-columns:1fr;gap:12px}
.qcard{
  background:var(--card);border:1px solid var(--line2);border-radius:12px;padding:18px;box-shadow:var(--shadow);
  display:flex;flex-direction:column;gap:8px;position:relative;overflow:hidden;
}
.qcard::before{content:"「";position:absolute;left:8px;top:2px;font-family:var(--kai);font-size:34px;color:var(--cinnabar);opacity:.12}
.qcard .q{font-family:var(--kai);font-size:16.5px;line-height:1.95;color:var(--ink)}
.qcard .s{font-size:12px;color:var(--ink3);letter-spacing:1px;text-align:right;border-top:1px dashed var(--line);padding-top:8px}
.poem{background:var(--card);border:1px solid var(--line2);border-radius:12px;padding:20px;box-shadow:var(--shadow);text-align:center}
.poem h4{font-size:18px;letter-spacing:3px;color:var(--ink);margin-bottom:2px}
.poem .ptag{font-size:11px;letter-spacing:2px;color:var(--gold);margin-bottom:12px}
.poem .pl{font-family:var(--kai);font-size:16px;line-height:2.1;color:var(--ink2)}
.poem .pnote{font-size:12.5px;color:var(--ink3);margin-top:12px;line-height:1.8;text-align:left;border-top:1px dashed var(--line);padding-top:10px}

/* ─────────── 测验 ─────────── */
.quiz-card{background:var(--card);border:1px solid var(--line2);border-radius:var(--r);box-shadow:var(--shadow);padding:22px 18px}
.quiz-card .qn{font-size:12px;letter-spacing:2px;color:var(--gold);margin-bottom:8px}
.quiz-card .qq{font-size:17px;letter-spacing:1px;color:var(--ink);line-height:1.7;margin-bottom:16px}
.quiz-card .opt{
  display:block;width:100%;text-align:left;border:1.5px solid var(--line);background:var(--paper);
  border-radius:11px;padding:12px 14px;margin-bottom:10px;font-size:15px;color:var(--ink2);transition:.15s;
}
.quiz-card .opt:active{transform:scale(.99)}
.quiz-card .opt.sel{border-color:var(--cinnabar);background:var(--cinnabar-l);color:var(--cinnabar-d)}
.quiz-card .opt.right{border-color:#4a8c5c;background:#e8f3ea;color:#2d5a3a}
.quiz-card .opt.wrong{border-color:var(--cinnabar);background:var(--cinnabar-l);color:var(--cinnabar-d)}
.quiz-card .expl{background:var(--paper2);border-radius:10px;padding:12px 14px;font-size:13.5px;color:var(--ink2);margin:6px 0 14px}
.quiz-score{text-align:center;padding:30px 10px}
.quiz-score .big{font-family:var(--kai);font-size:52px;color:var(--cinnabar);line-height:1.2}
.quiz-score .lbl{font-size:14px;color:var(--ink2);letter-spacing:2px;margin-top:6px}

/* ─────────── 著作 / 事功 ─────────── */
.wcard{background:var(--card);border:1px solid var(--line2);border-top:3px solid var(--gold);border-radius:12px;padding:18px;box-shadow:var(--shadow);position:relative}
.wcard h3{font-size:17px;letter-spacing:2px;color:var(--ink)}
.wcard .en{font-size:10.5px;color:var(--ink3);letter-spacing:1px;margin:2px 0 8px}
.wcard p{font-size:13.5px;color:var(--ink2)}
.wcard .book{position:absolute;right:14px;top:12px;color:var(--gold);font-family:var(--kai);font-size:20px}
.wcard .ws{
  display:inline-flex;align-items:center;gap:4px;margin-top:12px;font-size:12.5px;letter-spacing:.5px;
  color:var(--cinnabar-d);background:var(--cinnabar-l);border:1px solid rgba(168,64,44,.25);
  border-radius:20px;padding:5px 12px;text-decoration:none;transition:.15s
}
.wcard .ws:hover{background:var(--cinnabar);border-color:var(--cinnabar);color:#fff}
.wsbar{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:16px;padding:12px 15px;
  background:var(--card);border:1px solid var(--line2);border-radius:12px;box-shadow:var(--shadow)
}
.wsbar .k{font-size:11px;letter-spacing:2px;color:var(--gold);border:1px solid rgba(176,138,69,.4);border-radius:5px;padding:1px 7px;font-family:var(--kai)}
.wsbar a{font-size:13.5px;color:var(--inkblue);text-decoration:none;border-bottom:1px dashed var(--inkblue)}
.wsbar a:hover{color:var(--cinnabar-d);border-color:var(--cinnabar-d)}
/* 子标题 */
.subhead{display:flex;align-items:center;gap:9px;margin:26px 0 14px;font-size:18px;letter-spacing:2px;color:var(--ink);font-weight:700}
.subhead .no{width:26px;height:26px;flex:none;display:inline-flex;align-items:center;justify-content:center;border-radius:7px;background:var(--cinnabar);color:#fff;font-family:var(--kai);font-size:14px;font-weight:400}
/* 五溺 */
.wuni{display:grid;grid-template-columns:1fr;gap:12px}
.ucard{position:relative;background:var(--card);border:1px solid var(--line2);border-radius:12px;padding:16px 16px 16px 46px;box-shadow:var(--shadow)}
.ucard .un{position:absolute;left:14px;top:16px;width:22px;height:22px;border-radius:50%;background:var(--paper2);color:var(--cinnabar-d);font-family:var(--kai);font-size:13px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line)}
.ucard h4{font-size:15px;letter-spacing:1px;color:var(--ink);margin-bottom:5px}
.ucard p{font-size:12.5px;color:var(--ink2);line-height:1.7}
.ucard.final{border-top:3px solid var(--gold);background:linear-gradient(180deg,var(--gold-l),var(--card))}
/* 概念辞典 */
.gloss{display:grid;grid-template-columns:1fr;gap:12px}
.gcard{background:var(--card);border:1px solid var(--line2);border-left:3px solid var(--inkblue);border-radius:10px;padding:13px 15px;box-shadow:var(--shadow)}
.gcard .gt{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:15.5px;font-weight:700;color:var(--ink);cursor:pointer;letter-spacing:1px}
.gcard .gt .go{font-size:11px;font-weight:400;color:var(--ink3);letter-spacing:.5px;white-space:nowrap;font-style:normal;transition:.15s}
.gcard .gt:hover{color:var(--cinnabar-d)}
.gcard .gt:hover .go{color:var(--cinnabar-d)}
.gcard p{font-size:12.5px;color:var(--ink2);line-height:1.7;margin-top:6px}
/* 训蒙大意节选 */
.excerpt{background:var(--card);border:1px solid var(--line2);border-radius:var(--r);box-shadow:var(--shadow);padding:22px 20px}
.excerpt .ex-t{text-align:center;font-family:var(--kai);font-size:17px;letter-spacing:2px;color:var(--ink);margin-bottom:14px}
.excerpt .ex-q{margin:0;padding:16px 18px;background:var(--paper2);border-radius:10px;font-family:var(--kai);font-size:16px;line-height:2;color:var(--ink);text-align:justify}
.excerpt .ex-d{margin-top:14px;font-size:13.5px;line-height:1.9;color:var(--ink2);text-align:justify}
.excerpt .ex-d .lbl{display:inline-block;font-size:11px;letter-spacing:2px;color:var(--gold);border:1px solid rgba(176,138,69,.4);border-radius:5px;padding:0 6px;margin-right:8px;font-family:var(--kai);vertical-align:2px}
.excerpt .ex-n{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line);font-size:12.5px;color:var(--ink3);line-height:1.75}

/* ─────────── 表格 ─────────── */
table.info{width:100%;border-collapse:collapse;font-size:14px;background:var(--card);border-radius:12px;overflow:hidden;box-shadow:var(--shadow)}
table.info td{border:1px solid var(--line2);padding:10px 12px;color:var(--ink2)}
table.info td.k{width:74px;background:var(--paper2);color:var(--cinnabar-d);letter-spacing:2px;font-weight:700;text-align:center}

/* ─────────── 页脚 ─────────── */
footer.ft{margin-top:44px;border-top:1px solid var(--line);padding:26px 16px 8px;color:var(--ink3);font-size:12px;letter-spacing:1px;line-height:2}
footer.ft .fseal{font-family:var(--kai);color:var(--cinnabar);font-size:15px;letter-spacing:3px}
footer.ft ol{margin:6px 0 0 1.3em}
footer.ft a{color:var(--ink3);border-bottom:1px dotted var(--ink3)}

#toTop{
  position:fixed;right:16px;bottom:calc(var(--tab-h) + env(safe-area-inset-bottom) + 14px);
  width:42px;height:42px;border-radius:50%;border:none;background:var(--inkblue);color:#fff;font-size:16px;
  box-shadow:0 4px 14px rgba(0,0,0,.25);opacity:0;pointer-events:none;transition:.2s;z-index:55;
}
#toTop.show{opacity:1;pointer-events:auto}

/* ─────────── 桌面自适应 ─────────── */
@media (min-width:768px){
  .tabbar{display:none}
  #view{padding-bottom:40px}
  #toTop{bottom:26px;right:26px}
  .topnav{display:flex}
  .menu-only{display:none}
  .wrap{padding:0 28px}
  .hero{padding:64px 40px 46px}
  .hero h1{font-size:52px}
  .hero .stats{grid-template-columns:repeat(4,1fr)}
  .entrygrid{grid-template-columns:repeat(4,1fr)}
  .entrygrid a.wide{grid-column:span 2}
  .g2{grid-template-columns:repeat(2,1fr)}
  .g3{grid-template-columns:repeat(3,1fr)}
  .wuni{grid-template-columns:repeat(2,1fr)}
  .gloss{grid-template-columns:repeat(2,1fr)}
  .qgrid{grid-template-columns:repeat(2,1fr)}
  .reader-panel{padding:38px 46px}
  .tabbar-h button{padding:13px 26px}
  .sec-head h2{font-size:27px}
}
@media (min-width:1024px){
  .g3{grid-template-columns:repeat(3,1fr)}
  .qgrid{grid-template-columns:repeat(3,1fr)}
}
