feat(web): 采用 Notion 设计系统 — 暖色调 + 白色侧边栏 + Inter 字体
Some checks failed
CI / rust-check (push) Has been cancelled
CI / rust-test (push) Has been cancelled
CI / frontend-build (push) Has been cancelled
CI / security-audit (push) Has been cancelled

引入 Notion 风格的 DESIGN.md 设计系统文件,并全面重构前端 UI:

- 主色从 Indigo (#4F46E5) 迁移到 Notion Blue (#0075de)
- 页面背景从冷灰 (#F1F5F9) 迁移到暖白 (#f6f5f4)
- 侧边栏从深色 (#0F172A) 迁移到白色,活跃项用蓝色指示
- 文字从 Slate 冷色迁移到暖灰系列 (Warm Gray 500/300)
- 圆角从 8px 缩小到 4px(按钮/输入),8px(卡片)
- 阴影改为多层超轻 Notion 风格(最大 opacity 0.05)
- 字体优先使用 Inter,保留中文回退
- 暗色模式适配暖黑色调 (#191918)
- 更新 27 个前端文件的硬编码颜色值
This commit is contained in:
iven
2026-04-20 13:08:22 +08:00
parent 40b37cc776
commit 8f3d2d58e7
27 changed files with 825 additions and 406 deletions

View File

@@ -2,65 +2,65 @@
/* ====================================================================
* ERP Platform — Design System Tokens & Global Styles
* Inspired by Linear, Feishu, SAP Fiori modern design language
* Inspired by Notion: warm minimalism, whisper borders, soft elevation
* ==================================================================== */
/* --- Design Tokens (CSS Custom Properties) --- */
:root {
/* Primary Palette */
--erp-primary: #4F46E5;
--erp-primary-hover: #4338CA;
--erp-primary-active: #3730A3;
--erp-primary-light: #EEF2FF;
--erp-primary-light-hover: #E0E7FF;
--erp-primary-bg-subtle: #F5F3FF;
/* Primary Palette — Notion Blue */
--erp-primary: #0075de;
--erp-primary-hover: #005bab;
--erp-primary-active: #004a8c;
--erp-primary-light: #f2f9ff;
--erp-primary-light-hover: #e4f1ff;
--erp-primary-bg-subtle: #f2f9ff;
/* Semantic Colors */
--erp-success: #059669;
--erp-success-bg: #ECFDF5;
--erp-warning: #D97706;
--erp-warning-bg: #FFFBEB;
--erp-error: #DC2626;
--erp-error-bg: #FEF2F2;
--erp-info: #2563EB;
--erp-info-bg: #EFF6FF;
/* Semantic Colors — Notion warm tones */
--erp-success: #1aae39;
--erp-success-bg: #ecfdf5;
--erp-warning: #dd5b00;
--erp-warning-bg: #fff7ed;
--erp-error: #e5534b;
--erp-error-bg: #fef2f2;
--erp-info: #0075de;
--erp-info-bg: #f2f9ff;
/* Neutral Palette */
--erp-bg-page: #F1F5F9;
--erp-bg-container: #FFFFFF;
--erp-bg-elevated: #FFFFFF;
--erp-bg-spotlight: #F8FAFC;
--erp-bg-sidebar: #0F172A;
--erp-bg-sidebar-hover: #1E293B;
--erp-bg-sidebar-active: rgba(79, 70, 229, 0.15);
/* Neutral Palette — Warm neutrals with yellow-brown undertones */
--erp-bg-page: #f6f5f4;
--erp-bg-container: #ffffff;
--erp-bg-elevated: #ffffff;
--erp-bg-spotlight: #fafaf9;
--erp-bg-sidebar: #ffffff;
--erp-bg-sidebar-hover: #f6f5f4;
--erp-bg-sidebar-active: #f2f9ff;
/* Text Colors */
--erp-text-primary: #0F172A;
--erp-text-secondary: #475569;
--erp-text-tertiary: #94A3B8;
--erp-text-inverse: #F8FAFC;
--erp-text-sidebar: #CBD5E1;
--erp-text-sidebar-active: #FFFFFF;
/* Text Colors — Warm near-black */
--erp-text-primary: rgba(0, 0, 0, 0.95);
--erp-text-secondary: #615d59;
--erp-text-tertiary: #a39e98;
--erp-text-inverse: #ffffff;
--erp-text-sidebar: #615d59;
--erp-text-sidebar-active: #0075de;
/* Border Colors */
--erp-border: #E2E8F0;
--erp-border-light: #F1F5F9;
--erp-border-dark: #334155;
/* Border Colors — Whisper borders */
--erp-border: rgba(0, 0, 0, 0.1);
--erp-border-light: rgba(0, 0, 0, 0.06);
--erp-border-dark: rgba(0, 0, 0, 0.15);
/* Shadows */
--erp-shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.03);
--erp-shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.06), 0 1px 2px -1px rgba(0, 0, 0, 0.06);
--erp-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.07), 0 2px 4px -2px rgba(0, 0, 0, 0.07);
--erp-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.08);
--erp-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.08), 0 8px 10px -6px rgba(0, 0, 0, 0.08);
/* Shadows — Multi-layer, ultra-subtle */
--erp-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.01), 0 0.175px 1.04px rgba(0, 0, 0, 0.01);
--erp-shadow-sm: rgba(0, 0, 0, 0.04) 0px 4px 18px, rgba(0, 0, 0, 0.027) 0px 2.025px 7.85px, rgba(0, 0, 0, 0.02) 0px 0.8px 2.93px, rgba(0, 0, 0, 0.01) 0px 0.175px 1.04px;
--erp-shadow-md: rgba(0, 0, 0, 0.01) 0px 1px 3px, rgba(0, 0, 0, 0.02) 0px 3px 7px, rgba(0, 0, 0, 0.02) 0px 7px 15px, rgba(0, 0, 0, 0.04) 0px 14px 28px, rgba(0, 0, 0, 0.05) 0px 23px 52px;
--erp-shadow-lg: rgba(0, 0, 0, 0.01) 0px 2px 4px, rgba(0, 0, 0, 0.02) 0px 5px 12px, rgba(0, 0, 0, 0.03) 0px 10px 24px, rgba(0, 0, 0, 0.04) 0px 18px 40px, rgba(0, 0, 0, 0.05) 0px 30px 64px;
--erp-shadow-xl: rgba(0, 0, 0, 0.01) 0px 3px 6px, rgba(0, 0, 0, 0.02) 0px 8px 16px, rgba(0, 0, 0, 0.03) 0px 14px 30px, rgba(0, 0, 0, 0.04) 0px 22px 48px, rgba(0, 0, 0, 0.06) 0px 36px 80px;
/* Radius */
--erp-radius-sm: 6px;
--erp-radius-md: 8px;
--erp-radius-lg: 12px;
--erp-radius-xl: 16px;
/* Radius — Notion subtle roundness */
--erp-radius-sm: 2px;
--erp-radius-md: 4px;
--erp-radius-lg: 8px;
--erp-radius-xl: 12px;
/* Spacing */
/* Spacing — 8px base unit */
--erp-space-xs: 4px;
--erp-space-sm: 8px;
--erp-space-md: 16px;
@@ -68,9 +68,9 @@
--erp-space-xl: 32px;
--erp-space-2xl: 48px;
/* Typography */
--erp-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'PingFang SC',
'Microsoft YaHei', 'Hiragino Sans GB', 'Helvetica Neue', Helvetica, Arial, sans-serif;
/* Typography — Inter as primary */
--erp-font-family: 'Inter', -apple-system, system-ui, 'Segoe UI', 'PingFang SC',
'Microsoft YaHei', 'Hiragino Sans GB', Helvetica, Arial, sans-serif;
--erp-font-mono: 'SF Mono', 'Fira Code', 'Fira Mono', 'Roboto Mono', Menlo, Monaco, Consolas,
'Liberation Mono', 'Courier New', monospace;
--erp-font-size-xs: 12px;
@@ -86,10 +86,10 @@
--erp-transition-base: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
--erp-transition-slow: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
/* Trend Colors */
--erp-trend-up: #059669;
--erp-trend-down: #DC2626;
--erp-trend-neutral: #64748B;
/* Trend Colors — Warm */
--erp-trend-up: #1aae39;
--erp-trend-down: #e5534b;
--erp-trend-neutral: #615d59;
/* Line Height */
--erp-line-height-tight: 1.25;
@@ -102,36 +102,48 @@
--erp-header-height: 56px;
}
/* --- Dark Mode Tokens --- */
/* --- Dark Mode Tokens — Warm dark, Notion-inspired --- */
[data-theme='dark'] {
--erp-bg-page: #0B0F1A;
--erp-bg-container: #111827;
--erp-bg-elevated: #1E293B;
--erp-bg-spotlight: #1E293B;
--erp-bg-sidebar: #070B14;
--erp-bg-sidebar-hover: #111827;
--erp-primary-light: rgba(0, 117, 222, 0.15);
--erp-primary-light-hover: rgba(0, 117, 222, 0.22);
--erp-primary-bg-subtle: rgba(0, 117, 222, 0.1);
--erp-text-primary: #F1F5F9;
--erp-text-secondary: #94A3B8;
--erp-text-tertiary: #64748B;
--erp-bg-page: #191918;
--erp-bg-container: #232322;
--erp-bg-elevated: #2a2a29;
--erp-bg-spotlight: #2a2a29;
--erp-bg-sidebar: #1e1e1d;
--erp-bg-sidebar-hover: #2a2a29;
--erp-border: #1E293B;
--erp-border-light: #1E293B;
--erp-text-primary: rgba(255, 255, 255, 0.95);
--erp-text-secondary: #a39e98;
--erp-text-tertiary: #6d6862;
--erp-text-sidebar: #a39e98;
--erp-text-sidebar-active: #62aef0;
--erp-shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
--erp-shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.4), 0 1px 2px -1px rgba(0, 0, 0, 0.3);
--erp-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -2px rgba(0, 0, 0, 0.3);
--erp-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.5), 0 4px 6px -4px rgba(0, 0, 0, 0.3);
--erp-border: rgba(255, 255, 255, 0.08);
--erp-border-light: rgba(255, 255, 255, 0.05);
--erp-border-dark: rgba(255, 255, 255, 0.12);
--erp-trend-up: #34D399;
--erp-trend-down: #F87171;
--erp-trend-neutral: #94A3B8;
--erp-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.3);
--erp-shadow-sm: rgba(0, 0, 0, 0.2) 0px 4px 18px, rgba(0, 0, 0, 0.15) 0px 2px 8px;
--erp-shadow-md: rgba(0, 0, 0, 0.15) 0px 1px 3px, rgba(0, 0, 0, 0.2) 0px 5px 12px, rgba(0, 0, 0, 0.2) 0px 10px 24px;
--erp-shadow-lg: rgba(0, 0, 0, 0.2) 0px 2px 6px, rgba(0, 0, 0, 0.25) 0px 8px 20px, rgba(0, 0, 0, 0.3) 0px 16px 40px;
--erp-trend-up: #2a9d99;
--erp-trend-down: #e5534b;
--erp-trend-neutral: #a39e98;
--erp-success-bg: rgba(26, 174, 57, 0.15);
--erp-warning-bg: rgba(221, 91, 0, 0.15);
--erp-error-bg: rgba(229, 83, 75, 0.15);
--erp-info-bg: rgba(0, 117, 222, 0.15);
}
[data-theme='dark'] .erp-stat-card-trend-up { color: #34D399; }
[data-theme='dark'] .erp-stat-card-trend-down { color: #FCA5A5; }
[data-theme='dark'] .erp-stat-card-trend-neutral { color: #94A3B8; }
[data-theme='dark'] .erp-stat-card-trend-label { color: #94A3B8; }
[data-theme='dark'] .erp-stat-card-trend-up { color: #2a9d99; }
[data-theme='dark'] .erp-stat-card-trend-down { color: #e5534b; }
[data-theme='dark'] .erp-stat-card-trend-neutral { color: #a39e98; }
[data-theme='dark'] .erp-stat-card-trend-label { color: #a39e98; }
/* --- Global Reset & Base --- */
body {
@@ -170,20 +182,20 @@ body {
/* --- Selection --- */
::selection {
background-color: var(--erp-primary-light);
color: var(--erp-primary);
background-color: rgba(0, 117, 222, 0.15);
color: var(--erp-text-primary);
}
/* ====================================================================
* Component Overrides — Ant Design Enhancement
* ==================================================================== */
/* --- Card --- */
/* --- Card — Whisper border, soft shadow --- */
.ant-card {
border-radius: var(--erp-radius-lg) !important;
border: 1px solid var(--erp-border-light) !important;
box-shadow: var(--erp-shadow-xs) !important;
transition: box-shadow var(--erp-transition-base), transform var(--erp-transition-base) !important;
border: 1px solid var(--erp-border) !important;
box-shadow: none !important;
transition: box-shadow var(--erp-transition-base) !important;
}
.ant-card:hover {
@@ -209,15 +221,14 @@ body {
/* --- Statistic Cards --- */
.stat-card {
border-radius: var(--erp-radius-lg) !important;
border: none !important;
border: 1px solid var(--erp-border) !important;
overflow: hidden;
position: relative;
transition: all var(--erp-transition-base) !important;
transition: box-shadow var(--erp-transition-base) !important;
}
.stat-card:hover {
transform: translateY(-2px) !important;
box-shadow: var(--erp-shadow-md) !important;
box-shadow: var(--erp-shadow-sm) !important;
}
.stat-card .ant-statistic-title {
@@ -259,30 +270,29 @@ body {
border-bottom: 1px solid var(--erp-border-light) !important;
}
/* --- Button --- */
/* --- Button — Subtle 4px radius, no heavy shadow --- */
.ant-btn-primary {
border-radius: var(--erp-radius-md) !important;
border-radius: 4px !important;
font-weight: 500 !important;
box-shadow: 0 1px 2px 0 rgba(79, 70, 229, 0.3) !important;
box-shadow: none !important;
transition: all var(--erp-transition-fast) !important;
}
.ant-btn-primary:hover {
box-shadow: 0 2px 4px 0 rgba(79, 70, 229, 0.4) !important;
transform: translateY(-1px);
opacity: 0.9;
}
.ant-btn-default {
border-radius: var(--erp-radius-md) !important;
border-radius: 4px !important;
font-weight: 500 !important;
}
/* --- Input --- */
/* --- Input — 4px radius, whisper border --- */
.ant-input,
.ant-input-affix-wrapper,
.ant-select-selector,
.ant-picker {
border-radius: var(--erp-radius-md) !important;
border-radius: 4px !important;
transition: all var(--erp-transition-fast) !important;
}
@@ -297,7 +307,7 @@ body {
.ant-select-focused .ant-select-selector,
.ant-picker-focused {
border-color: var(--erp-primary) !important;
box-shadow: 0 0 0 2px rgba(79, 70, 229, 0.12) !important;
box-shadow: 0 0 0 2px rgba(0, 117, 222, 0.12) !important;
}
/* --- Modal --- */
@@ -426,12 +436,12 @@ body {
border-radius: var(--erp-radius-lg) var(--erp-radius-lg) 0 0;
}
.erp-gradient-card.indigo::before { background: linear-gradient(90deg, #4F46E5, #818CF8); }
.erp-gradient-card.emerald::before { background: linear-gradient(90deg, #059669, #34D399); }
.erp-gradient-card.amber::before { background: linear-gradient(90deg, #D97706, #FBBF24); }
.erp-gradient-card.rose::before { background: linear-gradient(90deg, #E11D48, #FB7185); }
.erp-gradient-card.sky::before { background: linear-gradient(90deg, #0284C7, #38BDF8); }
.erp-gradient-card.violet::before { background: linear-gradient(90deg, #7C3AED, #A78BFA); }
.erp-gradient-card.indigo::before { background: linear-gradient(90deg, #0075de, #62aef0); }
.erp-gradient-card.emerald::before { background: linear-gradient(90deg, #1aae39, #4ade80); }
.erp-gradient-card.amber::before { background: linear-gradient(90deg, #dd5b00, #fbbf24); }
.erp-gradient-card.rose::before { background: linear-gradient(90deg, #e5534b, #f87171); }
.erp-gradient-card.sky::before { background: linear-gradient(90deg, #0075de, #38bdf8); }
.erp-gradient-card.violet::before { background: linear-gradient(90deg, #391c57, #a78bfa); }
/* --- Fade-in Animation --- */
@keyframes erp-fade-in {
@@ -529,23 +539,23 @@ body {
* ==================================================================== */
.erp-sidebar-menu .ant-menu-item {
margin: 2px 8px !important;
border-radius: var(--erp-radius-md) !important;
height: 40px !important;
line-height: 40px !important;
margin: 1px 8px !important;
border-radius: 4px !important;
height: 36px !important;
line-height: 36px !important;
}
.erp-sidebar-menu .ant-menu-item-selected {
background: var(--erp-primary) !important;
color: #fff !important;
background: #f2f9ff !important;
color: #0075de !important;
}
.erp-sidebar-menu .ant-menu-item-selected .anticon {
color: #fff !important;
color: #0075de !important;
}
.erp-sidebar-menu .ant-menu-item:not(.ant-menu-item-selected):hover {
background: var(--erp-bg-sidebar-hover) !important;
background: #f6f5f4 !important;
}
/* Sidebar group label */
@@ -555,17 +565,17 @@ body {
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.8px;
color: #94A3B8;
color: #a39e98;
}
/* ====================================================================
* MainLayout — CSS classes replacing inline styles
* ==================================================================== */
/* Sider */
/* Sider — White sidebar, Notion style */
.erp-sider-dark {
background: #0F172A !important;
border-right: none !important;
background: #ffffff !important;
border-right: 1px solid rgba(0, 0, 0, 0.06) !important;
position: fixed !important;
left: 0;
top: 0;
@@ -575,57 +585,66 @@ body {
}
[data-theme='dark'] .erp-sider-dark {
background: #070B14 !important;
background: #1e1e1d !important;
border-right: 1px solid rgba(255, 255, 255, 0.05) !important;
}
/* Logo */
/* Logo — Warm neutral, Notion style */
.erp-sidebar-logo {
height: 56px;
display: flex;
align-items: center;
padding: 0 20px;
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
border-bottom: 1px solid rgba(0, 0, 0, 0.06);
cursor: pointer;
}
[data-theme='dark'] .erp-sidebar-logo {
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}
.ant-layout-sider-collapsed .erp-sidebar-logo {
justify-content: center;
padding: 0;
}
.erp-sidebar-logo-icon {
width: 32px;
height: 32px;
border-radius: 8px;
background: linear-gradient(135deg, #4F46E5, #818CF8);
width: 28px;
height: 28px;
border-radius: 4px;
background: #0075de;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
font-size: 14px;
font-size: 13px;
font-weight: 800;
color: #fff;
}
.erp-sidebar-logo-text {
margin-left: 12px;
color: #F8FAFC;
font-size: 16px;
margin-left: 10px;
color: rgba(0, 0, 0, 0.95);
font-size: 15px;
font-weight: 700;
letter-spacing: -0.3px;
white-space: nowrap;
}
/* Sidebar menu item */
[data-theme='dark'] .erp-sidebar-logo-text {
color: rgba(255, 255, 255, 0.95);
}
/* Sidebar menu item — White sidebar, warm text */
.erp-sidebar-item {
display: flex;
align-items: center;
height: 40px;
margin: 2px 8px;
padding: 0 16px;
border-radius: 8px;
height: 36px;
margin: 1px 8px;
padding: 0 12px;
border-radius: 4px;
cursor: pointer;
color: #94A3B8;
color: #615d59;
font-size: 14px;
font-weight: 400;
transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
@@ -638,14 +657,28 @@ body {
}
.erp-sidebar-item:hover:not(.erp-sidebar-item-active) {
background: rgba(255, 255, 255, 0.06);
color: #E2E8F0;
background: #f6f5f4;
color: rgba(0, 0, 0, 0.95);
}
[data-theme='dark'] .erp-sidebar-item {
color: #a39e98;
}
[data-theme='dark'] .erp-sidebar-item:hover:not(.erp-sidebar-item-active) {
background: #2a2a29;
color: rgba(255, 255, 255, 0.95);
}
.erp-sidebar-item-active {
background: linear-gradient(135deg, #4F46E5, #6366F1);
color: #fff;
font-weight: 600;
background: #f2f9ff;
color: #0075de;
font-weight: 500;
}
[data-theme='dark'] .erp-sidebar-item-active {
background: rgba(0, 117, 222, 0.15);
color: #62aef0;
}
.erp-sidebar-item-icon {
@@ -658,17 +691,17 @@ body {
margin-left: 12px;
}
/* Sidebar sub-menu (plugin group) */
/* Sidebar sub-menu (plugin group) — Warm gray group headers */
.erp-sidebar-submenu-title {
display: flex;
align-items: center;
height: 32px;
margin: 6px 8px 2px 8px;
padding: 0 12px;
border-radius: 6px;
border-radius: 4px;
cursor: pointer;
color: #94A3B8;
font-size: 12px;
color: #a39e98;
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
@@ -677,12 +710,25 @@ body {
}
.erp-sidebar-submenu-title:hover {
background: rgba(255, 255, 255, 0.06);
color: #E2E8F0;
background: #f6f5f4;
color: #615d59;
}
[data-theme='dark'] .erp-sidebar-submenu-title {
color: #6d6862;
}
[data-theme='dark'] .erp-sidebar-submenu-title:hover {
background: #2a2a29;
color: #a39e98;
}
.erp-sidebar-submenu-title-active {
color: #A5B4FC;
color: #0075de;
}
[data-theme='dark'] .erp-sidebar-submenu-title-active {
color: #62aef0;
}
.erp-sidebar-submenu-arrow {
@@ -707,10 +753,10 @@ body {
transition: margin-left 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.erp-main-layout-light { background: #F1F5F9; }
.erp-main-layout-dark { background: #0B0F1A; }
.erp-main-layout-light { background: #f6f5f4; }
.erp-main-layout-dark { background: #191918; }
/* Header */
/* Header — Clean white, whisper border bottom */
.erp-header {
height: 56px !important;
padding: 0 24px !important;
@@ -724,44 +770,44 @@ body {
}
.erp-header-light {
background: #FFFFFF !important;
border-bottom: 1px solid #F1F5F9;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
background: #ffffff !important;
border-bottom: 1px solid rgba(0, 0, 0, 0.06);
box-shadow: none;
}
.erp-header-dark {
background: #111827 !important;
border-bottom: 1px solid #1E293B;
background: #232322 !important;
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
box-shadow: none;
}
.erp-header-btn {
width: 36px;
height: 36px;
border-radius: 8px;
width: 32px;
height: 32px;
border-radius: 4px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.15s ease;
color: #94A3B8;
color: #615d59;
will-change: background;
}
.erp-header-light .erp-header-btn { color: #64748B; }
.erp-header-dark .erp-header-btn { color: #94A3B8; }
.erp-header-btn:hover { background: #F1F5F9; }
.erp-header-dark .erp-header-btn:hover { background: #1E293B; }
.erp-header-light .erp-header-btn { color: #615d59; }
.erp-header-dark .erp-header-btn { color: #a39e98; }
.erp-header-btn:hover { background: #f6f5f4; }
.erp-header-dark .erp-header-btn:hover { background: #2a2a29; }
.erp-header-title { font-size: 15px; font-weight: 600; }
.erp-text-light { color: #0F172A; }
.erp-text-dark { color: #F1F5F9; }
.erp-text-light-secondary { color: #334155; }
.erp-text-dark-secondary { color: #E2E8F0; }
.erp-text-light { color: rgba(0, 0, 0, 0.95); }
.erp-text-dark { color: rgba(255, 255, 255, 0.95); }
.erp-text-light-secondary { color: #615d59; }
.erp-text-dark-secondary { color: #a39e98; }
.erp-header-divider { width: 1px; height: 24px; margin: 0 8px; }
.erp-header-divider-light { background: #E2E8F0; }
.erp-header-divider-dark { background: #1E293B; }
.erp-header-divider-light { background: rgba(0, 0, 0, 0.06); }
.erp-header-divider-dark { background: rgba(255, 255, 255, 0.05); }
/* User avatar */
.erp-header-user {
@@ -774,11 +820,11 @@ body {
transition: all 0.15s ease;
}
.erp-header-user:hover { background: #F1F5F9; }
.erp-header-dark .erp-header-user:hover { background: #1E293B; }
.erp-header-user:hover { background: #f6f5f4; }
.erp-header-dark .erp-header-user:hover { background: #2a2a29; }
.erp-user-avatar {
background: linear-gradient(135deg, #4F46E5, #818CF8) !important;
background: #0075de !important;
font-size: 13px !important;
}
@@ -786,8 +832,8 @@ body {
/* Footer */
.erp-footer { text-align: center; padding: 12px 24px !important; background: transparent !important; font-size: 12px; }
.erp-footer-light { color: #475569; }
.erp-footer-dark { color: #94A3B8; }
.erp-footer-light { color: #a39e98; }
.erp-footer-dark { color: #6d6862; }
/* ====================================================================
* Dashboard — Stat Cards & Quick Actions (replacing inline styles)
@@ -818,7 +864,7 @@ body {
left: 0;
right: 0;
height: 3px;
background: var(--card-gradient, linear-gradient(135deg, #4F46E5, #6366F1));
background: var(--card-gradient, linear-gradient(135deg, #0075de, #62aef0));
}
.erp-stat-card-body {
@@ -849,7 +895,7 @@ body {
width: 48px;
height: 48px;
border-radius: var(--erp-radius-lg);
background: var(--card-icon-bg, rgba(79, 70, 229, 0.12));
background: var(--card-icon-bg, rgba(0, 117, 222, 0.08));
display: flex;
align-items: center;
justify-content: center;
@@ -867,7 +913,7 @@ body {
.erp-section-icon {
font-size: 16px;
color: #4F46E5;
color: #0075de;
}
.erp-section-title {
@@ -890,17 +936,17 @@ body {
}
.erp-quick-action:hover {
background: #EEF2FF;
border-color: var(--action-color, #4F46E5);
background: #f2f9ff;
border-color: var(--action-color, #0075de);
}
[data-theme='dark'] .erp-quick-action {
background: #0B0F1A;
background: #191918;
}
[data-theme='dark'] .erp-quick-action:hover {
background: #1E293B;
border-color: var(--action-color, #4F46E5);
background: #2a2a29;
border-color: var(--action-color, #0075de);
}
.erp-quick-action-icon {
@@ -910,8 +956,8 @@ body {
display: flex;
align-items: center;
justify-content: center;
background: color-mix(in srgb, var(--action-color, #4F46E5) 10%, transparent);
color: var(--action-color, #4F46E5);
background: color-mix(in srgb, var(--action-color, #0075de) 8%, transparent);
color: var(--action-color, #0075de);
font-size: 16px;
flex-shrink: 0;
}
@@ -1000,8 +1046,8 @@ body {
display: flex;
align-items: center;
justify-content: center;
background: color-mix(in srgb, var(--action-color, #4F46E5) 10%, transparent);
color: var(--action-color, #4F46E5);
background: color-mix(in srgb, var(--action-color, #0075de) 8%, transparent);
color: var(--action-color, #0075de);
font-size: 18px;
flex-shrink: 0;
transition: transform 0.15s ease;
@@ -1029,7 +1075,7 @@ body {
padding: 12px 16px;
border-radius: var(--erp-radius-md);
background: var(--erp-bg-spotlight);
border-left: 3px solid var(--task-color, #4F46E5);
border-left: 3px solid var(--task-color, #0075de);
cursor: pointer;
transition: all 0.15s ease;
}
@@ -1046,8 +1092,8 @@ body {
display: flex;
align-items: center;
justify-content: center;
background: color-mix(in srgb, var(--task-color, #4F46E5) 12%, transparent);
color: var(--task-color, #4F46E5);
background: color-mix(in srgb, var(--task-color, #0075de) 8%, transparent);
color: var(--task-color, #0075de);
font-size: 14px;
flex-shrink: 0;
}
@@ -1069,7 +1115,7 @@ body {
gap: 12px;
margin-top: 2px;
font-size: var(--erp-font-size-xs);
color: #64748B;
color: #a39e98;
}
.erp-task-priority {
@@ -1081,13 +1127,13 @@ body {
font-weight: 600;
}
.erp-task-priority-high { background: #FEF2F2; color: #B91C1C; }
.erp-task-priority-medium { background: #FFFBEB; color: #92400E; }
.erp-task-priority-low { background: #ECFDF5; color: #047857; }
.erp-task-priority-high { background: #fef2f2; color: #e5534b; }
.erp-task-priority-medium { background: #fff7ed; color: #dd5b00; }
.erp-task-priority-low { background: #ecfdf5; color: #1aae39; }
[data-theme='dark'] .erp-task-priority-high { background: rgba(185, 28, 28, 0.15); color: #FCA5A5; }
[data-theme='dark'] .erp-task-priority-medium { background: rgba(146, 64, 14, 0.15); color: #FCD34D; }
[data-theme='dark'] .erp-task-priority-low { background: rgba(4, 120, 87, 0.15); color: #6EE7B7; }
[data-theme='dark'] .erp-task-priority-high { background: rgba(229, 83, 75, 0.15); color: #e5534b; }
[data-theme='dark'] .erp-task-priority-medium { background: rgba(221, 91, 0, 0.15); color: #dd5b00; }
[data-theme='dark'] .erp-task-priority-low { background: rgba(26, 174, 57, 0.15); color: #1aae39; }
/* Activity Timeline */
.erp-activity-list {
@@ -1143,12 +1189,12 @@ body {
.erp-activity-time {
font-size: 11px;
color: #64748B;
color: #a39e98;
margin-top: 2px;
}
[data-theme='dark'] .erp-activity-time {
color: #94A3B8;
color: #6d6862;
}
/* Empty State */