/* 与首页同一套语言：深墨 + 卷宗纸 + 档案红戳；EB Garamond / 思源宋体 / Archivo */
:root{
  --ink:#0b0e13; --ink-2:#141922; --silver:#8d949f;
  --paper:#f2ede3; --paper-2:#e6dfd1; --card:#fbf8f2;
  --rule:#c9bfab; --rule-dim:#2a303b;
  --body:#2a2721; --muted:#6d6659;
  --stamp:#8f2f22; --stamp-lit:#c9614c; --brass:#9a7b46;
  --serif:"EB Garamond",'Iowan Old Style',Georgia,serif;
  --cjk:"Noto Serif SC","Source Han Serif SC","Songti SC",serif;
  --label:"Archivo",ui-sans-serif,system-ui,sans-serif;
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--body);
  font:400 17px/1.7 var(--serif);-webkit-font-smoothing:antialiased}
.zh{font-family:var(--cjk);line-height:1.9}
a{color:var(--stamp);text-decoration:none;border-bottom:1px solid rgba(143,47,34,.28)}
a:hover{color:var(--ink);border-bottom-color:var(--ink)}
img{max-width:100%;display:block}
.label{font-family:var(--label);font-size:.68rem;font-weight:600;
  letter-spacing:.2em;text-transform:uppercase}

/* 顶栏 */
header.bar{background:var(--ink);color:var(--paper);position:sticky;top:0;z-index:30;
  border-bottom:1px solid var(--rule-dim)}
.bar .in{max-width:78rem;margin:0 auto;padding:.85rem 1.4rem;
  display:flex;align-items:center;gap:1.6rem;flex-wrap:wrap}
.bar .brand{font-size:1.02rem;letter-spacing:.01em;color:var(--paper);border:0}
.bar .brand b{font-weight:500}
.bar .brand span{color:#7b838f;font-size:.82rem;margin-left:.5rem}
.bar nav{margin-left:auto;display:flex;gap:1.3rem}
.bar nav a{color:#9aa1ac;border:0;font-family:var(--label);font-size:.7rem;
  letter-spacing:.16em;text-transform:uppercase;padding-bottom:2px}
.bar nav a:hover,.bar nav a[aria-current]{color:var(--stamp-lit);
  border-bottom:1px solid var(--stamp-lit)}

.wrap{max-width:78rem;margin:0 auto;padding:2.4rem 1.4rem 5rem}
h1.pt{font-weight:400;font-size:clamp(1.6rem,4vw,2.4rem);margin:.2rem 0 .3rem;color:var(--ink)}
h1.pt .zh{display:block;font-size:.62em;color:var(--muted);margin-top:.25rem}
.sub{color:var(--muted);font-size:.95rem;margin:0 0 2rem}

/* 统计条 */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));
  gap:0;border:1px solid var(--rule);background:var(--card);margin:0 0 2rem}
.stats div{padding:1rem 1.1rem;border-left:1px solid var(--rule)}
.stats div:first-child{border-left:0}
.stats b{display:block;font-size:1.5rem;color:var(--stamp);line-height:1.15;font-weight:500}
.stats span{font-size:.66rem;color:var(--muted);font-family:var(--label);
  letter-spacing:.14em;text-transform:uppercase}

/* 搜索框 */
.searchbox{display:flex;gap:0;border:1px solid var(--rule);background:#fff;margin-bottom:1rem}
.searchbox input{flex:1;border:0;padding:.95rem 1.1rem;font:400 1.05rem var(--serif);
  background:transparent;color:var(--body);outline:none}
.searchbox input::placeholder{color:#b3aa98}
.searchbox button{border:0;background:var(--ink);color:var(--paper);
  padding:0 1.6rem;font-family:var(--label);font-size:.72rem;letter-spacing:.16em;
  text-transform:uppercase;cursor:pointer}
.searchbox button:hover{background:var(--stamp)}
.hint{font-size:.84rem;color:var(--muted);margin:0 0 1.8rem}
.hint code{background:var(--paper-2);padding:.08em .4em;border-radius:2px;
  font-family:ui-monospace,Menlo,monospace;font-size:.9em;cursor:pointer}
.hint code:hover{background:var(--stamp);color:#fff}

/* 结果 */
.res{border-top:1px solid var(--rule)}
.res .it{padding:1.1rem 0;border-bottom:1px solid var(--rule)}
.res .ti{font-size:1.02rem;color:var(--ink)}
.res .mt{font-family:var(--label);font-size:.64rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);margin:.25rem 0 .5rem}
.res .sn{font-size:.92rem;color:#4a453c;line-height:1.7;overflow-wrap:anywhere}
.res .sn mark{background:#f6e2a8;color:inherit;padding:0 .1em}
.res .sn.zh{font-size:.88rem}
.pg{display:inline-block;font-family:var(--label);font-size:.62rem;letter-spacing:.1em;
  color:var(--stamp);border:1px solid rgba(143,47,34,.3);padding:.05rem .4rem;
  margin-right:.45rem;border-radius:2px}

/* 目录表 */
.tbl{width:100%;border-collapse:collapse;font-size:.92rem}
.tbl th{text-align:left;font-family:var(--label);font-size:.64rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);font-weight:600;
  padding:.55rem .7rem;border-bottom:1px solid var(--rule);position:sticky;top:3.2rem;
  background:var(--paper)}
.tbl td{padding:.5rem .7rem;border-bottom:1px solid var(--rule);vertical-align:top}
.tbl tr:hover td{background:var(--card)}
.tbl .num{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}
.done{display:inline-block;width:.5rem;height:.5rem;border-radius:50%;background:var(--stamp)}
.todo{display:inline-block;width:.5rem;height:.5rem;border-radius:50%;
  border:1px solid var(--rule);background:transparent}

/* 阅读页三栏 */
.pane{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1.4rem;
  border-top:1px solid var(--rule);padding:1.6rem 0}
.pane h4{margin:0 0 .7rem;font-family:var(--label);font-size:.64rem;letter-spacing:.18em;
  text-transform:uppercase;color:var(--muted);font-weight:600;
  border-bottom:1px solid var(--rule);padding-bottom:.4rem}
.pane .txt{white-space:pre-wrap;font-size:.9rem;line-height:1.72;
  overflow-wrap:anywhere;word-break:break-word;min-width:0}
/* 中文没有空格，一行 782 字不会自动折行——必须强制断。踩过：中共传单原件那页把整栏撑破。 */
.pane>div{min-width:0}
.pane .txt.zh{font-size:.86rem}
.pane img{border:1px solid var(--rule);background:#fff;filter:grayscale(1) contrast(1.05)}
.pane .oldocr{font-family:ui-monospace,Menlo,monospace;font-size:.72rem;line-height:1.75;
  color:#8b8478;white-space:pre-wrap;max-height:30rem;overflow:auto}

.note{background:var(--card);border:1px solid var(--rule);border-left:3px solid var(--stamp);
  padding:1rem 1.2rem;margin:1.4rem 0;font-size:.92rem}
.note b{color:var(--ink)}
.muted{color:var(--muted)}

/* 严重残破页：只标记不删除。原文照旧展示（淡化），旁边说明为什么不能用。 */
.badtag{font-family:var(--label);font-size:.86em;letter-spacing:.1em;color:var(--stamp);
  border:1px solid rgba(143,47,34,.4);border-radius:2px;padding:.05em .4em;margin-left:.5em}
.badnote{background:rgba(143,47,34,.07);border:1px solid rgba(143,47,34,.3);
  border-left:3px solid var(--stamp);padding:.7rem .85rem;margin-bottom:.8rem;
  font-size:.84rem;line-height:1.7;overflow-wrap:anywhere}
.badnote b{color:var(--stamp)}
.badnote .en{display:block;margin-top:.4rem;color:var(--muted);font-size:.94em}
.pane .txt.faded{opacity:.5}

/* 影像差、转录含推测：比「不可用」轻一级的提示。
   用铜色而非印章红——它不是「这页不能用」，而是「这页要多留个心眼」。 */
.guessnote{background:rgba(154,123,70,.09);border:1px solid rgba(154,123,70,.35);
  border-left:3px solid var(--brass);padding:.65rem .85rem;margin-bottom:.8rem;
  font-size:.83rem;line-height:1.7;overflow-wrap:anywhere}
.guessnote b{color:#7a5f33}
.spin{color:var(--muted);font-size:.9rem;padding:2rem 0}

footer.ft{background:var(--ink);color:#6b7381;padding:2.2rem 0;font-size:.82rem;margin-top:4rem}
footer.ft .in{max-width:78rem;margin:0 auto;padding:0 1.4rem;
  display:flex;flex-wrap:wrap;gap:.8rem 2rem;justify-content:space-between}

@media(max-width:900px){
  .pane{grid-template-columns:1fr}
  .stats{grid-template-columns:repeat(2,1fr)}
  .stats div{border-left:0;border-top:1px solid var(--rule)}
  .stats div:nth-child(-n+2){border-top:0}
}

/* 多词检索时，标出这一段是哪个词的上下文 */
.res .sn .tm{display:inline-block;font-family:var(--label);font-size:.62rem;letter-spacing:.08em;
  color:var(--stamp);border:1px solid rgba(143,47,34,.35);border-radius:2px;
  padding:0 .35em;margin-right:.5em;vertical-align:1px}

/* 检索结果里「前 3 页有摘要、其余页命中」的突出提示条：其余页全部可点 */
.res .morepg{margin:.45rem 0 .15rem;padding:.4rem .55rem;
  background:#fff6dd;border-left:3px solid #d9a21b;
  font-size:.85rem;line-height:1.9}
.res .morepg .pg{margin-right:.15rem}
/* ── 功能测试中横幅 ─────────────────────────────────────────
   检索与 AI 联想两页仍在调整，明确告诉用户，别让人以为是成品。 */
.beta{background:rgba(154,123,70,.12);border:1px solid rgba(154,123,70,.4);
  border-left:3px solid var(--brass);padding:.7rem 1rem;margin:0 0 1.4rem;
  font-size:.88rem;line-height:1.7;color:var(--body)}
.beta b{color:#7a5f33}
.beta .en{color:var(--muted);font-size:.94em}

/* ── 分页器 ────────────────────────────────────────────────
   全部命中仍然都能拿到，只是分页呈现——不是上限。
   这一点必须在页面上写明（本项目的检索设计原则：任何内部限制都要明示）。 */
.pager{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;
  margin:1.6rem 0;padding-top:1.2rem;border-top:1px solid var(--rule)}
.pager button{border:1px solid var(--rule);background:var(--card);color:var(--body);
  font:400 .88rem var(--serif);padding:.35rem .7rem;border-radius:2px;cursor:pointer}
.pager button:hover:not(:disabled){border-color:var(--stamp);color:var(--stamp)}
.pager button[aria-current="true"]{background:var(--stamp);color:#fff;border-color:var(--stamp)}
.pager button:disabled{opacity:.35;cursor:default}
.pager .pinfo{font-size:.85rem;color:var(--muted);margin-right:.5rem}
.pager .gap{color:var(--muted);padding:0 .2rem}
.pgjump{font-size:.85rem;color:var(--muted);margin-left:.4rem}
.pgjump input{width:4.2rem;border:1px solid var(--rule);background:#fff;
  padding:.28rem .4rem;font:400 .88rem var(--serif);border-radius:2px}

/* 单件命中页很多时，把其余页码折进 details——仍然全部列出，只是默认收起 */
.morepg details summary{cursor:pointer;color:var(--stamp)}

/* 检索规则默认收起：规则说明很长，挤在搜索框和结果之间会把结果推到屏幕外，
   用户以为「没搜到」。折叠起来，要看再点。控件（年份输入框）不收，仍然直接可用。 */
.rules{border:1px solid var(--rule);background:var(--card);margin:.8rem 0 1rem;
  padding:.55rem .9rem;font-size:.9rem}
.rules summary{cursor:pointer;font-weight:500;color:var(--stamp);list-style:none}
.rules summary::-webkit-details-marker{display:none}
.rules summary::before{content:"▸ ";font-weight:700}
.rules[open] summary::before{content:"▾ "}
.rules summary .en{color:var(--muted);font-weight:400;margin-left:.4rem}
.rules .hint{margin:.8rem 0 .2rem}

/* 「下滑查看结果」——必须一眼看见，否则等于不存在。
   字号、颜色、边框都刻意做大做重，不是小灰字。 */
.scrolltip{display:block;margin:1rem 0;padding:.75rem 1rem;
  background:rgba(143,47,34,.08);border:2px solid var(--stamp);border-radius:3px;
  font-size:1.12rem;font-weight:600;color:var(--stamp);text-align:center;line-height:1.5}
.scrolltip .en{display:block;font-size:.95rem;font-weight:500;color:var(--body);margin-top:.2rem}
@keyframes nudge{0%,100%{transform:translateY(0)}50%{transform:translateY(4px)}}
.scrolltip .arrow{display:inline-block;animation:nudge 1.4s ease-in-out infinite}

/* 结果出来时的弹窗提醒：渲染后页面会滚回顶部，结果其实在下方，
   用户很容易以为「什么都没有」。静态提示条会被当成页面装饰看过去，
   所以再补一个有出现动作的浮层——动作才抓得住注意力。
   一滚动就消失：用户既然已经开始下滑，提醒就完成使命了，不该继续挡着。 */
.toast{position:fixed;left:50%;bottom:2.2rem;transform:translateX(-50%) translateY(1.2rem);
  z-index:60;max-width:min(92vw,34rem);padding:1rem 1.4rem;
  background:var(--ink);color:var(--paper);border:2px solid var(--stamp-lit);
  border-radius:4px;box-shadow:0 8px 28px rgba(0,0,0,.28);
  text-align:center;line-height:1.55;opacity:0;pointer-events:none;
  transition:opacity .28s ease,transform .28s ease}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto}
.toast b{display:block;font-size:1.16rem;font-weight:600;color:#fff}
.toast .en{display:block;font-size:1rem;color:#d9cfc0;margin-top:.25rem}
.toast .x{display:block;font-family:var(--label);font-size:.62rem;letter-spacing:.16em;
  text-transform:uppercase;color:#9aa1ac;margin-top:.6rem;cursor:pointer}
.toast .x:hover{color:var(--stamp-lit)}
@media(prefers-reduced-motion:reduce){.toast{transition:none}}
