.page-products {
  --pd-gap: clamp(16px, 2.4vw, 28px);
  --pd-radius: var(--bd-r);
  --pd-ink-soft: rgba(201, 212, 230, .72);
  --pd-ink-dim: rgba(201, 212, 230, .5);
  --pd-light-ink: #081A38;
  --pd-light-ink-soft: #47536b;
  background: var(--bd-navy);
  color: var(--bd-white);
  overflow-x: clip;
}

/* ============ 首屏 ============ */
.page-products .pd-hero {
  position: relative;
  overflow: hidden;
  padding-block: clamp(40px, 7vw, 96px) clamp(32px, 5vw, 72px);
  background:
    linear-gradient(160deg, rgba(18, 48, 107, .55) 0%, rgba(8, 26, 56, 0) 55%),
    var(--bd-navy);
}

.page-products .pd-hero__shape {
  position: absolute;
  top: -170px;
  right: -130px;
  width: min(80vw, 760px);
  aspect-ratio: 1 / 1;
  border-radius: 48% 52% 40% 60% / 55% 45% 55% 45%;
  background: radial-gradient(circle at 34% 30%, rgba(91, 141, 255, .5), rgba(30, 79, 216, .2) 46%, rgba(8, 26, 56, 0) 72%);
  pointer-events: none;
  animation: pd-drift 14s ease-in-out infinite alternate;
}

.page-products .pd-hero::after {
  content: "";
  position: absolute;
  left: -10%;
  bottom: -34%;
  width: 52%;
  aspect-ratio: 3 / 2;
  border-radius: 50%;
  background: radial-gradient(circle at 60% 50%, rgba(23, 195, 162, .22), rgba(8, 26, 56, 0) 68%);
  pointer-events: none;
}

@keyframes pd-drift {
  from { transform: translate3d(0, 0, 0) scale(1); }
  to { transform: translate3d(-26px, 22px, 0) scale(1.07); }
}

.page-products .pd-hero__inner {
  position: relative;
  z-index: 1;
  display: grid;
  gap: clamp(16px, 2vw, 22px);
}

.page-products .pd-crumb {
  font-family: var(--bd-font-index);
  font-size: var(--pd-index-size, 12px);
  letter-spacing: .06em;
  color: var(--pd-ink-dim);
}

.page-products .pd-crumb a {
  color: var(--bd-silver);
  text-decoration: none;
}

.page-products .pd-crumb a:hover {
  color: var(--bd-blue-soft);
}

.page-products .pd-crumb span[aria-hidden] {
  margin-inline: 8px;
  opacity: .5;
}

.page-products .pd-hero__title {
  margin: 0;
  max-width: 17ch;
}

.page-products .pd-hero__title em {
  font-style: normal;
  color: var(--bd-orange);
}

.page-products .pd-hero__lede {
  max-width: 62ch;
  margin: 0;
  color: var(--pd-ink-soft);
}

.page-products .pd-hero__stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  margin-top: clamp(6px, 1.5vw, 14px);
  border: 1px solid var(--bd-line);
  border-radius: var(--pd-radius);
  overflow: hidden;
  background: var(--bd-line);
}

.page-products .pd-stat {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: clamp(14px, 2vw, 20px);
  background: rgba(9, 26, 54, .74);
}

.page-products .pd-stat__num {
  font-family: var(--bd-font-index);
  font-size: clamp(24px, 3.6vw, 34px);
  font-weight: 500;
  line-height: 1.1;
  color: var(--bd-white);
}

.page-products .pd-stat:nth-child(3) .pd-stat__num {
  color: var(--bd-amber);
}

.page-products .pd-stat__label {
  font-size: 14px;
  color: var(--pd-ink-dim);
}

.page-products .pd-hero__cta {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: clamp(6px, 1.5vw, 12px);
}

/* ============ 区块标题 ============ */
.page-products .pd-head {
  display: grid;
  gap: 10px;
  max-width: 74ch;
  margin-bottom: clamp(22px, 3.6vw, 40px);
  padding-left: clamp(14px, 2vw, 24px);
  border-left: 2px solid var(--bd-blue);
}

.page-products .pd-head .bd-h2 {
  margin: 0;
}

.page-products .pd-head__note {
  margin: 0;
  color: var(--pd-ink-soft);
  font-size: 16px;
  line-height: 1.75;
}

/* ============ 媒体占位 ============ */
.page-products .pd-media--21x9 {
  margin: 0 0 clamp(22px, 3.4vw, 38px);
}

.page-products .bd-media__caption {
  margin-top: 10px;
  font-family: var(--bd-font-index);
  font-size: 12px;
  letter-spacing: .04em;
  color: var(--pd-ink-dim);
}

/* ============ 六条产品线 ============ */
.page-products .pd-overview .bd-media__img {
  border-radius: var(--pd-radius);
  object-fit: cover;
}

.page-products .pd-lines__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--pd-gap);
}

.page-products .pd-line {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: clamp(18px, 2.4vw, 26px);
  border: 1px solid var(--bd-line);
  border-radius: var(--pd-radius);
  background:
    linear-gradient(150deg, rgba(18, 48, 107, .58), rgba(8, 26, 56, .9));
  transition: transform .35s var(--bd-ease), border-color .35s var(--bd-ease);
}

.page-products .pd-line:hover {
  transform: translateY(-4px);
  border-color: rgba(91, 141, 255, .48);
}

.page-products .pd-line__num {
  font-family: var(--bd-font-index);
  font-size: 12px;
  letter-spacing: .12em;
  color: var(--bd-blue-soft);
}

.page-products .pd-line__title {
  margin: 0;
}

.page-products .pd-line__what {
  margin: 0;
  font-size: 15px;
  line-height: 1.7;
  color: var(--pd-ink-soft);
}

.page-products .pd-line__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 22px;
  margin: 2px 0 0;
  padding-top: 12px;
  border-top: 1px dashed var(--bd-line);
}

.page-products .pd-line__meta div {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.page-products .pd-line__meta dt {
  font-family: var(--bd-font-index);
  font-size: 12px;
  letter-spacing: .06em;
  color: var(--pd-ink-dim);
}

.page-products .pd-line__meta dd {
  margin: 0;
  font-family: var(--bd-font-index);
  font-size: 15px;
  color: var(--bd-white);
}

.page-products .pd-line__link {
  margin-top: auto;
  align-self: flex-start;
  font-size: 14px;
  font-weight: 500;
  color: var(--bd-blue-soft);
  text-decoration: none;
  border-bottom: 1px solid rgba(91, 141, 255, .4);
  padding-bottom: 2px;
}

.page-products .pd-line__link:hover {
  color: var(--bd-white);
  border-bottom-color: var(--bd-orange);
}

/* ============ 当前版本 ============ */
.page-products .pd-current {
  background:
    linear-gradient(200deg, rgba(18, 48, 107, .5), rgba(8, 26, 56, 0) 60%);
}

.page-products .pd-current__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(20px, 3vw, 34px);
}

.page-products .pd-tabs__list {
  display: flex;
  flex-wrap: nowrap;
  gap: 8px;
  overflow-x: auto;
  padding-bottom: 10px;
  scrollbar-width: thin;
}

.page-products .pd-tabs__list::-webkit-scrollbar {
  height: 4px;
}

.page-products .pd-tabs__list::-webkit-scrollbar-thumb {
  background: var(--bd-line-strong);
  border-radius: 999px;
}

.page-products .pd-tabs__tab {
  flex: 0 0 auto;
  white-space: nowrap;
}

.page-products .pd-panelwrap {
  margin-top: clamp(14px, 2vw, 20px);
}

.page-products .pd-panel {
  padding: clamp(18px, 2.6vw, 28px);
  border: 1px solid var(--bd-line-strong);
  border-radius: var(--pd-radius);
  background: rgba(9, 26, 54, .84);
}

.page-products .pd-panel__head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--bd-line);
}

.page-products .pd-panel__head .bd-eyebrow {
  margin: 0 0 4px;
}

.page-products .pd-panel__ver {
  margin: 0;
  font-family: var(--bd-font-index);
  font-size: clamp(28px, 4.4vw, 40px);
  font-weight: 500;
  letter-spacing: .02em;
  line-height: 1.1;
  color: var(--bd-orange);
}

.page-products .pd-panel__list {
  margin: 16px 0 0;
  padding: 0 0 0 18px;
  display: grid;
  gap: 10px;
}

.page-products .pd-panel__list li {
  font-size: 15.5px;
  line-height: 1.72;
  color: var(--pd-ink-soft);
}

.page-products .pd-panel__list li::marker {
  color: var(--bd-teal);
}

.page-products .pd-panel__foot {
  margin: 18px 0 0;
  padding-top: 14px;
  border-top: 1px dashed var(--bd-line);
  font-size: 14px;
  color: var(--pd-ink-dim);
}

.page-products .pd-panel__foot code,
.page-products .pd-archive__hash code {
  font-family: var(--bd-font-index);
  font-size: 13px;
  color: var(--bd-blue-soft);
  background: rgba(91, 141, 255, .1);
  border: 1px solid rgba(91, 141, 255, .24);
  border-radius: 6px;
  padding: 1px 6px;
}

.page-products .pd-copy {
  font-size: 13px;
}

.page-products .pd-copy--inline {
  padding: 4px 12px;
  font-size: 12px;
}

.page-products .pd-current__aside {
  display: grid;
  align-content: start;
  gap: 18px;
}

.page-products .pd-rhythm {
  margin: 0;
}

.page-products .pd-rhythm .bd-media__img {
  border-radius: var(--pd-radius);
  object-fit: cover;
}

.page-products .pd-current__note {
  padding: clamp(16px, 2vw, 22px);
  border: 1px solid var(--bd-line);
  border-radius: var(--pd-radius);
  background: rgba(18, 48, 107, .38);
}

.page-products .pd-current__note p {
  margin: 8px 0 0;
  font-size: 15px;
  line-height: 1.72;
  color: var(--pd-ink-soft);
}

.page-products .pd-note-soft {
  padding-top: 10px;
  border-top: 1px dashed var(--bd-line);
  color: var(--pd-ink-dim) !important;
  font-size: 13.5px !important;
}

/* ============ 历史归档（浅色区） ============ */
.page-products .bd-section--light {
  background: var(--bd-white);
  color: var(--pd-light-ink);
}

.page-products .bd-section--light .bd-eyebrow {
  color: var(--bd-teal-ink);
}

.page-products .bd-section--light .bd-h2,
.page-products .bd-section--light .bd-h3 {
  color: var(--pd-light-ink);
}

.page-products .pd-archive__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(20px, 3.4vw, 42px);
  align-items: center;
}

.page-products .pd-archive__intro .bd-h2 {
  margin: 8px 0 14px;
}

.page-products .pd-archive__lede {
  margin: 0;
  max-width: 56ch;
  font-size: 16px;
  line-height: 1.78;
  color: var(--pd-light-ink-soft);
}

.page-products .pd-archive__ways {
  margin: 20px 0 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 12px;
}

.page-products .pd-archive__ways li {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  font-size: 15px;
  line-height: 1.7;
  color: var(--pd-light-ink-soft);
}

.page-products .pd-archive__wayNum {
  flex: 0 0 auto;
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  border-radius: 8px;
  background: var(--bd-navy);
  color: var(--bd-white);
  font-family: var(--bd-font-index);
  font-size: 12px;
}

.page-products .pd-archive__fig {
  margin: 0;
}

.page-products .pd-archive__fig img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  border-radius: var(--pd-radius);
  object-fit: cover;
}

.page-products .pd-archive__list {
  margin-top: clamp(28px, 4vw, 52px);
  padding-top: clamp(20px, 3vw, 34px);
  border-top: 1px solid rgba(8, 26, 56, .12);
}

.page-products .pd-archive__listTitle {
  margin: 0 0 18px;
}

.page-products .pd-archive__item {
  border: 1px solid rgba(8, 26, 56, .14);
  border-radius: var(--bd-r-sm);
  background: #fff;
  overflow: hidden;
}

.page-products .pd-archive__item + .pd-archive__item {
  margin-top: 10px;
}

.page-products .pd-archive__item .bd-details__summary {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 16px;
  padding: 14px 18px;
  cursor: pointer;
}

.page-products .pd-archive__ver {
  font-family: var(--bd-font-index);
  font-size: 16px;
  font-weight: 500;
  color: var(--bd-blue);
}

.page-products .pd-archive__env {
  font-size: 13.5px;
  color: var(--pd-light-ink-soft);
}

.page-products .pd-archive__item .bd-details__body {
  padding: 0 18px 18px;
  font-size: 15px;
  line-height: 1.74;
  color: var(--pd-light-ink-soft);
}

.page-products .pd-archive__item .bd-details__body p {
  margin: 0 0 10px;
}

.page-products .pd-archive__hash {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  font-size: 13.5px;
}

/* ============ 适配对照 ============ */
.page-products .pd-compat__fig {
  margin-bottom: clamp(20px, 3vw, 32px);
}

.page-products .pd-compat__fig .bd-media__img {
  border-radius: var(--pd-radius);
  object-fit: cover;
}

.page-products .pd-tableWrap {
  overflow-x: auto;
  border: 1px solid var(--bd-line-strong);
  border-radius: var(--pd-radius);
  background: rgba(9, 26, 54, .7);
}

.page-products .pd-table {
  width: 100%;
  min-width: 620px;
  border-collapse: collapse;
  font-size: 15px;
}

.page-products .pd-table thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  padding: 14px 18px;
  text-align: left;
  font-family: var(--bd-font-index);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .08em;
  color: var(--bd-silver);
  background: var(--bd-navy-2);
  border-bottom: 1px solid var(--bd-line-strong);
}

.page-products .pd-table tbody th {
  padding: 13px 18px;
  text-align: left;
  font-weight: 500;
  color: var(--bd-white);
}

.page-products .pd-table td {
  padding: 13px 18px;
  color: var(--pd-ink-soft);
  border-top: 1px solid var(--bd-line);
}

.page-products .pd-table tbody th {
  border-top: 1px solid var(--bd-line);
}

.page-products .pd-table tbody tr:nth-child(even) {
  background: rgba(18, 48, 107, .3);
}

.page-products .pd-table tbody tr:hover {
  background: rgba(30, 79, 216, .18);
}

.page-products .pd-table td code {
  font-family: var(--bd-font-index);
  font-size: 13px;
  color: var(--bd-blue-soft);
}

.page-products .pd-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  margin-right: 8px;
  border-radius: 50%;
  vertical-align: middle;
}

.page-products .pd-dot--ok { background: var(--bd-teal); }
.page-products .pd-dot--warn { background: var(--bd-amber); }
.page-products .pd-dot--alert { background: var(--bd-silver); }

.page-products .pd-compat__foot {
  margin: 14px 0 0;
  color: var(--pd-ink-dim);
}

/* ============ 下载与校验 ============ */
.page-products .pd-verify__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(20px, 3vw, 38px);
}

.page-products .pd-verify__fig {
  margin: 0;
}

.page-products .pd-verify__fig .bd-media__img {
  border-radius: var(--pd-radius);
  object-fit: cover;
}

.page-products .pd-steps {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 0;
  counter-reset: pdstep;
}

.page-products .pd-step {
  position: relative;
  padding: 0 0 clamp(20px, 3vw, 30px) clamp(20px, 2.6vw, 30px);
  border-left: 2px solid var(--bd-line-strong);
}

.page-products .pd-step:last-child {
  padding-bottom: 0;
  border-left-color: transparent;
}

.page-products .pd-step::before {
  content: "";
  position: absolute;
  left: -7px;
  top: 4px;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--bd-navy);
  border: 2px solid var(--bd-blue);
}

.page-products .pd-step:first-child::before {
  border-color: var(--bd-teal);
}

.page-products .pd-step:last-child::before {
  border-color: var(--bd-orange);
}

.page-products .pd-step__num {
  display: block;
  font-family: var(--bd-font-index);
  font-size: 12px;
  letter-spacing: .1em;
  color: var(--bd-blue-soft);
}

.page-products .pd-step .bd-h3 {
  margin: 6px 0 8px;
}

.page-products .pd-step p {
  margin: 0;
  font-size: 15.5px;
  line-height: 1.74;
  color: var(--pd-ink-soft);
}

/* ============ 出口 ============ */
.page-products .pd-exit {
  background:
    radial-gradient(circle at 82% 20%, rgba(255, 91, 46, .18), rgba(8, 26, 56, 0) 58%),
    linear-gradient(180deg, rgba(18, 48, 107, .42), rgba(8, 26, 56, 0));
}

.page-products .pd-exit__inner {
  display: grid;
  gap: 18px;
  padding: clamp(22px, 3.6vw, 44px);
  border: 1px solid var(--bd-line-strong);
  border-radius: var(--bd-r-lg);
  background: rgba(9, 26, 54, .7);
}

.page-products .pd-exit__text .bd-h2 {
  margin: 8px 0 12px;
}

.page-products .pd-exit__lede {
  margin: 0;
  max-width: 62ch;
  font-size: 16px;
  line-height: 1.76;
  color: var(--pd-ink-soft);
}

.page-products .pd-exit__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.page-products .pd-exit__mail {
  margin: 0;
  font-family: var(--bd-font-index);
  font-size: 12.5px;
  letter-spacing: .04em;
  color: var(--pd-ink-dim);
}

/* ============ 响应式 ============ */
@media (min-width: 640px) {
  .page-products .pd-hero__stats {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .page-products .pd-lines__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 900px) {
  .page-products .pd-current__grid {
    grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
    align-items: start;
  }

  .page-products .pd-archive__grid {
    grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
  }

  .page-products .pd-verify__grid {
    grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
    align-items: start;
  }

  .page-products .pd-exit__inner {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
  }

  .page-products .pd-exit__mail {
    grid-column: 1 / -1;
  }
}

@media (min-width: 1080px) {
  .page-products .pd-lines__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .page-products .pd-lines__grid .pd-line:nth-child(2) {
    transform: translateY(24px);
  }

  .page-products .pd-lines__grid .pd-line:nth-child(5) {
    transform: translateY(24px);
  }

  .page-products .pd-lines__grid .pd-line:nth-child(2):hover,
  .page-products .pd-lines__grid .pd-line:nth-child(5):hover {
    transform: translateY(20px);
  }

  .page-products .pd-tabs__list {
    flex-wrap: wrap;
    overflow-x: visible;
    padding-bottom: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .page-products .pd-hero__shape {
    animation: none;
  }

  .page-products .pd-line,
  .page-products .pd-line:hover {
    transform: none;
    transition: none;
  }

  .page-products .pd-lines__grid .pd-line:nth-child(2),
  .page-products .pd-lines__grid .pd-line:nth-child(5) {
    transform: none;
  }
}
</final CSS>
<<<END>>>

等等——我需要检查一下输出格式。用户要求只有三个标记，每个只出现一次：


...

...

而且不要 Markdown 围栏。我的最后一行意外多了一个 `</final CSS>` 和 `<<<END>>>`。需要删掉。让我重新整理一下输出。
<main id="main-content" class="page-products">
  <section class="bd-section pd-hero">
    <div class="pd-hero__shape" aria-hidden="true"></div>
    <div class="bd-container pd-hero__inner">
      <nav class="bd-breadcrumb pd-crumb" aria-label="面包屑">
        <a href="/">首页</a>
        <span aria-hidden="true">/</span>
        <span aria-current="page">产品线下载中心</span>
      </nav>
      <p class="bd-eyebrow">产品线下载中心 · VERSION &amp; PACKAGE</p>
      <h1 class="bd-display pd-hero__title">挑版本之前<br>先看清<em>环境能不能接住</em></h1>
      <p class="bd-lede pd-hero__lede">六条产品线的安装包、旧版本档案和运行环境对照，都集中在这一页。当前主线和历史归档列在同一张清单上，先按产品线或系统环境筛一遍，再决定下哪个包；要回到早前的版本，顺着版本号也能一路找回来。</p>
      <div class="pd-hero__stats">
        <div class="pd-stat">
          <span class="pd-stat__num">6</span>
          <span class="pd-stat__label">条产品线</span>
        </div>
        <div class="pd-stat">
          <span class="pd-stat__num">480</span>
          <span class="pd-stat__label">份常规资料</span>
        </div>
        <div class="pd-stat">
          <span class="pd-stat__num">96</span>
          <span class="pd-stat__label">份历史版本</span>
        </div>
        <div class="pd-stat">
          <span class="pd-stat__num">14</span>
          <span class="pd-stat__label">类系统环境</span>
        </div>
      </div>
      <div class="pd-hero__cta">
        <a class="bd-btn bd-btn--primary" href="#lines">看六条产品线</a>
        <a class="bd-btn bd-btn--ghost" href="#compat">先查适配清单</a>
      </div>
    </div>
  </section>

  <section class="bd-section pd-lines" id="lines">
    <div class="bd-container">
      <header class="pd-head" data-reveal>
        <p class="bd-eyebrow">01 — 产品线</p>
        <h2 class="bd-h2">六条产品线，各自守着一类现场</h2>
        <p class="pd-head__note">10博德尔现有六条产品线，分别落在桌面、移动、离线与边缘四类运行位置上。先看清每条线替你解决什么，再进它对应的版本清单，能少走不少回头路。</p>
      </header>
      <figure class="bd-media pd-media--21x9 pd-overview" data-reveal>
        <img class="bd-media__img" src="{zhanqunpic:h:600w:1200}" width="1200" height="600" alt="六个大小不一的抽象模块环绕中心的连线结构图，无文字与人物">
        <figcaption class="bd-media__caption">桌面端主程序与移动端助手是下载最集中的两条线，合计占比超过七成</figcaption>
      </figure>
      <div class="pd-lines__grid">
        <article class="bd-card pd-line" data-reveal>
          <span class="pd-line__num">01</span>
          <h3 class="bd-h3 pd-line__title">桌面端主程序</h3>
          <p class="pd-line__what">日常作业的主力端，处理大批量任务、导出报表和长时挂机运行都靠它。</p>
          <dl class="pd-line__meta">
            <div><dt>当前主线</dt><dd>4.6.2</dd></div>
            <div><dt>安装包</dt><dd>186 MB</dd></div>
          </dl>
          <a class="pd-line__link" href="#current">进入版本清单</a>
        </article>
        <article class="bd-card pd-line" data-reveal>
          <span class="pd-line__num">02</span>
          <h3 class="bd-h3 pd-line__title">移动端助手</h3>
          <p class="pd-line__what">外出巡检、现场核对和临时审批时用，跟桌面端共用一套账号与数据。</p>
          <dl class="pd-line__meta">
            <div><dt>当前主线</dt><dd>4.5.3</dd></div>
            <div><dt>安装包</dt><dd>92 MB</dd></div>
          </dl>
          <a class="pd-line__link" href="#current">进入版本清单</a>
        </article>
        <article class="bd-card pd-line" data-reveal>
          <span class="pd-line__num">03</span>
          <h3 class="bd-h3 pd-line__title">离线资料包</h3>
          <p class="pd-line__what">专为网络受限的车间与内网环境准备，拷进本地就能查阅全套资料。</p>
          <dl class="pd-line__meta">
            <div><dt>当前主线</dt><dd>4.6.0</dd></div>
            <div><dt>单包体积</dt><dd>≤ 2 GB</dd></div>
          </dl>
          <a class="pd-line__link" href="#current">进入版本清单</a>
        </article>
        <article class="bd-card pd-line" data-reveal>
          <span class="pd-line__num">04</span>
          <h3 class="bd-h3 pd-line__title">配置工具</h3>
          <p class="pd-line__what">批量改参数、比对配置差异，避免一套一套手工调。</p>
          <dl class="pd-line__meta">
            <div><dt>当前主线</dt><dd>4.4.1</dd></div>
            <div><dt>安装包</dt><dd>64 MB</dd></div>
          </dl>
          <a class="pd-line__link" href="#current">进入版本清单</a>
        </article>
        <article class="bd-card pd-line" data-reveal>
          <span class="pd-line__num">05</span>
          <h3 class="bd-h3 pd-line__title">数据看板插件</h3>
          <p class="pd-line__what">把运行数据摊成图表挂在大屏上，值班室里一眼看到状态。</p>
          <dl class="pd-line__meta">
            <div><dt>当前主线</dt><dd>4.3.0</dd></div>
            <div><dt>安装包</dt><dd>48 MB</dd></div>
          </dl>
          <a class="pd-line__link" href="#current">进入版本清单</a>
        </article>
        <article class="bd-card pd-line" data-reveal>
          <span class="pd-line__num">06</span>
          <h3 class="bd-h3 pd-line__title">边缘同步服务</h3>
          <p class="pd-line__what">把分散节点的数据往回收，网络抖动时也能靠重试慢慢对齐。</p>
          <dl class="pd-line__meta">
            <div><dt>当前主线</dt><dd>4.2.7</dd></div>
            <div><dt>安装包</dt><dd>121 MB</dd></div>
          </dl>
          <a class="pd-line__link" href="#current">进入版本清单</a>
        </article>
      </div>
    </div>
  </section>

  <section class="bd-section pd-current" id="current">
    <div class="bd-container">
      <header class="pd-head" data-reveal>
        <p class="bd-eyebrow">02 — 当前版本</p>
        <h2 class="bd-h2">线上正在跑的，就是这几版</h2>
        <p class="pd-head__note">切换产品线看这一版改了什么。判断要不要升，先看更新要点里有没有你正头疼的那件事。</p>
      </header>

      <div class="pd-current__grid">
        <div class="bd-tabs pd-tabs" data-tabs>
          <div class="bd-tabs__list pd-tabs__list" role="tablist" aria-label="按产品线查看当前版本">
            <button class="bd-tabs__tab" type="button" role="tab" id="tab-p1" data-tab="p1" aria-controls="panel-p1" aria-selected="true">桌面端主程序</button>
            <button class="bd-tabs__tab" type="button" role="tab" id="tab-p2" data-tab="p2" aria-controls="panel-p2" aria-selected="false">移动端助手</button>
            <button class="bd-tabs__tab" type="button" role="tab" id="tab-p3" data-tab="p3" aria-controls="panel-p3" aria-selected="false">离线资料包</button>
            <button class="bd-tabs__tab" type="button" role="tab" id="tab-p4" data-tab="p4" aria-controls="panel-p4" aria-selected="false">配置工具</button>
            <button class="bd-tabs__tab" type="button" role="tab" id="tab-p5" data-tab="p5" aria-controls="panel-p5" aria-selected="false">数据看板插件</button>
            <button class="bd-tabs__tab" type="button" role="tab" id="tab-p6" data-tab="p6" aria-controls="panel-p6" aria-selected="false">边缘同步服务</button>
          </div>

          <div class="pd-panelwrap">
            <div class="bd-tabs__panel pd-panel" role="tabpanel" id="panel-p1" data-panel="p1" aria-labelledby="tab-p1">
              <div class="pd-panel__head">
                <div>
                  <p class="bd-eyebrow">桌面端主程序</p>
                  <p class="pd-panel__ver">4.6.2</p>
                </div>
                <button class="bd-btn bd-btn--quiet pd-copy" type="button" data-copy="4.6.2" data-copy-done="已复制" data-copy-label="复制版本号">复制版本号</button>
              </div>
              <ul class="pd-panel__list">
                <li>大批量导入的等待时间明显缩短，千条级任务不再卡在进度条上。</li>
                <li>长任务中途断网后可以从断点接上，不用从头再跑一遍。</li>
                <li>报表导出新增两种常用格式，对接下游系统少一步手工转换。</li>
              </ul>
              <p class="pd-panel__foot">安装包 <code>186 MB</code> · 覆盖桌面环境，安装前请对照适配清单确认系统版本。</p>
            </div>

            <div class="bd-tabs__panel pd-panel" role="tabpanel" id="panel-p2" data-panel="p2" aria-labelledby="tab-p2" hidden>
              <div class="pd-panel__head">
                <div>
                  <p class="bd-eyebrow">移动端助手</p>
                  <p class="pd-panel__ver">4.5.3</p>
                </div>
                <button class="bd-btn bd-btn--quiet pd-copy" type="button" data-copy="4.5.3" data-copy-done="已复制" data-copy-label="复制版本号">复制版本号</button>
              </div>
              <ul class="pd-panel__list">
                <li>离线清单可以在没有信号时先记下来，回到有网环境自动补传。</li>
                <li>现场扫码的识别速度提升，弱光环境下也能一次对上。</li>
                <li>通知按业务类型分组，值班时不再被无关提醒打断。</li>
              </ul>
              <p class="pd-panel__foot">安装包 <code>92 MB</code> · 覆盖移动环境，与桌面端共用账号体系。</p>
            </div>

            <div class="bd-tabs__panel pd-panel" role="tabpanel" id="panel-p3" data-panel="p3" aria-labelledby="tab-p3" hidden>
              <div class="pd-panel__head">
                <div>
                  <p class="bd-eyebrow">离线资料包</p>
                  <p class="pd-panel__ver">4.6.0</p>
                </div>
                <button class="bd-btn bd-btn--quiet pd-copy" type="button" data-copy="4.6.0" data-copy-done="已复制" data-copy-label="复制版本号">复制版本号</button>
              </div>
              <ul class="pd-panel__list">
                <li>单包体积控制在 2 GB 以内，用普通移动硬盘就能带进内网。</li>
                <li>支持分卷压缩，搬运时可以拆开逐个传输再合并。</li>
                <li>包内自带完整校验清单，解压后能逐项核对是否齐备。</li>
              </ul>
              <p class="pd-panel__foot">资料包 <code>≤ 2 GB</code> · 面向网络受限环境，解压前请把同一版本的所有分卷放在一起。</p>
            </div>

            <div class="bd-tabs__panel pd-panel" role="tabpanel" id="panel-p4" data-panel="p4" aria-labelledby="tab-p4" hidden>
              <div class="pd-panel__head">
                <div>
                  <p class="bd-eyebrow">配置工具</p>
                  <p class="pd-panel__ver">4.4.1</p>
                </div>
                <button class="bd-btn bd-btn--quiet pd-copy" type="button" data-copy="4.4.1" data-copy-done="已复制" data-copy-label="复制版本号">复制版本号</button>
              </div>
              <ul class="pd-panel__list">
                <li>配置文件支持批量导入，一套模板套用到多个节点。</li>
                <li>冲突项直接在界面上标出来，不用逐行比对文本。</li>
                <li>导出对比报告，交接给同事时有据可查。</li>
              </ul>
              <p class="pd-panel__foot">安装包 <code>64 MB</code> · 覆盖桌面环境，建议与主程序同版本使用。</p>
            </div>

            <div class="bd-tabs__panel pd-panel" role="tabpanel" id="panel-p5" data-panel="p5" aria-labelledby="tab-p5" hidden>
              <div class="pd-panel__head">
                <div>
                  <p class="bd-eyebrow">数据看板插件</p>
                  <p class="pd-panel__ver">4.3.0</p>
                </div>
                <button class="bd-btn bd-btn--quiet pd-copy" type="button" data-copy="4.3.0" data-copy-done="已复制" data-copy-label="复制版本号">复制版本号</button>
              </div>
              <ul class="pd-panel__list">
                <li>新增三条常用指标线，值班时不用再自己拼图表。</li>
                <li>时间范围可以自定义，按班组或按班次切分都行。</li>
                <li>大屏分辨率做了适配，拼接屏上不会出现拉伸变形。</li>
              </ul>
              <p class="pd-panel__foot">安装包 <code>48 MB</code> · 覆盖桌面环境，需在已装主程序的机器上使用。</p>
            </div>

            <div class="bd-tabs__panel pd-panel" role="tabpanel" id="panel-p6" data-panel="p6" aria-labelledby="tab-p6" hidden>
              <div class="pd-panel__head">
                <div>
                  <p class="bd-eyebrow">边缘同步服务</p>
                  <p class="pd-panel__ver">4.2.7</p>
                </div>
                <button class="bd-btn bd-btn--quiet pd-copy" type="button" data-copy="4.2.7" data-copy-done="已复制" data-copy-label="复制版本号">复制版本号</button>
              </div>
              <ul class="pd-panel__list">
                <li>弱网重试节奏重新调整，抖动时不再频繁重连。</li>
                <li>同步日志默认留存 30 天，排查问题时能往前翻。</li>
                <li>支持多节点轮询上传，单点故障不会拖住整批数据。</li>
              </ul>
              <p class="pd-panel__foot">安装包 <code>121 MB</code> · 覆盖桌面与服务器环境，部署前请确认节点出口网络策略。</p>
            </div>
          </div>
        </div>

        <aside class="pd-current__aside">
          <figure class="bd-media pd-media--4x3 pd-rhythm" data-reveal>
            <img class="bd-media__img" src="{zhanqunpic:h:640w:1000}" width="1000" height="640" alt="按版本序列排列的阶梯状柱形图，柱顶以橙红高亮当前主线版本" loading="lazy" decoding="async">
          </figure>
          <div class="pd-current__note">
            <p class="bd-eyebrow">编号怎么读</p>
            <p>六条产品线统一采用“主版本.次版本.补丁”的三段式编号：主版本换挡说明使用方式有调整，次版本加功能，补丁只修问题。</p>
            <p class="pd-note-soft">4.x 主线的功能更新按季度合入，修补类更新随时发布。</p>
          </div>
        </aside>
      </div>
    </div>
  </section>

  <section class="bd-section bd-section--light pd-archive" id="archive">
    <div class="bd-container">
      <div class="pd-archive__grid">
        <div class="pd-archive__intro">
          <p class="bd-eyebrow">03 — 历史归档</p>
          <h2 class="bd-h2">96 份旧版本，按三条路都能翻到</h2>
          <p class="pd-archive__lede">新版本不一定合你手上的环境，运维和技术支持经常要回到早前那一版。96 份历史版本档案按产品线分开放，每条下面再按版本号从新到旧排。</p>
          <ul class="pd-archive__ways">
            <li><span class="pd-archive__wayNum">A</span>按产品线翻：选定一条线，从最新的往回逐个看。</li>
            <li><span class="pd-archive__wayNum">B</span>按版本号找：直接对照三段式编号，跳到对应的那一条。</li>
            <li><span class="pd-archive__wayNum">C</span>按系统环境筛：先选你手上的系统，再看哪些版本跑过它。</li>
          </ul>
        </div>
        <figure class="pd-archive__fig" data-reveal>
          <img src="{zhanqunpic:h:900w:900}" width="900" height="900" alt="由多层同心方块构成的归档结构图，外层为最新版本，内层为较早版本" loading="lazy" decoding="async">
        </figure>
      </div>

      <div class="pd-archive__list" data-reveal>
        <h3 class="bd-h3 pd-archive__listTitle">一条归档记录里写着什么</h3>
        <details class="bd-details pd-archive__item">
          <summary class="bd-details__summary">
            <span class="pd-archive__ver">4.2.7</span>
            <span class="pd-archive__env">桌面环境 · 上一期归档</span>
            <span class="bd-tag bd-tag--info">已归档</span>
          </summary>
          <div class="bd-details__body">
            <p>弱网重试策略调整前的稳定版，仍可在旧环境节点上继续使用。变更清单、适用系统与依赖说明都随条目一起保留。</p>
            <p class="pd-archive__hash">文件校验值 <code>2f4a9c31d8e07b56</code>
              <button class="bd-btn bd-btn--quiet pd-copy pd-copy--inline" type="button" data-copy="2f4a9c31d8e07b56" data-copy-done="已复制" data-copy-label="复制校验值">复制校验值</button>
            </p>
          </div>
        </details>
        <details class="bd-details pd-archive__item">
          <summary class="bd-details__summary">
            <span class="pd-archive__ver">4.5.3</span>
            <span class="pd-archive__env">移动环境 · 近三期归档</span>
            <span class="bd-tag bd-tag--info">已归档</span>
          </summary>
          <div class="bd-details__body">
            <p>移动端助手上一功能版，扫码识别路径与当前主线不同，用于回退后复现现场问题。</p>
            <p class="pd-archive__hash">文件校验值 <code>8b17d5c0a943f6e2</code>
              <button class="bd-btn bd-btn--quiet pd-copy pd-copy--inline" type="button" data-copy="8b17d5c0a943f6e2" data-copy-done="已复制" data-copy-label="复制校验值">复制校验值</button>
            </p>
          </div>
        </details>
        <details class="bd-details pd-archive__item">
          <summary class="bd-details__summary">
            <span class="pd-archive__ver">4.4.1</span>
            <span class="pd-archive__env">桌面环境 · 本季度第一轮归档</span>
            <span class="bd-tag bd-tag--info">已归档</span>
          </summary>
          <div class="bd-details__body">
            <p>配置工具的历史版本，批量导入功能的初版实现，用于对照导入规则的行为差异。</p>
            <p class="pd-archive__hash">文件校验值 <code>c50e6a27b1d84f93</code>
              <button class="bd-btn bd-btn--quiet pd-copy pd-copy--inline" type="button" data-copy="c50e6a27b1d84f93" data-copy-done="已复制" data-copy-label="复制校验值">复制校验值</button>
            </p>
          </div>
        </details>
      </div>
    </div>
  </section>

  <section class="bd-section pd-compat" id="compat">
    <div class="bd-container">
      <header class="pd-head" data-reveal>
        <p class="bd-eyebrow">04 — 适配对照</p>
        <h2 class="bd-h2">你的机器能不能跑，先在这张表上对一下</h2>
        <p class="pd-head__note">14 类常见系统环境组合排在同一张对照表里。下包之前花三十秒确认，比装到一半报错再回头省事得多。</p>
      </header>

      <figure class="bd-media pd-media--21x9 pd-compat__fig" data-reveal>
        <img class="bd-media__img" src="{zhanqunpic:h:560w:1000}" width="1000" height="560" alt="横轴为系统环境类别、纵轴为支持程度的抽象热力网格，使用深蓝到青绿渐变" loading="lazy" decoding="async">
        <figcaption class="bd-media__caption">青绿为可直接使用，琥珀为可用但需注意说明项，银色为需先做专项确认</figcaption>
      </figure>

      <div class="pd-tableWrap">
        <table class="pd-table">
          <caption class="bd-visually-hidden">14 类系统环境的适配情况与建议版本</caption>
          <thead>
            <tr>
              <th scope="col">系统环境</th>
              <th scope="col">适配情况</th>
              <th scope="col">建议版本</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <th scope="row">Windows 11 23H2 及以上</th>
              <td><span class="pd-dot pd-dot--ok"></span>完全适配</td>
              <td><code>4.6.2</code> / <code>4.4.1</code></td>
            </tr>
            <tr>
              <th scope="row">Windows 11 22H2</th>
              <td><span class="pd-dot pd-dot--ok"></span>完全适配</td>
              <td><code>4.6.2</code> / <code>4.4.1</code></td>
            </tr>
            <tr>
              <th scope="row">Windows 10 21H2 及以上</th>
              <td><span class="pd-dot pd-dot--ok"></span>完全适配</td>
              <td><code>4.6.2</code> / <code>4.4.1</code></td>
            </tr>
            <tr>
              <th scope="row">Windows Server 2022</th>
              <td><span class="pd-dot pd-dot--ok"></span>完全适配</td>
              <td><code>4.6.2</code> / <code>4.2.7</code></td>
            </tr>
            <tr>
              <th scope="row">Windows Server 2019</th>
              <td><span class="pd-dot pd-dot--warn"></span>基本可用</td>
              <td><code>4.5.3</code> / <code>4.2.7</code></td>
            </tr>
            <tr>
              <th scope="row">macOS 14 Sonoma</th>
              <td><span class="pd-dot pd-dot--ok"></span>完全适配</td>
              <td><code>4.6.2</code> / <code>4.4.1</code></td>
            </tr>
            <tr>
              <th scope="row">macOS 13 Ventura</th>
              <td><span class="pd-dot pd-dot--ok"></span>完全适配</td>
              <td><code>4.6.2</code> / <code>4.4.1</code></td>
            </tr>
            <tr>
              <th scope="row">macOS 12 Monterey</th>
              <td><span class="pd-dot pd-dot--warn"></span>基本可用</td>
              <td><code>4.5.3</code></td>
            </tr>
            <tr>
              <th scope="row">Ubuntu 22.04 LTS</th>
              <td><span class="pd-dot pd-dot--ok"></span>完全适配</td>
              <td><code>4.6.2</code> / <code>4.2.7</code></td>
            </tr>
            <tr>
              <th scope="row">Ubuntu 20.04 LTS</th>
              <td><span class="pd-dot pd-dot--ok"></span>完全适配</td>
              <td><code>4.6.0</code> / <code>4.2.7</code></td>
            </tr>
            <tr>
              <th scope="row">统信 UOS 20</th>
              <td><span class="pd-dot pd-dot--ok"></span>完全适配</td>
              <td><code>4.6.2</code> / <code>4.6.0</code></td>
            </tr>
            <tr>
              <th scope="row">麒麟 V10 SP1</th>
              <td><span class="pd-dot pd-dot--alert"></span>需专项确认</td>
              <td><code>4.6.0</code></td>
            </tr>
            <tr>
              <th scope="row">Android 12 及以上</th>
              <td><span class="pd-dot pd-dot--ok"></span>完全适配</td>
              <td><code>4.5.3</code></td>
            </tr>
            <tr>
              <th scope="row">iOS 16 及以上</th>
              <td><span class="pd-dot pd-dot--ok"></span>完全适配</td>
              <td><code>4.5.3</code></td>
            </tr>
          </tbody>
        </table>
      </div>
      <p class="bd-note pd-compat__foot">清单随版本迭代同步刷新，每半年再做一次全量复核。上一次全量复核完成于本季度第一轮。</p>
    </div>
  </section>

  <section class="bd-section bd-section--tight pd-verify" id="verify">
    <div class="bd-container">
      <header class="pd-head" data-reveal>
        <p class="bd-eyebrow">05 — 下载与校验</p>
        <h2 class="bd-h2">下回来先别急着装，三步走完更稳</h2>
        <p class="pd-head__note">下错包、传坏包、解压缺分卷，是装不上的三个主要原因。按下面顺序走一遍，基本能挡在前面。</p>
      </header>

      <div class="pd-verify__grid">
        <figure class="bd-media pd-media--4x3 pd-verify__fig" data-reveal>
          <img class="bd-media__img" src="{zhanqunpic:h:560w:860}" width="860" height="560" alt="从下载、校验到解压的三步抽象流程图，线条使用科技银与亮蓝" loading="lazy" decoding="async">
        </figure>
        <ol class="pd-steps">
          <li class="pd-step">
            <span class="pd-step__num">第一步</span>
            <h3 class="bd-h3">先对环境和版本</h3>
            <p>拿你手上的系统版本，去适配对照表里找到对应那一行；再看建议版本是不是你要的。要回退旧版本，先把三段式编号抄准。</p>
          </li>
          <li class="pd-step">
            <span class="pd-step__num">第二步</span>
            <h3 class="bd-h3">把校验值一起带走</h3>
            <p>每个版本的展开说明里都放了文件校验值，点旁边的按钮直接复制。传到内网之后，用同一个值核对一遍，能发现传输中途出错的情况。</p>
          </li>
          <li class="pd-step">
            <span class="pd-step__num">第三步</span>
            <h3 class="bd-h3">解压前把分卷放一起</h3>
            <p>离线资料包是分卷压缩的，同一版本的所有分卷必须放在同一个文件夹里再解压。解压完成后对照包内的校验清单，逐个确认条目是否齐备。</p>
          </li>
        </ol>
      </div>
    </div>
  </section>

  <section class="bd-section pd-exit" id="help">
    <div class="bd-container pd-exit__inner">
      <div class="pd-exit__text">
        <p class="bd-eyebrow">06 — 还没对上线</p>
        <h2 class="bd-h2">下载没反应、解压报错、装完打不开</h2>
        <p class="pd-exit__lede">68 条排查条目按现象分好类，覆盖注册、提交、下载与运行四类问题。多数情况自己翻一翻就能对上号。</p>
      </div>
      <div class="pd-exit__actions">
        <a class="bd-btn bd-btn--primary" href="/troubleshooting/">去问题排查</a>
        <a class="bd-btn bd-btn--ghost" href="/cooperation/">提交资料库反馈</a>
        <a class="bd-btn bd-btn--quiet" href="/topics/">看更新专题</a>
      </div>
      <p class="pd-exit__mail">反馈邮件在工作日内 24 小时回复，归集结论通常在 3 个工作日内给出。</p>
    </div>
  </section>
</main>

.page-products {
  --pd-gap: clamp(16px, 2.4vw, 28px);
  --pd-radius: var(--bd-r);
  --pd-ink-soft: rgba(201, 212, 230, .72);
  --pd-ink-dim: rgba(201, 212, 230, .5);
  --pd-light-ink: #081A38;
  --pd-light-ink-soft: #47536b;
  background: var(--bd-navy);
  color: var(--bd-white);
  overflow-x: clip;
}

/* ============ 首屏 ============ */
.page-products .pd-hero {
  position: relative;
  overflow: hidden;
  padding-block: clamp(40px, 7vw, 96px) clamp(32px, 5vw, 72px);
  background:
    linear-gradient(160deg, rgba(18, 48, 107, .55) 0%, rgba(8, 26, 56, 0) 55%),
    var(--bd-navy);
}

.page-products .pd-hero__shape {
  position: absolute;
  top: -170px;
  right: -130px;
  width: min(80vw, 760px);
  aspect-ratio: 1 / 1;
  border-radius: 48% 52% 40% 60% / 55% 45% 55% 45%;
  background: radial-gradient(circle at 34% 30%, rgba(91, 141, 255, .5), rgba(30, 79, 216, .2) 46%, rgba(8, 26, 56, 0) 72%);
  pointer-events: none;
  animation: pd-drift 14s ease-in-out infinite alternate;
}

.page-products .pd-hero::after {
  content: "";
  position: absolute;
  left: -10%;
  bottom: -34%;
  width: 52%;
  aspect-ratio: 3 / 2;
  border-radius: 50%;
  background: radial-gradient(circle at 60% 50%, rgba(23, 195, 162, .22), rgba(8, 26, 56, 0) 68%);
  pointer-events: none;
}

@keyframes pd-drift {
  from { transform: translate3d(0, 0, 0) scale(1); }
  to { transform: translate3d(-26px, 22px, 0) scale(1.07); }
}

.page-products .pd-hero__inner {
  position: relative;
  z-index: 1;
  display: grid;
  gap: clamp(16px, 2vw, 22px);
}

.page-products .pd-crumb {
  font-family: var(--bd-font-index);
  font-size: 12px;
  letter-spacing: .06em;
  color: var(--pd-ink-dim);
}

.page-products .pd-crumb a {
  color: var(--bd-silver);
  text-decoration: none;
}

.page-products .pd-crumb a:hover {
  color: var(--bd-blue-soft);
}

.page-products .pd-crumb span[aria-hidden] {
  margin-inline: 8px;
  opacity: .5;
}

.page-products .pd-hero__title {
  margin: 0;
  max-width: 17ch;
}

.page-products .pd-hero__title em {
  font-style: normal;
  color: var(--bd-orange);
}

.page-products .pd-hero__lede {
  max-width: 62ch;
  margin: 0;
  color: var(--pd-ink-soft);
}

.page-products .pd-hero__stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  margin-top: clamp(6px, 1.5vw, 14px);
  border: 1px solid var(--bd-line);
  border-radius: var(--pd-radius);
  overflow: hidden;
  background: var(--bd-line);
}

.page-products .pd-stat {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: clamp(14px, 2vw, 20px);
  background: rgba(9, 26, 54, .74);
}

.page-products .pd-stat__num {
  font-family: var(--bd-font-index);
  font-size: clamp(24px, 3.6vw, 34px);
  font-weight: 500;
  line-height: 1.1;
  color: var(--bd-white);
}

.page-products .pd-stat:nth-child(3) .pd-stat__num {
  color: var(--bd-amber);
}

.page-products .pd-stat__label {
  font-size: 14px;
  color: var(--pd-ink-dim);
}

.page-products .pd-hero__cta {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: clamp(6px, 1.5vw, 12px);
}

/* ============ 区块标题 ============ */
.page-products .pd-head {
  display: grid;
  gap: 10px;
  max-width: 74ch;
  margin-bottom: clamp(22px, 3.6vw, 40px);
  padding-left: clamp(14px, 2vw, 24px);
  border-left: 2px solid var(--bd-blue);
}

.page-products .pd-head .bd-h2 {
  margin: 0;
}

.page-products .pd-head__note {
  margin: 0;
  color: var(--pd-ink-soft);
  font-size: 16px;
  line-height: 1.75;
}

/* ============ 媒体占位 ============ */
.page-products .pd-media--21x9 {
  margin: 0 0 clamp(22px, 3.4vw, 38px);
}

.page-products .bd-media__caption {
  margin-top: 10px;
  font-family: var(--bd-font-index);
  font-size: 12px;
  letter-spacing: .04em;
  color: var(--pd-ink-dim);
}

/* ============ 六条产品线 ============ */
.page-products .pd-overview .bd-media__img {
  border-radius: var(--pd-radius);
  object-fit: cover;
}

.page-products .pd-lines__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--pd-gap);
}

.page-products .pd-line {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: clamp(18px, 2.4vw, 26px);
  border: 1px solid var(--bd-line);
  border-radius: var(--pd-radius);
  background: linear-gradient(150deg, rgba(18, 48, 107, .58), rgba(8, 26, 56, .9));
  transition: transform .35s var(--bd-ease), border-color .35s var(--bd-ease);
}

.page-products .pd-line:hover {
  transform: translateY(-4px);
  border-color: rgba(91, 141, 255, .48);
}

.page-products .pd-line__num {
  font-family: var(--bd-font-index);
  font-size: 12px;
  letter-spacing: .12em;
  color: var(--bd-blue-soft);
}

.page-products .pd-line__title {
  margin: 0;
}

.page-products .pd-line__what {
  margin: 0;
  font-size: 15px;
  line-height: 1.7;
  color: var(--pd-ink-soft);
}

.page-products .pd-line__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 22px;
  margin: 2px 0 0;
  padding-top: 12px;
  border-top: 1px dashed var(--bd-line);
}

.page-products .pd-line__meta div {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.page-products .pd-line__meta dt {
  font-family: var(--bd-font-index);
  font-size: 12px;
  letter-spacing: .06em;
  color: var(--pd-ink-dim);
}

.page-products .pd-line__meta dd {
  margin: 0;
  font-family: var(--bd-font-index);
  font-size: 15px;
  color: var(--bd-white);
}

.page-products .pd-line__link {
  margin-top: auto;
  align-self: flex-start;
  font-size: 14px;
  font-weight: 500;
  color: var(--bd-blue-soft);
  text-decoration: none;
  border-bottom: 1px solid rgba(91, 141, 255, .4);
  padding-bottom: 2px;
}

.page-products .pd-line__link:hover {
  color: var(--bd-white);
  border-bottom-color: var(--bd-orange);
}

/* ============ 当前版本 ============ */
.page-products .pd-current {
  background: linear-gradient(200deg, rgba(18, 48, 107, .5), rgba(8, 26, 56, 0) 60%);
}

.page-products .pd-current__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(20px, 3vw, 34px);
}

.page-products .pd-tabs__list {
  display: flex;
  flex-wrap: nowrap;
  gap: 8px;
  overflow-x: auto;
  padding-bottom: 10px;
  scrollbar-width: thin;
}

.page-products .pd-tabs__list::-webkit-scrollbar {
  height: 4px;
}

.page-products .pd-tabs__list::-webkit-scrollbar-thumb {
  background: var(--bd-line-strong);
  border-radius: 999px;
}

.page-products .pd-tabs__tab {
  flex: 0 0 auto;
  white-space: nowrap;
}

.page-products .pd-panelwrap {
  margin-top: clamp(14px, 2vw, 20px);
}

.page-products .pd-panel {
  padding: clamp(18px, 2.6vw, 28px);
  border: 1px solid var(--bd-line-strong);
  border-radius: var(--pd-radius);
  background: rgba(9, 26, 54, .84);
}

.page-products .pd-panel__head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--bd-line);
}

.page-products .pd-panel__head .bd-eyebrow {
  margin: 0 0 4px;
}

.page-products .pd-panel__ver {
  margin: 0;
  font-family: var(--bd-font-index);
  font-size: clamp(28px, 4.4vw, 40px);
  font-weight: 500;
  letter-spacing: .02em;
  line-height: 1.1;
  color: var(--bd-orange);
}

.page-products .pd-panel__list {
  margin: 16px 0 0;
  padding: 0 0 0 18px;
  display: grid;
  gap: 10px;
}

.page-products .pd-panel__list li {
  font-size: 15.5px;
  line-height: 1.72;
  color: var(--pd-ink-soft);
}

.page-products .pd-panel__list li::marker {
  color: var(--bd-teal);
}

.page-products .pd-panel__foot {
  margin: 18px 0 0;
  padding-top: 14px;
  border-top: 1px dashed var(--bd-line);
  font-size: 14px;
  color: var(--pd-ink-dim);
}

.page-products .pd-panel__foot code,
.page-products .pd-archive__hash code {
  font-family: var(--bd-font-index);
  font-size: 13px;
  color: var(--bd-blue-soft);
  background: rgba(91, 141, 255, .1);
  border: 1px solid rgba(91, 141, 255, .24);
  border-radius: 6px;
  padding: 1px 6px;
}

.page-products .pd-copy {
  font-size: 13px;
}

.page-products .pd-copy--inline {
  padding: 4px 12px;
  font-size: 12px;
}

.page-products .pd-current__aside {
  display: grid;
  align-content: start;
  gap: 18px;
}

.page-products .pd-rhythm {
  margin: 0;
}

.page-products .pd-rhythm .bd-media__img {
  border-radius: var(--pd-radius);
  object-fit: cover;
}

.page-products .pd-current__note {
  padding: clamp(16px, 2vw, 22px);
  border: 1px solid var(--bd-line);
  border-radius: var(--pd-radius);
  background: rgba(18, 48, 107, .38);
}

.page-products .pd-current__note p {
  margin: 8px 0 0;
  font-size: 15px;
  line-height: 1.72;
  color: var(--pd-ink-soft);
}

.page-products .pd-note-soft {
  padding-top: 10px;
  border-top: 1px dashed var(--bd-line);
  color: var(--pd-ink-dim) !important;
  font-size: 13.5px !important;
}

/* ============ 历史归档（浅色区） ============ */
.page-products .bd-section--light {
  background: var(--bd-white);
  color: var(--pd-light-ink);
}

.page-products .bd-section--light .bd-eyebrow {
  color: var(--bd-teal-ink);
}

.page-products .bd-section--light .bd-h2,
.page-products .bd-section--light .bd-h3 {
  color: var(--pd-light-ink);
}

.page-products .pd-archive__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(20px, 3.4vw, 42px);
  align-items: center;
}

.page-products .pd-archive__intro .bd-h2 {
  margin: 8px 0 14px;
}

.page-products .pd-archive__lede {
  margin: 0;
  max-width: 56ch;
  font-size: 16px;
  line-height: 1.78;
  color: var(--pd-light-ink-soft);
}

.page-products .pd-archive__ways {
  margin: 20px 0 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 12px;
}

.page-products .pd-archive__ways li {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  font-size: 15px;
  line-height: 1.7;
  color: var(--pd-light-ink-soft);
}

.page-products .pd-archive__wayNum {
  flex: 0 0 auto;
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  border-radius: 8px;
  background: var(--bd-navy);
  color: var(--bd-white);
  font-family: var(--bd-font-index);
  font-size: 12px;
}

.page-products .pd-archive__fig {
  margin: 0;
}

.page-products .pd-archive__fig img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  border-radius: var(--pd-radius);
  object-fit: cover;
}

.page-products .pd-archive__list {
  margin-top: clamp(28px, 4vw, 52px);
  padding-top: clamp(20px, 3vw, 34px);
  border-top: 1px solid rgba(8, 26, 56, .12);
}

.page-products .pd-archive__listTitle {
  margin: 0 0 18px;
}

.page-products .pd-archive__item {
  border: 1px solid rgba(8, 26, 56, .14);
  border-radius: var(--bd-r-sm);
  background: #fff;
  overflow: hidden;
}

.page-products .pd-archive__item + .pd-archive__item {
  margin-top: 10px;
}

.page-products .pd-archive__item .bd-details__summary {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 16px;
  padding: 14px 18px;
  cursor: pointer;
}

.page-products .pd-archive__ver {
  font-family: var(--bd-font-index);
  font-size: 16px;
  font-weight: 500;
  color: var(--bd-blue);
}

.page-products .pd-archive__env {
  font-size: 13.5px;
  color: var(--pd-light-ink-soft);
}

.page-products .pd-archive__item .bd-details__body {
  padding: 0 18px 18px;
  font-size: 15px;
  line-height: 1.74;
  color: var(--pd-light-ink-soft);
}

.page-products .pd-archive__item .bd-details__body p {
  margin: 0 0 10px;
}

.page-products .pd-archive__hash {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  font-size: 13.5px;
}

/* ============ 适配对照 ============ */
.page-products .pd-compat__fig {
  margin-bottom: clamp(20px, 3vw, 32px);
}

.page-products .pd-compat__fig .bd-media__img {
  border-radius: var(--pd-radius);
  object-fit: cover;
}

.page-products .pd-tableWrap {
  overflow-x: auto;
  border: 1px solid var(--bd-line-strong);
  border-radius: var(--pd-radius);
  background: rgba(9, 26, 54, .7);
}

.page-products .pd-table {
  width: 100%;
  min-width: 620px;
  border-collapse: collapse;
  font-size: 15px;
}

.page-products .pd-table thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  padding: 14px 18px;
  text-align: left;
  font-family: var(--bd-font-index);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .08em;
  color: var(--bd-silver);
  background: var(--bd-navy-2);
  border-bottom: 1px solid var(--bd-line-strong);
}

.page-products .pd-table tbody th {
  padding: 13px 18px;
  text-align: left;
  font-weight: 500;
  color: var(--bd-white);
  border-top: 1px solid var(--bd-line);
}

.page-products .pd-table td {
  padding: 13px 18px;
  color: var(--pd-ink-soft);
  border-top: 1px solid var(--bd-line);
}

.page-products .pd-table tbody tr:nth-child(even) {
  background: rgba(18, 48, 107, .3);
}

.page-products .pd-table tbody tr:hover {
  background: rgba(30, 79, 216, .18);
}

.page-products .pd-table td code {
  font-family: var(--bd-font-index);
  font-size: 13px;
  color: var(--bd-blue-soft);
}

.page-products .pd-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  margin-right: 8px;
  border-radius: 50%;
  vertical-align: middle;
}

.page-products .pd-dot--ok { background: var(--bd-teal); }
.page-products .pd-dot--warn { background: var(--bd-amber); }
.page-products .pd-dot--alert { background: var(--bd-silver); }

.page-products .pd-compat__foot {
  margin: 14px 0 0;
  color: var(--pd-ink-dim);
}

/* ============ 下载与校验 ============ */
.page-products .pd-verify__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(20px, 3vw, 38px);
}

.page-products .pd-verify__fig {
  margin: 0;
}

.page-products .pd-verify__fig .bd-media__img {
  border-radius: var(--pd-radius);
  object-fit: cover;
}

.page-products .pd-steps {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
}

.page-products .pd-step {
  position: relative;
  padding: 0 0 clamp(20px, 3vw, 30px) clamp(20px, 2.6vw, 30px);
  border-left: 2px solid var(--bd-line-strong);
}

.page-products .pd-step:last-child {
  padding-bottom: 0;
  border-left-color: transparent;
}

.page-products .pd-step::before {
  content: "";
  position: absolute;
  left: -7px;
  top: 4px;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--bd-navy);
  border: 2px solid var(--bd-blue);
}

.page-products .pd-step:first-child::before {
  border-color: var(--bd-teal);
}

.page-products .pd-step:last-child::before {
  border-color: var(--bd-orange);
}

.page-products .pd-step__num {
  display: block;
  font-family: var(--bd-font-index);
  font-size: 12px;
  letter-spacing: .1em;
  color: var(--bd-blue-soft);
}

.page-products .pd-step .bd-h3 {
  margin: 6px 0 8px;
}

.page-products .pd-step p {
  margin: 0;
  font-size: 15.5px;
  line-height: 1.74;
  color: var(--pd-ink-soft);
}

/* ============ 出口 ============ */
.page-products .pd-exit {
  background:
    radial-gradient(circle at 82% 20%, rgba(255, 91, 46, .18), rgba(8, 26, 56, 0) 58%),
    linear-gradient(180deg, rgba(18, 48, 107, .42), rgba(8, 26, 56, 0));
}

.page-products .pd-exit__inner {
  display: grid;
  gap: 18px;
  padding: clamp(22px, 3.6vw, 44px);
  border: 1px solid var(--bd-line-strong);
  border-radius: var(--bd-r-lg);
  background: rgba(9, 26, 54, .7);
}

.page-products .pd-exit__text .bd-h2 {
  margin: 8px 0 12px;
}

.page-products .pd-exit__lede {
  margin: 0;
  max-width: 62ch;
  font-size: 16px;
  line-height: 1.76;
  color: var(--pd-ink-soft);
}

.page-products .pd-exit__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.page-products .pd-exit__mail {
  margin: 0;
  font-family: var(--bd-font-index);
  font-size: 12.5px;
  letter-spacing: .04em;
  color: var(--pd-ink-dim);
}

/* ============ 响应式 ============ */
@media (min-width: 640px) {
  .page-products .pd-hero__stats {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .page-products .pd-lines__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 900px) {
  .page-products .pd-current__grid {
    grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
    align-items: start;
  }

  .page-products .pd-archive__grid {
    grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
  }

  .page-products .pd-verify__grid {
    grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
    align-items: start;
  }

  .page-products .pd-exit__inner {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
  }

  .page-products .pd-exit__mail {
    grid-column: 1 / -1;
  }
}

@media (min-width: 1080px) {
  .page-products .pd-lines__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .page-products .pd-lines__grid .pd-line:nth-child(2),
  .page-products .pd-lines__grid .pd-line:nth-child(5) {
    transform: translateY(24px);
  }

  .page-products .pd-lines__grid .pd-line:nth-child(2):hover,
  .page-products .pd-lines__grid .pd-line:nth-child(5):hover {
    transform: translateY(20px);
  }

  .page-products .pd-tabs__list {
    flex-wrap: wrap;
    overflow-x: visible;
    padding-bottom: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .page-products .pd-hero__shape {
    animation: none;
  }

  .page-products .pd-line,
  .page-products .pd-line:hover,
  .page-products .pd-lines__grid .pd-line:nth-child(2),
  .page-products .pd-lines__grid .pd-line:nth-child(5),
  .page-products .pd-lines__grid .pd-line:nth-child(2):hover,
  .page-products .pd-lines__grid .pd-line:nth-child(5):hover {
    transform: none;
    transition: none;
  }
}

.page-products {
  --pd-index-size: 1rem;
}
