:root { font-family: "PingFang SC", "Microsoft YaHei", sans-serif; color: #1f2430; background: #f5f6f8; line-height: 1.5; font-weight: 400; color-scheme: light; font-synthesis: none; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; --admin-brand-black: #171717; --admin-brand-gold: #c8a45d; --admin-page-bg: #f5f6f8; --admin-card-bg: #ffffff; --admin-border: #e9e2d2; --admin-text-main: #1f2430; --admin-text-subtle: #6d7483; --admin-success: #2f6b4f; --admin-warning: #b67a2d; --admin-danger: #9f3b32; --admin-progress: #486885; --admin-neutral: #667085; } * { box-sizing: border-box; } html, body, #app { margin: 0; min-height: 100%; background: var(--admin-page-bg); } body { min-width: 1200px; color: var(--admin-text-main); } .login-page { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 32px; background: radial-gradient(circle at top right, rgba(200, 164, 93, 0.18), transparent 22%), linear-gradient(160deg, #111111 0%, #171717 48%, #272117 100%); } .login-card { width: 100%; max-width: 460px; padding: 32px 30px 28px; border-radius: 28px; background: linear-gradient(180deg, #ffffff 0%, #fbf7ef 100%); border: 1px solid rgba(200, 164, 93, 0.24); box-shadow: 0 28px 80px rgba(0, 0, 0, 0.22); } .login-card__eyebrow { display: inline-flex; align-items: center; min-height: 32px; padding: 0 14px; border-radius: 999px; background: rgba(200, 164, 93, 0.14); color: #7a5a21; font-size: 12px; font-weight: 600; } .login-card__title { margin-top: 18px; font-size: 30px; font-weight: 800; line-height: 1.1; } .login-card__desc { margin-top: 10px; color: var(--admin-text-subtle); font-size: 14px; line-height: 1.6; } .login-card__hint { margin-top: 8px; color: var(--admin-text-subtle); font-size: 12px; } .login-card__action { width: 100%; margin-top: 18px; } a { color: inherit; text-decoration: none; } .admin-layout { min-height: 100vh; background: linear-gradient(180deg, #f8f8f8 0%, #f2f3f5 100%); } .admin-aside { position: relative; border-right: 1px solid rgba(255, 255, 255, 0.06); background: radial-gradient(circle at top right, rgba(200, 164, 93, 0.14), transparent 24%), linear-gradient(180deg, #111111 0%, #171717 50%, #1f1b14 100%); } .admin-brand { padding: 28px 24px 18px; border-bottom: 1px solid rgba(255, 255, 255, 0.08); } .admin-brand__name { color: #fff; font-size: 24px; font-weight: 700; } .admin-brand__desc { margin-top: 8px; color: rgba(255, 255, 255, 0.6); font-size: 13px; } .admin-aside .el-menu { border-right: none; background: transparent; --el-menu-bg-color: transparent; --el-menu-text-color: rgba(255, 255, 255, 0.72); --el-menu-hover-text-color: #ffffff; --el-menu-active-color: #ffffff; --el-menu-hover-bg-color: rgba(200, 164, 93, 0.18); } .admin-aside .el-menu-item, .admin-aside .el-sub-menu__title { color: rgba(255, 255, 255, 0.72); height: 52px; transition: color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease; } .admin-aside .el-menu-item .el-icon, .admin-aside .el-sub-menu__title .el-icon { color: inherit; transition: color 0.2s ease; } .admin-aside .el-menu-item:hover, .admin-aside .el-menu-item:focus, .admin-aside .el-sub-menu__title:hover, .admin-aside .el-sub-menu__title:focus { color: #fff; background: linear-gradient(90deg, rgba(200, 164, 93, 0.26) 0%, rgba(200, 164, 93, 0.1) 92%); box-shadow: inset 0 0 0 1px rgba(200, 164, 93, 0.1); } .admin-aside .el-menu-item.is-active { color: #fff; background: linear-gradient(90deg, rgba(200, 164, 93, 0.24) 0%, rgba(200, 164, 93, 0.12) 92%); box-shadow: inset 0 0 0 1px rgba(200, 164, 93, 0.12), 0 12px 28px rgba(0, 0, 0, 0.14); } .admin-main { padding: 24px; } .admin-topbar { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 22px 24px; border: 1px solid var(--admin-border); border-radius: 24px; background: linear-gradient(135deg, #ffffff 0%, #fbf7ef 100%); box-shadow: 0 10px 30px rgba(15, 23, 42, 0.04); } .admin-topbar__title { font-size: 26px; font-weight: 700; } .admin-topbar__desc { margin-top: 6px; color: var(--admin-text-subtle); font-size: 14px; } .admin-topbar__meta { display: flex; gap: 12px; flex-wrap: wrap; } .admin-chip { display: inline-flex; align-items: center; min-height: 34px; padding: 0 14px; border-radius: 999px; background: rgba(200, 164, 93, 0.12); color: #7a5a21; font-size: 12px; font-weight: 600; } .admin-content { margin-top: 20px; } .panel-card { border: 1px solid var(--admin-border); border-radius: 22px; background: var(--admin-card-bg); box-shadow: 0 8px 24px rgba(15, 23, 42, 0.04); } .panel-card + .panel-card { margin-top: 18px; } .metric-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; } .metric-card { padding: 22px; border: 1px solid var(--admin-border); border-radius: 20px; background: linear-gradient(180deg, #ffffff 0%, #fbf8f1 100%); } .metric-card__label { color: var(--admin-text-subtle); font-size: 13px; } .metric-card__value { margin-top: 12px; font-size: 34px; font-weight: 700; line-height: 1; } .metric-card__desc { margin-top: 12px; color: var(--admin-text-subtle); font-size: 13px; } .filters-row { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; } .orders-table .el-table { --el-table-border-color: #f0eadf; --el-table-header-bg-color: #fbf8f2; --el-table-row-hover-bg-color: #fcfaf5; border-radius: 16px; } .status-tag { --status-tag-color: var(--admin-neutral); --status-tag-bg: rgba(102, 112, 133, 0.1); --status-tag-border: rgba(102, 112, 133, 0.16); --status-tag-glow: rgba(102, 112, 133, 0.14); display: inline-flex; align-items: center; gap: 8px; min-height: 30px; padding: 0 12px 0 10px; border-radius: 999px; font-size: 12px; font-weight: 700; line-height: 1; letter-spacing: 0.01em; white-space: nowrap; color: var(--status-tag-color); border: 1px solid var(--status-tag-border); background: var(--status-tag-bg); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72), 0 1px 2px rgba(17, 24, 39, 0.04); vertical-align: middle; } .status-tag::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; box-shadow: 0 0 0 4px var(--status-tag-glow); } .status-tag--success { --status-tag-color: var(--admin-success); --status-tag-bg: linear-gradient(180deg, rgba(47, 107, 79, 0.12) 0%, rgba(47, 107, 79, 0.08) 100%); --status-tag-border: rgba(47, 107, 79, 0.16); --status-tag-glow: rgba(47, 107, 79, 0.16); } .status-tag--warning { --status-tag-color: var(--admin-warning); --status-tag-bg: linear-gradient(180deg, rgba(182, 122, 45, 0.14) 0%, rgba(182, 122, 45, 0.09) 100%); --status-tag-border: rgba(182, 122, 45, 0.18); --status-tag-glow: rgba(182, 122, 45, 0.18); } .status-tag--danger { --status-tag-color: var(--admin-danger); --status-tag-bg: linear-gradient(180deg, rgba(159, 59, 50, 0.12) 0%, rgba(159, 59, 50, 0.08) 100%); --status-tag-border: rgba(159, 59, 50, 0.16); --status-tag-glow: rgba(159, 59, 50, 0.16); } .status-tag--progress { --status-tag-color: var(--admin-progress); --status-tag-bg: linear-gradient(180deg, rgba(72, 104, 133, 0.14) 0%, rgba(72, 104, 133, 0.09) 100%); --status-tag-border: rgba(72, 104, 133, 0.16); --status-tag-glow: rgba(72, 104, 133, 0.16); } .status-tag--neutral { --status-tag-color: var(--admin-neutral); --status-tag-bg: linear-gradient(180deg, rgba(102, 112, 133, 0.12) 0%, rgba(102, 112, 133, 0.08) 100%); --status-tag-border: rgba(102, 112, 133, 0.14); --status-tag-glow: rgba(102, 112, 133, 0.14); } .detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } .detail-card { padding: 18px 18px 16px; border: 1px solid var(--admin-border); border-radius: 18px; background: #fffdfa; } .detail-card__title { font-size: 15px; font-weight: 700; } .detail-card__desc { margin-top: 12px; } .detail-card__desc + .detail-card__desc { margin-top: 10px; } .detail-label { color: var(--admin-text-subtle); font-size: 13px; } .detail-value { margin-top: 4px; color: var(--admin-text-main); font-size: 14px; font-weight: 600; } .timeline-list { display: flex; flex-direction: column; gap: 14px; } .timeline-node { padding: 14px 16px; border-radius: 16px; background: #fcfaf5; border: 1px solid #efe8d9; } .timeline-node__title { font-size: 14px; font-weight: 700; } .timeline-node__time { margin-top: 6px; color: var(--admin-text-subtle); font-size: 12px; } .timeline-node__desc { margin-top: 8px; color: var(--admin-text-main); font-size: 13px; } .admin-upload-list { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 12px; } .admin-upload-thumb { width: 84px; height: 84px; border-radius: 14px; overflow: hidden; border: 1px solid #eadfc8; background: #f6f3ec; cursor: pointer; } .admin-upload-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }