diff --git a/devops/.figma-hydt-banner-api.json b/devops/.figma-hydt-banner-api.json
new file mode 100644
index 0000000..b3aa4eb
--- /dev/null
+++ b/devops/.figma-hydt-banner-api.json
@@ -0,0 +1,479 @@
+{
+ "name": "碳信网-正式设计稿",
+ "lastModified": "2026-05-23T10:49:08Z",
+ "thumbnailUrl": "https://s3-alpha.figma.com/thumbnails/61f20188-408f-4871-98c7-92cf0c72d7d6?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=AKIAQ4GOSFWCUPUXLFMB%2F20260521%2Fus-west-2%2Fs3%2Faws4_request\u0026X-Amz-Date=20260521T000000Z\u0026X-Amz-Expires=604800\u0026X-Amz-SignedHeaders=host\u0026X-Amz-Signature=b67e1be98b6a995b838bd4659abe85ac296d99ccc5ebb6f9bec5dec64cdd8d34",
+ "version": "2356712417208056783",
+ "role": "editor",
+ "editorType": "figma",
+ "linkAccess": "view",
+ "nodes": {
+ "150622:19115": {
+ "document": {
+ "id": "150622:19115",
+ "name": "banner-bg",
+ "type": "FRAME",
+ "scrollBehavior": "SCROLLS",
+ "children": [
+ {
+ "id": "150622:19116",
+ "name": "轮播背景",
+ "visible": false,
+ "type": "GROUP",
+ "scrollBehavior": "SCROLLS",
+ "children": [
+ {
+ "id": "150622:19117",
+ "name": "轮播图",
+ "visible": false,
+ "type": "RECTANGLE",
+ "scrollBehavior": "SCROLLS",
+ "blendMode": "PASS_THROUGH",
+ "fills": [
+ "@{blendMode=NORMAL; type=IMAGE; scaleMode=FILL; imageRef=58751fea63b49a07308d7b2b993b5637578504f1}",
+ "@{blendMode=NORMAL; visible=False; type=GRADIENT_LINEAR; gradientHandlePositions=System.Object[]; gradientStops=System.Object[]}"
+ ],
+ "strokes": [
+
+ ],
+ "strokeWeight": 1.0,
+ "strokeAlign": "INSIDE",
+ "absoluteBoundingBox": {
+ "x": -5750.6093750,
+ "y": 2851.3713378906250,
+ "width": 725.21246337890625,
+ "height": 237.960449218750
+ },
+ "absoluteRenderBounds": null,
+ "preserveRatio": true,
+ "targetAspectRatio": {
+ "x": 1920.0,
+ "y": 630.0
+ },
+ "constraints": {
+ "vertical": "CENTER",
+ "horizontal": "CENTER"
+ },
+ "effects": [
+
+ ],
+ "interactions": [
+
+ ],
+ "complexStrokeProperties": {
+ "strokeType": "BASIC"
+ }
+ },
+ {
+ "id": "150622:19118",
+ "name": "图层 1 1",
+ "type": "RECTANGLE",
+ "scrollBehavior": "SCROLLS",
+ "blendMode": "PASS_THROUGH",
+ "fills": [
+ "@{blendMode=NORMAL; type=IMAGE; scaleMode=FIT; imageRef=1846bf7c8552900a6aa81501b26c6bd000a6b090}"
+ ],
+ "strokes": [
+
+ ],
+ "strokeWeight": 1.0,
+ "strokeAlign": "INSIDE",
+ "absoluteBoundingBox": {
+ "x": -5783.0,
+ "y": 2828.0,
+ "width": 1440.0,
+ "height": 617.0
+ },
+ "absoluteRenderBounds": null,
+ "preserveRatio": true,
+ "targetAspectRatio": {
+ "x": 4096.0,
+ "y": 1755.0
+ },
+ "constraints": {
+ "vertical": "TOP",
+ "horizontal": "LEFT"
+ },
+ "effects": [
+
+ ],
+ "interactions": [
+
+ ],
+ "complexStrokeProperties": {
+ "strokeType": "BASIC"
+ }
+ },
+ {
+ "id": "150622:19119",
+ "name": "image 68",
+ "type": "RECTANGLE",
+ "scrollBehavior": "SCROLLS",
+ "blendMode": "PASS_THROUGH",
+ "fills": [
+ "@{blendMode=NORMAL; type=IMAGE; scaleMode=FILL; imageRef=f93f77317801ca8cd07e66f0aee7b2c6966f4e79}"
+ ],
+ "strokes": [
+
+ ],
+ "strokeWeight": 1.0,
+ "strokeAlign": "INSIDE",
+ "absoluteBoundingBox": {
+ "x": -5783.0,
+ "y": 2837.0,
+ "width": 1440.0,
+ "height": 450.0
+ },
+ "absoluteRenderBounds": null,
+ "preserveRatio": true,
+ "targetAspectRatio": {
+ "x": 1200.0,
+ "y": 375.0
+ },
+ "constraints": {
+ "vertical": "TOP",
+ "horizontal": "LEFT"
+ },
+ "effects": [
+
+ ],
+ "interactions": [
+
+ ],
+ "complexStrokeProperties": {
+ "strokeType": "BASIC"
+ }
+ }
+ ],
+ "blendMode": "PASS_THROUGH",
+ "clipsContent": false,
+ "background": [
+
+ ],
+ "fills": [
+
+ ],
+ "strokes": [
+
+ ],
+ "strokeWeight": 1.0,
+ "strokeAlign": "INSIDE",
+ "backgroundColor": {
+ "r": 0.0,
+ "g": 0.0,
+ "b": 0.0,
+ "a": 0.0
+ },
+ "absoluteBoundingBox": {
+ "x": -5783.0,
+ "y": 2828.0,
+ "width": 1440.0,
+ "height": 617.0
+ },
+ "absoluteRenderBounds": null,
+ "targetAspectRatio": {
+ "x": 1440.0,
+ "y": 617.0
+ },
+ "constraints": {
+ "vertical": "TOP",
+ "horizontal": "CENTER"
+ },
+ "layoutAlign": "INHERIT",
+ "layoutGrow": 0.0,
+ "layoutPositioning": "ABSOLUTE",
+ "layoutSizingHorizontal": "FIXED",
+ "layoutSizingVertical": "FIXED",
+ "exportSettings": [
+ {
+ "suffix": "",
+ "format": "PNG",
+ "constraint": {
+ "type": "SCALE",
+ "value": 1.0
+ }
+ },
+ {
+ "suffix": "@2x",
+ "format": "PNG",
+ "constraint": {
+ "type": "SCALE",
+ "value": 2.0
+ }
+ }
+ ],
+ "effects": [
+
+ ],
+ "interactions": [
+
+ ],
+ "complexStrokeProperties": {
+ "strokeType": "BASIC"
+ }
+ },
+ {
+ "id": "150622:19144",
+ "name": "Frame 299",
+ "type": "FRAME",
+ "scrollBehavior": "SCROLLS",
+ "children": [
+ {
+ "id": "150622:19151",
+ "name": "Frame 300",
+ "type": "FRAME",
+ "scrollBehavior": "SCROLLS",
+ "children": [
+ "@{id=150660:3096; name=Frame 330; type=FRAME; scrollBehavior=SCROLLS; children=System.Object[]; blendMode=PASS_THROUGH; clipsContent=False; background=System.Object[]; fills=System.Object[]; strokes=System.Object[]; strokeWeight=1.0; strokeAlign=INSIDE; backgroundColor=; layoutMode=HORIZONTAL; counterAxisAlignItems=CENTER; primaryAxisAlignItems=CENTER; layoutWrap=NO_WRAP; absoluteBoundingBox=; absoluteRenderBounds=; constraints=; layoutAlign=INHERIT; layoutGrow=0.0; layoutSizingHorizontal=HUG; layoutSizingVertical=HUG; effects=System.Object[]; interactions=System.Object[]; complexStrokeProperties=}"
+ ],
+ "blendMode": "PASS_THROUGH",
+ "clipsContent": false,
+ "background": [
+
+ ],
+ "fills": [
+
+ ],
+ "strokes": [
+
+ ],
+ "strokeWeight": 1.0,
+ "strokeAlign": "INSIDE",
+ "backgroundColor": {
+ "r": 0.0,
+ "g": 0.0,
+ "b": 0.0,
+ "a": 0.0
+ },
+ "layoutMode": "HORIZONTAL",
+ "primaryAxisSizingMode": "FIXED",
+ "counterAxisAlignItems": "CENTER",
+ "itemSpacing": 10.0,
+ "layoutWrap": "NO_WRAP",
+ "absoluteBoundingBox": {
+ "x": -5663.0,
+ "y": 2887.0,
+ "width": 1200.0,
+ "height": 18.0
+ },
+ "absoluteRenderBounds": {
+ "x": -5663.0,
+ "y": 2887.0,
+ "width": 1200.0,
+ "height": 18.0
+ },
+ "constraints": {
+ "vertical": "TOP",
+ "horizontal": "LEFT"
+ },
+ "layoutAlign": "STRETCH",
+ "layoutGrow": 0.0,
+ "layoutSizingHorizontal": "FILL",
+ "layoutSizingVertical": "HUG",
+ "effects": [
+
+ ],
+ "interactions": [
+
+ ],
+ "complexStrokeProperties": {
+ "strokeType": "BASIC"
+ }
+ },
+ {
+ "id": "150622:19120",
+ "name": "title",
+ "type": "FRAME",
+ "scrollBehavior": "SCROLLS",
+ "children": [
+ "@{id=150622:19121; name=Frame 289; type=FRAME; scrollBehavior=SCROLLS; children=System.Object[]; blendMode=PASS_THROUGH; clipsContent=False; background=System.Object[]; fills=System.Object[]; strokes=System.Object[]; strokeWeight=1.0; individualStrokeWeights=; strokeAlign=INSIDE; backgroundColor=; layoutMode=HORIZONTAL; counterAxisAlignItems=CENTER; primaryAxisAlignItems=CENTER; paddingBottom=20.0; layoutWrap=NO_WRAP; absoluteBoundingBox=; absoluteRenderBounds=; constraints=; layoutAlign=INHERIT; layoutGrow=0.0; layoutSizingHorizontal=HUG; layoutSizingVertical=HUG; effects=System.Object[]; interactions=System.Object[]; complexStrokeProperties=}",
+ "@{id=150622:19123; name=动态; type=TEXT; scrollBehavior=SCROLLS; blendMode=PASS_THROUGH; fills=System.Object[]; strokes=System.Object[]; strokeWeight=2.0; strokeAlign=OUTSIDE; absoluteBoundingBox=; absoluteRenderBounds=; constraints=; layoutAlign=INHERIT; layoutGrow=0.0; layoutSizingHorizontal=HUG; layoutSizingVertical=HUG; characters=动态; characterStyleOverrides=System.Object[]; styleOverrideTable=; lineTypes=System.Object[]; lineIndentations=System.Object[]; style=; layoutVersion=5; effects=System.Object[]; interactions=System.Object[]; complexStrokeProperties=}"
+ ],
+ "blendMode": "PASS_THROUGH",
+ "clipsContent": false,
+ "background": [
+
+ ],
+ "fills": [
+
+ ],
+ "strokes": [
+
+ ],
+ "strokeWeight": 1.0,
+ "strokeAlign": "INSIDE",
+ "backgroundColor": {
+ "r": 0.0,
+ "g": 0.0,
+ "b": 0.0,
+ "a": 0.0
+ },
+ "layoutMode": "HORIZONTAL",
+ "primaryAxisSizingMode": "FIXED",
+ "paddingTop": 20.0,
+ "paddingBottom": 20.0,
+ "layoutWrap": "NO_WRAP",
+ "absoluteBoundingBox": {
+ "x": -5663.0,
+ "y": 2971.0,
+ "width": 1300.0,
+ "height": 128.0
+ },
+ "absoluteRenderBounds": {
+ "x": -5663.0,
+ "y": 2971.0,
+ "width": 1300.0,
+ "height": 128.0
+ },
+ "constraints": {
+ "vertical": "TOP",
+ "horizontal": "LEFT"
+ },
+ "layoutAlign": "INHERIT",
+ "layoutGrow": 0.0,
+ "layoutSizingHorizontal": "FIXED",
+ "layoutSizingVertical": "HUG",
+ "effects": [
+
+ ],
+ "interactions": [
+
+ ],
+ "complexStrokeProperties": {
+ "strokeType": "BASIC"
+ }
+ }
+ ],
+ "blendMode": "PASS_THROUGH",
+ "clipsContent": false,
+ "background": [
+
+ ],
+ "fills": [
+
+ ],
+ "strokes": [
+
+ ],
+ "strokeWeight": 1.0,
+ "strokeAlign": "INSIDE",
+ "backgroundColor": {
+ "r": 0.0,
+ "g": 0.0,
+ "b": 0.0,
+ "a": 0.0
+ },
+ "layoutMode": "VERTICAL",
+ "counterAxisSizingMode": "FIXED",
+ "itemSpacing": 66.0,
+ "layoutWrap": "NO_WRAP",
+ "absoluteBoundingBox": {
+ "x": -5663.0,
+ "y": 2887.0,
+ "width": 1200.0,
+ "height": 212.0
+ },
+ "absoluteRenderBounds": {
+ "x": -5663.0,
+ "y": 2887.0,
+ "width": 1300.0,
+ "height": 212.0
+ },
+ "constraints": {
+ "vertical": "TOP",
+ "horizontal": "LEFT"
+ },
+ "layoutAlign": "INHERIT",
+ "layoutGrow": 0.0,
+ "layoutSizingHorizontal": "FIXED",
+ "layoutSizingVertical": "HUG",
+ "effects": [
+
+ ],
+ "interactions": [
+
+ ],
+ "complexStrokeProperties": {
+ "strokeType": "BASIC"
+ }
+ }
+ ],
+ "blendMode": "PASS_THROUGH",
+ "clipsContent": true,
+ "background": [
+ {
+ "blendMode": "NORMAL",
+ "type": "IMAGE",
+ "scaleMode": "FILL",
+ "imageRef": "ec2e3dd7712a18b5bc9453353f13d8202930c6bd"
+ }
+ ],
+ "fills": [
+ {
+ "blendMode": "NORMAL",
+ "type": "IMAGE",
+ "scaleMode": "FILL",
+ "imageRef": "ec2e3dd7712a18b5bc9453353f13d8202930c6bd"
+ }
+ ],
+ "strokes": [
+
+ ],
+ "strokeWeight": 1.0,
+ "strokeAlign": "INSIDE",
+ "backgroundColor": {
+ "r": 0.0,
+ "g": 0.0,
+ "b": 0.0,
+ "a": 0.0
+ },
+ "layoutMode": "VERTICAL",
+ "counterAxisSizingMode": "FIXED",
+ "primaryAxisSizingMode": "FIXED",
+ "counterAxisAlignItems": "CENTER",
+ "paddingLeft": 286.0,
+ "paddingRight": 286.0,
+ "paddingTop": 24.0,
+ "paddingBottom": 75.0,
+ "itemSpacing": 10.0,
+ "layoutWrap": "NO_WRAP",
+ "absoluteBoundingBox": {
+ "x": -5783.0,
+ "y": 2863.0,
+ "width": 1440.0,
+ "height": 350.0
+ },
+ "absoluteRenderBounds": {
+ "x": -5783.0,
+ "y": 2863.0,
+ "width": 1440.0,
+ "height": 350.0
+ },
+ "constraints": {
+ "vertical": "TOP",
+ "horizontal": "LEFT"
+ },
+ "layoutSizingHorizontal": "FIXED",
+ "layoutSizingVertical": "FIXED",
+ "effects": [
+
+ ],
+ "interactions": [
+
+ ],
+ "complexStrokeProperties": {
+ "strokeType": "BASIC"
+ }
+ },
+ "components": {
+
+ },
+ "componentSets": {
+
+ },
+ "schemaVersion": 0,
+ "styles": {
+
+ }
+ }
+ }
+}
diff --git a/devops/.figma-hyzt-banner-api.json b/devops/.figma-hyzt-banner-api.json
new file mode 100644
index 0000000..e69de29
diff --git a/devops/.figma-hyzt-fresh.json b/devops/.figma-hyzt-fresh.json
new file mode 100644
index 0000000..365ea98
--- /dev/null
+++ b/devops/.figma-hyzt-fresh.json
@@ -0,0 +1,7 @@
+C:\nvm4w\nodejs\npx.cmd : Invalid URL
+所在位置 C:\Users\23721\AppData\Local\Temp\ps-script-5862c083-c1f6-43bc-823a-aa3dea431e6c.ps1:114 字符: 143
++ ... I_KEY=',''; C:\nvm4w\nodejs\npx.cmd -y figma-developer-mcp fetch --en ...
++ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ + CategoryInfo : NotSpecified: (Invalid URL:String) [], RemoteException
+ + FullyQualifiedErrorId : NativeCommandError
+
diff --git a/docs/superpowers/plans/2026-04-22-gxzx-migration-plan.md b/docs/superpowers/plans/2026-04-22-gxzx-migration-plan.md
deleted file mode 100644
index 0dd9fd2..0000000
--- a/docs/superpowers/plans/2026-04-22-gxzx-migration-plan.md
+++ /dev/null
@@ -1,280 +0,0 @@
-# gxzx 服务迁移至 mhzc - 完整执行方案
-
-> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
-
-**Goal:** 将 `txw-gxzx` 微服务(供需大厅/绿色金融/绿色交易/企业入驻)的全部代码和数据库迁移到 `txw-mhzc` 服务
-
-**Architecture:** 代码迁移采用"整体迁移+批量修改包名"的策略,先迁移文件再统一修改import;数据库采用"目标库创建表+数据同步"的方案
-
-**Tech Stack:** Java/Spring Boot, MyBatis, MySQL/达梦数据库, Maven多模块
-
----
-
-## 一、文件迁移清单(共62个文件)
-
-### 1.1 Controller层(4个)
-
-| # | 源文件 | 目标路径 |
-|---|--------|----------|
-| 1 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/controller/GxdtController.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/controller/gxzx/GxdtController.java` |
-| 2 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/controller/LsjrController.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/controller/gxzx/LsjrController.java` |
-| 3 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/controller/LsjyController.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/controller/gxzx/LsjyController.java` |
-| 4 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/controller/QyRzController.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/controller/gxzx/QyRzController.java` |
-
-### 1.2 Service接口层(10个)
-
-| # | 源文件 | 目标路径 |
-|---|--------|----------|
-| 5 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/TxwGxzxGxbqbService.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/TxwGxzxGxbqbService.java` |
-| 6 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/TxwGxzxGxscbService.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/TxwGxzxGxscbService.java` |
-| 7 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/TxwGxzxGxxxbService.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/TxwGxzxGxxxbService.java` |
-| 8 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/TxwGxzxQybqbService.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/TxwGxzxQybqbService.java` |
-| 9 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/TxwGxzxRzsqjlbService.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/TxwGxzxRzsqjlbService.java` |
-| 10 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/TxwGxzxShqkbService.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/TxwGxzxShqkbService.java` |
-| 11 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/lsjr/GxzxDkbxsqxxService.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjr/GxzxDkbxsqxxService.java` |
-| 12 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/lsjr/GxzxLsjrService.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjr/GxzxLsjrService.java` |
-| 13 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/lsjr/GxzxLsjrcpxxService.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjr/GxzxLsjrcpxxService.java` |
-| 14 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/lsjy/GxzxLsjyZcxxService.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjy/GxzxLsjyZcxxService.java` |
-
-### 1.3 Service实现层(10个)
-
-| # | 源文件 | 目标路径 |
-|---|--------|----------|
-| 15 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/impl/TxwGxzxGxbqbServiceImpl.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/impl/TxwGxzxGxbqbServiceImpl.java` |
-| 16 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/impl/TxwGxzxGxscbServiceImpl.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/impl/TxwGxzxGxscbServiceImpl.java` |
-| 17 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/impl/TxwGxzxGxxxbServiceImpl.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/impl/TxwGxzxGxxxbServiceImpl.java` |
-| 18 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/impl/TxwGxzxQybqbServiceImpl.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/impl/TxwGxzxQybqbServiceImpl.java` |
-| 19 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/impl/TxwGxzxRzsqjlbServiceImpl.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/impl/TxwGxzxRzsqjlbServiceImpl.java` |
-| 20 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/impl/TxwGxzxShqkbServiceImpl.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/impl/TxwGxzxShqkbServiceImpl.java` |
-| 21 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/lsjr/impl/GxzxDkbxsqxxServiceImpl.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjr/impl/GxzxDkbxsqxxServiceImpl.java` |
-| 22 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/lsjr/impl/GxzxLsjrcpxxServiceImpl.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjr/impl/GxzxLsjrcpxxServiceImpl.java` |
-| 23 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/lsjr/impl/GxzxLsjrServiceImpl.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjr/impl/GxzxLsjrServiceImpl.java` |
-| 24 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/lsjy/impl/GxzxLsjyZcxxServiceImpl.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjy/impl/GxzxLsjyZcxxServiceImpl.java` |
-
-### 1.4 Mapper接口层(9个)
-
-| # | 源文件 | 目标路径 |
-|---|--------|----------|
-| 25 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/TxwGxzxGxbqbMapper.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/TxwGxzxGxbqbMapper.java` |
-| 26 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/TxwGxzxGxscbMapper.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/TxwGxzxGxscbMapper.java` |
-| 27 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/TxwGxzxGxxxbMapper.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/TxwGxzxGxxxbMapper.java` |
-| 28 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/TxwGxzxQybqbMapper.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/TxwGxzxQybqbMapper.java` |
-| 29 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/TxwGxzxRzsqjlbMapper.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/TxwGxzxRzsqjlbMapper.java` |
-| 30 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/TxwGxzxShqkbMapper.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/TxwGxzxShqkbMapper.java` |
-| 31 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/lsjr/GxzxDkbxsqxxMapper.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/lsjr/GxzxDkbxsqxxMapper.java` |
-| 32 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/lsjr/GxzxLsjrcpxxMapper.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/lsjr/GxzxLsjrcpxxMapper.java` |
-| 33 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/lsjy/GxzxLsjyZcxxMapper.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/lsjy/GxzxLsjyZcxxMapper.java` |
-
-### 1.5 Domain层(6个)
-
-| # | 源文件 | 目标路径 |
-|---|--------|----------|
-| 34 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/domain/TxwGxzxGxbqbDO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/gxzx/TxwGxzxGxbqbDO.java` |
-| 35 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/domain/TxwGxzxGxscbDO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/gxzx/TxwGxzxGxscbDO.java` |
-| 36 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/domain/TxwGxzxGxxxbDO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/gxzx/TxwGxzxGxxxbDO.java` |
-| 37 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/domain/TxwGxzxQybqbDO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/gxzx/TxwGxzxQybqbDO.java` |
-| 38 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/domain/TxwGxzxRzsqjlbDO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/gxzx/TxwGxzxRzsqjlbDO.java` |
-| 39 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/domain/TxwGxzxShqkbDO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/gxzx/TxwGxzxShqkbDO.java` |
-
-### 1.6 VO层(13个)
-
-| # | 源文件 | 目标路径 |
-|---|--------|----------|
-| 40 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/GetGxSqListReqVO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/GetGxSqListReqVO.java` |
-| 41 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/GxfbReqVO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/GxfbReqVO.java` |
-| 42 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/GxscReqVO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/GxscReqVO.java` |
-| 43 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/GxsjReqVO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/GxsjReqVO.java` |
-| 44 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/GxspReqVO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/GxspReqVO.java` |
-| 45 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/GxsqResVO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/GxsqResVO.java` |
-| 46 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/GxxxReqVO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/GxxxReqVO.java` |
-| 47 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/GxxxVO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/GxxxVO.java` |
-| 48 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/QyrzListReqVO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/QyrzListReqVO.java` |
-| 49 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/QyRzSpReqVO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/QyRzSpReqVO.java` |
-| 50 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/QyRzSqReqVO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/QyRzSqReqVO.java` |
-| 51 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/QyRzSqxxVO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/QyRzSqxxVO.java` |
-| 52 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/ShqkxxVO.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/ShqkxxVO.java` |
-
-### 1.7 Dto层(1个)
-
-| # | 源文件 | 目标路径 |
-|---|--------|----------|
-| 53 | `txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/dto/GxzxLsjrcpImportDto.java` | `txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/dto/gxzx/GxzxLsjrcpImportDto.java` |
-
-### 1.8 Mapper XML层(9个)
-
-| # | 源文件 | 目标路径 |
-|---|--------|----------|
-| 54 | `txw-gxzx-service-biz/src/main/resources/mapper/TxwGxzxGxbqbMapper.xml` | `txw-mhzc-service-biz/src/main/resources/mapper/gxzx/TxwGxzxGxbqbMapper.xml` |
-| 55 | `txw-gxzx-service-biz/src/main/resources/mapper/TxwGxzxGxscbMapper.xml` | `txw-mhzc-service-biz/src/main/resources/mapper/gxzx/TxwGxzxGxscbMapper.xml` |
-| 56 | `txw-gxzx-service-biz/src/main/resources/mapper/TxwGxzxGxxxbMapper.xml` | `txw-mhzc-service-biz/src/main/resources/mapper/gxzx/TxwGxzxGxxxbMapper.xml` |
-| 57 | `txw-gxzx-service-biz/src/main/resources/mapper/TxwGxzxQybqbMapper.xml` | `txw-mhzc-service-biz/src/main/resources/mapper/gxzx/TxwGxzxQybqbMapper.xml` |
-| 58 | `txw-gxzx-service-biz/src/main/resources/mapper/TxwGxzxRzsqjlbMapper.xml` | `txw-mhzc-service-biz/src/main/resources/mapper/gxzx/TxwGxzxRzsqjlbMapper.xml` |
-| 59 | `txw-gxzx-service-biz/src/main/resources/mapper/TxwGxzxShqkbMapper.xml` | `txw-mhzc-service-biz/src/main/resources/mapper/gxzx/TxwGxzxShqkbMapper.xml` |
-| 60 | `txw-gxzx-service-biz/src/main/resources/mapper/lsjr/GxzxDkbxsqxxMapper.xml` | `txw-mhzc-service-biz/src/main/resources/mapper/gxzx/lsjr/GxzxDkbxsqxxMapper.xml` |
-| 61 | `txw-gxzx-service-biz/src/main/resources/mapper/lsjr/GxzxLsjrcpxxMapper.xml` | `txw-mhzc-service-biz/src/main/resources/mapper/gxzx/lsjr/GxzxLsjrcpxxMapper.xml` |
-| 62 | `txw-gxzx-service-biz/src/main/resources/mapper/lsjy/GxzxLsjyZcxxMapper.xml` | `txw-mhzc-service-biz/src/main/resources/mapper/gxzx/lsjy/GxzxLsjyZcxxMapper.xml` |
-
----
-
-## 二、数据库表(9张)
-
-| # | 表名 | 说明 |
-|---|------|------|
-| 1 | `txw_gxzx_gxxxb` | 供需信息表 |
-| 2 | `txw_gxzx_shqkb` | 审核情况表 |
-| 3 | `txw_gxzx_gxscb` | 供需收藏表 |
-| 4 | `txw_gxzx_gxbqb` | 供需标签表 |
-| 5 | `txw_gxzx_qybqb` | 企业标签表 |
-| 6 | `txw_gxzx_rzsqjlb` | 入驻申请记录表 |
-| 7 | `txw_gxzx_lsjrcpxx` | 绿色金融产品信息表 |
-| 8 | `txw_gxzx_dkbxsqxx` | 贷款保险申请信息表 |
-| 9 | `txw_gxzx_lsjy_zcxx` | 绿色交易资产信息表 |
-
----
-
-## 三、执行步骤
-
-### Phase 1: 数据库迁移(生产环境执行)
-
-- [ ] 3.1 备份原库 gxzx 相关9张表
-- [ ] 3.2 在 mhzc 库创建目标表
-- [ ] 3.3 迁移数据
-- [ ] 3.4 验证数据完整性
-
-### Phase 2: 代码迁移(开发环境执行)
-
-#### 目录创建
-- [ ] 3.5 创建目标目录结构
-
-#### 文件迁移(按层级)
-- [ ] 3.6 迁移 Domain 层(6个文件)
-- [ ] 3.7 迁移 VO/Req 层(14个文件)
-- [ ] 3.8 迁移 Mapper 接口层(9个文件)
-- [ ] 3.9 迁移 Mapper XML 层(9个文件)
-- [ ] 3.10 迁移 Service 接口层(10个文件)
-- [ ] 3.11 迁移 Service 实现层(10个文件)
-- [ ] 3.12 迁移 Controller 层(4个文件)
-
-#### 包名修改
-- [ ] 3.13 修改所有文件的 package 声明
-- [ ] 3.14 修改所有文件的 import 语句
-
-### Phase 3: 配置更新
-- [ ] 3.15 更新 MapperScan 配置
-- [ ] 3.16 检查 pom.xml 依赖
-
-### Phase 4: 编译验证
-- [ ] 3.17 编译验证
-- [ ] 3.18 启动测试
-
----
-
-## 四、生产环境升级步骤(详细)
-
-### 4.1 升级前准备
-
-```bash
-# 1. 备份数据库
-mysqldump -h host -u user -p gxzx_db txw_gxzx_gxxxb txw_gxzx_shqkb txw_gxzx_gxscb txw_gxzx_gxbqb txw_gxzx_qybqb txw_gxzx_rzsqjlb txw_gxzx_lsjrcpxx txw_gxzx_dkbxsqxx txw_gxzx_lsjy_zcxx > gxzx_backup_$(date +%Y%m%d).sql
-
-# 2. 确认 mhzc 服务最新代码已部署
-# 3. 通知相关团队停机维护时间窗口
-```
-
-### 4.2 数据迁移
-
-```sql
--- 在 mhzc 数据库执行
--- 1. 创建表(DDL 从 gxzx 库导出)
-CREATE TABLE txw_gxzx_gxxxb LIKE gxzx_db.txw_gxzx_gxxxb;
-CREATE TABLE txw_gxzx_shqkb LIKE gxzx_db.txw_gxzx_shqkb;
--- ... 其他7张表同理
-
--- 2. 数据迁移
-INSERT INTO mhzc_db.txw_gxzx_gxxxb SELECT * FROM gxzx_db.txw_gxzx_gxxxb;
-INSERT INTO mhzc_db.txw_gxzx_shqkb SELECT * FROM gxzx_db.txw_gxzx_shqkb;
--- ... 其他7张表同理
-
--- 3. 验证
-SELECT COUNT(*) FROM txw_gxzx_gxxxb; -- 源库和目标库应该一致
-SELECT COUNT(*) FROM txw_gxzx_shqkb;
--- ... 其他表验证
-```
-
-### 4.3 应用部署
-
-```bash
-# 1. 停止 gxzx 服务
-# 2. 部署新 mhzc 服务(包含 gxzx 代码)
-# 3. 启动 mhzc 服务
-# 4. 验证接口
-```
-
----
-
-## 五、回滚方案
-
-如果迁移失败,执行以下回滚:
-
-```sql
--- 恢复原状
--- 1. 停止 mhzc 服务
--- 2. 恢复 gxzx 服务
--- 3. 如果需要,回滚数据库
-DROP TABLE IF EXISTS mhzc_db.txw_gxzx_gxxxb;
--- 使用备份恢复
-```
-
----
-
-## 六、验证清单
-
-| # | 验证项 | 验证方法 |
-|---|--------|----------|
-| 1 | 数据库表记录数一致 | `SELECT COUNT(*) FROM txw_gxzx_gxxxb` 对比 |
-| 2 | Controller 注入正常 | 启动应用无报错 |
-| 3 | 接口路径可访问 | `curl http://mhzc:9002/gxdt/gxxxList` |
-| 4 | 供需发布功能正常 | 实际测试发布流程 |
-| 5 | 绿色金融功能正常 | 测试信贷/保险产品查询 |
-| 6 | 企业入驻功能正常 | 测试入驻申请流程 |
-| 7 | 搜索服务聚合供需 | 调用搜索接口验证 |
-
----
-
-## 七、文件变更汇总
-
-### 新增目录
-```
-txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/controller/gxzx/
-txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/impl/
-txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjr/impl/
-txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjy/impl/
-txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/lsjr/
-txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/lsjy/
-txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/gxzx/
-txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/
-txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/dto/gxzx/
-txw-mhzc-service-biz/src/main/resources/mapper/gxzx/lsjr/
-txw-mhzc-service-biz/src/main/resources/mapper/gxzx/lsjy/
-```
-
-### 修改文件
-```
-txw-mhzc/pom.xml(可能需要新增依赖)
-txw-mhzc/.../MhzcServiceConfiguration.java(MapperScan 更新)
-```
-
-### 包名映射规则
-```
-com.css.txw.gxzx.controller → com.css.txw.mhzc.controller.gxzx
-com.css.txw.gxzx.service → com.css.txw.mhzc.service.gxzx
-com.css.txw.gxzx.service.impl → com.css.txw.mhzc.service.gxzx.impl
-com.css.txw.gxzx.service.lsjr.impl → com.css.txw.mhzc.service.gxzx.lsjr.impl
-com.css.txw.gxzx.service.lsjy.impl → com.css.txw.mhzc.service.gxzx.lsjy.impl
-com.css.txw.gxzx.mapper → com.css.txw.mhzc.mapper.gxzx
-com.css.txw.gxzx.mapper.lsjr → com.css.txw.mhzc.mapper.gxzx.lsjr
-com.css.txw.gxzx.mapper.lsjy → com.css.txw.mhzc.mapper.gxzx.lsjy
-com.css.txw.gxzx.pojo.domain → com.css.txw.mhzc.pojo.domain.gxzx
-com.css.txw.gxzx.pojo.vo → com.css.txw.mhzc.pojo.vo.gxzx
-com.css.txw.gxzx.pojo.dto → com.css.txw.mhzc.pojo.dto.gxzx
-```
\ No newline at end of file
diff --git a/trae-mcp-figma-snippet.json b/trae-mcp-figma-snippet.json
new file mode 100644
index 0000000..57537d2
--- /dev/null
+++ b/trae-mcp-figma-snippet.json
@@ -0,0 +1,15 @@
+{
+ "Framelink MCP for Figma": {
+ "command": "cmd",
+ "args": [
+ "/c",
+ "npx",
+ "-y",
+ "figma-developer-mcp",
+ "--stdio"
+ ],
+ "env": {
+ "FIGMA_API_KEY": ""
+ }
+ }
+}
diff --git a/txw-mhzc-web/scripts/migrate-home-styles.mjs b/txw-mhzc-web/scripts/migrate-home-styles.mjs
new file mode 100644
index 0000000..5f285da
--- /dev/null
+++ b/txw-mhzc-web/scripts/migrate-home-styles.mjs
@@ -0,0 +1,146 @@
+import fs from 'fs';
+
+const path = 'e:/develop/code/txw/txw-mhzc-web/src/pages/index/views/home2/index.vue';
+let s = fs.readFileSync(path, 'utf8');
+const start = s.indexOf('', start);
+if (start < 0 || end < 0) throw new Error('style block not found');
+let css = s.slice(start, end);
+
+const reps = [
+ [/#f5f7fa\b/g, '@home-color-page-bg'],
+ [/#003b1a\b/gi, '@home-color-primary-dark'],
+ [/#556659\b/gi, '@home-color-text-body'],
+ [/#1a1a2e\b/gi, '@home-color-text-title'],
+ [/#999999\b/g, '@home-color-text-muted'],
+ [/\b#999\b/g, '@home-color-text-muted'],
+ [/#333333\b/g, '@home-color-text-dark'],
+ [/\b#333\b/g, '@home-color-text-dark'],
+ [/#666666\b/g, '@home-color-text-secondary'],
+ [/\b#666\b/g, '@home-color-text-secondary'],
+ [/#222222\b/g, '@home-color-text-partner'],
+ [/\b#222\b/g, '@home-color-text-partner'],
+ [/#000000\b/g, '@home-color-black'],
+ [/\b#000\b/g, '@home-color-black'],
+ [/#ffffff\b/gi, '@home-color-white'],
+ [/\b#fff\b/gi, '@home-color-white'],
+ [/#00b96b\b/gi, '@home-color-primary-green'],
+ [/#00a25d\b/gi, '@home-color-primary-green-dark'],
+ [/#2e7d32\b/gi, '@home-color-secondary-green'],
+ [/#e6efe6\b/gi, '@home-color-tab-bg'],
+ [/#008cff\b/gi, '@home-color-accent-blue'],
+ [/#2196f3\b/gi, '@home-color-btn-blue-to'],
+ [/#99d2fe\b/gi, '@home-color-btn-blue-from'],
+ [/#007242\b/gi, '@home-color-cta-btn-from'],
+ [/#00d87d\b/gi, '@home-color-cta-btn-to'],
+ [/#f0f7f2\b/gi, '@home-color-footer-bg'],
+ [/'PingFang SC', 'Microsoft YaHei', sans-serif/g, '@home-font-family'],
+ [/'PingFang SC', sans-serif/g, '@home-font-family'],
+ [/font-family: PingFang SC;/g, 'font-family: @home-font-family;'],
+ [/font-family: 'PingFang SC';/g, 'font-family: @home-font-family;'],
+ [/linear-gradient\(180deg, #00b96b 0%, #00a25d 100%\)/g, '@home-gradient-search-btn'],
+ [/linear-gradient\(180deg, rgba\(245, 247, 250, 0\) 0%, rgba\(245, 247, 250\) 100%\)/g, '@home-gradient-hero-fade'],
+ [/linear-gradient\(180deg, rgba\(245, 247, 250, 0\) 0%, rgba\(245, 247, 250, 1\) 100%\)/g, '@home-gradient-hero-fade'],
+ [/linear-gradient\(90deg, #ffffff 0%, #e6efff 36\.06%, #e6efff 62\.5%, #ffffff 100%\)/g, '@home-gradient-core-tag'],
+ [/linear-gradient\(0deg, rgba\(255, 255, 255, 0\.9\) 0%, rgba\(255, 255, 255, 0\.4\) 100%\)/g, '@home-gradient-ability-card'],
+ [/linear-gradient\(180deg, #99d2fe 0%, #2196f3 100%\)/g, '@home-gradient-export-btn'],
+ [/linear-gradient\(90deg, #007242 0%, #00d87d 100%\)/g, '@home-gradient-cta-btn'],
+ [/0 8px 12px rgba\(0, 0, 0, 0\.08\)/g, '@home-shadow-search'],
+ [/0 8px 12px rgba\(127, 179, 213, 0\.2\)/g, '@home-shadow-card-blue'],
+ [/0 8px 12px rgba\(0, 185, 107, 0\.1\)/g, '@home-shadow-card-green'],
+ [/0 8px 20px rgba\(0, 209, 121, 0\.3\)/g, '@home-shadow-card-green-strong'],
+ [/0 2px 5px rgba\(0, 0, 0, 0\.1\)/g, '@home-shadow-news-item'],
+ [/0 2px 10px rgba\(0, 0, 0, 0\.1\)/g, '@home-shadow-news-item'],
+ [/0px 4px 8px 0px rgba\(0, 185, 107, 0\.06\)/g, '@home-shadow-partner-logo'],
+ [/0 4px 12px rgba\(255, 255, 255, 1\)/g, '@home-shadow-title-sub'],
+ [/0 0 8px rgba\(255, 255, 255, 1\)/g, '@home-shadow-card-title'],
+ [/0 0 8px #ffffff/g, '@home-shadow-card-title'],
+ [/0 4px 12px #ffffff/g, '@home-shadow-title-sub'],
+ [/rgba\(255, 255, 255, 0\.7\)/g, '@home-color-white-70'],
+ [/rgba\(255, 255, 255, 0\.6\)/g, '@home-color-white-60'],
+ [/background: rgba\(245, 247, 250, 1\)/g, 'background: @home-color-page-bg'],
+ [/background: rgba\(222, 243, 255, 0\.75\)/g, '@home-color-card-blue-btn-primary-bg'],
+ [/background: rgba\(222, 243, 255, 0\.95\)/g, 'fade(@home-color-card-blue-btn-primary-bg, 95%)'],
+ [/background: rgba\(222, 243, 255, 0\.5\)/g, '@home-color-card-blue-btn-secondary-bg'],
+ [/border: 1px solid rgba\(0, 141, 213, 0\.4\)/g, 'border: 1px solid @home-color-card-blue-btn-secondary-border'],
+ [/background: rgba\(255, 255, 255, 0\.35\)/g, '@home-color-card-chain-bg'],
+ [/background: rgba\(255, 255, 255, 0\.4\)/g, '@home-color-card-chain-btn-secondary-bg'],
+ [/border: 1px solid rgba\(0, 0, 0, 0\.2\)/g, 'border: 1px solid @home-color-card-chain-btn-secondary-border'],
+ [/background: rgba\(232, 255, 234, 0\.5\)/g, '@home-color-card-green-btn-secondary-bg'],
+ [/border: 1px solid rgba\(0, 180, 42, 0\.4\)/g, 'border: 1px solid @home-color-card-green-btn-secondary-border'],
+];
+
+for (const [re, rep] of reps) css = css.replace(re, rep);
+
+const numReps = [
+ ['max-width: 867px', 'max-width: @home-hero-title-width'],
+ ['max-width: 600px', 'max-width: @home-search-box-width'],
+ ['width: 92px', 'width: @home-search-btn-width'],
+ ['height: 300px', 'height: @home-hero-fade-height'],
+ ['padding: 8px 8px 8px 16px', 'padding: @home-search-box-padding'],
+ ['padding: 2px 8px', 'padding: @home-search-tag-padding'],
+ ['padding: 0 0 24px', 'padding: 0 0 @home-space-24'],
+ ['gap: 36px', 'gap: @home-feature-cards-gap'],
+ ['gap: 32px', 'gap: @home-space-32'],
+ ['gap: 16px', 'gap: @home-space-16'],
+ ['gap: 12px', 'gap: @home-search-tag-gap'],
+ ['gap: 28px', 'gap: @home-export-card-gap'],
+ ['gap: 14px', 'gap: @home-core-col-gap'],
+ ['gap: 42px', 'gap: @home-section-gap'],
+ ['gap: 52px', 'gap: @home-space-52'],
+ ['gap: 56px', 'gap: @home-space-56'],
+ ['font-size: 56px', 'font-size: @home-font-size-56'],
+ ['font-size: 40px', 'font-size: @home-font-size-40'],
+ ['font-size: 32px', 'font-size: @home-font-size-32'],
+ ['font-size: 28px', 'font-size: @home-font-size-28'],
+ ['font-size: 24px', 'font-size: @home-font-size-24'],
+ ['font-size: 22px', 'font-size: @home-font-size-22'],
+ ['font-size: 20px', 'font-size: @home-font-size-20'],
+ ['font-size: 16px', 'font-size: @home-font-size-16'],
+ ['font-size: 14px', 'font-size: @home-font-size-14'],
+ ['font-size: 12px', 'font-size: @home-font-size-12'],
+ ['line-height: 38px', 'line-height: @home-line-height-38'],
+ ['line-height: 28px', 'line-height: @home-line-height-28'],
+ ['line-height: 26px', 'line-height: @home-line-height-26'],
+ ['line-height: 22px', 'line-height: @home-line-height-22'],
+ ['line-height: 20px', 'line-height: @home-line-height-20'],
+ ['font-weight: 600', 'font-weight: @home-font-weight-semibold'],
+ ['font-weight: 500', 'font-weight: @home-font-weight-medium'],
+ ['font-weight: 400', 'font-weight: @home-font-weight-regular'],
+ ['border-radius: 16px', 'border-radius: @home-radius-xl'],
+ ['border-radius: 12px', 'border-radius: @home-radius-lg'],
+ ['border-radius: 10px', 'border-radius: @home-radius-md'],
+ ['border-radius: 8px', 'border-radius: @home-radius-sm'],
+ ['border-radius: 4px', 'border-radius: @home-radius-xs'],
+ ['border-radius: 24px', 'border-radius: @home-radius-pill'],
+ ['backdrop-filter: blur(20px)', 'backdrop-filter: blur(@home-blur-tag)'],
+ ['backdrop-filter: blur(10px)', 'backdrop-filter: blur(@home-blur-md)'],
+ ['backdrop-filter: blur(8px)', 'backdrop-filter: blur(@home-blur-sm)'],
+ ['backdrop-filter: blur(4px)', 'backdrop-filter: blur(@home-blur-ability)'],
+ ['width: 145px', 'width: @home-news-thumb-width'],
+ ['width: 282px', 'width: @home-partner-logo-card-width'],
+ ['height: 89px', 'height: @home-partner-logo-card-height'],
+ ['height: 66px', 'height: @home-cta-btn-height'],
+ ['width: 360px', 'width: @home-cta-btn-width'],
+ ['width: 77px', 'width: @home-export-btn-size'],
+ ['height: 77px', 'height: @home-export-btn-size'],
+ ['min-height: 119px', 'min-height: @home-export-card-height'],
+ ['max-width: 628px', 'max-width: @home-export-list-width'],
+ ['padding: 0 30px', 'padding: 0 @home-core-grid-padding-x'],
+ ['column-gap: 13px', 'column-gap: @home-ability-grid-col-gap'],
+ ['row-gap: 70px', 'row-gap: @home-ability-grid-row-gap'],
+ ['min-height: 330px', 'min-height: @home-ability-grid-min-height'],
+ ['padding: 16px 16px 16px 32px', 'padding: @home-ability-card-padding'],
+];
+
+for (const [from, to] of numReps) css = css.replaceAll(from, to);
+
+// Fix double-replaced height on search btn line-height
+css = css.replace(
+ /line-height: @home-search-btn-height;\s*\n\s*font-family: @home-font-family;/g,
+ 'line-height: @home-search-btn-height;\n font-family: @home-font-family;'
+);
+
+s = s.slice(0, start) + css + s.slice(end);
+fs.writeFileSync(path, s);
+console.log('migration complete');
diff --git a/txw-mhzc-web/src/pages/index/assets/hyzt/banner-bg-figma.png b/txw-mhzc-web/src/pages/index/assets/hyzt/banner-bg-figma.png
deleted file mode 100644
index bd6c01e..0000000
Binary files a/txw-mhzc-web/src/pages/index/assets/hyzt/banner-bg-figma.png and /dev/null differ
diff --git a/txw-mhzc-web/src/pages/index/assets/hyzt/banner-bg.png b/txw-mhzc-web/src/pages/index/assets/hyzt/banner-bg.png
new file mode 100644
index 0000000..e122262
Binary files /dev/null and b/txw-mhzc-web/src/pages/index/assets/hyzt/banner-bg.png differ
diff --git a/txw-mhzc-web/src/pages/index/assets/hyzt/banner-figma.png b/txw-mhzc-web/src/pages/index/assets/hyzt/banner-figma.png
deleted file mode 100644
index 1ea799d..0000000
Binary files a/txw-mhzc-web/src/pages/index/assets/hyzt/banner-figma.png and /dev/null differ
diff --git a/txw-mhzc-web/src/pages/index/assets/hyzt/banner.png b/txw-mhzc-web/src/pages/index/assets/hyzt/banner.png
deleted file mode 100644
index ba9e706..0000000
Binary files a/txw-mhzc-web/src/pages/index/assets/hyzt/banner.png and /dev/null differ
diff --git a/txw-mhzc-web/src/pages/index/assets/hyzt/banner3.png b/txw-mhzc-web/src/pages/index/assets/hyzt/banner3.png
deleted file mode 100644
index c7a428a..0000000
Binary files a/txw-mhzc-web/src/pages/index/assets/hyzt/banner3.png and /dev/null differ
diff --git a/txw-mhzc-web/src/pages/index/assets/qych/banner-bg.png b/txw-mhzc-web/src/pages/index/assets/qych/banner-bg.png
new file mode 100644
index 0000000..1e44aaf
Binary files /dev/null and b/txw-mhzc-web/src/pages/index/assets/qych/banner-bg.png differ
diff --git a/txw-mhzc-web/src/pages/index/assets/qych/service-card-icon-1.png b/txw-mhzc-web/src/pages/index/assets/qych/service-card-icon-1.png
new file mode 100644
index 0000000..06cd3e0
Binary files /dev/null and b/txw-mhzc-web/src/pages/index/assets/qych/service-card-icon-1.png differ
diff --git a/txw-mhzc-web/src/pages/index/assets/qych/service-card-icon-2.png b/txw-mhzc-web/src/pages/index/assets/qych/service-card-icon-2.png
new file mode 100644
index 0000000..f0f9a13
Binary files /dev/null and b/txw-mhzc-web/src/pages/index/assets/qych/service-card-icon-2.png differ
diff --git a/txw-mhzc-web/src/pages/index/components/footer/index.vue b/txw-mhzc-web/src/pages/index/components/footer/index.vue
index e1c0ac9..04b093e 100644
--- a/txw-mhzc-web/src/pages/index/components/footer/index.vue
+++ b/txw-mhzc-web/src/pages/index/components/footer/index.vue
@@ -1,7 +1,7 @@