Add files via upload

This commit is contained in:
公明
2026-06-01 17:35:41 +08:00
committed by GitHub
parent 25464a68e6
commit be59ddcab6
4 changed files with 134 additions and 23 deletions
+121 -20
View File
@@ -9,6 +9,10 @@
--secondary-color: #2d2d2d; --secondary-color: #2d2d2d;
--accent-color: #0066ff; --accent-color: #0066ff;
--accent-hover: #0052cc; --accent-hover: #0052cc;
--brand-core: #141824;
--brand-ai-start: #0066ff;
--brand-ai-end: #7c3aed;
--brand-gradient: linear-gradient(135deg, var(--brand-ai-start) 0%, var(--brand-ai-end) 100%);
--bg-primary: #ffffff; --bg-primary: #ffffff;
--bg-secondary: #f8f9fa; --bg-secondary: #f8f9fa;
--bg-tertiary: #f1f3f5; --bg-tertiary: #f1f3f5;
@@ -125,11 +129,19 @@ body {
color: var(--text-primary); color: var(--text-primary);
} }
.main-sidebar-header .logo span { .main-sidebar-header .logo span,
.main-sidebar-header .brand-wordmark {
font-size: 1.25rem; font-size: 1.25rem;
font-weight: 600; font-weight: 700;
letter-spacing: -0.3px; letter-spacing: -0.04em;
color: var(--text-primary); color: var(--brand-core);
}
.main-sidebar-header .brand-wordmark__ai {
background: var(--brand-gradient);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
} }
.main-sidebar-nav { .main-sidebar-nav {
@@ -592,37 +604,89 @@ header {
.logo { .logo {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 12px; gap: 10px;
} }
.logo svg { .logo svg {
color: var(--accent-color); color: var(--accent-color);
} }
.logo h1 { /* 品牌字标:CyberStrike + AI 渐变 */
.brand-wordmark {
display: inline-flex;
align-items: baseline;
margin: 0;
font-size: 1.375rem;
font-weight: 700;
letter-spacing: -0.04em;
line-height: 1;
white-space: nowrap;
}
.brand-wordmark--lg {
font-size: 1.5rem; font-size: 1.5rem;
font-weight: 600; }
letter-spacing: -0.5px;
.brand-wordmark--sm {
font-size: 1.25rem;
}
.brand-wordmark__core {
color: var(--brand-core);
}
.brand-wordmark__ai {
background: var(--brand-gradient);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
font-weight: 800;
}
.brand-logo {
width: 36px;
height: 36px;
border-radius: 10px;
box-shadow: 0 2px 10px rgba(0, 102, 255, 0.18);
flex-shrink: 0;
object-fit: cover;
}
.logo h1,
.logo .brand-wordmark {
font-size: 1.375rem;
} }
.header-logo-link { .header-logo-link {
cursor: pointer; cursor: pointer;
transition: opacity 0.2s ease; transition: transform 0.2s ease, opacity 0.2s ease;
} }
.header-logo-link:hover { .header-logo-link:hover {
opacity: 0.85; opacity: 1;
transform: translateY(-1px);
}
.header-logo-link:hover .brand-logo {
box-shadow: 0 4px 14px rgba(0, 102, 255, 0.28);
} }
.version-badge { .version-badge {
display: inline-block; display: inline-flex;
margin-left: 6px; align-items: center;
font-size: 0.6875rem; margin-left: 4px;
font-weight: 400; padding: 3px 9px;
color: var(--text-muted); font-size: 0.625rem;
letter-spacing: 0.02em; font-weight: 600;
vertical-align: 0.35em; font-family: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;
color: var(--brand-ai-start);
background: linear-gradient(135deg, rgba(0, 102, 255, 0.08) 0%, rgba(124, 58, 237, 0.08) 100%);
border: 1px solid rgba(0, 102, 255, 0.22);
border-radius: 999px;
letter-spacing: 0.04em;
vertical-align: middle;
user-select: none; user-select: none;
line-height: 1.4;
} }
.header-right { .header-right {
@@ -3091,10 +3155,36 @@ header {
.login-brand { .login-brand {
padding: 32px 28px 24px; padding: 32px 28px 24px;
text-align: center; text-align: center;
background: linear-gradient(180deg, rgba(0, 102, 255, 0.06) 0%, transparent 100%); background: linear-gradient(180deg, rgba(0, 102, 255, 0.07) 0%, rgba(124, 58, 237, 0.04) 50%, transparent 100%);
border-bottom: 1px solid var(--border-color); border-bottom: 1px solid var(--border-color);
} }
.login-brand-logo {
width: 56px;
height: 56px;
margin: 0 auto 16px;
border-radius: 14px;
box-shadow: 0 6px 20px rgba(0, 102, 255, 0.2);
object-fit: cover;
}
.login-title {
margin: 0;
display: flex;
flex-wrap: wrap;
align-items: baseline;
justify-content: center;
gap: 0.35em;
font-size: 1.25rem;
font-weight: 500;
color: var(--text-secondary);
letter-spacing: -0.01em;
}
.login-title .brand-wordmark {
font-size: 1.375rem;
}
.login-brand h2 { .login-brand h2 {
margin: 0; margin: 0;
font-size: 1.375rem; font-size: 1.375rem;
@@ -3530,8 +3620,19 @@ header {
flex-shrink: 0; flex-shrink: 0;
} }
.logo h1 { .logo h1,
font-size: 1.25rem; .logo .brand-wordmark {
font-size: 1.2rem;
}
.brand-logo {
width: 32px;
height: 32px;
}
.version-badge {
padding: 2px 7px;
font-size: 0.5625rem;
} }
.header-subtitle { .header-subtitle {
+1
View File
@@ -48,6 +48,7 @@
}, },
"login": { "login": {
"title": "Sign in to CyberStrikeAI", "title": "Sign in to CyberStrikeAI",
"titlePrefix": "Sign in to",
"subtitle": "Enter the access password from config", "subtitle": "Enter the access password from config",
"passwordLabel": "Password", "passwordLabel": "Password",
"passwordPlaceholder": "Enter password", "passwordPlaceholder": "Enter password",
+1
View File
@@ -48,6 +48,7 @@
}, },
"login": { "login": {
"title": "登录 CyberStrikeAI", "title": "登录 CyberStrikeAI",
"titlePrefix": "登录",
"subtitle": "请输入配置中的访问密码", "subtitle": "请输入配置中的访问密码",
"passwordLabel": "密码", "passwordLabel": "密码",
"passwordPlaceholder": "输入登录密码", "passwordPlaceholder": "输入登录密码",
+11 -3
View File
@@ -14,7 +14,13 @@
<div id="login-overlay" class="login-overlay" style="display: none;"> <div id="login-overlay" class="login-overlay" style="display: none;">
<div class="login-card"> <div class="login-card">
<div class="login-brand"> <div class="login-brand">
<h2 data-i18n="login.title">登录 CyberStrikeAI</h2> <img src="/static/logo.png" alt="" class="login-brand-logo" width="56" height="56">
<h2 class="login-title">
<span data-i18n="login.titlePrefix">登录</span>
<span class="brand-wordmark brand-wordmark--sm" aria-label="CyberStrikeAI">
<span class="brand-wordmark__core">CyberStrike</span><span class="brand-wordmark__ai">AI</span>
</span>
</h2>
<p class="login-subtitle" data-i18n="login.subtitle">请输入配置中的访问密码</p> <p class="login-subtitle" data-i18n="login.subtitle">请输入配置中的访问密码</p>
</div> </div>
<form id="login-form" class="login-form"> <form id="login-form" class="login-form">
@@ -34,8 +40,10 @@
<header> <header>
<div class="header-content"> <div class="header-content">
<div class="logo header-logo-link" onclick="switchPage('dashboard')" role="button" data-i18n="header.backToDashboard" data-i18n-attr="title" data-i18n-skip-text="true" title="返回仪表盘"> <div class="logo header-logo-link" onclick="switchPage('dashboard')" role="button" data-i18n="header.backToDashboard" data-i18n-attr="title" data-i18n-skip-text="true" title="返回仪表盘">
<img src="/static/logo.png" alt="CyberStrikeAI Logo" style="width: 32px; height: 32px; margin-right: 8px;"> <img src="/static/logo.png" alt="CyberStrikeAI Logo" class="brand-logo" width="36" height="36">
<h1>CyberStrikeAI</h1> <h1 class="brand-wordmark brand-wordmark--lg">
<span class="brand-wordmark__core">CyberStrike</span><span class="brand-wordmark__ai">AI</span>
</h1>
<span class="version-badge" data-i18n="header.version" data-i18n-attr="title" data-i18n-skip-text="true" title="当前版本">{{.Version}}</span> <span class="version-badge" data-i18n="header.version" data-i18n-attr="title" data-i18n-skip-text="true" title="当前版本">{{.Version}}</span>
</div> </div>
<div class="header-right"> <div class="header-right">