- 提取 dsh design-platform 官方色板为设计令牌:品牌蓝 #4176e6、bluish 灰阶、 语义状态色、透明描边(rgba 0.04-0.1) - 侧栏改近白(sidebar-fill),扁平化阴影,悬停/滚动条/缓动全部对齐 dsh - 六视图旧硬编码蓝批量令牌化,视觉单一来源
146 lines
4.8 KiB
CSS
146 lines
4.8 KiB
CSS
/* ============================================================
|
||
端云协同 LLM 系统 · 全局设计令牌与基础样式
|
||
配色体系对齐 deepseek-harness Web(design-platform.css):
|
||
近白侧栏 + 纯白表面 + 极淡透明描边 + 近黑文字 + DeepSeek 品牌蓝
|
||
============================================================ */
|
||
|
||
:root {
|
||
/* —— DeepSeek 色板(取自 dsw-static-*)—— */
|
||
--ds-blue-50: #edf3fe; /* rgb(237,243,254) */
|
||
--ds-blue-100: #e4edfd; /* rgb(228,237,253) */
|
||
--ds-blue-300: #b7c8fe; /* rgb(183,200,254) */
|
||
--ds-blue-400: #6786fe; /* rgb(103,158,254) */
|
||
--ds-blue-500: #4176e6; /* rgb(65,118,230) 品牌主色 */
|
||
--ds-neutral-bluish-00: #ffffff;
|
||
--ds-neutral-bluish-50: #f9fafb;
|
||
--ds-neutral-bluish-60: #f5f6f7;
|
||
--ds-neutral-bluish-75: #f1f3f5;
|
||
--ds-neutral-bluish-100: #ebeef2;
|
||
--ds-neutral-bluish-200: #e1e5ee;
|
||
--ds-neutral-bluish-400: #adb2b8;
|
||
--ds-neutral-bluish-600: #818588;
|
||
--ds-neutral-bluish-700: #61666b;
|
||
--ds-neutral-bluish-1000: #0f1115;
|
||
|
||
/* —— 语义令牌(各视图使用)—— */
|
||
--c-bg: var(--ds-neutral-bluish-60); /* 页面底(模块平台灰) */
|
||
--c-surface: #ffffff; /* 卡片/面板 */
|
||
--c-border: rgba(16, 20, 26, 0.1); /* border-l2 */
|
||
--c-border-soft: rgba(16, 20, 26, 0.05); /* border-l1 */
|
||
|
||
--c-text: var(--ds-neutral-bluish-1000);
|
||
--c-text-2: var(--ds-neutral-bluish-700);
|
||
--c-text-3: var(--ds-neutral-bluish-600);
|
||
--c-caption: var(--ds-neutral-bluish-400);
|
||
|
||
--c-primary: var(--ds-blue-500);
|
||
--c-primary-strong: var(--ds-blue-400); /* 悬停(dsh:变亮) */
|
||
--c-primary-soft: var(--ds-blue-50);
|
||
--c-primary-tint: var(--ds-blue-100);
|
||
--c-primary-ring: rgba(65, 118, 230, 0.2);
|
||
|
||
--c-hover: rgba(38, 49, 72, 0.06); /* dsh 交互悬停 */
|
||
|
||
--c-ok: #22c55e;
|
||
--c-ok-soft: #e6faed;
|
||
--c-warn: #dd8629;
|
||
--c-warn-soft: #fef5e7;
|
||
--c-err: #ec1313;
|
||
--c-err-soft: #fef2f2;
|
||
|
||
/* —— 侧边栏(近白,dsh sidebar-fill)—— */
|
||
--c-side-bg: var(--ds-neutral-bluish-50);
|
||
--c-side-text: var(--ds-neutral-bluish-700);
|
||
--c-side-text-active: var(--ds-neutral-bluish-1000);
|
||
--c-side-active: var(--ds-neutral-bluish-100);
|
||
--c-side-hover: var(--ds-neutral-bluish-75);
|
||
--c-side-border: var(--c-border-soft);
|
||
--c-accent: var(--ds-blue-500);
|
||
|
||
/* —— 形状与影(dsh:扁平,描边负责层次)—— */
|
||
--radius: 10px;
|
||
--radius-sm: 7px;
|
||
--shadow-card: 0 1px 2px rgba(16, 24, 40, 0.03);
|
||
--shadow-pop: 0 8px 30px rgba(16, 24, 40, 0.12);
|
||
|
||
--font-mono: 'SF Mono', 'JetBrains Mono', 'Fira Code', Consolas,
|
||
'Liberation Mono', Menlo, Courier, 'PingFang SC', 'Microsoft YaHei', monospace;
|
||
|
||
--ds-ease: cubic-bezier(0.4, 0, 0.2, 1);
|
||
}
|
||
|
||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||
|
||
html, body, #app {
|
||
height: 100%;
|
||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC',
|
||
'Hiragino Sans GB', 'Microsoft YaHei', Roboto, sans-serif;
|
||
font-size: 14px;
|
||
color: var(--c-text);
|
||
background: var(--c-bg);
|
||
-webkit-font-smoothing: antialiased;
|
||
}
|
||
|
||
/* ---------- 统一滚动条(dsh:neutral-200 圆头) ---------- */
|
||
::-webkit-scrollbar { width: 9px; height: 9px; }
|
||
::-webkit-scrollbar-thumb {
|
||
background: #e5e5e5;
|
||
border-radius: 8px;
|
||
border: 2px solid transparent;
|
||
background-clip: content-box;
|
||
}
|
||
::-webkit-scrollbar-thumb:hover { background-color: #d4d4d4; }
|
||
::-webkit-scrollbar-track { background: transparent; }
|
||
|
||
/* ---------- 基础元素统一 ---------- */
|
||
button, input, select, textarea { font-family: inherit; color: inherit; }
|
||
|
||
h2 { font-size: 19px; font-weight: 700; letter-spacing: 0.2px; color: var(--c-text); }
|
||
|
||
a { color: var(--c-primary); }
|
||
|
||
code, pre { font-family: var(--font-mono); }
|
||
|
||
/* 焦点环统一 */
|
||
input:focus-visible, select:focus-visible, textarea:focus-visible, button:focus-visible {
|
||
outline: none;
|
||
box-shadow: 0 0 0 3px var(--c-primary-ring);
|
||
}
|
||
|
||
/* ---------- 通用卡片质感(供各页复用) ---------- */
|
||
.surface {
|
||
background: var(--c-surface);
|
||
border: 1px solid var(--c-border-soft);
|
||
border-radius: var(--radius);
|
||
box-shadow: var(--shadow-card);
|
||
}
|
||
|
||
/* 各页卡片统一描边与阴影(配合各自 scoped 样式) */
|
||
.settings-section,
|
||
.metric-card,
|
||
.ev-card {
|
||
box-shadow: var(--shadow-card);
|
||
border-radius: var(--radius);
|
||
}
|
||
|
||
/* 页面通用头 */
|
||
.page-head h2 {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 8px;
|
||
}
|
||
.page-head .sub { margin-top: 3px; }
|
||
|
||
.mono { font-family: var(--font-mono); }
|
||
|
||
/* 平滑出现(dsh 缓动曲线) */
|
||
@media (prefers-reduced-motion: no-preference) {
|
||
.ev-card, .metric-card, .settings-section {
|
||
animation: fade-up 0.2s var(--ds-ease) both;
|
||
}
|
||
}
|
||
@keyframes fade-up {
|
||
from { opacity: 0; transform: translateY(4px); }
|
||
to { opacity: 1; transform: translateY(0); }
|
||
}
|