diff --git a/frontend/app/web-gold/src/components/GradientButton.vue b/frontend/app/web-gold/src/components/GradientButton.vue
index a3cbbf4205..e17c6aa897 100644
--- a/frontend/app/web-gold/src/components/GradientButton.vue
+++ b/frontend/app/web-gold/src/components/GradientButton.vue
@@ -93,27 +93,27 @@ const buttonClass = computed(() => {
display: inline-flex;
align-items: center;
justify-content: center;
- gap: 8px;
- padding: 8px 24px;
+ gap: var(--space-2);
+ padding: var(--space-2) var(--space-6);
border: none;
- border-radius: 12px;
- font-size: 16px;
+ border-radius: var(--radius-lg);
+ font-size: var(--font-size-base);
font-weight: 500;
color: #ffffff;
cursor: pointer;
- transition: all 0.2s ease;
- background: var(--color-slate-900);
+ transition: all var(--duration-fast);
+ background: var(--color-gray-900);
user-select: none;
}
.gradient-button:hover {
- background: var(--color-slate-800);
+ background: var(--color-gray-800);
}
.gradient-button:active {
- background: var(--color-slate-800);
+ background: var(--color-gray-800);
transform: translateY(0);
- box-shadow: 0 4px 6px -2px rgba(59, 130, 246, 0.15);
+ box-shadow: var(--shadow-primary);
}
.gradient-button__content,
@@ -123,7 +123,7 @@ const buttonClass = computed(() => {
display: inline-flex;
align-items: center;
justify-content: center;
- gap: 6px;
+ gap: var(--space-1);
}
.gradient-button__icon {
@@ -136,25 +136,25 @@ const buttonClass = computed(() => {
}
.gradient-button__loading-text {
- margin-left: 4px;
+ margin-left: var(--space-1);
}
/* 尺寸变体 */
.gradient-button--large {
padding: 10px 20px;
- font-size: 15px;
+ font-size: var(--font-size-sm);
min-height: 36px;
}
.gradient-button--middle {
- padding: 8px 16px;
- font-size: 14px;
+ padding: var(--space-2) var(--space-4);
+ font-size: var(--font-size-sm);
min-height: 32px;
}
.gradient-button--small {
- padding: 4px 12px;
- font-size: 13px;
+ padding: var(--space-1) var(--space-3);
+ font-size: var(--font-size-xs);
min-height: 24px;
}
@@ -169,13 +169,13 @@ const buttonClass = computed(() => {
.gradient-button:disabled {
opacity: 0.4;
cursor: not-allowed;
- background: var(--color-slate-700);
+ background: var(--color-gray-700);
box-shadow: none;
}
.gradient-button--disabled:hover,
.gradient-button:disabled:hover {
- background: var(--color-slate-700);
+ background: var(--color-gray-700);
transform: none;
box-shadow: none;
}
@@ -192,8 +192,8 @@ const buttonClass = computed(() => {
/* 响应式调整 */
@media (max-width: 768px) {
.gradient-button--large {
- padding: 8px 16px;
- font-size: 14px;
+ padding: var(--space-2) var(--space-4);
+ font-size: var(--font-size-sm);
min-height: 32px;
}
}
diff --git a/frontend/app/web-gold/src/components/agents/ChatDrawer.vue b/frontend/app/web-gold/src/components/agents/ChatDrawer.vue
index 8d9b6ceef9..6b95af29bc 100644
--- a/frontend/app/web-gold/src/components/agents/ChatDrawer.vue
+++ b/frontend/app/web-gold/src/components/agents/ChatDrawer.vue
@@ -354,14 +354,7 @@ watch(() => props.visible, (val) => {
diff --git a/frontend/app/web-gold/src/components/agents/HistoryPanel.vue b/frontend/app/web-gold/src/components/agents/HistoryPanel.vue
index 6d46d7545e..d62210de52 100644
--- a/frontend/app/web-gold/src/components/agents/HistoryPanel.vue
+++ b/frontend/app/web-gold/src/components/agents/HistoryPanel.vue
@@ -239,20 +239,12 @@ watch(() => props.visible, (val) => {
diff --git a/frontend/app/web-gold/src/layouts/components/CardLayout.vue b/frontend/app/web-gold/src/layouts/components/CardLayout.vue
index 0077f8314f..0cd49809ad 100644
--- a/frontend/app/web-gold/src/layouts/components/CardLayout.vue
+++ b/frontend/app/web-gold/src/layouts/components/CardLayout.vue
@@ -59,9 +59,9 @@ const handleBack = () => {
height: 100%;
display: flex;
flex-direction: column;
- background: var(--bg-primary);
- border: 1px solid var(--border-light);
- border-radius: var(--radius-md);
+ background: var(--color-bg-card);
+ border: 1px solid var(--color-gray-200);
+ border-radius: var(--radius-lg);
overflow: hidden;
}
@@ -70,7 +70,7 @@ const handleBack = () => {
display: flex;
flex-direction: column;
overflow: hidden;
- background: var(--bg-primary);
+ background: var(--color-bg-card);
&.no-padding {
.card-layout__content {
@@ -80,20 +80,20 @@ const handleBack = () => {
}
.card-header {
- padding: var(--space-md) var(--space-lg);
- background: var(--bg-secondary);
- border-bottom: 1px solid var(--border-light);
- font-size: 14px;
+ padding: var(--space-4) var(--space-6);
+ background: var(--color-gray-50);
+ border-bottom: 1px solid var(--color-gray-200);
+ font-size: var(--font-size-base);
font-weight: 500;
- color: var(--text-secondary);
+ color: var(--color-gray-600);
text-transform: uppercase;
letter-spacing: 0.08em;
}
.card-layout__content {
flex: 1;
- padding: var(--space-md);
+ padding: var(--space-4);
overflow: auto;
- background: var(--bg-primary);
+ background: var(--color-bg-card);
}
diff --git a/frontend/app/web-gold/src/layouts/components/FormLayout.vue b/frontend/app/web-gold/src/layouts/components/FormLayout.vue
index 0192e91317..7ade18a33a 100644
--- a/frontend/app/web-gold/src/layouts/components/FormLayout.vue
+++ b/frontend/app/web-gold/src/layouts/components/FormLayout.vue
@@ -98,16 +98,16 @@ const handleBack = () => {
display: flex;
flex-direction: column;
overflow: hidden;
- background: var(--bg-primary);
- border: 1px solid var(--border-light);
- border-radius: var(--radius-md);
+ background: var(--color-bg-card);
+ border: 1px solid var(--color-gray-200);
+ border-radius: var(--radius-lg);
}
.form-layout__content {
flex: 1;
overflow: auto;
- padding: var(--space-md);
- background: var(--bg-secondary);
+ padding: var(--space-4);
+ background: var(--color-gray-50);
display: flex;
align-items: center;
justify-content: center;
@@ -116,16 +116,16 @@ const handleBack = () => {
.form-container {
width: 100%;
max-width: 600px;
- background: var(--bg-primary);
- border: 1px solid var(--border-light);
- border-radius: var(--radius-md);
- padding: var(--space-2xl);
+ background: var(--color-bg-card);
+ border: 1px solid var(--color-gray-200);
+ border-radius: var(--radius-lg);
+ padding: var(--space-10);
}
.form-layout__footer {
- padding: var(--space-md) var(--space-lg);
- border-top: 1px solid var(--border-light);
- background: var(--bg-primary);
+ padding: var(--space-4) var(--space-6);
+ border-top: 1px solid var(--color-gray-200);
+ background: var(--color-bg-card);
flex-shrink: 0;
}
diff --git a/frontend/app/web-gold/src/layouts/components/FullWidthLayout.vue b/frontend/app/web-gold/src/layouts/components/FullWidthLayout.vue
index af71f70ea3..1b7bb273cd 100644
--- a/frontend/app/web-gold/src/layouts/components/FullWidthLayout.vue
+++ b/frontend/app/web-gold/src/layouts/components/FullWidthLayout.vue
@@ -67,7 +67,7 @@ const handleBack = () => {
display: flex;
flex-direction: column;
overflow: hidden;
- background: var(--bg-primary);
+ background: var(--color-bg-card);
}
.full-width-layout__header-wrapper {
diff --git a/frontend/app/web-gold/src/layouts/components/LayoutHeader.vue b/frontend/app/web-gold/src/layouts/components/LayoutHeader.vue
index e1569844f6..e317f6e4a5 100644
--- a/frontend/app/web-gold/src/layouts/components/LayoutHeader.vue
+++ b/frontend/app/web-gold/src/layouts/components/LayoutHeader.vue
@@ -58,13 +58,13 @@ const handleBack = () => {
display: flex;
justify-content: space-between;
align-items: center;
- gap: var(--space-md);
- padding: var(--space-md) var(--space-lg);
- border-bottom: 1px solid var(--border-light);
- background: var(--bg-primary);
+ gap: var(--space-4);
+ padding: var(--space-4) var(--space-6);
+ border-bottom: 1px solid var(--color-gray-200);
+ background: var(--color-bg-card);
flex-shrink: 0;
- min-height: 64px;
- transition: all 0.3s;
+ min-height: 56px;
+ transition: all var(--duration-base);
&--ghost {
background: transparent;
@@ -75,7 +75,7 @@ const handleBack = () => {
.header-left {
display: flex;
align-items: center;
- gap: var(--space-md);
+ gap: var(--space-4);
flex: 1;
min-width: 0;
}
@@ -88,13 +88,13 @@ const handleBack = () => {
}
.back-btn {
- padding: var(--space-xs);
+ padding: var(--space-1);
border: none;
background: transparent;
- color: var(--text-secondary);
- border-radius: var(--radius-sm);
+ color: var(--color-gray-600);
+ border-radius: var(--radius-base);
cursor: pointer;
- transition: all 0.2s ease;
+ transition: all var(--duration-fast);
font-size: 16px;
line-height: 1;
width: 32px;
@@ -104,15 +104,15 @@ const handleBack = () => {
justify-content: center;
&:hover {
- background: var(--bg-hover);
- color: var(--text-primary);
+ background: var(--color-gray-100);
+ color: var(--color-gray-900);
}
}
.header-title {
- font-size: 18px;
+ font-size: var(--font-size-lg);
font-weight: 600;
- color: var(--text-primary);
+ color: var(--color-gray-900);
margin: 0;
line-height: 1.4;
letter-spacing: -0.01em;
@@ -121,7 +121,7 @@ const handleBack = () => {
.header-right {
display: flex;
align-items: center;
- gap: var(--space-sm);
+ gap: var(--space-2);
flex-shrink: 0;
}
diff --git a/frontend/app/web-gold/src/layouts/components/TabLayout.vue b/frontend/app/web-gold/src/layouts/components/TabLayout.vue
index 55966d4374..b9aee4fb8d 100644
--- a/frontend/app/web-gold/src/layouts/components/TabLayout.vue
+++ b/frontend/app/web-gold/src/layouts/components/TabLayout.vue
@@ -88,9 +88,9 @@ const handleBack = () => {
height: 100%;
display: flex;
flex-direction: column;
- background: var(--bg-primary);
- border: 1px solid var(--border-light);
- border-radius: var(--radius-md);
+ background: var(--color-bg-card);
+ border: 1px solid var(--color-gray-200);
+ border-radius: var(--radius-lg);
overflow: hidden;
}
@@ -100,39 +100,39 @@ const handleBack = () => {
.tab-nav {
display: flex;
- border-bottom: 1px solid var(--border-light);
- background: var(--bg-secondary);
+ border-bottom: 1px solid var(--color-gray-200);
+ background: var(--color-gray-50);
flex-shrink: 0;
}
.tab-item {
- padding: var(--space-sm) var(--space-lg);
- font-size: 14px;
+ padding: var(--space-2) var(--space-6);
+ font-size: var(--font-size-base);
font-weight: 500;
- color: var(--text-secondary);
+ color: var(--color-gray-600);
border: none;
background: transparent;
cursor: pointer;
border-bottom: 2px solid transparent;
- transition: all 0.15s ease;
+ transition: all var(--duration-fast);
white-space: nowrap;
&:hover {
- background: var(--bg-hover);
- color: var(--text-primary);
+ background: var(--color-gray-100);
+ color: var(--color-gray-900);
}
&.active {
- color: var(--text-primary);
- border-bottom-color: var(--text-primary);
- background: var(--bg-primary);
+ color: var(--color-primary-500);
+ border-bottom-color: var(--color-primary-500);
+ background: var(--color-bg-card);
}
}
.tab-content {
flex: 1;
overflow: auto;
- background: var(--bg-primary);
- padding: var(--space-md);
+ background: var(--color-bg-card);
+ padding: var(--space-4);
}
diff --git a/frontend/app/web-gold/src/style.less b/frontend/app/web-gold/src/style.less
index 711cce114f..1e575217a1 100644
--- a/frontend/app/web-gold/src/style.less
+++ b/frontend/app/web-gold/src/style.less
@@ -136,9 +136,12 @@
// 阴影系统
// ========================================
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
+ --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
--shadow-blue: 0 0 0 3px rgba(59, 130, 246, 0.15);
+ --shadow-inset-card: inset 0 1px 0 0 rgba(255, 255, 255, 0.05);
+ --glow-primary: 0 0 0 3px rgba(59, 130, 246, 0.15);
// ========================================
// 布局系统
@@ -159,21 +162,40 @@
// ========================================
[data-theme="dark"],
.dark {
+ // 背景层级
--color-bg: #0F172A;
--color-bg-page: #0F172A;
--color-bg-card: #1E293B;
--color-surface: #1E293B;
+ // 中性灰 - 深色模式调整
+ --color-gray-50: #1E293B;
+ --color-gray-100: #334155;
+ --color-gray-200: #475569;
+ --color-gray-300: #64748B;
+ --color-gray-400: #94A3B8;
+ --color-gray-500: #CBD5E1;
+ --color-gray-600: #E2E8F0;
+ --color-gray-700: #F1F5F9;
+ --color-gray-800: #F8FAFC;
+ --color-gray-900: #FFFFFF;
+
+ // 文字
--color-text: #F1F5F9;
--color-text-primary: #F1F5F9;
--color-text-secondary: #94A3B8;
--color-text-muted: #64748B;
--color-text-disabled: #475569;
+ // 边框
--color-border: #334155;
- --color-primary: #60A5FA;
- --color-primary-hover: #93C5FD;
+ // 主色 - 深色模式提亮
+ --color-primary: #60A5FA;
+ --color-primary-hover: #93C5FD;
+ --color-primary-500: #60A5FA;
+ --color-primary-400: #93C5FD;
+ --color-primary-50: rgba(96, 165, 250, 0.1);
}
/* ================================
diff --git a/frontend/app/web-gold/src/views/agents/Agents.vue b/frontend/app/web-gold/src/views/agents/Agents.vue
index b81ad421f3..b7a93a0a06 100644
--- a/frontend/app/web-gold/src/views/agents/Agents.vue
+++ b/frontend/app/web-gold/src/views/agents/Agents.vue
@@ -335,47 +335,11 @@ onMounted(() => {
diff --git a/frontend/app/web-gold/src/views/content-style/components/BenchmarkTable.vue b/frontend/app/web-gold/src/views/content-style/components/BenchmarkTable.vue
index e216a64bef..c9c292f985 100644
--- a/frontend/app/web-gold/src/views/content-style/components/BenchmarkTable.vue
+++ b/frontend/app/web-gold/src/views/content-style/components/BenchmarkTable.vue
@@ -127,11 +127,11 @@ function formatNumber(value) {
diff --git a/frontend/app/web-gold/src/views/material/MaterialListNew.vue b/frontend/app/web-gold/src/views/material/MaterialListNew.vue
index f400024869..4e6a67104f 100644
--- a/frontend/app/web-gold/src/views/material/MaterialListNew.vue
+++ b/frontend/app/web-gold/src/views/material/MaterialListNew.vue
@@ -743,25 +743,8 @@ onMounted(async () => {
diff --git a/frontend/app/web-gold/src/views/trends/Forecast.vue b/frontend/app/web-gold/src/views/trends/Forecast.vue
index 44bc73056b..d515932d81 100644
--- a/frontend/app/web-gold/src/views/trends/Forecast.vue
+++ b/frontend/app/web-gold/src/views/trends/Forecast.vue
@@ -631,52 +631,39 @@ onMounted(() => {