mirror of
https://github.com/ikunshare/Onekey.git
synced 2026-01-13 00:27:32 +08:00
引入英文和中文多语言支持,web 目录下静态资源和模板按语言分目录存放。新增 src/utils/i18n.py 实现国际化,main.py 增加多语言错误提示。CI/CD 工作流升级 Python 版本与 Nuitka 编译方式,提升兼容性和构建效率。
315 lines
6.3 KiB
CSS
315 lines
6.3 KiB
CSS
.project-info-card {
|
|
background: var(--gradient-primary);
|
|
border-radius: var(--md-sys-shape-corner-extra-large);
|
|
padding: 32px;
|
|
margin-bottom: 24px;
|
|
box-shadow: var(--md-sys-elevation-level3);
|
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
[data-theme="dark"] .project-info-card {
|
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
background: linear-gradient(
|
|
135deg,
|
|
var(--md-sys-color-primary-container) 0%,
|
|
var(--md-sys-color-secondary-container) 100%
|
|
);
|
|
color: var(--md-sys-color-on-primary-container);
|
|
}
|
|
|
|
.project-info-card::before {
|
|
content: "";
|
|
position: absolute;
|
|
top: -50%;
|
|
right: -50%;
|
|
width: 200%;
|
|
height: 200%;
|
|
background: radial-gradient(
|
|
circle,
|
|
rgba(255, 255, 255, 0.1) 0%,
|
|
transparent 70%
|
|
);
|
|
animation: rotate 30s linear infinite;
|
|
}
|
|
|
|
.project-header {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 20px;
|
|
margin-bottom: 20px;
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
.project-logo {
|
|
width: 64px;
|
|
height: 64px;
|
|
background: rgba(255, 255, 255, 0.2);
|
|
backdrop-filter: blur(10px);
|
|
border-radius: var(--md-sys-shape-corner-large);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
|
|
transition: transform var(--transition-medium) ease;
|
|
}
|
|
|
|
.project-logo:hover {
|
|
transform: scale(1.1) rotate(5deg);
|
|
}
|
|
|
|
.project-logo .material-icons {
|
|
color: white;
|
|
font-size: 36px;
|
|
}
|
|
|
|
.project-details {
|
|
flex: 1;
|
|
}
|
|
|
|
.project-name {
|
|
font-size: 24px;
|
|
font-weight: 600;
|
|
color: white;
|
|
margin: 0 0 4px 0;
|
|
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
[data-theme="dark"] .project-info-card .project-name {
|
|
color: var(--md-sys-color-on-primary-container);
|
|
}
|
|
|
|
.project-subtitle {
|
|
font-size: 16px;
|
|
color: rgba(255, 255, 255, 0.9);
|
|
margin: 0;
|
|
}
|
|
|
|
[data-theme="dark"] .project-info-card .project-subtitle {
|
|
color: var(--md-sys-color-on-primary-container);
|
|
}
|
|
|
|
.project-version {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-end;
|
|
gap: 4px;
|
|
}
|
|
|
|
.version-label {
|
|
background: rgba(255, 255, 255, 0.2);
|
|
backdrop-filter: blur(10px);
|
|
color: white;
|
|
padding: 6px 16px;
|
|
border-radius: var(--md-sys-shape-corner-full);
|
|
font-size: 14px;
|
|
font-weight: 600;
|
|
border: 1px solid rgba(255, 255, 255, 0.3);
|
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
[data-theme="dark"] .project-info-card .version-label {
|
|
color: var(--md-sys-color-on-primary-container);
|
|
}
|
|
|
|
.version-type {
|
|
font-size: 12px;
|
|
color: rgba(255, 255, 255, 0.8);
|
|
}
|
|
|
|
.project-description {
|
|
margin-bottom: 24px;
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
.project-description p {
|
|
font-size: 15px;
|
|
color: rgba(255, 255, 255, 0.95);
|
|
line-height: 1.6;
|
|
margin: 0;
|
|
}
|
|
|
|
.project-links {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
|
gap: 12px;
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
.project-link {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
padding: 16px;
|
|
background: rgba(255, 255, 255, 0.15);
|
|
backdrop-filter: blur(10px);
|
|
color: white;
|
|
text-decoration: none;
|
|
border-radius: var(--md-sys-shape-corner-medium);
|
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
transition: all var(--transition-medium) ease;
|
|
}
|
|
|
|
[data-theme="dark"] .project-link {
|
|
background: rgba(255, 255, 255, 0.1);
|
|
color: var(--md-sys-color-on-primary-container);
|
|
}
|
|
|
|
.project-link:hover {
|
|
background: rgba(255, 255, 255, 0.25);
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
|
|
}
|
|
|
|
[data-theme="dark"] .project-link:hover {
|
|
background: rgba(255, 255, 255, 0.2);
|
|
}
|
|
|
|
.project-link .material-icons {
|
|
font-size: 24px;
|
|
transition: transform var(--transition-fast) ease;
|
|
}
|
|
|
|
.project-link:hover .material-icons {
|
|
transform: scale(1.1);
|
|
}
|
|
|
|
.link-content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 2px;
|
|
}
|
|
|
|
.link-title {
|
|
font-size: 14px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.link-url {
|
|
font-size: 12px;
|
|
opacity: 0.8;
|
|
}
|
|
|
|
.tech-info {
|
|
background: var(--md-sys-color-surface-container);
|
|
backdrop-filter: blur(10px);
|
|
border: 1px solid var(--md-sys-color-outline-variant);
|
|
border-radius: var(--md-sys-shape-corner-large);
|
|
padding: 24px;
|
|
margin-bottom: 24px;
|
|
box-shadow: var(--md-sys-elevation-level1);
|
|
transition: all var(--transition-medium) ease;
|
|
}
|
|
|
|
.tech-info:hover {
|
|
transform: translateY(-2px);
|
|
box-shadow: var(--md-sys-elevation-level3);
|
|
}
|
|
|
|
.tech-header {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.tech-header .material-icons {
|
|
font-size: 28px;
|
|
color: var(--md-sys-color-primary);
|
|
}
|
|
|
|
.tech-header h4 {
|
|
font-size: 18px;
|
|
font-weight: 600;
|
|
color: var(--md-sys-color-on-surface);
|
|
margin: 0;
|
|
}
|
|
|
|
.tech-content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 12px;
|
|
}
|
|
|
|
.tech-item {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 4px;
|
|
padding: 12px;
|
|
background: var(--md-sys-color-surface-container-low);
|
|
border-radius: var(--md-sys-shape-corner-small);
|
|
border: 1px solid var(--md-sys-color-outline-variant);
|
|
transition: all var(--transition-fast) ease;
|
|
}
|
|
|
|
.tech-item:hover {
|
|
transform: translateX(4px);
|
|
border-color: var(--md-sys-color-primary);
|
|
}
|
|
|
|
.tech-item strong {
|
|
color: var(--md-sys-color-on-surface);
|
|
font-weight: 600;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.tech-item span {
|
|
color: var(--md-sys-color-on-surface-variant);
|
|
font-size: 13px;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.usage-notice {
|
|
background: var(--md-sys-color-warning-container);
|
|
border: 1px solid var(--md-sys-color-warning);
|
|
border-radius: var(--md-sys-shape-corner-large);
|
|
padding: 24px;
|
|
margin-bottom: 24px;
|
|
box-shadow: var(--md-sys-elevation-level1);
|
|
}
|
|
|
|
.notice-header {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.notice-header .material-icons {
|
|
color: var(--md-sys-color-warning);
|
|
font-size: 28px;
|
|
}
|
|
|
|
.notice-header h4 {
|
|
font-size: 18px;
|
|
font-weight: 600;
|
|
color: var(--md-sys-color-on-warning-container);
|
|
margin: 0;
|
|
}
|
|
|
|
.notice-content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
}
|
|
|
|
.notice-content p {
|
|
font-size: 14px;
|
|
color: var(--md-sys-color-on-warning-container);
|
|
line-height: 1.5;
|
|
margin: 0;
|
|
padding: 8px 12px;
|
|
background: var(--md-sys-color-surface);
|
|
border-radius: var(--md-sys-shape-corner-small);
|
|
border-left: 3px solid var(--md-sys-color-warning);
|
|
}
|
|
|
|
.notice-content strong {
|
|
color: var(--md-sys-color-on-warning-container);
|
|
font-weight: 600;
|
|
}
|