:root { --admin-sidebar: #192132; --admin-sidebar-deep: #121827; --admin-primary: #6366f1; --admin-primary-soft: #eef0ff; --admin-bg: #f3f5f9; --admin-border: #e5e7ef; --admin-text: #1f2937; --admin-muted: #7b8495; font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", sans-serif; } * { box-sizing: border-box; } html, body, #app { margin: 0; min-height: 100%; height: 100%; } body { background: var(--admin-bg); color: var(--admin-text); } button, input, textarea, select { font: inherit; } .admin-shell { display: flex; min-height: 100vh; background: var(--admin-bg); } .admin-sidebar { display: flex; flex: 0 0 248px; flex-direction: column; background: linear-gradient(180deg, var(--admin-sidebar) 0%, var(--admin-sidebar-deep) 100%); color: #b9c2d5; transition: flex-basis .2s ease; } .admin-shell.is-collapsed .admin-sidebar { flex-basis: 64px; } .admin-brand { display: flex; align-items: center; gap: 12px; min-height: 72px; padding: 16px; border-bottom: 1px solid rgba(255,255,255,.08); } .admin-brand-logo { width: 36px; height: 36px; border-radius: 10px; object-fit: cover; background: white; } .admin-brand-copy { display: flex; min-width: 0; flex-direction: column; gap: 3px; } .admin-brand-copy strong { color: #fff; font-size: 16px; } .admin-brand-copy span { color: #929db4; font-size: 11px; white-space: nowrap; } .admin-menu-scroll { flex: 1; padding: 14px 10px; } .admin-menu { border-right: 0; background: transparent; } .admin-menu .el-sub-menu__title, .admin-menu .el-menu-item { height: 42px; line-height: 42px; border-radius: 8px; margin: 3px 0; color: #aeb8cc; } .admin-menu .el-sub-menu__title:hover, .admin-menu .el-menu-item:hover { background: rgba(255,255,255,.08); color: #fff; } .admin-menu .el-menu-item.is-active { background: linear-gradient(90deg, rgba(99,102,241,.95), rgba(99,102,241,.62)); color: #fff; } .admin-menu .el-menu { background: transparent; } .menu-group-title { font-weight: 600; } .sidebar-collapse { margin: 12px; padding: 9px 10px; border: 1px solid rgba(255,255,255,.14); border-radius: 8px; color: #aeb8cc; background: transparent; cursor: pointer; } .sidebar-collapse:hover { color: #fff; border-color: rgba(255,255,255,.3); } .sidebar-collapse:focus-visible { outline: 2px solid var(--admin-primary); outline-offset: 2px; } .skip-link { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; } .skip-link:focus { position: fixed; left: 16px; top: 16px; z-index: 2000; width: auto; height: auto; padding: 10px 14px; background: #fff; color: var(--admin-primary); border-radius: 8px; box-shadow: 0 4px 16px rgba(0, 0, 0, .2); text-decoration: none; } .admin-main { display: flex; min-width: 0; flex: 1; flex-direction: column; } .admin-topbar { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 84px; padding: 18px 28px; background: #fff; border-bottom: 1px solid var(--admin-border); } .admin-kicker { color: var(--admin-primary); font-size: 12px; font-weight: 700; letter-spacing: .08em; } .admin-topbar h1 { margin: 5px 0 0; font-size: 22px; } .admin-user { display: flex; align-items: center; gap: 18px; } .admin-user-meta { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; } .admin-user-meta strong { font-size: 14px; } .admin-user-meta span { color: var(--admin-muted); font-size: 12px; } .admin-content { flex: 1; min-width: 0; padding: 26px 28px; overflow: auto; } .page-stack { display: flex; flex-direction: column; gap: 18px; } .page-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; } .page-heading h2 { margin: 0; font-size: 22px; } .page-heading p { margin: 7px 0 0; color: var(--admin-muted); font-size: 13px; } .table-footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-top: 18px; color: var(--admin-muted); font-size: 13px; } .el-card { border-color: var(--admin-border); border-radius: 12px; } .page-loading, .page-error { padding: 48px 20px; text-align: center; } .page-loading { color: var(--admin-muted); } .page-error { color: #b91c1c; } .not-found { padding: 56px 20px; } .global-error-stack { display: flex; flex-direction: column; gap: 10px; margin-bottom: 14px; } .admin-breadcrumb { margin-bottom: 14px; } @media (max-width: 820px) { .admin-sidebar { flex-basis: 64px; } .admin-brand-copy, .admin-menu .el-sub-menu__title span, .admin-menu .el-menu-item { display: none; } .admin-topbar { align-items: flex-start; flex-direction: column; } .admin-user { width: 100%; justify-content: space-between; } .admin-user-meta { align-items: flex-start; } .admin-content { padding: 18px; } }