|
|
* { |
|
|
margin: 0; |
|
|
padding: 0; |
|
|
box-sizing: border-box; |
|
|
} |
|
|
|
|
|
:root { |
|
|
--color-primary: #405DF9; |
|
|
--color-secondary: #6C63F0; |
|
|
--color-accent-1: #7342CC; |
|
|
--color-accent-2: #B750BE; |
|
|
--color-accent-3: #ED589D; |
|
|
--color-accent-4: #FB466C; |
|
|
--color-accent-5: #FFC159; |
|
|
} |
|
|
|
|
|
html { |
|
|
scroll-behavior: smooth; |
|
|
} |
|
|
|
|
|
body { |
|
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif; |
|
|
background: linear-gradient(135deg, #f8fafc 0%, #e8f4f8 100%); |
|
|
color: #1e293b; |
|
|
line-height: 1.6; |
|
|
min-height: 100vh; |
|
|
display: flex; |
|
|
flex-direction: column; |
|
|
} |
|
|
|
|
|
.main-content { |
|
|
padding-top: 80px; |
|
|
min-height: calc(100vh - 300px); |
|
|
} |
|
|
|
|
|
|
|
|
.card { |
|
|
background: white; |
|
|
border-radius: 16px; |
|
|
padding: 24px; |
|
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04); |
|
|
border: 1px solid rgba(0, 0, 0, 0.04); |
|
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); |
|
|
} |
|
|
|
|
|
.card:hover { |
|
|
box-shadow: 0 8px 30px rgba(64, 93, 249, 0.12); |
|
|
transform: translateY(-2px); |
|
|
border-color: rgba(64, 93, 249, 0.2); |
|
|
} |
|
|
|
|
|
.card-title { |
|
|
font-size: 18px; |
|
|
font-weight: 600; |
|
|
margin-bottom: 16px; |
|
|
color: #1e293b; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
gap: 8px; |
|
|
} |
|
|
|
|
|
.card-title svg { |
|
|
width: 20px; |
|
|
height: 20px; |
|
|
color: var(--color-primary); |
|
|
} |
|
|
|
|
|
|
|
|
.btn { |
|
|
display: inline-flex; |
|
|
align-items: center; |
|
|
gap: 8px; |
|
|
padding: 10px 20px; |
|
|
border-radius: 8px; |
|
|
font-size: 14px; |
|
|
font-weight: 500; |
|
|
border: none; |
|
|
cursor: pointer; |
|
|
text-decoration: none; |
|
|
transition: all 0.2s ease; |
|
|
} |
|
|
|
|
|
.btn-primary { |
|
|
background: linear-gradient(135deg, var(--color-primary), var(--color-secondary)); |
|
|
color: white; |
|
|
} |
|
|
|
|
|
.btn-primary:hover { |
|
|
transform: scale(1.02); |
|
|
box-shadow: 0 4px 12px rgba(64, 93, 249, 0.4); |
|
|
} |
|
|
|
|
|
.btn-secondary { |
|
|
background: rgba(64, 93, 249, 0.08); |
|
|
color: var(--color-primary); |
|
|
} |
|
|
|
|
|
.btn-secondary:hover { |
|
|
background: rgba(64, 93, 249, 0.16); |
|
|
} |
|
|
|
|
|
|
|
|
@keyframes fadeInUp { |
|
|
from { |
|
|
opacity: 0; |
|
|
transform: translateY(20px); |
|
|
} |
|
|
to { |
|
|
opacity: 1; |
|
|
transform: translateY(0); |
|
|
} |
|
|
} |
|
|
|
|
|
.fade-in { |
|
|
animation: fadeInUp 0.6s ease forwards; |
|
|
} |
|
|
|
|
|
.delay-1 { animation-delay: 0.1s; } |
|
|
.delay-2 { animation-delay: 0.2s; } |
|
|
.delay-3 { animation-delay: 0.3s; } |
|
|
.delay-4 { animation-delay: 0.4s; } |
|
|
|
|
|
|
|
|
.stat-card { |
|
|
background: white; |
|
|
border-radius: 12px; |
|
|
padding: 20px; |
|
|
position: relative; |
|
|
overflow: hidden; |
|
|
} |
|
|
|
|
|
.stat-card::before { |
|
|
content: ''; |
|
|
position: absolute; |
|
|
top: 0; |
|
|
left: 0; |
|
|
right: 0; |
|
|
height: 4px; |
|
|
background: linear-gradient(90deg, var(--color-primary), var(--color-secondary)); |
|
|
} |
|
|
|
|
|
.stat-value { |
|
|
font-size: 32px; |
|
|
font-weight: 700; |
|
|
color: #1e293b; |
|
|
margin: 8px 0; |
|
|
} |
|
|
|
|
|
.stat-label { |
|
|
font-size: 14px; |
|
|
color: #64748b; |
|
|
} |
|
|
|
|
|
.stat-change { |
|
|
font-size: 13px; |
|
|
font-weight: 500; |
|
|
} |
|
|
|
|
|
.stat-change.positive { |
|
|
color: #10b981; |
|
|
} |
|
|
|
|
|
.stat-change.negative { |
|
|
color: #ef4444; |
|
|
} |
|
|
|
|
|
|
|
|
.gradient-text { |
|
|
background: linear-gradient(135deg, var(--color-primary), var(--color-secondary)); |
|
|
-webkit-background-clip: text; |
|
|
-webkit-text-fill-color: transparent; |
|
|
background-clip: text; |
|
|
} |
|
|
|
|
|
|
|
|
.data-table { |
|
|
width: 100%; |
|
|
border-collapse: collapse; |
|
|
} |
|
|
|
|
|
.data-table th, |
|
|
.data-table td { |
|
|
padding: 12px 16px; |
|
|
text-align: left; |
|
|
border-bottom: 1px solid rgba(0, 0, 0, 0.06); |
|
|
} |
|
|
|
|
|
.data-table th { |
|
|
font-size: 13px; |
|
|
font-weight: 600; |
|
|
color: #64748b; |
|
|
text-transform: uppercase; |
|
|
letter-spacing: 0.5px; |
|
|
} |
|
|
|
|
|
.data-table td { |
|
|
font-size: 14px; |
|
|
color: #1e293b; |
|
|
} |
|
|
|
|
|
.data-table tr:hover { |
|
|
background: rgba(64, 93, 249, 0.02); |
|
|
} |
|
|
|
|
|
|
|
|
.progress-bar { |
|
|
height: 8px; |
|
|
background: #e5e7eb; |
|
|
border-radius: 4px; |
|
|
overflow: hidden; |
|
|
} |
|
|
|
|
|
.progress-fill { |
|
|
height: 100%; |
|
|
border-radius: 4px; |
|
|
transition: width 0.8s ease; |
|
|
} |
|
|
|
|
|
|
|
|
.badge { |
|
|
display: inline-block; |
|
|
padding: 4px 12px; |
|
|
border-radius: 20px; |
|
|
font-size: 12px; |
|
|
font-weight: 500; |
|
|
} |
|
|
|
|
|
.badge-success { |
|
|
background: #d1fae5; |
|
|
color: #059669; |
|
|
} |
|
|
|
|
|
.badge-warning { |
|
|
background: #fef3c7; |
|
|
color: #d97706; |
|
|
} |
|
|
|
|
|
.badge-danger { |
|
|
background: #fee2e2; |
|
|
color: #dc2626; |
|
|
} |
|
|
|
|
|
.badge-info { |
|
|
background: #dbeafe; |
|
|
color: #2563eb; |
|
|
} |
|
|
|
|
|
|
|
|
@media (max-width: 768px) { |
|
|
.stat-value { |
|
|
font-size: 24px; |
|
|
} |
|
|
|
|
|
.card { |
|
|
padding: 16px; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.lazy-load { |
|
|
opacity: 0; |
|
|
transition: opacity 0.3s ease; |
|
|
} |
|
|
|
|
|
.lazy-load.loaded { |
|
|
opacity: 1; |
|
|
} |
|
|
|
|
|
|
|
|
::-webkit-scrollbar { |
|
|
width: 8px; |
|
|
height: 8px; |
|
|
} |
|
|
|
|
|
::-webkit-scrollbar-track { |
|
|
background: #f1f5f9; |
|
|
} |
|
|
|
|
|
::-webkit-scrollbar-thumb { |
|
|
background: #cbd5e1; |
|
|
border-radius: 4px; |
|
|
} |
|
|
|
|
|
::-webkit-scrollbar-thumb:hover { |
|
|
background: #94a3b8; |
|
|
} |