/* ---------- 字体：与源 docx 完全同源（新宋体 / 仿宋 / 黑体，子集化 TTF） ---------- */
@font-face {
  font-family: "XYSong";
  src: url("/assets/fonts/nsimsun.ttf?v=3") format("truetype");
  font-weight: normal; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "XYFang";
  src: url("/assets/fonts/fangsong.ttf?v=3") format("truetype");
  font-weight: normal; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "XYHei";
  src: url("/assets/fonts/hei.ttf?v=3") format("truetype");
  font-weight: normal; font-style: normal; font-display: swap;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  background: #2b2d31;
  font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
  color: #e9eaec;
}

/* ---------------- 顶栏 ---------------- */
.topbar {
  position: sticky; top: 0; z-index: 50;
  display: flex; align-items: center; gap: 10px;
  padding: 10px 18px;
  background: #1f2125;
  border-bottom: 1px solid #34363b;
  flex-wrap: wrap;
}
.brand { font-size: 14px; color: #b9bcc2; margin-right: 8px; letter-spacing: .5px; }
.tabs { display: flex; gap: 6px; }
.tab {
  padding: 7px 15px; border-radius: 7px; font-size: 13px; cursor: pointer;
  background: #2b2d31; color: #b9bcc2; border: 1px solid #3a3d43;
  transition: .15s; font-family: inherit;
}
.tab:hover { background: #35383e; color: #fff; }
.tab.on { background: #b8322c; border-color: #b8322c; color: #fff; }
.spacer { flex: 1; }
.btn {
  padding: 8px 16px; border-radius: 7px; font-size: 13px; cursor: pointer;
  border: 1px solid #3a3d43; background: #2b2d31; color: #e9eaec;
  transition: .15s; font-family: inherit;
}
.btn:hover { background: #35383e; }
.btn.primary { background: #b8322c; border-color: #b8322c; color: #fff; }
.btn.primary:hover { background: #cb3a33; }
.btn.ghost { background: transparent; }
.btn[disabled] { opacity: .6; cursor: default; }
.save-state { font-size: 12px; color: #8b8f96; min-width: 76px; text-align: right; }

/* ---------------- 纸张 ---------------- */
.stage { padding: 26px 12px 60px; display: flex; justify-content: center; }
.page {
  position: relative;
  background: #fff; color: #000;
  box-shadow: 0 10px 34px rgba(0,0,0,.45);
  display: none;
  overflow: hidden;
  -webkit-font-smoothing: antialiased;
}
.page.on { display: block; }

/* 每段位置来自源 docx 在 Word 中的实测基线；段间距用 margin 表达，重排时自然流动 */
.blk {
  margin: 0;
  white-space: pre-wrap;
  word-break: normal;
  overflow-wrap: normal;
}
.blk span { vertical-align: baseline; }

/* 可编辑字段：字号/字体跟随所在 run，不改变任何度量 */
.fld {
  outline: none;
  border-bottom: 1px dashed rgba(184,50,44,.5);
  background: rgba(184,50,44,.05);
  cursor: text;
  border-radius: 2px;
  transition: background .12s;
}
.fld:hover { background: rgba(255,214,102,.45); }
.fld:focus { background: rgba(255,214,102,.75); border-bottom-color: rgba(184,50,44,.85); }

/* 公章 */
.seal {
  position: absolute;
  background: url("seal.png?v=3") center/contain no-repeat;
  mix-blend-mode: multiply;
  opacity: .96;
  pointer-events: none;
  z-index: 3;
}

/* ---------------- 登录页 ---------------- */
.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 24px; }
.login-card {
  width: 100%; max-width: 380px; background: #1f2125; border: 1px solid #34363b;
  border-radius: 14px; padding: 34px 30px 28px;
}
.login-card h2 { margin: 0 0 6px; font-size: 19px; font-weight: 600; color: #fff; }
.login-card .sub { color: #8b8f96; font-size: 12.5px; margin-bottom: 22px; }
.login-card label { display: block; font-size: 12.5px; color: #a8acb3; margin-bottom: 8px; }
.login-card input {
  width: 100%; padding: 11px 13px; border-radius: 8px; font-size: 14px;
  background: #2b2d31; border: 1px solid #3f424a; color: #fff; outline: none;
}
.login-card input:focus { border-color: #b8322c; }
.login-card button {
  width: 100%; margin-top: 18px; padding: 11px; border-radius: 8px; border: 0;
  background: #b8322c; color: #fff; font-size: 14px; cursor: pointer;
}
.login-card button:hover { background: #cb3a33; }
.err { color: #ff6b62; font-size: 12.5px; margin-top: 12px; }

/* ---------------- 小屏缩放 ---------------- */
@media (max-width: 700px) {
  .stage { padding: 10px 0 30px; }
  .page { zoom: .62; }
}
