.finance-page-container { display: flex; flex-direction: column; gap: 20px; padding: 0 4px 32px; } /* ================= 头部卡片 ================= */ .page-header-card { background: #ffffff; border-radius: 16px; padding: 24px 28px; box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04), 0 4px 12px rgba(15, 23, 42, 0.02); border: 1px solid rgba(226, 232, 240, 0.8); } .header-main { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; } .title-group { display: flex; flex-direction: column; gap: 6px; } .eyebrow-tag { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 700; letter-spacing: 0.8px; color: #3b82f6; background: #eff6ff; padding: 3px 10px; border-radius: 20px; width: fit-content; } .page-title { margin: 0; font-size: 26px; font-weight: 800; color: #0f172a; letter-spacing: -0.5px; } .page-subtitle { margin: 0; font-size: 13.5px; color: #64748b; line-height: 1.5; } .toolbar-actions { display: flex; align-items: center; gap: 10px; } /* ================= 状态卡片 ================= */ .state-card { background: #ffffff; border-radius: 16px; padding: 48px 24px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 16px; border: 1px solid rgba(226, 232, 240, 0.8); } .loading-state { color: #64748b; } .loading-state .el-icon { font-size: 36px; color: #3b82f6; } .error-state { color: #e11d48; } .error-state .el-icon { font-size: 36px; } /* ================= 核心指标卡片 ================= */ .summary-metric-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 16px; } .metric-card { background: #ffffff; border-radius: 16px; padding: 20px 22px; border: 1px solid rgba(226, 232, 240, 0.8); box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04), 0 4px 12px rgba(15, 23, 42, 0.02); display: flex; align-items: center; gap: 16px; position: relative; overflow: hidden; transition: transform 0.2s ease, box-shadow 0.2s ease; } .metric-card:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08); } .metric-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; } .metric-card--users::before { background: linear-gradient(90deg, #6366f1, #818cf8); } .metric-card--listings::before { background: linear-gradient(90deg, #10b981, #34d399); } .metric-card--orders::before { background: linear-gradient(90deg, #f59e0b, #fbbf24); } .metric-card--flow::before { background: linear-gradient(90deg, #f43f5e, #fb7185); } .metric-icon-wrap { width: 48px; height: 48px; border-radius: 14px; display: flex; align-items: center; justify-content: center; font-size: 22px; flex-shrink: 0; } .metric-icon-wrap.indigo { background: #eef2ff; color: #6366f1; } .metric-icon-wrap.emerald { background: #ecfdf5; color: #10b981; } .metric-icon-wrap.amber { background: #fffbeb; color: #f59e0b; } .metric-icon-wrap.rose { background: #fff1f2; color: #f43f5e; } .metric-icon-wrap.blue { background: #eff6ff; color: #3b82f6; } .metric-icon-wrap.teal { background: #f0fdfa; color: #0d9488; } .metric-icon-wrap.slate { background: #f1f5f9; color: #64748b; } .metric-info { display: flex; flex-direction: column; gap: 4px; } .metric-label { font-size: 13px; font-weight: 500; color: #64748b; } .metric-val { font-size: 26px; font-weight: 800; color: #0f172a; letter-spacing: -0.5px; line-height: 1.2; } .indigo-val { color: #4f46e5; } .emerald-val { color: #059669; } .amber-val { color: #d97706; } .rose-val { color: #e11d48; } .metric-sub-pill { display: inline-flex; align-items: center; font-size: 11.5px; font-weight: 600; padding: 2px 8px; border-radius: 4px; width: fit-content; } .metric-sub-pill.info { background: #eef2ff; color: #4f46e5; } .metric-sub-pill.success { background: #f0fdf4; color: #16a34a; } .metric-sub-pill.warning { background: #fffbeb; color: #d97706; } .metric-sub-pill.danger { background: #fff1f2; color: #e11d48; } /* ================= 通用 Section 卡片 ================= */ .section-card { background: #ffffff; border-radius: 16px; padding: 22px 24px; border: 1px solid rgba(226, 232, 240, 0.8); box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04), 0 4px 12px rgba(15, 23, 42, 0.02); } .section-header-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; } .section-header-title { display: flex; align-items: center; gap: 10px; font-size: 17px; font-weight: 700; color: #1e293b; } .header-icon { color: #3b82f6; font-size: 20px; } .header-icon.rose-icon { color: #f43f5e; } .header-badge { font-size: 12px; font-weight: 500; color: #64748b; background: #f1f5f9; padding: 3px 10px; border-radius: 12px; } /* ================= 上下架 3 组 Mini-Bars ================= */ .listing-daily-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin-bottom: 20px; } .listing-stat-card { padding: 20px; border-radius: 14px; background: #f8fafc; border: 1px solid #e2e8f0; transition: all 0.2s ease; } .listing-stat-card:hover { background: #ffffff; box-shadow: 0 4px 16px rgba(15, 23, 42, 0.06); border-color: #cbd5e1; } .listing-stat-head { display: flex; align-items: center; gap: 12px; } .listing-stat-icon { width: 40px; height: 40px; border-radius: 12px; display: flex; align-items: center; justify-content: center; font-size: 18px; flex-shrink: 0; } .tone-publish .listing-stat-icon { background: #ecfdf5; color: #10b981; } .tone-offline .listing-stat-icon { background: #fffbeb; color: #f59e0b; } .tone-trade .listing-stat-icon { background: #eff6ff; color: #3b82f6; } .listing-stat-meta span { display: block; font-size: 12.5px; font-weight: 500; color: #64748b; } .listing-stat-meta strong { display: block; font-size: 24px; font-weight: 800; color: #0f172a; line-height: 1.1; margin-top: 2px; } .listing-stat-hint { margin: 10px 0 16px; font-size: 11.5px; color: #94a3b8; line-height: 1.4; } .mini-bars { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 8px; align-items: end; min-height: 90px; padding-top: 8px; border-top: 1px dashed #e2e8f0; } .mini-bar-col { display: flex; flex-direction: column; align-items: center; gap: 4px; min-width: 0; } .mini-bar { width: 100%; max-width: 20px; border-radius: 4px 4px 1px 1px; min-height: 6px; transition: height 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .mini-bar.publish { background: linear-gradient(180deg, #34d399, #10b981); } .mini-bar.offline { background: linear-gradient(180deg, #fbbf24, #f59e0b); } .mini-bar.trade { background: linear-gradient(180deg, #60a5fa, #3b82f6); } .mini-bar-col em { font-style: normal; font-size: 10px; color: #94a3b8; } .mini-bar-col b { font-size: 11px; color: #1e293b; font-weight: 700; } /* ================= 渠道总览 ================= */ .channel-summary-title { font-size: 14px; font-weight: 700; color: #334155; margin: 16px 0 10px; } .listing-channel-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin-bottom: 20px; } .listing-channel-item { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 12px; padding: 14px; transition: all 0.2s ease; } .listing-channel-item:hover { background: #ffffff; border-color: #cbd5e1; box-shadow: 0 2px 10px rgba(15, 23, 42, 0.05); } .listing-channel-item-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; } .channel-name { font-size: 13.5px; font-weight: 700; color: #1e293b; } .channel-total { font-size: 18px; font-weight: 800; color: #3b82f6; } .listing-channel-counts { display: flex; flex-direction: column; gap: 4px; } .count-tag { font-size: 11.5px; font-weight: 600; } .count-tag.publish { color: #059669; } .count-tag.offline { color: #d97706; } .count-tag.trade { color: #2563eb; } .trend-table-wrap { margin-bottom: 20px; } .listing-channel-block { margin-top: 20px; } .listing-uploader-block { margin-top: 20px; } .listing-uploader-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; margin-bottom: 20px; } .listing-uploader-item { display: flex; align-items: baseline; gap: 8px; border: 1px solid #dbeafe; border-radius: 10px; background: #eff6ff; padding: 14px; } .uploader-name { overflow: hidden; color: #1e3a8a; font-size: 13.5px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; } .uploader-total { margin-left: auto; color: #2563eb; font-size: 20px; font-weight: 800; } .uploader-unit { color: #64748b; font-size: 11.5px; white-space: nowrap; } .channel-badge { font-weight: 600; } .trend-val { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-weight: 700; font-size: 12.5px; } .text-emerald { color: #059669; } .text-amber { color: #d97706; } .text-blue { color: #2563eb; } .text-slate { color: #475569; } /* ================= 待处理事项 & 快捷入口 ================= */ .dashboard-panels-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; } .panel-card { display: flex; flex-direction: column; } .panel-header-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; } .panel-header-title { display: flex; align-items: center; gap: 8px; font-size: 16px; font-weight: 700; color: #1e293b; } .panel-icon { font-size: 18px; } .amber-icon { color: #f59e0b; } .blue-icon { color: #3b82f6; } .pending-total-badge { font-size: 12px; font-weight: 600; color: #64748b; background: #f1f5f9; padding: 3px 10px; border-radius: 20px; } .pending-total-badge.has-pending { color: #e11d48; background: #fff1f2; } .pending-list-group { display: flex; flex-direction: column; gap: 8px; } .pending-item-card { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 12px; text-decoration: none; transition: all 0.2s ease; } .pending-item-card:hover:not(.static-card) { background: #ffffff; border-color: #cbd5e1; box-shadow: 0 2px 10px rgba(15, 23, 42, 0.05); transform: translateX(2px); } .pending-info { display: flex; flex-direction: column; gap: 2px; } .pending-label { font-size: 13.5px; font-weight: 700; color: #1e293b; } .pending-desc { font-size: 11.5px; color: #94a3b8; } .pending-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 28px; height: 28px; padding: 0 8px; border-radius: 14px; font-size: 13px; font-weight: 800; } .badge-urgent { background: #fff1f2; color: #e11d48; border: 1px solid #fecdd3; } .badge-zero { background: #f1f5f9; color: #94a3b8; } /* ================= 快捷入口 ================= */ .quick-nav-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; } .quick-tile { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; padding: 18px 12px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 14px; text-decoration: none; transition: all 0.2s ease; } .quick-tile:hover { background: #ffffff; border-color: #cbd5e1; box-shadow: 0 4px 16px rgba(15, 23, 42, 0.06); transform: translateY(-2px); } .quick-icon-wrap { width: 44px; height: 44px; border-radius: 12px; display: flex; align-items: center; justify-content: center; font-size: 20px; } .quick-icon-wrap.indigo { background: #eef2ff; color: #6366f1; } .quick-icon-wrap.blue { background: #eff6ff; color: #3b82f6; } .quick-icon-wrap.rose { background: #fff1f2; color: #f43f5e; } .quick-icon-wrap.emerald { background: #ecfdf5; color: #10b981; } .quick-icon-wrap.teal { background: #f0fdfa; color: #0d9488; } .quick-icon-wrap.slate { background: #f1f5f9; color: #64748b; } .quick-title { font-size: 12.5px; font-weight: 700; color: #334155; } /* ================= 表格容器与通用组件 ================= */ .table-section-card { padding-bottom: 16px; } .table-card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; } .table-header-title { display: flex; align-items: center; gap: 8px; font-size: 16px; font-weight: 700; color: #1e293b; } .view-all-link { font-size: 12.5px; font-weight: 600; color: #3b82f6; text-decoration: none; } .view-all-link:hover { text-decoration: underline; } .table-container { border-radius: 12px; overflow: hidden; border: 1px solid #e2e8f0; } .custom-enterprise-table :deep(.el-table__header-wrapper th) { background-color: #f8fafc !important; color: #475569; font-size: 13px; font-weight: 600; padding: 12px 0; border-bottom: 1px solid #e2e8f0; } .custom-enterprise-table :deep(.el-table__body-wrapper td) { padding: 12px 0; font-size: 13px; color: #334155; } .order-link { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 12.5px; font-weight: 600; color: #3b82f6; text-decoration: none; } .order-link:hover { text-decoration: underline; } .mono-code { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 12px; color: #64748b; } .status-tag { font-weight: 600; } .amount-val { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 13.5px; font-weight: 700; color: #0f172a; } .time-cell { font-size: 12px; color: #64748b; } .dispute-type { font-size: 12.5px; color: #475569; } @media (max-width: 1100px) { .listing-daily-grid { grid-template-columns: 1fr; } .dashboard-panels-grid { grid-template-columns: 1fr; } } @media (max-width: 768px) { .quick-nav-grid { grid-template-columns: repeat(2, 1fr); } }