/* ===== 功能中心 / page-products ===== */
.page-products {
  --fn-panel: rgba(11, 58, 43, .40);
  --fn-wine-wash: rgba(92, 30, 51, .34);
  --fn-accent-wash: rgba(53, 224, 208, .12);
  --fn-hair: var(--line);
  --fn-strong: var(--rule-strong);
  position: relative;
  padding-bottom: clamp(56px, 9vw, 128px);
  background:
    radial-gradient(900px 520px at 88% -4%, rgba(92, 30, 51, .28), transparent 68%),
    radial-gradient(720px 460px at 2% 22%, rgba(53, 224, 208, .09), transparent 70%);
  color: var(--text);
}

.page-products .breadcrumbs {
  padding-top: clamp(20px, 3vw, 34px);
}

/* ---- 首屏 ---- */
.page-products .fn-hero {
  padding-top: clamp(26px, 4.5vw, 58px);
  padding-bottom: clamp(30px, 5vw, 68px);
}
.page-products .fn-hero__eyebrow {
  margin: 0 0 18px;
  font-family: var(--font-mono);
  font-size: var(--fs-1);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--accent);
}
.page-products .fn-hero__title {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 200;
  font-size: clamp(40px, 8.4vw, var(--fs-8));
  line-height: 1.02;
  letter-spacing: -.02em;
  color: var(--text);
}
.page-products .fn-hero__lede {
  max-width: 36em;
  margin: clamp(20px, 3vw, 32px) 0 0;
  font-size: var(--fs-4);
  line-height: 1.8;
  color: var(--text-dim);
}

.page-products .fn-stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  margin: clamp(30px, 4.6vw, 54px) 0 0;
  padding: 0;
  border: 1px solid var(--fn-hair);
  background: var(--fn-hair);
}
.page-products .fn-stat {
  margin: 0;
  padding: clamp(14px, 2.2vw, 24px);
  background: var(--bg-sunk);
}
.page-products .fn-stat__k {
  margin: 0 0 10px;
  font-family: var(--font-mono);
  font-size: var(--fs-1);
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--text-dim);
}
.page-products .fn-stat__v {
  margin: 0;
  font-size: clamp(26px, 4.6vw, var(--fs-6));
  line-height: 1.1;
  color: var(--accent);
}
.page-products .fn-stat__u {
  margin-left: 4px;
  font-size: var(--fs-2);
  color: var(--text-dim);
}

/* ---- 分段标签栏 ---- */
.page-products .fn-tabs {
  overflow-x: auto;
  border-block: 2px solid var(--fn-strong);
  background: var(--bg-sunk);
  -webkit-overflow-scrolling: touch;
}
.page-products .fn-tabs__inner {
  display: flex;
  width: max-content;
  min-width: 100%;
  padding-inline: max(var(--pad), calc((100% - var(--w)) / 2));
}
.page-products .fn-tab {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: baseline;
  gap: 8px;
  padding: 14px 20px;
  border-right: 1px solid var(--fn-hair);
  font-family: var(--font-display);
  font-size: var(--fs-2);
  letter-spacing: .12em;
  color: var(--text-dim);
  text-decoration: none;
  white-space: nowrap;
  transition: color .18s ease, background-color .18s ease;
}
.page-products .fn-tab:last-child {
  border-right: 0;
}
.page-products .fn-tab__n {
  font-family: var(--font-mono);
  font-size: var(--fs-1);
  color: var(--accent);
}
.page-products .fn-tab:hover,
.page-products .fn-tab:focus-visible {
  color: var(--text);
  background: var(--fn-accent-wash);
}

/* ---- 模块骨架 ---- */
.page-products .fn-mod {
  padding-block: clamp(36px, 6vw, 84px);
  border-top: 1px solid var(--fn-hair);
  scroll-margin-top: 90px;
}
.page-products .fn-mod__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 10px 22px;
  margin-bottom: clamp(22px, 3.4vw, 42px);
  padding-bottom: 14px;
  border-bottom: 2px solid var(--fn-strong);
}
.page-products .fn-mod__idx {
  font-family: var(--font-mono);
  font-size: var(--fs-1);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--accent);
}
.page-products .fn-mod__title {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 300;
  font-size: clamp(22px, 3.6vw, var(--fs-6));
  line-height: 1.16;
  letter-spacing: -.01em;
  color: var(--text);
}

.page-products .fn-split {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: clamp(20px, 3vw, 44px);
  align-items: start;
}
.page-products .fn-pane {
  display: flex;
  flex-direction: column;
  gap: 18px;
  min-width: 0;
}
.page-products .fn-p {
  margin: 0;
  max-width: 40em;
  font-size: var(--fs-3);
  line-height: 1.85;
  color: var(--text);
}

.page-products .fn-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
}
.page-products .fn-list li {
  position: relative;
  padding: 0 0 12px 22px;
  margin-bottom: 12px;
  border-bottom: 1px solid var(--fn-hair);
  font-size: var(--fs-3);
  line-height: 1.8;
  color: var(--text-dim);
}
.page-products .fn-list li:last-child {
  margin-bottom: 0;
}
.page-products .fn-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .78em;
  width: 10px;
  height: 2px;
  background: var(--accent);
}

/* ---- 图片框 ---- */
.page-products .fn-figure {
  margin: 0;
  border: 2px solid var(--fn-strong);
  background: var(--bg-sunk);
  box-shadow: var(--shadow-hard);
}
.page-products .fn-figure--wide {
  margin-bottom: clamp(26px, 4vw, 52px);
}
.page-products .fn-figure img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  object-fit: cover;
}

/* ---- 字段表 ---- */
.page-products .fn-scroll {
  border: 1px solid var(--fn-hair);
  background: var(--bg-sunk);
}
.page-products .fn-fields {
  margin: 0;
}
.page-products .fn-fields th,
.page-products .fn-fields td {
  padding: 12px 14px;
  text-align: left;
  vertical-align: top;
  font-size: var(--fs-3);
  line-height: 1.6;
  border-bottom: 1px solid var(--fn-hair);
}
.page-products .fn-fields thead th {
  border-bottom: 2px solid var(--fn-strong);
  font-family: var(--font-mono);
  font-size: var(--fs-1);
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--text-dim);
  white-space: nowrap;
}
.page-products .fn-fields tbody tr:last-child td {
  border-bottom: 0;
}
.page-products .fn-fields tbody td:first-child {
  font-family: var(--font-mono);
  font-size: var(--fs-2);
  color: var(--accent);
  white-space: nowrap;
}
.page-products .fn-fields tbody td:nth-child(2) {
  font-size: var(--fs-2);
  color: var(--text-dim);
  white-space: nowrap;
}

/* ---- 主客场左右分屏 ---- */
.page-products .fn-venue {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  border: 1px solid var(--fn-hair);
  background: var(--fn-panel);
}
.page-products .fn-venue__side {
  padding: clamp(18px, 2.6vw, 30px);
  min-width: 0;
}
.page-products .fn-venue__side + .fn-venue__side {
  border-top: 1px solid var(--fn-hair);
}
.page-products .fn-venue__label {
  margin: 0 0 16px;
  font-family: var(--font-mono);
  font-size: var(--fs-1);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--accent);
}
.page-products .fn-venue__note {
  margin-top: clamp(20px, 3vw, 30px);
}

/* ---- 分钟刻度尺 ---- */
.page-products .fn-scale {
  position: relative;
  height: 46px;
  margin: 0;
  border-block: 1px solid var(--fn-hair);
  background: repeating-linear-gradient(90deg, rgba(143, 163, 172, .34) 0 1px, transparent 1px 12px);
}
.page-products .fn-scale__half {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 50%;
  width: 2px;
  background: var(--signal);
}
.page-products .fn-scale__cap {
  position: absolute;
  bottom: 3px;
  font-family: var(--font-mono);
  font-size: var(--fs-1);
  color: var(--text-dim);
}
.page-products .fn-scale__cap--start {
  left: 4px;
}
.page-products .fn-scale__cap--mid {
  left: 50%;
  transform: translateX(-50%);
  color: var(--signal);
}
.page-products .fn-scale__cap--end {
  right: 4px;
}

/* ---- CSV 字段面板 ---- */
.page-products .fn-pane--panel {
  padding: clamp(18px, 2.6vw, 28px);
  border: 2px solid var(--fn-strong);
  background: var(--fn-panel);
  box-shadow: var(--shadow-hard);
}
.page-products .fn-panel__title {
  margin: 0 0 14px;
  font-family: var(--font-mono);
  font-size: var(--fs-1);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--accent);
}
.page-products .fn-code {
  margin: 0;
  padding: 0;
  list-style: none;
}
.page-products .fn-code li {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 2px;
  padding: 10px 0;
  border-bottom: 1px solid var(--fn-hair);
}
.page-products .fn-code li:last-child {
  border-bottom: 0;
}
.page-products .fn-code code {
  font-family: var(--font-mono);
  font-size: var(--fs-2);
  color: var(--text);
  word-break: break-all;
}
.page-products .fn-code span {
  font-size: var(--fs-2);
  line-height: 1.6;
  color: var(--text-dim);
}
.page-products .fn-panel__foot {
  margin: 16px 0 0;
  padding-top: 14px;
  border-top: 1px solid var(--fn-hair);
  font-size: var(--fs-2);
  line-height: 1.7;
  color: var(--text-dim);
}

/* ---- 版本时间线 ---- */
.page-products .fn-timeline {
  margin: 0;
  padding: 0;
  list-style: none;
}
.page-products .fn-timeline li {
  position: relative;
  margin-left: 5px;
  padding: 0 0 22px 24px;
  border-left: 1px solid var(--fn-hair);
  font-size: var(--fs-3);
  line-height: 1.8;
  color: var(--text-dim);
}
.page-products .fn-timeline li:last-child {
  padding-bottom: 0;
}
.page-products .fn-timeline li::before {
  content: "";
  position: absolute;
  left: -5px;
  top: 6px;
  width: 9px;
  height: 9px;
  background: var(--accent);
}
.page-products .fn-timeline__year {
  display: block;
  margin-bottom: 4px;
  font-family: var(--font-mono);
  font-size: var(--fs-1);
  letter-spacing: .14em;
  color: var(--accent);
}

/* ---- 收尾 ---- */
.page-products .fn-cta {
  padding-top: clamp(40px, 6vw, 78px);
}
.page-products .fn-cta__box {
  padding: clamp(24px, 4vw, 56px);
  border: 2px solid var(--fn-strong);
  background:
    linear-gradient(155deg, var(--fn-wine-wash), transparent 62%),
    var(--bg-sunk);
  box-shadow: var(--shadow-hard);
}
.page-products .fn-cta__eyebrow {
  margin: 0;
  font-family: var(--font-mono);
  font-size: var(--fs-1);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--signal);
}
.page-products .fn-cta__title {
  margin: 10px 0 16px;
  font-family: var(--font-display);
  font-weight: 300;
  font-size: clamp(22px, 3.4vw, var(--fs-5));
  line-height: 1.24;
  color: var(--text);
}
.page-products .fn-cta__text {
  margin: 0;
  max-width: 46em;
  font-size: var(--fs-3);
  line-height: 1.85;
  color: var(--text-dim);
}
.page-products .fn-cta__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: clamp(20px, 3vw, 30px);
}

/* ---- 断点 ---- */
@media (min-width: 480px) {
  .page-products .fn-code li {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 14px;
    align-items: baseline;
  }
  .page-products .fn-code span {
    text-align: right;
  }
}

@media (min-width: 760px) {
  .page-products .fn-venue {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }
  .page-products .fn-venue__side + .fn-venue__side {
    border-top: 0;
    border-left: 1px solid var(--fn-hair);
  }
}

@media (min-width: 900px) {
  .page-products .fn-split {
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  }
  .page-products .fn-split--rev {
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
  }
}

@media (min-width: 1024px) {
  .page-products .fn-stats {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

@media (prefers-reduced-motion: reduce) {
  .page-products .fn-tab {
    transition: none;
  }
}
</final>
