style: 切换为现代 SaaS Dashboard 风格(Linear/Vercel/Notion 风)

- 调色板:zinc 中性色 + 冷静蓝色(#3b82f6)+ 卡片阴影 token
- Sidebar:紧凑 60 宽度,加入顶部搜索框,分组导航,圆角 8px
- 卡片:rounded-2xl + shadow-sm/md,留白节奏统一
- 表格:圆角卡片包裹,灰色表头小写大写字母 tracking
- 表单:h-9 输入框,圆角 8px,focus ring 用半透明蓝
- 按钮分级:实心蓝(主操作)/ 边框白底(次操作)/ 暗黑实心(对比强调)
- 状态徽章:ring-1 inset 内边框,色板更柔和

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Script Generator
2026-06-08 12:46:02 +08:00
parent 0099b23a86
commit e0120c470c
9 changed files with 364 additions and 450 deletions

View File

@@ -1,52 +1,47 @@
@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,300;9..144,400;9..144,500;9..144,600;9..144,700&family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500;9..40,600;9..40,700&family=JetBrains+Mono:wght@400;500&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');
@tailwind base;
@tailwind components;
@tailwind utilities;
:root {
--bg: #f7f4ee;
--bg-elevated: #fbf9f4;
--ink: #1a1814;
--ink-soft: #4a4640;
--ink-muted: #8a847a;
--line: #e6e0d4;
--line-soft: #efeae0;
--accent: #2563eb;
--accent-soft: #dbeafe;
/* Surfaces — zinc neutrals */
--bg: #fafafa;
--bg-card: #ffffff;
--bg-subtle: #f4f4f5;
--bg-hover: #f4f4f5;
/* Text */
--ink: #18181b;
--ink-soft: #52525b;
--ink-muted: #a1a1aa;
/* Borders */
--line: #e4e4e7;
--line-soft: #f4f4f5;
/* Brand — calm blue */
--accent: #3b82f6;
--accent-hover: #2563eb;
--accent-soft: #eff6ff;
--accent-ring: rgba(59, 130, 246, 0.15);
/* Shadow */
--shadow-sm: 0 1px 2px rgba(24, 24, 27, 0.04);
--shadow-md: 0 4px 12px -2px rgba(24, 24, 27, 0.06), 0 2px 4px -1px rgba(24, 24, 27, 0.04);
}
html, body {
background: var(--bg);
color: var(--ink);
font-family: 'DM Sans', system-ui, sans-serif;
font-feature-settings: 'ss01', 'ss02', 'cv11';
font-family: 'Inter', system-ui, sans-serif;
font-feature-settings: 'cv11', 'ss01';
-webkit-font-smoothing: antialiased;
}
.font-display {
font-family: 'Fraunces', Georgia, serif;
font-feature-settings: 'ss01';
font-size: 14px;
}
.font-mono {
font-family: 'JetBrains Mono', monospace;
}
.grain::before {
content: '';
position: absolute;
inset: 0;
pointer-events: none;
opacity: 0.03;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
@keyframes fade-up {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: translateY(0); }
}
.animate-fade-up {
animation: fade-up 0.6s cubic-bezier(0.2, 0.8, 0.2, 1) backwards;
}