.page-products {
  --pp-shadow: 0 22px 50px rgba(4, 8, 22, .45);
  --pp-line: 1px solid var(--qd-indigo-700);
  --pp-ink-soft: #3c4a6b;
  background: var(--qd-ink);
  color: var(--qd-sand);
  overflow-x: clip;
}

.page-products img {
  display: block;
  max-width: 100%;
  height: auto;
}

.page-products .pp-figure {
  margin: clamp(24px, 4vw, 44px) 0 0;
}

/* ---------- 首屏 ---------- */
.page-products .pp-hero {
  padding: clamp(20px, 4vw, 38px) 0 clamp(32px, 6vw, 68px);
  background:
    radial-gradient(90% 70% at 88% -6%, rgba(53, 224, 196, .18), transparent 62%),
    radial-gradient(70% 60% at 4% 100%, rgba(255, 158, 74, .10), transparent 60%),
    linear-gradient(180deg, #0E1633, #111C3F);
  border-bottom: var(--pp-line);
}

.page-products .pp-hero__inner {
  display: grid;
  gap: clamp(24px, 4vw, 46px);
}

.page-products .pp-hero__title {
  margin: 14px 0 0;
  font-family: var(--qd-font-sans);
  font-weight: 900;
  font-size: clamp(38px, 7.6vw, 78px);
  line-height: 1.04;
  letter-spacing: -.01em;
  color: #fff;
}

.page-products .pp-hero__title span {
  color: var(--qd-teal);
}

.page-products .pp-hero__lead {
  margin-top: 18px;
  max-width: 48ch;
}

.page-products .pp-hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 26px;
}

.page-products .pp-console {
  padding: 16px 18px 18px;
  border: var(--pp-line);
  border-radius: var(--qd-radius-lg);
  background: linear-gradient(160deg, #17224A, #101A3C);
  box-shadow: var(--pp-shadow);
  font-family: var(--qd-font-mono);
  font-size: 13px;
  line-height: 1.95;
}

.page-products .pp-console__dots {
  display: flex;
  gap: 6px;
  margin-bottom: 12px;
}

.page-products .pp-console__dots span {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--qd-indigo-700);
}

.page-products .pp-console__dots span:first-child { background: var(--qd-teal); }
.page-products .pp-console__dots span:nth-child(2) { background: var(--qd-orange); }

.page-products .pp-console__line {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  margin: 0;
  padding: 3px 0;
  border-bottom: 1px dashed rgba(185, 194, 214, .14);
}

.page-products .pp-console__k { color: var(--qd-rock); }
.page-products .pp-console__v { color: var(--qd-teal); }

.page-products .pp-console__note {
  margin: 12px 0 0;
  font-size: 12px;
  color: var(--qd-rock);
}

@media (min-width: 940px) {
  .page-products .pp-hero__inner {
    grid-template-columns: minmax(0, 1.4fr) minmax(0, .8fr);
    align-items: end;
  }
}

/* ---------- 三条产品线 ---------- */
.page-products .pp-choose__lead {
  margin-top: 14px;
  max-width: 56ch;
}

.page-products .pp-lines {
  display: grid;
  gap: 18px;
  margin-top: clamp(24px, 4vw, 40px);
}

.page-products .pp-line {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 26px 22px 24px;
  border: var(--pp-line);
  border-radius: var(--qd-radius-lg);
  background: linear-gradient(175deg, #17224A, #131C40);
  box-shadow: 0 14px 30px rgba(4, 8, 22, .35);
}

.page-products .pp-line--stable {
  padding: 30px 24px 28px;
  border-color: rgba(53, 224, 196, .5);
  background: linear-gradient(175deg, #1B2A56, #131C40);
  box-shadow: 0 22px 46px rgba(18, 169, 143, .22);
}

.page-products .pp-line__head {
  display: grid;
  gap: 10px;
  justify-items: start;
}

.page-products .pp-line__title {
  margin: 0;
  font-family: var(--qd-font-serif);
  font-size: 22px;
  font-weight: 600;
  color: #fff;
}

.page-products .pp-line__tag {
  margin: 0;
  font-size: 14.5px;
  color: var(--qd-teal);
  font-family: var(--qd-font-mono);
}

.page-products .pp-line__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 9px;
  font-size: 15px;
  line-height: 1.7;
  color: var(--qd-rock);
}

.page-products .pp-line__list li {
  position: relative;
  padding-left: 16px;
}

.page-products .pp-line__list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .64em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--qd-teal-600);
}

.page-products .pp-line__cta {
  margin-top: auto;
  align-self: flex-start;
}

@media (min-width: 900px) {
  .page-products .pp-lines {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    align-items: start;
  }

  .page-products .pp-line--lts { margin-top: 18px; }
  .page-products .pp-line--intranet { margin-top: 42px; }
}

/* ---------- 稳定版详情（米白分区） ---------- */
.page-products .qd-section--sand {
  color: var(--qd-ink);
}

.page-products .qd-section--sand .qd-h2,
.page-products .qd-section--sand .qd-h3 {
  color: var(--qd-ink);
}

.page-products .qd-section--sand .qd-lead {
  color: var(--pp-ink-soft);
}

.page-products .pp-eyebrow--dark {
  color: var(--qd-teal-600);
}

.page-products .pp-stable__inner {
  display: grid;
  gap: clamp(24px, 4vw, 46px);
}

.page-products .pp-stable__body .qd-lead {
  margin-top: 14px;
  max-width: 54ch;
}

.page-products .pp-file {
  margin: 24px 0 0;
  border-top: 1px solid rgba(14, 22, 51, .16);
}

.page-products .pp-file__row {
  display: grid;
  grid-template-columns: 6.5em minmax(0, 1fr);
  gap: 12px;
  padding: 12px 0;
  border-bottom: 1px solid rgba(14, 22, 51, .12);
}

.page-products .pp-file dt {
  font-family: var(--qd-font-mono);
  font-size: 12.5px;
  letter-spacing: .02em;
  color: #5b6885;
}

.page-products .pp-file dd {
  margin: 0;
  font-size: 15px;
  line-height: 1.7;
  color: var(--qd-ink);
  word-break: break-word;
}

.page-products .pp-file dd .qd-mono {
  font-weight: 700;
}

.page-products .pp-copy {
  display: grid;
  gap: 10px;
  justify-items: start;
  margin-top: 22px;
  padding: 18px;
  border: 1px solid rgba(14, 22, 51, .16);
  border-radius: var(--qd-radius-md);
  background:
    repeating-linear-gradient(45deg, rgba(14, 22, 51, .05) 0 6px, transparent 6px 12px),
    #fff;
}

.page-products .pp-copy__label {
  margin: 0;
  font-family: var(--qd-font-mono);
  font-size: 12.5px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--qd-clay);
}

.page-products .pp-copy__value {
  display: block;
  font-size: 13px;
  line-height: 1.8;
  color: var(--qd-ink);
  word-break: break-all;
}

.page-products .pp-copy__btn {
  border-color: rgba(14, 22, 51, .28);
  color: var(--qd-ink);
}

.page-products .pp-note {
  margin-top: 18px;
  font-size: 14.5px;
  line-height: 1.8;
  color: var(--qd-ink);
}

.page-products .pp-more {
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px dashed rgba(14, 22, 51, .22);
}

.page-products .pp-more summary {
  cursor: pointer;
  list-style: none;
  font-size: 15px;
  font-weight: 700;
  color: var(--qd-ink);
}

.page-products .pp-more summary::-webkit-details-marker { display: none; }

.page-products .pp-more summary::before {
  content: "+ ";
  font-family: var(--qd-font-mono);
  color: var(--qd-teal-600);
}

.page-products .pp-more[open] summary::before { content: "− "; }

.page-products .pp-more__body p {
  margin: 10px 0 0;
  font-size: 14.5px;
  line-height: 1.8;
  color: var(--pp-ink-soft);
}

.page-products .pp-more__body .qd-mono {
  display: inline-block;
  padding: 2px 6px;
  border-radius: 6px;
  background: rgba(14, 22, 51, .07);
  color: var(--qd-ink);
  word-break: break-all;
}

.page-products .pp-stable__figure {
  margin: 0;
}

@media (min-width: 960px) {
  .page-products .pp-stable__inner {
    grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
    align-items: start;
  }
}

/* ---------- 兼容矩阵 ---------- */
.page-products .pp-matrix-section {
  background:
    radial-gradient(80% 60% at 90% 0%, rgba(53, 224, 196, .10), transparent 60%),
    linear-gradient(180deg, #131E42, #0F1838);
  border-top: var(--pp-line);
  border-bottom: var(--pp-line);
}

.page-products .pp-matrix__top {
  display: grid;
  gap: clamp(22px, 4vw, 40px);
}

.page-products .pp-matrix__top .qd-lead {
  margin-top: 14px;
  max-width: 54ch;
}

.page-products .pp-matrix__figure { margin: 0; }

.page-products .pp-matrix {
  margin-top: clamp(22px, 3vw, 34px);
  border: var(--pp-line);
  border-radius: var(--qd-radius-lg);
  background: rgba(23, 34, 74, .62);
  overflow: hidden;
}

.page-products .pp-matrix__head {
  display: none;
  padding: 14px 18px;
  background: rgba(34, 48, 95, .55);
  font-family: var(--qd-font-mono);
  font-size: 12px;
  letter-spacing: .05em;
  color: var(--qd-rock);
}

.page-products .pp-matrix__row {
  display: grid;
  gap: 8px;
  padding: 14px 18px;
  border-top: 1px solid rgba(34, 48, 95, .9);
}

.page-products .pp-matrix__row:first-of-type { border-top: none; }

.page-products .pp-matrix__os {
  font-size: 15px;
  font-weight: 700;
  color: var(--qd-sand);
}

.page-products .pp-matrix__cell {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.page-products .pp-matrix__label {
  font-family: var(--qd-font-mono);
  font-size: 12px;
  color: var(--qd-rock);
}

.page-products .pp-dot {
  position: relative;
  display: inline-block;
  width: 14px;
  height: 14px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: var(--qd-teal);
  box-shadow: 0 0 0 4px rgba(53, 224, 196, .14);
  cursor: help;
}

.page-products .pp-dot--partial {
  background: var(--qd-orange);
  box-shadow: 0 0 0 4px rgba(255, 158, 74, .16);
}

.page-products .pp-dot--no {
  background: var(--qd-alert);
  box-shadow: 0 0 0 4px rgba(228, 87, 63, .16);
}

.page-products .pp-dot::after {
  content: attr(aria-label);
  position: absolute;
  left: 50%;
  bottom: calc(100% + 12px);
  transform: translate(-50%, 6px);
  width: max-content;
  max-width: 24ch;
  padding: 8px 10px;
  border-radius: 10px;
  background: var(--qd-sand);
  color: var(--qd-ink);
  font-family: var(--qd-font-sans);
  font-size: 12.5px;
  line-height: 1.5;
  text-align: left;
  opacity: 0;
  pointer-events: none;
  transition: opacity .2s var(--qd-ease), transform .2s var(--qd-ease);
  z-index: 4;
}

.page-products .pp-dot[tabindex]:hover::after,
.page-products .pp-dot[tabindex]:focus-visible::after {
  opacity: 1;
  transform: translate(-50%, 0);
}

.page-products .pp-matrix__row:first-of-type .pp-dot::after {
  bottom: auto;
  top: calc(100% + 12px);
}

.page-products .pp-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 22px;
  margin: 18px 0 0;
  padding: 0;
  list-style: none;
  font-size: 14px;
  color: var(--qd-rock);
}

.page-products .pp-legend li {
  display: flex;
  align-items: center;
  gap: 8px;
}

.page-products .pp-deps {
  margin-top: clamp(24px, 4vw, 40px);
  padding: 22px;
  border: var(--pp-line);
  border-radius: var(--qd-radius-lg);
  background: rgba(23, 34, 74, .5);
}

.page-products .pp-deps__title {
  margin: 0;
  font-family: var(--qd-font-serif);
  font-size: 19px;
  font-weight: 600;
  color: #fff;
}

.page-products .pp-deps__list {
  list-style: none;
  margin: 16px 0 0;
  padding: 0;
  display: grid;
  gap: 10px 26px;
  font-size: 15px;
  line-height: 1.7;
  color: var(--qd-rock);
}

.page-products .pp-deps__list li {
  position: relative;
  padding-left: 16px;
}

.page-products .pp-deps__list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .66em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--qd-orange);
}

@media (min-width: 820px) {
  .page-products .pp-matrix__head,
  .page-products .pp-matrix__row {
    grid-template-columns: minmax(0, 1.7fr) repeat(3, minmax(0, 1fr));
    align-items: center;
    gap: 12px;
  }

  .page-products .pp-matrix__head { display: grid; }

  .page-products .pp-matrix__cell { justify-content: center; }

  .page-products .pp-matrix__label {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }

  .page-products .pp-matrix__row:first-of-type .pp-dot::after {
    bottom: calc(100% + 12px);
    top: auto;
  }

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

@media (min-width: 1000px) {
  .page-products .pp-matrix__top {
    grid-template-columns: minmax(0, 1.45fr) minmax(0, .55fr);
    align-items: center;
  }
}

/* ---------- 安装步骤 ---------- */
.page-products .pp-steps {
  background:
    radial-gradient(70% 55% at 10% 0%, rgba(53, 224, 196, .10), transparent 62%),
    var(--qd-ink);
  border-bottom: var(--pp-line);
}

.page-products .pp-steps__body {
  display: grid;
  gap: clamp(24px, 4vw, 42px);
  margin-top: clamp(24px, 4vw, 38px);
}

.page-products .pp-steps__list {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: pp-step;
  display: grid;
  gap: 12px;
}

.page-products .pp-steps__item {
  counter-increment: pp-step;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  padding: 14px 18px;
  border: var(--pp-line);
  border-radius: var(--qd-radius-md);
  background: linear-gradient(120deg, rgba(23, 34, 74, .95), rgba(19, 28, 64, .68));
}

.page-products .pp-steps__item::before {
  content: "0" counter(pp-step);
  font-family: var(--qd-font-mono);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: .04em;
  color: var(--qd-teal);
}

.page-products .pp-steps__item p {
  margin: 0;
  font-size: 15.5px;
  line-height: 1.7;
  color: var(--qd-sand);
}

.page-products .pp-steps__figure { margin: 0; }

.page-products .pp-steps__fallback {
  margin: 26px 0 0;
  font-size: 15px;
  color: var(--qd-rock);
}

@media (min-width: 940px) {
  .page-products .pp-steps__body {
    grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
    align-items: start;
  }
}

/* ---------- 历史版本 ---------- */
.page-products .pp-archive__inner {
  display: grid;
  gap: clamp(24px, 4vw, 44px);
}

.page-products .pp-archive__main .qd-lead {
  margin-top: 14px;
  max-width: 56ch;
}

.page-products .pp-group {
  margin-top: 14px;
  border: 1px solid rgba(14, 22, 51, .16);
  border-radius: var(--qd-radius-md);
  background: #fff;
  overflow: hidden;
}

.page-products .pp-group summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 18px;
  cursor: pointer;
  list-style: none;
  font-size: 15.5px;
  font-weight: 700;
  color: var(--qd-ink);
}

.page-products .pp-group summary::-webkit-details-marker { display: none; }

.page-products .pp-group summary::after {
  content: "+";
  font-family: var(--qd-font-mono);
  font-size: 17px;
  color: var(--qd-teal-600);
}

.page-products .pp-group[open] summary::after { content: "−"; }

.page-products .pp-archive__list {
  list-style: none;
  margin: 0;
  padding: 0 18px 14px;
}

.page-products .pp-archive__item {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 14px;
  padding: 10px 0;
  border-top: 1px dashed rgba(14, 22, 51, .16);
}

.page-products .pp-archive__ver {
  font-family: var(--qd-font-mono);
  font-size: 14px;
  font-weight: 700;
  color: var(--qd-ink);
}

.page-products .pp-archive__desc {
  flex: 1 1 16ch;
  font-size: 14px;
  line-height: 1.7;
  color: #46536f;
}

.page-products .pp-archive__figure { margin: 0; }

.page-products .pp-advice {
  display: grid;
  gap: 16px;
  margin-top: clamp(28px, 4vw, 46px);
}

.page-products .pp-advice__col {
  padding: 22px;
  border-radius: var(--qd-radius-lg);
  background: rgba(14, 22, 51, .05);
  border: 1px solid rgba(14, 22, 51, .14);
}

.page-products .pp-advice__title {
  margin: 0;
  font-family: var(--qd-font-serif);
  font-size: 18px;
  font-weight: 600;
  color: var(--qd-ink);
}

.page-products .pp-advice__list {
  list-style: none;
  margin: 14px 0 0;
  padding: 0;
  display: grid;
  gap: 9px;
  font-size: 14.5px;
  line-height: 1.75;
  color: var(--pp-ink-soft);
}

.page-products .pp-advice__list li {
  position: relative;
  padding-left: 15px;
}

.page-products .pp-advice__list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .66em;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--qd-clay);
}

.page-products .pp-advice__list a {
  color: var(--qd-teal-600);
  text-decoration: underline;
  text-underline-offset: 3px;
}

@media (min-width: 760px) {
  .page-products .pp-advice {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 940px) {
  .page-products .pp-archive__inner {
    grid-template-columns: minmax(0, 1.25fr) minmax(0, .75fr);
    align-items: start;
  }
}

/* ---------- 下一步 ---------- */
.page-products .pp-next {
  padding: clamp(36px, 6vw, 68px) 0;
  background: linear-gradient(180deg, #111C3F, #0E1633);
}

.page-products .pp-next__inner {
  display: grid;
  gap: 16px;
}

.page-products .pp-next__title {
  margin: 0;
}

.page-products .pp-next__links {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 26px;
  margin-top: 6px;
}

@media (prefers-reduced-motion: reduce) {
  .page-products .pp-dot::after {
    transition: none;
  }
}
<<<END>>>
