diff --git a/docs/screenshots/ai-chat.png b/docs/screenshots/ai-chat.png index 92e0353..6c57f4e 100644 Binary files a/docs/screenshots/ai-chat.png and b/docs/screenshots/ai-chat.png differ diff --git a/docs/screenshots/ai-settings.png b/docs/screenshots/ai-settings.png index a6794c4..5a9648d 100644 Binary files a/docs/screenshots/ai-settings.png and b/docs/screenshots/ai-settings.png differ diff --git a/docs/screenshots/alarm-rule-management.png b/docs/screenshots/alarm-rule-management.png index b911479..485d043 100644 Binary files a/docs/screenshots/alarm-rule-management.png and b/docs/screenshots/alarm-rule-management.png differ diff --git a/docs/screenshots/alarms.png b/docs/screenshots/alarms.png index e4a8bcc..00fb077 100644 Binary files a/docs/screenshots/alarms.png and b/docs/screenshots/alarms.png differ diff --git a/docs/screenshots/camera-management.png b/docs/screenshots/camera-management.png index 21f228f..8a0c887 100644 Binary files a/docs/screenshots/camera-management.png and b/docs/screenshots/camera-management.png differ diff --git a/docs/screenshots/campus-state.png b/docs/screenshots/campus-state.png index 2792766..138880b 100644 Binary files a/docs/screenshots/campus-state.png and b/docs/screenshots/campus-state.png differ diff --git a/docs/screenshots/login.png b/docs/screenshots/login.png index 3956f09..fd787ae 100644 Binary files a/docs/screenshots/login.png and b/docs/screenshots/login.png differ diff --git a/docs/screenshots/map-management.png b/docs/screenshots/map-management.png index ca4306f..cab0a98 100644 Binary files a/docs/screenshots/map-management.png and b/docs/screenshots/map-management.png differ diff --git a/docs/screenshots/monitoring-screen.png b/docs/screenshots/monitoring-screen.png index 801e428..f5d635a 100644 Binary files a/docs/screenshots/monitoring-screen.png and b/docs/screenshots/monitoring-screen.png differ diff --git a/docs/screenshots/overview.png b/docs/screenshots/overview.png index 1310224..ee3811c 100644 Binary files a/docs/screenshots/overview.png and b/docs/screenshots/overview.png differ diff --git a/docs/screenshots/user-info.png b/docs/screenshots/user-info.png index f18f2a4..5f24303 100644 Binary files a/docs/screenshots/user-info.png and b/docs/screenshots/user-info.png differ diff --git a/docs/screenshots/user-management.png b/docs/screenshots/user-management.png index 5bfbdc6..c886b54 100644 Binary files a/docs/screenshots/user-management.png and b/docs/screenshots/user-management.png differ diff --git a/frontend/src/global.less b/frontend/src/global.less index bef27e5..6022a12 100644 --- a/frontend/src/global.less +++ b/frontend/src/global.less @@ -286,13 +286,13 @@ body::after { .ant-btn-primary { border: 0; - background: linear-gradient(135deg, #0891b2, #2563eb 52%, #7c3aed); + background: linear-gradient(135deg, #0e7490, #1d4ed8 52%, #6d28d9); box-shadow: 0 10px 24px rgba(37, 99, 235, 0.28); } .ant-btn-primary:hover, .ant-btn-primary:focus { - background: linear-gradient(135deg, #06b6d4, #3b82f6 52%, #8b5cf6) !important; + background: linear-gradient(135deg, #0891b2, #2563eb 52%, #7c3aed) !important; box-shadow: 0 0 26px rgba(34, 211, 238, 0.26) !important; } @@ -565,4 +565,41 @@ body::after { .ant-alert-close-icon:hover .anticon, .ant-alert-close-icon:hover .anticon-close { color: #ecfeff !important; -} \ No newline at end of file +} +/* Static message/notification calls (message.error etc.) do not consume ConfigProvider + dark theme in antd v5 — force dark glass panel so no white popup appears in dark shell. */ +.ant-message .ant-message-notice-content, +.ant-notification .ant-notification-notice { + color: #e6f7ff; + border: 1px solid rgba(103, 232, 249, 0.28); + background: linear-gradient(145deg, rgba(14, 30, 56, 0.96), rgba(7, 18, 39, 0.96)); + box-shadow: 0 16px 44px rgba(2, 8, 23, 0.55), 0 0 24px rgba(34, 211, 238, 0.12); + backdrop-filter: blur(16px); +} + +.ant-message .ant-message-notice-content .ant-message-custom-content, +.ant-notification .ant-notification-notice-message, +.ant-notification .ant-notification-notice-description { + color: #e6f7ff !important; +} + +.ant-message .ant-message-notice-content .anticon-close-circle, +.ant-message .ant-message-notice-content .anticon-close { + color: #fb7185 !important; +} + +.ant-message .ant-message-notice-content .anticon-exclamation-circle { + color: #fbbf24 !important; +} + +.ant-message .ant-message-notice-content .anticon-check-circle { + color: #4ade80 !important; +} + +.ant-message .ant-message-notice-content .anticon-info-circle { + color: #67e8f9 !important; +} + +.ant-message .ant-message-notice-content .anticon-loading { + color: #67e8f9 !important; +} diff --git a/frontend/src/pages/login/index.module.less b/frontend/src/pages/login/index.module.less index bf5e35e..5ee0051 100644 --- a/frontend/src/pages/login/index.module.less +++ b/frontend/src/pages/login/index.module.less @@ -72,7 +72,7 @@ box-shadow: 0 24px 70px rgba(0, 0, 0, 0.48), inset 0 1px 0 rgba(255, 255, 255, 0.08), - 0 0 36px rgba(34, 211, 238, 0.12); + 0 0 52px rgba(34, 211, 238, 0.22); backdrop-filter: blur(22px); } @@ -120,7 +120,7 @@ .brandRow p { margin: 4px 0 0; - color: rgba(226, 242, 255, 0.58); + color: rgba(226, 242, 255, 0.82); font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; @@ -168,7 +168,7 @@ height: 44px; margin-top: 8px; border: 0; - background: linear-gradient(135deg, #0891b2, #2563eb 52%, #7c3aed); + background: linear-gradient(135deg, #0e7490, #1d4ed8 52%, #6d28d9); box-shadow: 0 14px 28px rgba(37, 99, 235, 0.3); } @@ -182,7 +182,7 @@ gap: 18px; margin-top: 24px; padding-top: 18px; - color: rgba(226, 242, 255, 0.52); + color: rgba(226, 242, 255, 0.78); font-size: 13px; border-top: 1px solid rgba(103, 232, 249, 0.14); } diff --git a/frontend/src/pages/overview/index.less b/frontend/src/pages/overview/index.less index b507989..8110dfe 100644 --- a/frontend/src/pages/overview/index.less +++ b/frontend/src/pages/overview/index.less @@ -428,6 +428,15 @@ .kpi-card:nth-child(4) { animation-delay: 0.2s; } .kpi-card:nth-child(5) { animation-delay: 0.26s; } +/* 常驻霓虹边框光(静态即可见) */ +.kpi-card { + box-shadow: 0 0 0 1px rgba(34, 211, 238, 0.18), 0 10px 28px rgba(2, 8, 23, 0.42), 0 0 22px rgba(34, 211, 238, 0.1); +} + +.ov-panel { + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05), 0 0 24px rgba(34, 211, 238, 0.08); +} + @keyframes dazzle-ov-card-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } diff --git a/frontend/src/styles/dazzle.less b/frontend/src/styles/dazzle.less index 67de0a4..7627566 100644 --- a/frontend/src/styles/dazzle.less +++ b/frontend/src/styles/dazzle.less @@ -15,9 +15,9 @@ /* ---------- 1. 动态极光背景:三团彩色光斑缓慢漂移 ---------- */ body::after { background: - radial-gradient(circle at 22% 24%, rgba(34, 211, 238, 0.16), transparent 32%), - radial-gradient(circle at 78% 30%, rgba(139, 92, 246, 0.15), transparent 34%), - radial-gradient(circle at 50% 80%, rgba(59, 130, 246, 0.17), transparent 38%); + radial-gradient(circle at 22% 24%, rgba(34, 211, 238, 0.22), transparent 34%), + radial-gradient(circle at 78% 30%, rgba(139, 92, 246, 0.2), transparent 36%), + radial-gradient(circle at 50% 80%, rgba(59, 130, 246, 0.22), transparent 40%); animation: dazzle-aurora 36s ease-in-out infinite alternate; will-change: transform; } @@ -60,7 +60,7 @@ body::before { transparent ); background-repeat: no-repeat; - background-size: 38% 100%; + background-size: 46% 100%; animation: dazzle-header-sweep 7s linear infinite; } @@ -103,7 +103,7 @@ body::before { -webkit-mask-composite: xor; mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask-composite: exclude; - opacity: 0.22; + opacity: 0.5; transition: opacity 0.3s ease; animation: dazzle-ring-spin 7s linear infinite; }