/* ============================================================ 端云协同 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); } }