/* 白皮书的排版。
 * 🔴 这一页是【法律/系统壳】—— 按设计资产总纲 04_选型与验收.md 的表面路由，
 *    空间感 = 无、动效 = 1、令牌 + 纯排版。所以这里一个动画都没有，
 *    也不引视频背景（它走 legal.css 那套干净底）。
 * 🔴 手机第一：地址是 42 个字符，不折行必然横向溢出（今天在 /proof 和
 *    /token-info 上已经各栽过一次）。所以 code 一律 anywhere 折行、表格 fixed 布局。 */
.paper { overflow-wrap: anywhere; }
/* 🔴 原来这里是 word-break: break-all，那是为了让 0x 长地址能换行。
   但 break-all 是【急切换行】：短到 burnUnclaimed() 也会被劈成 "bu / rnUnclaimed()"，
   看着像页面坏了。overflow-wrap: anywhere 只在真的放不下时才断，
   长地址照样换行，短函数名保持完整。 */
.paper code { overflow-wrap: anywhere; font-size: 0.92em; }

.paper-toc { display: flex; flex-wrap: wrap; gap: 8px 10px; margin: 0 0 22px; }
.paper-toc a { font-size: 12.5px; text-decoration: none; padding: 6px 11px; border-radius: 999px;
  border: 1px solid rgba(27,55,70,0.16); color: #2f5265; background: #fff; }
.paper-toc a:hover { background: #eff6f9; }

.paper .legal-card { scroll-margin-top: 20px; }
.paper .legal-card h2 { margin-top: 0; }
.paper .legal-card h3 { margin: 1.5rem 0 0.5rem; font-size: 1rem; }
.paper-note { font-size: 0.88rem; line-height: 1.7; color: #4c6a7a; background: #f3f8fa;
  border-radius: 10px; padding: 12px 14px; margin: 14px 0 0; }

/* 数字条：跟发币页同一套语言，颜色按浅底挑（深色值打在白卡上看不见——栽过） */
.paper-strip { display: flex; flex-wrap: wrap; gap: 10px 34px; margin: 12px 0 4px; }
.paper-strip > div { display: flex; flex-direction: column; gap: 2px; }
.paper-strip b { font-size: 1.5rem; font-weight: 600; line-height: 1.1; color: #1e3a4a;
  font-variant-numeric: tabular-nums; }
.paper-strip span { font-size: 0.7rem; letter-spacing: 0.05em; color: #5a7688; }
.paper-strip .hi b { color: #0d7c58; }

.paper-table { width: 100%; border-collapse: collapse; table-layout: fixed; margin: 12px 0 4px;
  font-size: 0.88rem; }
.paper-table th { text-align: left; font-size: 0.72rem; letter-spacing: 0.06em;
  text-transform: uppercase; color: #5a7688; font-weight: 600; padding: 0 0.7rem 0.4rem 0; }
.paper-table td { padding: 0.5rem 0.7rem 0.5rem 0; border-top: 1px solid rgba(27,55,70,0.1);
  vertical-align: top; }
.paper-table td.done { color: #0d7c58; font-weight: 600; }
.paper-table.wide td:first-child { width: 42px; color: #5a7688; font-weight: 600; }

.flow { list-style: none; counter-reset: fl; margin: 4px 0 0; padding: 0; }
.flow li { counter-increment: fl; position: relative; padding: 0 0 15px 34px;
  border-left: 1px solid rgba(27,55,70,0.13); margin-left: 11px; }
.flow li:last-child { border-left-color: transparent; padding-bottom: 2px; }
.flow li::before { content: counter(fl); position: absolute; left: -11px; top: -1px;
  width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center;
  font-size: 11px; font-weight: 600; color: #fff; background: #315a70; }
.flow b { display: block; font-size: 0.95rem; }
.flow span { display: block; margin-top: 2px; font-size: 0.86rem; color: #4c6a7a; }

.steps-num { padding-left: 1.15rem; }
.steps-num li { margin: 0.5rem 0; line-height: 1.7; }

@media (max-width: 640px) {
  .paper-strip b { font-size: 1.2rem; }
  .paper-table { font-size: 0.8rem; }
  .paper-table.wide td:first-child { width: 32px; }
}

/* 顶部那段「哪部分固定、哪部分会动」的声明。
 * 🔴 立这段的理由：龙哥 2026-09-20「白皮书是不能改的」。
 *    第一版我把「已回购 1 次 / 持有 1.09% / 四个工厂地址 / 1% 手续费」全写死进去了 ——
 *    这些几小时就会变，而同一份文件第 6 章还写着要改狙击窗口和发币费，自己打自己脸。
 *    解法是承诺固定、数字现读，所以必须在最上面把这个约定讲清楚。 */
.paper-pact { border: 1px solid rgba(27,55,70,0.16); border-left: 3px solid #315a70;
  border-radius: 10px; padding: 14px 16px; margin: 0 0 20px; background: #fff; }
.paper-pact p { margin: 0; font-size: 0.9rem; line-height: 1.7; }
.paper-pact-v { margin-top: 8px !important; font-size: 0.75rem !important; color: #5a7688; }

.paper-status { display: grid; grid-template-columns: minmax(150px, 34%) 1fr; gap: 10px 18px;
  margin: 4px 0 0; font-size: 0.9rem; }
.paper-status dt { font-weight: 600; color: #1e3a4a; }
.paper-status dd { margin: 0; color: #4c6a7a; line-height: 1.65; }
@media (max-width: 560px) {
  .paper-status { grid-template-columns: 1fr; gap: 2px 0; }
  .paper-status dd { margin-bottom: 10px; }
}

/* ── 市值阶梯的实时进度（第 7 章）───────────────────────────────────
   配色沿用这一页已有的那几支：#1e3a4a 主色 / #4c6a7a 正文 / #0d7c58 达成 /
   #f3f8fa 底。不引入新色，不加阴影堆叠 —— 这一页是白皮书不是落地页。 */
.ladder-now { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 4px;
  font-size: 0.9rem; color: #4c6a7a; padding: 11px 13px; border-radius: 8px;
  background: #f3f8fa; border: 1px solid rgba(27,55,70,0.08); margin: 14px 0 18px; }
.ladder-now b { color: #1e3a4a; font-weight: 600; font-variant-numeric: tabular-nums; }
.ladder-now a { color: #315a70; }
.ladder-dim { color: #5a7688; }

.ladder-list { display: grid; gap: 14px; }
.ladder-row { border-top: 1px solid rgba(27,55,70,0.1); padding-top: 12px; }
.ladder-head { display: flex; flex-wrap: wrap; align-items: baseline;
  justify-content: space-between; gap: 2px 14px; }
.ladder-head b { font-size: 1.15rem; font-weight: 600; color: #1e3a4a;
  font-variant-numeric: tabular-nums; }
.ladder-cond { font-size: 0.74rem; letter-spacing: 0.02em; color: #5a7688; }

/* 进度条：最小宽度 0.6% 由 JS 给，保证"几乎为零"也看得见一丝 ——
   显示成完全空的，读者会以为是没加载出来。 */
.ladder-bar { height: 5px; border-radius: 999px; background: rgba(27,55,70,0.09);
  margin: 9px 0 6px; overflow: hidden; }
.ladder-bar i { display: block; height: 100%; border-radius: 999px;
  background: linear-gradient(90deg, #315a70, #1e3a4a); }
.ladder-foot { font-size: 0.78rem; color: #5a7688; font-variant-numeric: tabular-nums; }

.ladder-row.is-done .ladder-head b { color: #0d7c58; }
.ladder-row.is-done .ladder-bar i { background: #0d7c58; }
.ladder-row.is-done .ladder-foot { color: #0d7c58; }

@media (max-width: 560px) {
  .ladder-head { flex-direction: column; }
  .ladder-head b { font-size: 1.05rem; }
}

/* 旅程轨：对数刻度，四个档位打点 + 「你在这儿」。
   🔴 左右各留 34px 内边距：最右那个档位在 100% 处，标签居中对齐会被容器裁掉一半。 */
.ladder-rail { margin: 4px 0 22px; padding: 0 34px; }
.ladder-rail-line { position: relative; height: 2px; border-radius: 2px;
  background: linear-gradient(90deg, rgba(27,55,70,0.12), rgba(27,55,70,0.32));
  margin: 34px 0 46px; }
.ladder-tick { position: absolute; top: -4px; width: 2px; height: 10px;
  background: #97b0be; transform: translateX(-50%); border-radius: 2px; }
.ladder-tick-label { position: absolute; top: 13px; transform: translateX(-50%);
  font-size: 0.7rem; letter-spacing: 0.02em; color: #5a7688; white-space: nowrap;
  font-variant-numeric: tabular-nums; }
.ladder-me { position: absolute; top: -5px; width: 12px; height: 12px; border-radius: 50%;
  background: #0d7c58; border: 2px solid #fff; transform: translateX(-50%);
  box-shadow: 0 0 0 1px rgba(13,124,88,0.35); }
.ladder-me-label { position: absolute; bottom: 16px; transform: translateX(-50%);
  font-size: 0.72rem; font-weight: 600; color: #0d7c58; white-space: nowrap;
  font-variant-numeric: tabular-nums; }
.ladder-tick-label.is-low { top: 28px; }
.ladder-tick-label.is-low::before { content: ''; position: absolute; left: 50%; top: -14px;
  width: 1px; height: 11px; background: rgba(27,55,70,0.18); }
.ladder-scale { font-size: 0.7rem; color: #8aa2b0; text-align: center; }
.ladder-mult { color: #1e3a4a; font-weight: 600; font-variant-numeric: tabular-nums; }

@media (max-width: 560px) {
  .ladder-rail { padding: 0 26px; }
  .ladder-tick-label, .ladder-me-label { font-size: 0.64rem; }
}
