2026-01-19 11:03:08 +00:00
|
|
|
/* Global Styles */
|
|
|
|
|
* {
|
|
|
|
|
margin: 0;
|
|
|
|
|
padding: 0;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
body {
|
|
|
|
|
margin: 0;
|
2026-03-26 06:55:12 +00:00
|
|
|
font-family: 'MiSans', 'PingFang SC', 'Noto Sans SC', 'Microsoft YaHei', sans-serif;
|
2026-01-19 11:03:08 +00:00
|
|
|
-webkit-font-smoothing: antialiased;
|
|
|
|
|
-moz-osx-font-smoothing: grayscale;
|
2026-03-26 06:55:12 +00:00
|
|
|
background-color: transparent;
|
2026-01-19 11:03:08 +00:00
|
|
|
color: #1e293b;
|
|
|
|
|
line-height: 1.6;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.app {
|
|
|
|
|
min-height: 100vh;
|
|
|
|
|
width: 100%;
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-26 06:55:12 +00:00
|
|
|
.ant-btn {
|
|
|
|
|
display: inline-flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
gap: 8px;
|
|
|
|
|
border-radius: 12px;
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
letter-spacing: 0.01em;
|
|
|
|
|
transition: transform 0.18s ease, box-shadow 0.22s ease, border-color 0.22s ease, background 0.22s ease, color 0.22s ease;
|
|
|
|
|
box-shadow: 0 6px 16px rgba(15, 23, 42, 0.06);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn:hover {
|
|
|
|
|
transform: translateY(-1px);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn:active {
|
|
|
|
|
transform: translateY(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn .anticon {
|
|
|
|
|
font-size: 0.98em;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-default,
|
|
|
|
|
.ant-btn.ant-btn-dashed {
|
|
|
|
|
background: rgba(255, 255, 255, 0.92);
|
|
|
|
|
border-color: rgba(148, 163, 184, 0.2);
|
|
|
|
|
color: #294261;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-default:hover,
|
|
|
|
|
.ant-btn.ant-btn-dashed:hover {
|
|
|
|
|
background: #ffffff;
|
|
|
|
|
border-color: rgba(59, 130, 246, 0.28);
|
|
|
|
|
color: #1d4ed8;
|
|
|
|
|
box-shadow: 0 10px 24px rgba(59, 130, 246, 0.12);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-primary {
|
|
|
|
|
background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 45%, #1e40af 100%);
|
|
|
|
|
border-color: transparent;
|
|
|
|
|
color: #fff;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-primary:hover {
|
|
|
|
|
background: linear-gradient(135deg, #3b82f6 0%, #2563eb 48%, #1d4ed8 100%);
|
|
|
|
|
box-shadow: 0 14px 28px rgba(37, 99, 235, 0.24);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-primary.ant-btn-dangerous,
|
|
|
|
|
.ant-btn.ant-btn-dangerous:not(.ant-btn-link):not(.ant-btn-text) {
|
|
|
|
|
background: linear-gradient(135deg, #ef4444 0%, #dc2626 48%, #b91c1c 100%);
|
|
|
|
|
border-color: transparent;
|
|
|
|
|
color: #fff;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-primary.ant-btn-dangerous:hover,
|
|
|
|
|
.ant-btn.ant-btn-dangerous:not(.ant-btn-link):not(.ant-btn-text):hover {
|
|
|
|
|
box-shadow: 0 14px 28px rgba(220, 38, 38, 0.24);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-link,
|
|
|
|
|
.ant-btn.ant-btn-text {
|
|
|
|
|
box-shadow: none;
|
|
|
|
|
transform: none;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-link {
|
|
|
|
|
padding-inline: 6px;
|
|
|
|
|
color: #31568b;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-link:hover {
|
|
|
|
|
color: #1d4ed8;
|
|
|
|
|
background: rgba(37, 99, 235, 0.08);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-link.ant-btn-dangerous,
|
|
|
|
|
.ant-btn.ant-btn-text.ant-btn-dangerous {
|
|
|
|
|
color: #dc2626;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-link.ant-btn-dangerous:hover,
|
|
|
|
|
.ant-btn.ant-btn-text.ant-btn-dangerous:hover {
|
|
|
|
|
background: rgba(220, 38, 38, 0.08);
|
|
|
|
|
color: #b91c1c;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.btn-soft-blue,
|
|
|
|
|
.ant-btn.ant-btn-primary.btn-soft-blue {
|
|
|
|
|
background: linear-gradient(180deg, #f8fbff 0%, #eff6ff 100%);
|
|
|
|
|
border-color: #bfdbfe;
|
|
|
|
|
color: #1d4ed8;
|
|
|
|
|
box-shadow: 0 10px 22px rgba(59, 130, 246, 0.12);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.btn-soft-blue:hover,
|
|
|
|
|
.ant-btn.ant-btn-primary.btn-soft-blue:hover {
|
|
|
|
|
background: linear-gradient(180deg, #eff6ff 0%, #dbeafe 100%);
|
|
|
|
|
border-color: #93c5fd;
|
|
|
|
|
color: #1d4ed8;
|
|
|
|
|
box-shadow: 0 14px 26px rgba(59, 130, 246, 0.18);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.btn-soft-violet,
|
|
|
|
|
.ant-btn.ant-btn-primary.btn-soft-violet {
|
|
|
|
|
background: linear-gradient(180deg, #faf5ff 0%, #f3e8ff 100%);
|
|
|
|
|
border-color: #d8b4fe;
|
|
|
|
|
color: #7c3aed;
|
|
|
|
|
box-shadow: 0 10px 22px rgba(124, 58, 237, 0.12);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.btn-soft-violet:hover,
|
|
|
|
|
.ant-btn.ant-btn-primary.btn-soft-violet:hover {
|
|
|
|
|
background: linear-gradient(180deg, #f3e8ff 0%, #e9d5ff 100%);
|
|
|
|
|
border-color: #c084fc;
|
|
|
|
|
color: #6d28d9;
|
|
|
|
|
box-shadow: 0 14px 26px rgba(124, 58, 237, 0.18);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.btn-soft-green,
|
|
|
|
|
.ant-btn.ant-btn-primary.btn-soft-green {
|
|
|
|
|
background: linear-gradient(180deg, #f0fdf4 0%, #dcfce7 100%);
|
|
|
|
|
border-color: #86efac;
|
|
|
|
|
color: #15803d;
|
|
|
|
|
box-shadow: 0 10px 22px rgba(34, 197, 94, 0.12);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.btn-soft-green:hover,
|
|
|
|
|
.ant-btn.ant-btn-primary.btn-soft-green:hover {
|
|
|
|
|
background: linear-gradient(180deg, #dcfce7 0%, #bbf7d0 100%);
|
|
|
|
|
border-color: #4ade80;
|
|
|
|
|
color: #166534;
|
|
|
|
|
box-shadow: 0 14px 26px rgba(34, 197, 94, 0.18);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.btn-icon-soft-blue {
|
|
|
|
|
background: #eff6ff;
|
|
|
|
|
border-color: #bfdbfe;
|
|
|
|
|
color: #1d4ed8;
|
|
|
|
|
box-shadow: none;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.btn-icon-soft-blue:hover {
|
|
|
|
|
background: #dbeafe;
|
|
|
|
|
border-color: #93c5fd;
|
|
|
|
|
color: #1d4ed8;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.btn-icon-soft-red,
|
|
|
|
|
.ant-btn.ant-btn-dangerous.btn-icon-soft-red {
|
|
|
|
|
background: #fff1f2;
|
|
|
|
|
border-color: #fecdd3;
|
|
|
|
|
color: #dc2626;
|
|
|
|
|
box-shadow: none;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.btn-icon-soft-red:hover,
|
|
|
|
|
.ant-btn.ant-btn-dangerous.btn-icon-soft-red:hover {
|
|
|
|
|
background: #ffe4e6;
|
|
|
|
|
border-color: #fda4af;
|
|
|
|
|
color: #b91c1c;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-link.btn-text-view,
|
|
|
|
|
.ant-btn.ant-btn-text.btn-text-view {
|
|
|
|
|
color: #2563eb;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-link.btn-text-view:hover,
|
|
|
|
|
.ant-btn.ant-btn-text.btn-text-view:hover {
|
|
|
|
|
background: rgba(37, 99, 235, 0.1);
|
|
|
|
|
color: #1d4ed8;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-link.btn-text-edit,
|
|
|
|
|
.ant-btn.ant-btn-text.btn-text-edit {
|
|
|
|
|
color: #0f766e;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-link.btn-text-edit:hover,
|
|
|
|
|
.ant-btn.ant-btn-text.btn-text-edit:hover {
|
|
|
|
|
background: rgba(13, 148, 136, 0.1);
|
|
|
|
|
color: #0f766e;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-link.btn-text-accent,
|
|
|
|
|
.ant-btn.ant-btn-text.btn-text-accent {
|
|
|
|
|
color: #7c3aed;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-link.btn-text-accent:hover,
|
|
|
|
|
.ant-btn.ant-btn-text.btn-text-accent:hover {
|
|
|
|
|
background: rgba(124, 58, 237, 0.1);
|
|
|
|
|
color: #6d28d9;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-link.btn-text-delete,
|
|
|
|
|
.ant-btn.ant-btn-text.btn-text-delete,
|
|
|
|
|
.ant-btn.ant-btn-link.ant-btn-dangerous.btn-text-delete,
|
|
|
|
|
.ant-btn.ant-btn-text.ant-btn-dangerous.btn-text-delete {
|
|
|
|
|
color: #dc2626;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-link.btn-text-delete:hover,
|
|
|
|
|
.ant-btn.ant-btn-text.btn-text-delete:hover,
|
|
|
|
|
.ant-btn.ant-btn-link.ant-btn-dangerous.btn-text-delete:hover,
|
|
|
|
|
.ant-btn.ant-btn-text.ant-btn-dangerous.btn-text-delete:hover {
|
|
|
|
|
background: rgba(220, 38, 38, 0.1);
|
|
|
|
|
color: #b91c1c;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn.ant-btn-icon-only.ant-btn-text,
|
|
|
|
|
.ant-btn.ant-btn-icon-only.ant-btn-link {
|
|
|
|
|
min-width: 36px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ant-btn-icon-only {
|
|
|
|
|
min-width: 40px;
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-19 11:03:08 +00:00
|
|
|
.app-loading {
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
height: 100vh;
|
|
|
|
|
color: #64748b;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.loading-spinner {
|
|
|
|
|
width: 40px;
|
|
|
|
|
height: 40px;
|
|
|
|
|
border: 3px solid #e2e8f0;
|
|
|
|
|
border-top: 3px solid #667eea;
|
|
|
|
|
border-radius: 50%;
|
|
|
|
|
animation: spin 1s linear infinite;
|
|
|
|
|
margin-bottom: 1rem;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@keyframes spin {
|
|
|
|
|
0% { transform: rotate(0deg); }
|
|
|
|
|
100% { transform: rotate(360deg); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Utility Classes */
|
|
|
|
|
.text-center {
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.mt-1 { margin-top: 0.25rem; }
|
|
|
|
|
.mt-2 { margin-top: 0.5rem; }
|
|
|
|
|
.mt-3 { margin-top: 0.75rem; }
|
|
|
|
|
.mt-4 { margin-top: 1rem; }
|
|
|
|
|
|
|
|
|
|
.mb-1 { margin-bottom: 0.25rem; }
|
|
|
|
|
.mb-2 { margin-bottom: 0.5rem; }
|
|
|
|
|
.mb-3 { margin-bottom: 0.75rem; }
|
|
|
|
|
.mb-4 { margin-bottom: 1rem; }
|
|
|
|
|
|
|
|
|
|
.p-1 { padding: 0.25rem; }
|
|
|
|
|
.p-2 { padding: 0.5rem; }
|
|
|
|
|
.p-3 { padding: 0.75rem; }
|
|
|
|
|
.p-4 { padding: 1rem; }
|
|
|
|
|
|
|
|
|
|
/* Button Styles */
|
|
|
|
|
.btn {
|
|
|
|
|
display: inline-flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
padding: 0.5rem 1rem;
|
|
|
|
|
border: none;
|
|
|
|
|
border-radius: 8px;
|
|
|
|
|
font-size: 0.9rem;
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
text-decoration: none;
|
|
|
|
|
transition: all 0.3s ease;
|
|
|
|
|
gap: 0.5rem;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.btn:hover {
|
|
|
|
|
transform: translateY(-1px);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.btn-primary {
|
|
|
|
|
background: linear-gradient(45deg, #667eea, #764ba2);
|
|
|
|
|
color: white;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.btn-primary:hover {
|
|
|
|
|
box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.btn-secondary {
|
|
|
|
|
background: #f1f5f9;
|
|
|
|
|
color: #475569;
|
|
|
|
|
border: 1px solid #e2e8f0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.btn-secondary:hover {
|
|
|
|
|
background: #e2e8f0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Input Styles */
|
|
|
|
|
.form-input {
|
|
|
|
|
width: 100%;
|
|
|
|
|
padding: 0.75rem;
|
|
|
|
|
border: 2px solid #e1e5e9;
|
|
|
|
|
border-radius: 8px;
|
|
|
|
|
font-size: 1rem;
|
|
|
|
|
transition: all 0.3s ease;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.form-input:focus {
|
|
|
|
|
outline: none;
|
|
|
|
|
border-color: #667eea;
|
|
|
|
|
box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Card Styles */
|
|
|
|
|
.card {
|
|
|
|
|
background: white;
|
|
|
|
|
border-radius: 12px;
|
|
|
|
|
padding: 1.5rem;
|
|
|
|
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
|
|
|
border: 1px solid #e2e8f0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.card:hover {
|
|
|
|
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Text Styles */
|
|
|
|
|
.text-sm { font-size: 0.875rem; }
|
|
|
|
|
.text-base { font-size: 1rem; }
|
|
|
|
|
.text-lg { font-size: 1.125rem; }
|
|
|
|
|
.text-xl { font-size: 1.25rem; }
|
|
|
|
|
|
|
|
|
|
.font-medium { font-weight: 500; }
|
|
|
|
|
.font-semibold { font-weight: 600; }
|
|
|
|
|
.font-bold { font-weight: 700; }
|
|
|
|
|
|
|
|
|
|
.text-gray-500 { color: #64748b; }
|
|
|
|
|
.text-gray-600 { color: #475569; }
|
|
|
|
|
.text-gray-700 { color: #334155; }
|
2026-03-26 06:55:12 +00:00
|
|
|
.text-gray-900 { color: #0f172a; }
|