/* ══════════════════════════════════════════════════════════════════════════
   官网加载遮罩 · veil.css（2026-11-07）
   ──────────────────────────────────────────────────────────────────────────
   设计说明
   · 纸白底（#fcfcfa）+ 两枚 logo 组合 + 衬线标题 + 一条 1px 细线生长。
   · 只有一条强调色（品牌绿 #43a74d）；不用渐变背景、不用发光、不用 spinner 圆圈。
   · 与站点现有气质一致：衬线标题、字距拉开的小字、极细的分隔线。
   使用
   · 建议把本文件的样式直接内联进 <head>（首屏要在 CSS 到达前就遮住白屏），
     或在 Base 布局里以 <link> 引入；两者择一，不要都引。
   · 依赖结构见 veil.fragment.html，脚本见 veil.js；类名固定，勿改。
   ══════════════════════════════════════════════════════════════════════════ */

#veil {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: grid;
  place-items: center;
  padding: 24px;
  background: #fcfcfa;
  /* 退出：淡出 + 消失，时长 0.34s，落在 0.2–0.3s 的舒适区间上沿 */
  transition: opacity .34s ease, visibility .34s;
  --p: 0%;
}

#veil.is-done {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

/* 加载中锁滚动，避免用户在遮罩后面误拖动页面 */
html.is-loading,
html.is-loading body {
  overflow: hidden;
}

#veil .veil__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  /* 整体轻微上移：视觉重心比几何中心高一点更好看 */
  margin-top: -2.5vh;
}

#veil .veil__lockup {
  display: block;
  width: auto;
  height: 66px;
  user-select: none;
  -webkit-user-drag: none;
}

#veil .veil__title {
  margin: 34px 0 0;
  font-family: "Noto Serif SC", "Source Han Serif SC", "Songti SC", SimSun, ui-serif, serif;
  font-weight: 500;
  font-size: 25px;
  line-height: 1.3;
  letter-spacing: .16em;
  padding-left: .16em;          /* 补偿末字后的字距，保持视觉居中 */
  color: #1f232c;
}

#veil .veil__sub {
  margin: 10px 0 0;
  font-size: 10px;
  letter-spacing: .5em;
  padding-left: .5em;
  color: #72726a;               /* 4.7:1，10px 小字也过 WCAG AA */
}

#veil .veil__track {
  position: relative;
  width: 300px;
  max-width: 72vw;
  height: 1px;
  margin-top: 46px;
  background: #e8e8e1;
}

#veil .veil__bar {
  position: absolute;
  inset: 0 auto 0 0;
  width: var(--p);
  background: linear-gradient(90deg, #cfe6cf, #3f9e49);
}

#veil .veil__dot {
  position: absolute;
  top: -2.5px;
  left: var(--p);
  width: 6px;
  height: 6px;
  margin-left: -3px;
  border-radius: 50%;
  background: #3f9e49;   /* 3.3:1，满足非文本 3:1 */
}

#veil .veil__pct {
  margin-top: 17px;
  font-family: "DIN Alternate", "Helvetica Neue", system-ui, sans-serif;
  font-size: 12px;
  letter-spacing: .26em;
  padding-left: .26em;
  color: #72726a;
  font-variant-numeric: tabular-nums;
}

/* 手机：整体缩一档，字距收紧，避免标题换行 */
@media (max-width: 520px) {
  #veil .veil__lockup { height: 52px; }

  #veil .veil__title {
    margin-top: 26px;
    font-size: 18px;
    letter-spacing: .1em;
    padding-left: .1em;
  }

  #veil .veil__sub {
    font-size: 9px;
    letter-spacing: .38em;
    padding-left: .38em;
  }

  #veil .veil__track {
    width: 216px;
    margin-top: 36px;
  }
}

/* 尊重系统的「减少动效」：不做淡出过渡，进度直接跳 */
@media (prefers-reduced-motion: reduce) {
  #veil { transition: none; }
}

/* 打印时不遮 */
@media print {
  #veil { display: none; }
}
