/* ============ 使者书房线上平台 · 全站样式 ============
   与「以马忤斯」社区同一套设计(community.html 里的令牌原样搬过来):
   纸:宣纸灰白  墨:靛黑  靛:链接与按钮  朱:只做「印」
   标题用楷体(像手写的信),正文用宋体阅读,界面小字用黑体。
   没有卡片阴影、渐变按钮、emoji 标记;分隔全靠细线。
   各页只写自己特有的部分,共用的都在这里 —— 改这里要记得把各页
   <link> 上的 ?v= 版本号一起改掉(nginx 给 /assets/ 设了 30 天缓存)。 */
:root{
  --paper:#f2f1ec; --page:#fbfaf6; --wash:#e9ebe6;
  --ink:#1d2733; --ink2:#3f4a57; --mute:#6d7784;
  --indigo:#2d4a6d; --indigo-deep:#1f3650; --indigo-wash:#e4eaf1;
  --cinnabar:#b23a2e; --cinnabar-wash:#f6e6e3;
  --rule:#cfd2cc; --rule-soft:#e3e5df;
  --kai:"LXGW WenKai TC","Kaiti SC","STKaiti","KaiTi","BiauKai","DFKai-SB",serif;
  --song:"Noto Serif SC","Songti SC","SimSun","Source Han Serif SC",serif;
  --hei:"PingFang SC","Microsoft YaHei","Hiragino Sans GB","Helvetica Neue",sans-serif;
  --wrap:1080px; --gutter:24px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{font-size:17px;-webkit-text-size-adjust:100%}
body{background:var(--paper);color:var(--ink);font-family:var(--song);line-height:1.75;min-height:100vh}
a{color:var(--indigo);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:3px}
button,input,select,textarea{font:inherit;color:inherit}
button{font-family:var(--hei);cursor:pointer}
[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--indigo);outline-offset:2px}
.wrap{max-width:var(--wrap);margin:0 auto;padding-inline:var(--gutter)}
.kai{font-family:var(--kai)}
.hei{font-family:var(--hei)}
.num{font-variant-numeric:tabular-nums}

/* ---------- 刊头 ---------- */
.mast{background:var(--page);border-bottom:1px solid var(--rule)}
.mast-in{display:flex;align-items:flex-end;gap:24px;padding-block:22px 14px;flex-wrap:wrap}
.brand{display:flex;align-items:baseline;gap:14px;color:var(--ink);flex-wrap:wrap}
.brand:hover{text-decoration:none}
.brand .name{font-family:var(--kai);font-size:36px;line-height:1;letter-spacing:2px}
.brand .sub{font-family:var(--hei);font-size:12.5px;color:var(--mute);letter-spacing:1.5px}
.mast-actions{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.mast-actions .who{font-family:var(--hei);font-size:14px;color:var(--mute);margin-right:4px}
.mast-actions .who b{color:var(--ink);font-weight:600}

/* 顶部小按钮:细框、3px 圆角;fill 是唯一的实心款 */
.tbtn{font-family:var(--hei);font-size:14.5px;height:40px;padding:0 14px;border:1px solid var(--rule);border-radius:3px;background:var(--page);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;cursor:pointer;transition:border-color .15s,background .15s,color .15s}
.tbtn:hover{border-color:var(--indigo);text-decoration:none;background:#fff}
.tbtn.fill{background:var(--indigo);color:#fff;border-color:var(--indigo)}
.tbtn.fill:hover{background:var(--indigo-deep)}
.tbtn.on,.tbtn.active{border-color:var(--indigo);color:var(--indigo)}
.tbtn:disabled{opacity:.45;cursor:default;border-color:var(--rule);background:var(--page)}
.tbtn svg{width:18px;height:18px;flex-shrink:0}

/* ---------- 右上角「我的书房」:全站最显眼的一个按钮 ---------- */
.mybooks{font-family:var(--hei);font-size:16px;font-weight:600;height:46px;padding:0 16px 0 13px;border:1px solid var(--indigo);border-radius:3px;background:var(--indigo);color:#fff;display:inline-flex;align-items:center;gap:8px;white-space:nowrap;transition:background .15s}
.mybooks:hover{background:var(--indigo-deep);text-decoration:none}
.mybooks svg{width:21px;height:21px;flex-shrink:0}
.mybooks .cnt{font-family:var(--song);font-variant-numeric:tabular-nums;font-size:13.5px;font-weight:600;background:var(--page);color:var(--indigo);border-radius:10px;padding:0 7px;line-height:19px;min-width:22px;text-align:center}
@media(max-width:600px){ .mast-actions .who{display:none} .mybooks{height:42px;font-size:15px;padding:0 12px 0 10px} }

/* ---------- 刊头下面的三块资源:电子书 / 有声书 / 以马忤斯论坛 ----------
   每块一个方章 + 楷体名字 + 一行「里面有什么」(数字由 assets/site.js 填),让人一眼看出这里还有别的可用 */
.resnav{background:var(--page);border-bottom:1px solid var(--rule)}
.resnav-in{display:flex;align-items:stretch;flex-wrap:wrap}
.res{display:flex;align-items:center;gap:11px;padding:11px 24px;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;background:none;color:var(--ink);text-align:left;cursor:pointer}
.res:first-child{padding-left:0}
.res + .res{border-left:1px solid var(--rule-soft)}
.res:hover{text-decoration:none}
.res:hover .t{color:var(--indigo)}
.res .mark{margin:0;width:32px;height:32px;font-size:17px}
.res .t{display:block;font-family:var(--kai);font-size:19px;line-height:1.3;color:var(--ink);transition:color .15s}
.res .d{display:block;font-family:var(--hei);font-size:12.5px;line-height:1.5;color:var(--mute);margin-top:1px;white-space:nowrap}
.res.active{border-bottom-color:var(--indigo)}
.res.active .t{color:var(--indigo)}
.res.active .mark{background:var(--indigo);border-color:var(--indigo);color:#fff}
.resnav .sp{flex:1}
.resnav .tools{display:flex;align-items:center;gap:8px;padding-block:8px}
.resnav .tools .search{margin-left:0}
@media(max-width:720px){
  /* 「以马忤斯论坛」六个字,给第三格多留一点,手机上不折行 */
  .resnav-in{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,.9fr) minmax(0,1.2fr)}
  .res{padding:10px 4px;justify-content:center;text-align:center}
  .res:first-child{padding-left:4px}
  .res .mark{display:none}
  .res .t{font-size:16px;white-space:nowrap}
  .res .d{font-size:11.5px;white-space:normal}
  .resnav .sp{display:none}
  .resnav .tools{grid-column:1/-1;padding:0 0 10px;flex-wrap:wrap;border-top:1px solid var(--rule-soft);padding-top:10px}
  .resnav .tools .search{flex:1 1 160px;order:0;margin:0}
}

/* ---------- 横线文字导航 ---------- */
.navrow{background:var(--page);border-bottom:1px solid var(--rule)}
.navrow-in{display:flex;align-items:center;gap:4px;min-height:48px;flex-wrap:wrap}
.nlink{font-family:var(--hei);font-size:15.5px;color:var(--ink2);padding:0 13px;height:48px;display:inline-flex;align-items:center;gap:6px;background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;cursor:pointer}
.nlink:hover{color:var(--ink);text-decoration:none}
.nlink.active{color:var(--indigo);border-bottom-color:var(--indigo);font-weight:600}
.nlink.out::after{content:"↗";font-size:12px;color:var(--mute);margin-left:2px}
.navrow .sp{flex:1}
.zh-seg{display:inline-flex;font-family:var(--hei);font-size:13px;color:var(--mute);border:1px solid var(--rule);border-radius:3px;overflow:hidden;background:var(--page)}
.zh-seg button{border:none;background:none;height:32px;padding:0 11px;color:var(--mute);font-size:13.5px}
.zh-seg button + button{border-left:1px solid var(--rule-soft)}
.zh-seg button.active{background:var(--ink);color:var(--page)}
.zh-seg button:disabled{cursor:wait}
.search{position:relative;margin-left:8px;display:block}
.search input{font-family:var(--hei);font-size:14.5px;height:36px;width:230px;padding:0 10px 0 30px;border:1px solid var(--rule);border-radius:3px;background:#fff;color:var(--ink);outline:none;-webkit-appearance:none;appearance:none}
.search input:focus{border-color:var(--indigo)}
.search .ico{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--mute);pointer-events:none;line-height:1;display:flex}
.search .ico svg{width:15px;height:15px}
@media(max-width:720px){
  .search{margin-left:0;flex:0 0 100%;order:9;margin-bottom:8px}
  .search input{width:100%;height:42px;font-size:16px}
  .nlink{padding:0 10px;font-size:15px;height:46px}
}

/* ---------- 版心 / 页脚 ---------- */
main{padding-block:34px 80px}
footer{border-top:1px solid var(--rule);padding-block:22px 46px;font-family:var(--hei);font-size:13px;color:var(--mute)}
footer .wrap{display:flex;gap:10px 16px;flex-wrap:wrap;justify-content:space-between}
footer a{color:var(--mute)}
footer a:hover{color:var(--indigo)}

/* ---------- 栏目标题 ---------- */
.sec-head{display:flex;align-items:baseline;gap:14px;border-bottom:2px solid var(--ink);padding-bottom:8px;margin-bottom:4px;flex-wrap:wrap}
.sec-head h1,.sec-head h2{font-family:var(--kai);font-size:26px;font-weight:400;letter-spacing:1px;line-height:1.3}
.sec-head .note{font-family:var(--hei);font-size:13px;color:var(--mute)}
.sec-head .sp{flex:1}
.kicker{font-family:var(--hei);font-size:12.5px;letter-spacing:2px;color:var(--mute);display:flex;gap:10px;align-items:center;margin-bottom:10px;flex-wrap:wrap}
.intro{font-family:var(--kai);font-size:19px;color:var(--ink2);line-height:1.8;margin-bottom:26px;max-width:36em}

/* ---------- 目录式列表 ---------- */
.entry{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:14px;padding:18px 0;border-bottom:1px solid var(--rule);color:var(--ink);cursor:pointer}
a.entry:hover,.entry.link:hover{text-decoration:none}
.entry:hover .e-title{color:var(--indigo)}
.mark{font-family:var(--kai);width:30px;height:30px;border:1.5px solid var(--ink);border-radius:3px;display:inline-flex;align-items:center;justify-content:center;font-size:16px;color:var(--ink);line-height:1;flex-shrink:0;margin-top:5px;font-variant-numeric:tabular-nums}
.mark.a{border-color:var(--indigo);color:var(--indigo)}
.mark.on{background:var(--indigo);border-color:var(--indigo);color:#fff}
.e-title{font-family:var(--kai);font-size:21px;line-height:1.45;font-weight:400;text-wrap:balance;color:var(--ink);transition:color .15s}
.e-sum{font-size:15px;color:var(--ink2);margin-top:4px;line-height:1.7;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.e-meta{font-family:var(--hei);font-size:13px;color:var(--mute);margin-top:6px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.e-meta .topic{color:var(--indigo)}
.sep::before{content:"·"}
.e-count{text-align:center;min-width:52px;padding-top:4px;font-family:var(--hei);color:var(--ink)}
.e-count b{display:block;font-family:var(--song);font-size:24px;line-height:1.1;font-weight:600;font-variant-numeric:tabular-nums}
.e-count span{font-size:12px;color:var(--mute);letter-spacing:1px}
@media(max-width:600px){
  .entry{grid-template-columns:30px minmax(0,1fr);gap:10px}
  .e-count{grid-column:2;text-align:left;display:flex;gap:6px;align-items:baseline;padding:0}
  .e-count b{font-size:16px}
  .e-title{font-size:19px}
}

/* 小标签:状态用;朱色的 .seal 只给「印」 */
.st{font-family:var(--hei);font-size:12.5px;border:1px solid currentColor;border-radius:3px;padding:0 6px;line-height:20px;white-space:nowrap;display:inline-block;color:var(--ink2)}
.st.free,.st.ok{color:var(--indigo)}
.st.warn,.st.pending{color:var(--cinnabar)}
.st.off{color:var(--mute)}
.seal{font-family:var(--kai);font-size:12px;color:var(--cinnabar);border:1.5px solid var(--cinnabar);border-radius:3px;padding:0 5px;line-height:18px;letter-spacing:1px;display:inline-block;transform:rotate(-2deg);vertical-align:2px;white-space:nowrap}

/* ---------- 信纸 / 正文 ---------- */
.paper{background:var(--page);border:1px solid var(--rule);padding:38px 44px 30px;box-shadow:0 1px 0 var(--rule)}
.p-title{font-family:var(--kai);font-size:32px;line-height:1.35;font-weight:400;text-wrap:balance;margin-bottom:10px}
.p-by{font-family:var(--hei);font-size:13.5px;color:var(--mute);display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.prose{font-size:17.5px;line-height:1.95;max-width:36em;word-break:break-word;overflow-wrap:anywhere}
.prose p{margin-bottom:1em}

/* ---------- 表单 ---------- */
.sheet{background:var(--page);border:1px solid var(--rule);padding:34px 40px;max-width:760px}
.sheet h1,.sheet h2{font-family:var(--kai);font-size:28px;font-weight:400;margin-bottom:6px;line-height:1.35}
.sheet .lead{font-family:var(--hei);font-size:14.5px;color:var(--mute);line-height:1.8;margin-bottom:24px;max-width:40em}
.f{margin-bottom:20px}
.f label{display:block;font-family:var(--hei);font-size:13px;letter-spacing:1px;color:var(--mute);margin-bottom:7px}
.f label .req{color:var(--cinnabar);margin-left:3px}
.f label .opt{letter-spacing:0;margin-left:6px}
.f input,.f textarea,.f select{width:100%;font-family:var(--song);font-size:17px;padding:11px 13px;border:1px solid var(--rule);border-radius:3px;background:#fff;color:var(--ink);outline:none;line-height:1.6}
.f input{height:50px}
.f textarea{min-height:130px;resize:vertical}
.f input:focus,.f textarea:focus,.f select:focus{border-color:var(--indigo);box-shadow:0 0 0 3px var(--indigo-wash)}
.f .hint{font-family:var(--hei);font-size:13px;color:var(--mute);margin-top:6px;line-height:1.7}
.inp{font-family:var(--hei);font-size:14.5px;height:40px;padding:0 11px;border:1px solid var(--rule);border-radius:3px;background:#fff;color:var(--ink);outline:none;max-width:100%}
.inp:focus{border-color:var(--indigo)}
select.inp{padding:0 8px}
textarea.inp{height:auto;padding:10px 11px;line-height:1.6}

.btn{font-family:var(--hei);font-size:16px;font-weight:600;height:50px;padding:0 30px;border:1px solid var(--indigo);border-radius:3px;background:var(--indigo);color:#fff;display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;cursor:pointer;transition:background .15s,border-color .15s,color .15s}
.btn:hover{background:var(--indigo-deep);text-decoration:none}
.btn:disabled{opacity:.5;cursor:default}
.btn.ghost{background:transparent;color:var(--ink2);border-color:var(--rule)}
.btn.ghost:hover{border-color:var(--indigo);color:var(--indigo);background:transparent}
.btn.block{width:100%}
.sbtn{font-family:var(--hei);font-size:13.5px;height:36px;padding:0 13px;border:1px solid var(--rule);border-radius:3px;background:var(--page);color:var(--ink2);display:inline-flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;cursor:pointer}
.sbtn:hover{border-color:var(--indigo);color:var(--indigo);text-decoration:none}
.sbtn.ok,.sbtn.pri{border-color:var(--indigo);color:var(--indigo)}
.sbtn.fill{background:var(--indigo);border-color:var(--indigo);color:#fff}
.sbtn.fill:hover{background:var(--indigo-deep);color:#fff}
.sbtn.no{color:var(--cinnabar)}
.sbtn.no:hover{border-color:var(--cinnabar);color:var(--cinnabar)}
.sbtn:disabled{opacity:.45;cursor:default}
.lnk{font-family:var(--hei);font-size:13.5px;height:36px;padding:0 10px;border:none;background:none;color:var(--mute);display:inline-flex;align-items:center;gap:4px;border-radius:3px;cursor:pointer;white-space:nowrap}
.lnk:hover{color:var(--indigo);background:var(--wash);text-decoration:none}
.lnk.warn:hover{color:var(--cinnabar)}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.msg{margin-top:14px;font-family:var(--hei);font-size:14px;line-height:1.7;padding:10px 13px;border-radius:3px;border:1px solid var(--rule);color:var(--ink2)}
.msg.err{color:var(--cinnabar);border-color:var(--cinnabar);background:var(--cinnabar-wash)}
.msg.ok{color:var(--indigo);border-color:var(--indigo);background:var(--indigo-wash)}
.notice{font-family:var(--hei);font-size:13.5px;color:var(--cinnabar);border:1px dashed var(--cinnabar);padding:8px 12px;border-radius:3px;line-height:1.6}
.devcode{margin-top:10px;font-family:var(--hei);font-size:13.5px;text-align:center;color:var(--mute)}
.devcode b{color:var(--cinnabar);font-family:var(--song);font-size:22px;letter-spacing:4px}

/* ---------- 空状态 / 载入中 ---------- */
.empty{text-align:center;padding:56px 20px;color:var(--mute);font-family:var(--hei);font-size:15px;line-height:1.9}
.empty h3{font-family:var(--kai);font-weight:400;font-size:22px;color:var(--ink);margin-bottom:6px}
.loading{text-align:center;padding:60px 20px;color:var(--mute);font-family:var(--hei);font-size:14.5px}

/* ---------- 弹窗 / 提示 ---------- */
.mask{position:fixed;inset:0;background:rgba(29,39,51,.5);z-index:100;display:flex;align-items:center;justify-content:center;padding:16px}
.modal{background:var(--page);border:1px solid var(--rule);padding:32px 30px;width:100%;max-width:420px;box-shadow:0 20px 50px rgba(29,39,51,.3)}
.modal h2,.modal h3{font-family:var(--kai);font-size:26px;font-weight:400;margin-bottom:6px;line-height:1.35}
.modal .lead{font-family:var(--hei);font-size:14px;color:var(--mute);line-height:1.7;margin-bottom:20px}
.modal .close{display:block;margin:14px auto 0;background:none;border:none;color:var(--mute);font-size:13.5px;text-decoration:underline;text-underline-offset:3px}
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:var(--ink);color:var(--page);padding:11px 20px;font-family:var(--hei);font-size:14.5px;z-index:200;max-width:90vw;text-align:center;border-radius:3px;opacity:0;pointer-events:none;transition:opacity .25s}
.toast.show{opacity:1}

/* ---------- 后台:二级导航 / 方框 / 表格 / 数字条 ---------- */
.subnav{display:flex;gap:2px;flex-wrap:wrap;border-bottom:1px solid var(--rule);margin-bottom:22px}
.subnav a,.subnav button{font-family:var(--hei);font-size:14.5px;padding:10px 14px;color:var(--ink2);background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;white-space:nowrap}
.subnav a.active,.subnav button.active{color:var(--indigo);border-bottom-color:var(--indigo);font-weight:600}
.subnav a:hover,.subnav button:hover{text-decoration:none;color:var(--indigo)}
.lead-s{font-family:var(--hei);font-size:13.5px;color:var(--mute);margin-bottom:14px;line-height:1.7}
.box{background:var(--page);border:1px solid var(--rule);padding:22px 24px;margin-bottom:18px}
.box > h2,.box > h3,.box .p-h{font-family:var(--kai);font-size:22px;font-weight:400;line-height:1.4;margin-bottom:6px}
.box .hint{font-family:var(--hei);font-size:13.5px;color:var(--mute);line-height:1.8;margin-bottom:14px}
code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.88em;background:var(--wash);padding:0 5px;border-radius:2px}
table{width:100%;border-collapse:collapse;font-family:var(--hei);font-size:14px}
th,td{padding:10px 10px;border-bottom:1px solid var(--rule-soft);text-align:left;vertical-align:middle}
th{font-size:12px;letter-spacing:1px;color:var(--mute);border-bottom:1px solid var(--ink);font-weight:600}
.tbl{overflow-x:auto;border:1px solid var(--rule);background:var(--page)}
.stats{display:flex;flex-wrap:wrap;border:1px solid var(--rule);background:var(--page);margin-bottom:22px}
.stats > div{padding:12px 20px;border-right:1px solid var(--rule-soft);font-family:var(--hei);font-size:12.5px;color:var(--mute);letter-spacing:1px;min-width:120px;flex:1}
.stats > div:last-child{border-right:0}
.stats b{display:block;font-family:var(--song);font-size:26px;color:var(--ink);letter-spacing:0;font-variant-numeric:tabular-nums;font-weight:600;line-height:1.3}

/* ---------- 转发 / 订阅号召(书库首页与收听页共用) ---------- */
.cta{background:var(--page);border:1px solid var(--rule);padding:26px 30px 24px;margin-top:40px}
.cta .t{font-family:var(--kai);font-size:23px;line-height:1.4;margin-bottom:6px}
.cta p{font-family:var(--hei);font-size:14.5px;color:var(--ink2);line-height:1.85;margin-bottom:18px;max-width:40em}
.cta p b{color:var(--ink);font-weight:600}
.share-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.share-row .tbtn{height:44px;font-size:15px;padding:0 18px}
.sh-msg{margin-top:12px;font-family:var(--hei);font-size:14px;color:var(--indigo);line-height:1.7}
.sc-sub{margin-top:20px;padding-top:16px;border-top:1px dotted var(--rule);display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-family:var(--hei);font-size:14.5px;color:var(--ink2)}
@media(max-width:560px){
  .cta{padding:22px 18px 20px}
  .share-row .tbtn{flex:1 1 calc(50% - 8px)}
  .share-row .tbtn.fill{flex-basis:100%}
}

@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
@media(max-width:600px){
  :root{--gutter:16px}
  /* 手机上品牌名和副标上下叠,这样右边还放得下一个按钮 */
  .brand{flex-direction:column;align-items:flex-start;gap:6px}
  .brand .name{font-size:26px;letter-spacing:1px;white-space:nowrap}
  .brand .sub{font-size:12px;letter-spacing:.5px}
  .mast-in{padding-block:16px 12px;gap:10px 12px;align-items:center}
  main{padding-block:22px 60px}
  .paper{padding:24px 18px 20px}
  .p-title{font-size:26px}
  .sheet{padding:24px 18px}
  .box{padding:18px 16px}
  .sec-head h1,.sec-head h2{font-size:23px}
}
