.page-privacy {
  --pv-rule: rgba(15, 34, 51, 0.12);
  --pv-rule-strong: rgba(15, 34, 51, 0.22);
  --pv-num-col: 108px;

  background: var(--ts-paper);
  color: var(--ts-graphite);
  font-family: var(--ts-font-sans);
  font-size: 16px;
  line-height: 1.6;
}

.page-privacy .ts-breadcrumb {
  padding-top: clamp(20px, 4vw, 40px);
}

/* ---------- 页首 ---------- */

.page-privacy .pv-hero {
  padding: clamp(22px, 4.5vw, 44px) 0 clamp(26px, 5vw, 50px);
}

.page-privacy .pv-hero__title {
  margin: 14px 0 0;
  font-family: var(--ts-font-sans);
  font-weight: 800;
  font-size: clamp(34px, 8vw, 56px);
  line-height: 1.04;
  letter-spacing: -0.02em;
  color: var(--ts-navy);
}

.page-privacy .pv-hero__lede {
  margin: 20px 0 0;
  max-width: 62ch;
  font-size: 16px;
  line-height: 1.65;
  color: var(--ts-graphite);
}

/* ---------- 横幅 ---------- */

.page-privacy .pv-banner {
  margin: 0;
  background: var(--ts-navy);
  border-top: 1px solid var(--pv-rule-strong);
  border-bottom: 1px solid var(--pv-rule-strong);
}

.page-privacy .pv-banner__img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  aspect-ratio: 16 / 5;
  object-fit: cover;
}

/* ---------- 条款目录 ---------- */

.page-privacy .pv-index {
  padding: clamp(16px, 3vw, 24px) 0;
  border-bottom: 1px solid var(--pv-rule);
}

.page-privacy .pv-index__list {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 24px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.page-privacy .pv-index__link {
  display: inline-block;
  padding-bottom: 4px;
  font-family: var(--ts-font-mono);
  font-size: 12px;
  letter-spacing: 0.06em;
  color: var(--ts-mist);
  text-decoration: none;
  border-bottom: 2px solid transparent;
  transition: color var(--ts-step) var(--ts-ease), border-color var(--ts-step) var(--ts-ease);
}

.page-privacy .pv-index__link:hover,
.page-privacy .pv-index__link:focus-visible {
  color: var(--ts-navy);
}

.page-privacy .pv-index__link[aria-current="true"] {
  color: var(--ts-navy);
  border-bottom-color: var(--ts-orange);
}

/* ---------- 条款主体 ---------- */

.page-privacy .pv-doc {
  padding-bottom: clamp(48px, 8vw, 96px);
}

.page-privacy .pv-clause {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  padding: clamp(28px, 5vw, 46px) 0;
  border-bottom: 1px solid var(--pv-rule);
}

.page-privacy .pv-clause__num {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  font-family: var(--ts-font-mono);
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.14em;
  color: var(--ts-copper);
  white-space: nowrap;
}

.page-privacy .pv-clause__num::after {
  content: "";
  flex: none;
  width: 34px;
  height: 2px;
  background: var(--ts-orange);
}

.page-privacy .pv-clause__body {
  min-width: 0;
}

.page-privacy .pv-clause__body h2 {
  margin: 0;
  font-family: var(--ts-font-sans);
  font-weight: 700;
  font-size: clamp(20px, 3.4vw, 26px);
  line-height: 1.25;
  letter-spacing: -0.01em;
  color: var(--ts-navy);
}

.page-privacy .pv-clause__lede {
  margin: 12px 0 0;
  max-width: 64ch;
  font-size: 15px;
  line-height: 1.65;
  color: var(--ts-mist);
}

.page-privacy .pv-list {
  margin: 20px 0 0;
  padding: 0;
  list-style: none;
  max-width: 68ch;
}

.page-privacy .pv-list li {
  position: relative;
  margin: 0 0 12px;
  padding: 0 0 0 22px;
  font-size: 15px;
  line-height: 1.7;
  color: var(--ts-graphite);
}

.page-privacy .pv-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.72em;
  width: 10px;
  height: 1px;
  background: var(--ts-copper);
}

.page-privacy .pv-list li:last-child {
  margin-bottom: 0;
}

.page-privacy .pv-list strong {
  margin-right: 6px;
  font-weight: 600;
  color: var(--ts-navy);
}

.page-privacy .pv-note {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 10px;
  margin: 22px 0 0;
  max-width: 68ch;
  font-size: 14px;
  line-height: 1.6;
  color: var(--ts-mist);
}

/* ---------- 页尾收束 ---------- */

.page-privacy .pv-outro {
  padding: clamp(36px, 6vw, 60px) 0 0;
}

.page-privacy .pv-outro__line {
  margin: 0 0 22px;
  max-width: 54ch;
  font-family: var(--ts-font-serif);
  font-size: clamp(18px, 2.6vw, 23px);
  line-height: 1.5;
  color: var(--ts-navy);
}

.page-privacy .pv-outro__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 26px;
  margin: 32px 0 0;
  padding-top: 16px;
  border-top: 1px solid var(--pv-rule);
  font-family: var(--ts-font-mono);
  font-size: 12px;
  letter-spacing: 0.04em;
  color: var(--ts-mist);
}

/* ---------- 桌面端 ---------- */

@media (min-width: 900px) {
  .page-privacy .pv-clause {
    grid-template-columns: var(--pv-num-col) minmax(0, 1fr);
    gap: 0 40px;
  }

  .page-privacy .pv-clause__num {
    display: block;
    align-self: start;
    padding-top: 8px;
  }

  .page-privacy .pv-clause__num::after {
    width: 100%;
    height: 1px;
    margin-top: 12px;
  }

  .page-privacy .pv-hero__lede {
    font-size: 17px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .page-privacy .pv-index__link {
    transition: none;
  }
}
<<<END>>>

等等——我到底要不要加 `<<<END>>>`？不行。说明里写的是严格按标记顺序输出，每个标记只能出现一次，而且必须是三个尖括号。只允许 `` 和 ``。“END”标记没有指定。让我把这一条去掉。

另外再检查一下：`.pv-note` 里的 `ts-tag--signal` —— 这是全局的，没问题。

再检查图片：只有一张，但 image_minimum 是 1、target 是 1、maximum 是 15。没问题。

检查一遍锚点 ID：pv-01 到 pv-06 都有。没问题。

检查我写过的内容里有没有被禁用的词：
- “口径”——没用。
- “边界”——没用。
- “核对”——我改成了“确认身份”。让我再在最终文本里搜一遍：“我们会在 3 个工作日内回复已保存的内容”——没问题。

等一下，我之前写的是“我们确认身份后更新”——这句没问题。

- “不提供”“不设”“本页只”——都没有。
- “不代表”——没有。
- “资料性呈现”——没有。

检查是否重复了 description 里连续 10 个字以上的片段：“说明本站收集哪些信息、用于哪些环节、保存多久，以及查询、更正与删除个人信息的申请渠道与处理时限，条款按编号分条列出。”我的正文和这句不匹配。没问题。

再检查一下 hero 导语：“当您向太阳城注册中心提交选型参数、安装场景、交付地区与联系方式时……”没问题。

再检查一下 h2 “你的权利与申请方式”和“您”的用法是否一致——required_sections 里写的是“你的权利与申请方式”。站点语气用的是“您”。我改成“您的权利与申请方式”。

这个问题我会在最终输出里修掉。

还有一点：.pv-clause__num 在 108px 的列里，桌面端 ::after 宽度 100%，也就是 108px 的线，但数字在上面？“display: block”加 font-size 13px——数字会占满整行。没问题。

再检查一下 .pv-banner 放在 .ts-container 外面——是全宽。没问题。

还有 .pv-index 的样式——我在 HTML 里用的是 `<div class="ts-container">`，里面再放 nav——很好。

再确认最后一个 section 和 .pv-doc 的底部内边距不会发生布局冲突。没问题。

移动端：没问题。

现在重新生成最终代码，把几处细节改掉。
<main id="main-content" class="page-privacy">

  <div class="ts-container">
    <nav class="ts-breadcrumb" aria-label="当前位置">
      <a href="/">首页</a>
      <span aria-hidden="true">／</span>
      <span aria-current="page">隐私声明</span>
    </nav>
  </div>

  <section class="pv-hero">
    <div class="ts-container">
      <p class="ts-eyebrow">客户资料使用说明</p>
      <h1 class="pv-hero__title">隐私声明</h1>
      <p class="ts-lede pv-hero__lede">
        当您向太阳城注册中心提交选型参数、安装场景、交付地区与联系方式时，这些内容只进入方案匹配、排产安排与到货衔接几个环节。下面按条款写清每一类信息的去向，您看完再做决定。
      </p>
    </div>
  </section>

  <figure class="pv-banner">
    <img
      class="pv-banner__img"
      src="{zhanqunpic:h:500w:1600}"
      width="1600"
      height="500"
      alt="深墨蓝底色上的细密刻度网格，一条暖色光带水平穿过画面">
  </figure>

  <div class="ts-container">

    <nav class="pv-index" data-index-nav aria-label="条款目录">
      <ul class="pv-index__list">
        <li><a class="pv-index__link" href="#pv-01">01 收集范围</a></li>
        <li><a class="pv-index__link" href="#pv-02">02 使用环节</a></li>
        <li><a class="pv-index__link" href="#pv-03">03 保存与安全</a></li>
        <li><a class="pv-index__link" href="#pv-04">04 共享与委托</a></li>
        <li><a class="pv-index__link" href="#pv-05">05 您的权利</a></li>
        <li><a class="pv-index__link" href="#pv-06">06 声明更新</a></li>
      </ul>
    </nav>

    <div class="pv-doc">

      <section class="pv-clause" id="pv-01">
        <p class="pv-clause__num">01</p>
        <div class="pv-clause__body">
          <h2>我们收集哪些信息</h2>
          <p class="pv-clause__lede">这些内容全部来自您在咨询与对接过程中的主动提交。</p>
          <ul class="pv-list">
            <li><strong>联系方式</strong>联系人称呼、电话或邮箱，用于方案沟通与到货通知。</li>
            <li><strong>选型参数</strong>安装基面类型、朝向与倾角、承重条件、运输通道宽度、并网点位置，用于匹配支架与机柜规格。</li>
            <li><strong>安装场景</strong>山地、高原、厂房屋顶或地面电站等现场情况，用于判断是否需要工程师配合交底。</li>
            <li><strong>交付地区</strong>收货省份与城市，用于安排发货仓与运输路线。</li>
            <li><strong>批量与时间要求</strong>计划数量与期望到货时间，用于排出产顺序与到货安排。</li>
            <li><strong>批次信息</strong>老客户查询进度时提供的批次号，用于调取生产与运输记录。</li>
          </ul>
          <p class="pv-note">
            <span class="ts-tag ts-tag--signal">必填</span>
            联系方式、交付地区与计划数量为必填；现场条件可以先给大致情况，后续再补齐。
          </p>
        </div>
      </section>

      <section class="pv-clause" id="pv-02">
        <p class="pv-clause__num">02</p>
        <div class="pv-clause__body">
          <h2>信息用于哪些环节</h2>
          <p class="pv-clause__lede">每一项信息都对应一个具体环节，从选型到到货各自有明确去向。</p>
          <ul class="pv-list">
            <li><strong>选型建议</strong>应用工程师依据您提交的现场条件给出规格建议书，常规在 48 小时内返回。</li>
            <li><strong>方案确认</strong>图纸、参数与数量对齐后，作为排产的起点。</li>
            <li><strong>排产与进度同步</strong>按数量分档进入生产计划，商务同事同步节点进度。</li>
            <li><strong>发货与安装衔接</strong>把收货信息交给承接该区域的安装服务商，协调进场时间。</li>
            <li><strong>售后响应</strong>凭批次号查询生产与运输记录，处理配件补发与质保事项。</li>
          </ul>
        </div>
      </section>

      <section class="pv-clause" id="pv-03">
        <p class="pv-clause__num">03</p>
        <div class="pv-clause__body">
          <h2>保存期限与安全措施</h2>
          <p class="pv-clause__lede">项目资料按固定周期清理，能接触到它的人有岗位和权限限制。</p>
          <ul class="pv-list">
            <li>项目资料自最后一次沟通起保存 3 年，到期后统一清理。</li>
            <li>纸质交底文件由商务负责人归档保管。</li>
            <li>电子资料存放在权限受控的内部系统，商务、应用工程与质检岗位按需查看，其余岗位无法调阅。</li>
            <li>系统账号一人一号，人员离岗即收回访问权限。</li>
            <li>收货信息在货物签收后 90 天内从常用联系人列表中移除。</li>
          </ul>
        </div>
      </section>

      <section class="pv-clause" id="pv-04">
        <p class="pv-clause__num">04</p>
        <div class="pv-clause__body">
          <h2>共享与委托处理</h2>
          <p class="pv-clause__lede">只有在属地交付与运输必需时才向合作方传递信息，传递前有约定约束。</p>
          <ul class="pv-list">
            <li><strong>属地交付</strong>向承接该区域的安装服务商提供收货人、到货时间与进场要求，用于安排装配。</li>
            <li><strong>运输环节</strong>承运方只获取完成配送必需的收货信息。</li>
            <li><strong>传递要求</strong>合作方在承接前签署保密约定，信息仅限本次项目使用。</li>
            <li><strong>其他情形</strong>除上述必要环节，您的资料不会流转给其他方。</li>
          </ul>
        </div>
      </section>

      <section class="pv-clause" id="pv-05">
        <p class="pv-clause__num">05</p>
        <div class="pv-clause__body">
          <h2>您的权利与申请方式</h2>
          <p class="pv-clause__lede">您随时可以就自己的资料提出查询、更正或删除，我们在收到后按固定时限回复。</p>
          <ul class="pv-list">
            <li><strong>查询</strong>写邮件到 email@taiyang-register.com.cn，注明项目名称与提交时间，我们会在 3 个工作日内回复已保存的内容。</li>
            <li><strong>更正</strong>电话或收货地址有变化，可在同一封邮件中说明新内容，我们确认身份后更新。</li>
            <li><strong>删除</strong>项目结束后可申请删除联系方式与现场资料，5 个工作日内处理完成并回复。</li>
            <li><strong>撤回</strong>不再需要跟进时告知对接同事，我们停止后续联系并清理推送名单。</li>
            <li><strong>电话申请</strong>工作日 9:00-18:00 拨打 15398401681 提出同类要求。</li>
            <li><strong>身份确认</strong>为保护资料安全，申请时请提供提交所用的电话或邮箱，以及项目所在城市。</li>
          </ul>
        </div>
      </section>

      <section class="pv-clause" id="pv-06">
        <p class="pv-clause__num">06</p>
        <div class="pv-clause__body">
          <h2>声明更新</h2>
          <p class="pv-clause__lede">业务环节发生变化时，本声明会同步修订。</p>
          <ul class="pv-list">
            <li>修订后在本页顶部标注新的版本序号，方便您分辨是否读过。</li>
            <li>涉及资料用途或保存方式的调整，会在咨询服务页面向外提示。</li>
            <li>建议您在提交新项目资料前回看一次本页。</li>
          </ul>
        </div>
      </section>

      <section class="pv-outro">
        <p class="pv-outro__line">要补齐现场条件，或者撤回已经提交的资料，直接联系我们即可。</p>
        <div class="ts-actions">
          <a class="ts-btn ts-btn--primary" href="/consult/">提交选型参数</a>
          <a class="ts-btn ts-btn--line" href="/usage/">查看使用说明</a>
        </div>
        <p class="pv-outro__meta">
          <span>本版 第 2 版</span>
          <span>本版修订涉及资料保存方式与删除申请的受理渠道</span>
        </p>
      </section>

    </div>
  </div>

</main>

.page-privacy {
  --pv-rule: rgba(15, 34, 51, 0.12);
  --pv-rule-strong: rgba(15, 34, 51, 0.22);
  --pv-num-col: 108px;

  background: var(--ts-paper);
  color: var(--ts-graphite);
  font-family: var(--ts-font-sans);
  font-size: 16px;
  line-height: 1.6;
}

.page-privacy .ts-breadcrumb {
  padding-top: clamp(20px, 4vw, 40px);
}

/* ---------- 页首 ---------- */

.page-privacy .pv-hero {
  padding: clamp(22px, 4.5vw, 44px) 0 clamp(26px, 5vw, 50px);
}

.page-privacy .pv-hero__title {
  margin: 14px 0 0;
  font-family: var(--ts-font-sans);
  font-weight: 800;
  font-size: clamp(34px, 8vw, 56px);
  line-height: 1.04;
  letter-spacing: -0.02em;
  color: var(--ts-navy);
}

.page-privacy .pv-hero__lede {
  margin: 20px 0 0;
  max-width: 62ch;
  font-size: 16px;
  line-height: 1.65;
  color: var(--ts-graphite);
}

/* ---------- 横幅 ---------- */

.page-privacy .pv-banner {
  margin: 0;
  background: var(--ts-navy);
  border-top: 1px solid var(--pv-rule-strong);
  border-bottom: 1px solid var(--pv-rule-strong);
}

.page-privacy .pv-banner__img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  aspect-ratio: 16 / 5;
  object-fit: cover;
}

/* ---------- 条款目录 ---------- */

.page-privacy .pv-index {
  padding: clamp(16px, 3vw, 24px) 0;
  border-bottom: 1px solid var(--pv-rule);
}

.page-privacy .pv-index__list {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 24px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.page-privacy .pv-index__link {
  display: inline-block;
  padding-bottom: 4px;
  font-family: var(--ts-font-mono);
  font-size: 12px;
  letter-spacing: 0.06em;
  color: var(--ts-mist);
  text-decoration: none;
  border-bottom: 2px solid transparent;
  transition: color var(--ts-step) var(--ts-ease), border-color var(--ts-step) var(--ts-ease);
}

.page-privacy .pv-index__link:hover,
.page-privacy .pv-index__link:focus-visible {
  color: var(--ts-navy);
}

.page-privacy .pv-index__link[aria-current="true"] {
  color: var(--ts-navy);
  border-bottom-color: var(--ts-orange);
}

/* ---------- 条款主体 ---------- */

.page-privacy .pv-doc {
  padding-bottom: clamp(48px, 8vw, 96px);
}

.page-privacy .pv-clause {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  padding: clamp(28px, 5vw, 46px) 0;
  border-bottom: 1px solid var(--pv-rule);
}

.page-privacy .pv-clause__num {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  font-family: var(--ts-font-mono);
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.14em;
  color: var(--ts-copper);
  white-space: nowrap;
}

.page-privacy .pv-clause__num::after {
  content: "";
  flex: none;
  width: 34px;
  height: 2px;
  background: var(--ts-orange);
}

.page-privacy .pv-clause__body {
  min-width: 0;
}

.page-privacy .pv-clause__body h2 {
  margin: 0;
  font-family: var(--ts-font-sans);
  font-weight: 700;
  font-size: clamp(20px, 3.4vw, 26px);
  line-height: 1.25;
  letter-spacing: -0.01em;
  color: var(--ts-navy);
}

.page-privacy .pv-clause__lede {
  margin: 12px 0 0;
  max-width: 64ch;
  font-size: 15px;
  line-height: 1.65;
  color: var(--ts-mist);
}

.page-privacy .pv-list {
  margin: 20px 0 0;
  padding: 0;
  list-style: none;
  max-width: 68ch;
}

.page-privacy .pv-list li {
  position: relative;
  margin: 0 0 12px;
  padding: 0 0 0 22px;
  font-size: 15px;
  line-height: 1.7;
  color: var(--ts-graphite);
}

.page-privacy .pv-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.72em;
  width: 10px;
  height: 1px;
  background: var(--ts-copper);
}

.page-privacy .pv-list li:last-child {
  margin-bottom: 0;
}

.page-privacy .pv-list strong {
  margin-right: 6px;
  font-weight: 600;
  color: var(--ts-navy);
}

.page-privacy .pv-note {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 10px;
  margin: 22px 0 0;
  max-width: 68ch;
  font-size: 14px;
  line-height: 1.6;
  color: var(--ts-mist);
}

/* ---------- 页尾收束 ---------- */

.page-privacy .pv-outro {
  padding: clamp(36px, 6vw, 60px) 0 0;
}

.page-privacy .pv-outro__line {
  margin: 0 0 22px;
  max-width: 54ch;
  font-family: var(--ts-font-serif);
  font-size: clamp(18px, 2.6vw, 23px);
  line-height: 1.5;
  color: var(--ts-navy);
}

.page-privacy .pv-outro__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 26px;
  margin: 32px 0 0;
  padding-top: 16px;
  border-top: 1px solid var(--pv-rule);
  font-family: var(--ts-font-mono);
  font-size: 12px;
  letter-spacing: 0.04em;
  color: var(--ts-mist);
}

/* ---------- 桌面端 ---------- */

@media (min-width: 900px) {
  .page-privacy .pv-clause {
    grid-template-columns: var(--pv-num-col) minmax(0, 1fr);
    gap: 0 40px;
  }

  .page-privacy .pv-clause__num {
    display: block;
    align-self: start;
    padding-top: 8px;
  }

  .page-privacy .pv-clause__num::after {
    width: 100%;
    height: 1px;
    margin-top: 12px;
  }

  .page-privacy .pv-hero__lede {
    font-size: 17px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .page-privacy .pv-index__link {
    transition: none;
  }
}
