Files
crawler-plugin/admin-frontend-vue/src/styles/main.css
T

219 lines
9.8 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
:root {
--admin-sidebar: #f8fbfe;
--admin-sidebar-deep: #edf3f9;
--admin-sidebar-text: #536a81;
--admin-primary: #4f78a5;
--admin-primary-strong: #2f5d8b;
--admin-primary-soft: #e7f0f8;
--admin-bg: #f4f7fb;
--admin-border: #d8e3ee;
--admin-text: #24384d;
--admin-muted: #5b6f83;
font-family: Inter, "SF Pro Display", "Microsoft YaHei", "PingFang SC", "Helvetica Neue", sans-serif;
/* Element Plus 主题对齐 admin.html 蓝白浅色皮肤(EP_ALIGN/241 单源,勿单独改色值) */
--el-color-primary: #4f78a5;
--el-color-primary-light-3: #7d9abf;
--el-color-primary-light-5: #a5bad2;
--el-color-primary-light-7: #cddbe6;
--el-color-primary-light-8: #e1e9f0;
--el-color-primary-light-9: #f0f4f8;
--el-color-primary-dark-2: #3f628a;
--el-color-success: #4e806d;
--el-color-warning: #a8793e;
--el-color-danger: #b35f6a;
--el-color-success-light-9: #eef5f0;
--el-color-warning-light-9: #fbf4ea;
--el-color-danger-light-9: #faf0f1;
--el-border-color: #d8e3ee;
--el-border-color-base: #d8e3ee;
--el-border-radius-base: 9px;
}
* { box-sizing: border-box; }
html, body, #app { margin: 0; min-height: 100%; height: 100%; }
body {
color: var(--admin-text);
background:
radial-gradient(circle at 12% -16%, rgba(178, 205, 229, 0.3), transparent 34rem),
radial-gradient(circle at 100% 0%, rgba(214, 226, 239, 0.28), transparent 28rem),
var(--admin-bg);
}
button, input, textarea, select { font: inherit; }
/* ===== 蓝白浅色壳层(对齐 admin.html 末层皮肤) ===== */
.admin-shell { display: flex; min-height: 100vh; background: var(--admin-bg); }
.admin-sidebar {
display: flex; flex: 0 0 252px; flex-direction: column;
background: linear-gradient(180deg, var(--admin-sidebar) 0%, var(--admin-sidebar-deep) 100%);
color: var(--admin-sidebar-text);
border-right: 1px solid #d4e0eb;
box-shadow: 14px 0 34px -28px rgba(39, 67, 94, 0.34);
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: 76px; padding: 20px 18px;
border-bottom: 1px solid #d4e0eb;
}
.admin-brand-logo {
width: 36px; height: 36px; border-radius: 11px;
object-fit: cover; background: #fff;
box-shadow: 0 8px 20px rgba(79, 120, 165, 0.24);
}
.admin-brand-copy { display: flex; min-width: 0; flex-direction: column; gap: 3px; }
.admin-brand-copy strong { color: var(--admin-text); font-size: 15px; font-weight: 600; letter-spacing: .5px; white-space: nowrap; }
.admin-brand-copy span { color: #77899b; font-size: 11px; white-space: nowrap; }
.admin-menu-scroll { flex: 1; padding: 12px 10px; }
.admin-menu { border-right: 0; background: transparent; }
.admin-menu .el-sub-menu__title,
.admin-menu .el-menu-item {
height: 42px; line-height: 42px; margin: 3px 0; padding: 0 12px;
border-radius: 8px; color: #2f4a63;
}
.admin-menu .el-sub-menu__title:hover,
.admin-menu .el-menu-item:hover { color: #1e3b57; background: rgba(47, 93, 139, 0.16); }
.admin-menu .el-menu-item.is-active {
color: var(--admin-primary-strong); font-weight: 600;
background: linear-gradient(90deg, #dce9f5, #edf4fa);
border-color: #b6cbe0;
box-shadow: inset 3px 0 0 #5f85ad, 0 8px 18px -16px rgba(79, 120, 165, 0.55);
}
.admin-menu .el-menu { background: transparent; }
.admin-menu .el-sub-menu .el-sub-menu__icon-arrow { color: #405b73; }
.menu-group-title { font-size: 15px; font-weight: 600; letter-spacing: .4px; color: #405b73; }
.menu-group-title:hover { color: #2f4a63; }
.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-strong);
border-radius: 8px; box-shadow: 0 4px 16px rgba(39, 67, 94, 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: 76px; padding: 0 32px;
background: rgba(255, 255, 255, 0.92);
border-bottom: 1px solid var(--admin-border);
box-shadow: 0 10px 28px -28px rgba(39, 67, 94, 0.42);
backdrop-filter: blur(8px);
}
.admin-kicker { color: #70859a; font-size: 10px; font-weight: 700; letter-spacing: 1.6px; }
.admin-topbar h1 { margin: 6px 0 0; font-size: 18px; font-weight: 650; color: var(--admin-text); }
.admin-user { display: flex; align-items: center; gap: 14px; }
.admin-user-meta { display: flex; align-items: flex-end; flex-direction: column; }
.admin-user-meta strong { font-size: 13px; font-weight: 600; color: var(--admin-text); }
.admin-user-role {
display: inline-flex; align-items: center;
padding: 2px 10px; border-radius: 999px; font-size: 12px; line-height: 1.7;
color: var(--admin-primary-strong); background: #e6f0f8; border: 1px solid #bfd1e2;
}
.admin-user-logout.el-button {
color: var(--admin-muted); background: #fff; border-color: #cbd9e6;
}
.admin-user-logout.el-button:hover { color: var(--admin-primary-strong); border-color: #95b1cb; background: #edf5fb; }
.admin-content { flex: 1; min-width: 0; padding: 30px 32px 56px; overflow: auto; }
.page-stack { display: flex; flex-direction: column; gap: 18px; }
/* 表格操作按钮工具栏:置于表格卡片顶部、右对齐(新增/删除/导入/导出等贴近表格行操作)。 */
.table-toolbar { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
.page-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.page-heading h2 { margin: 0; font-size: 20px; color: var(--admin-text); }
.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: 14px; box-shadow: 0 1px 2px rgba(39, 67, 94, 0.04), 0 14px 30px -24px rgba(39, 67, 94, 0.28); }
.page-loading, .page-error { padding: 48px 20px; text-align: center; }
.page-loading { color: var(--admin-muted); }
.page-error { color: var(--el-color-danger); }
.not-found { padding: 56px 20px; }
.global-error-stack { display: flex; flex-direction: column; gap: 10px; margin-bottom: 14px; }
.admin-breadcrumb { margin-bottom: 14px; }
/* ===== module13 全局组件观感对齐(admin.html 表格/输入/分页语义) ===== */
.el-table {
--el-table-header-bg-color: #edf4fa;
--el-table-header-text-color: #4e6479;
--el-table-border-color: #e0e8ef;
--el-table-row-hover-bg-color: #f1f7fb;
}
.el-table th.el-table__cell {
background-color: #edf4fa;
color: #4e6479;
font-size: 12.5px;
font-weight: 600;
letter-spacing: .4px;
}
.el-table .el-table__row:hover > td.el-table__cell { background-color: #f1f7fb; }
.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell { background: #f9fbfd; }
.el-input__wrapper, .el-textarea__inner { border-radius: 9px; }
.el-input__wrapper.is-focus,
.el-select__wrapper.is-focused { box-shadow: 0 0 0 3px rgba(95, 133, 173, 0.16); }
.el-pagination { --el-pagination-button-color: var(--admin-text); --el-pagination-hover-color: var(--admin-primary-strong); }
/* 分页按钮样式加强:background 模式下每粒按钮带边框、当前页深蓝高亮,浅色主题下清晰可见。 */
.el-pagination.is-background .btn-prev,
.el-pagination.is-background .btn-next,
.el-pagination.is-background .el-pager li {
background: #fff;
border: 1px solid var(--admin-border);
border-radius: 7px;
min-width: 30px;
height: 30px;
line-height: 28px;
color: var(--admin-text);
font-weight: 600;
}
.el-pagination.is-background .el-pager li.is-active {
background: var(--admin-primary-strong);
border-color: var(--admin-primary-strong);
color: #fff;
}
.el-pagination.is-background .btn-prev:hover,
.el-pagination.is-background .btn-next:hover,
.el-pagination.is-background .el-pager li:not(.is-active):hover {
border-color: var(--admin-primary);
color: var(--admin-primary-strong);
}
.el-dialog { border-radius: 14px; }
.el-dialog__header { padding-bottom: 12px; }
.el-dialog__title { font-size: 16px; font-weight: 600; color: var(--admin-text); }
.el-dialog__body { color: var(--admin-text); }
.el-tag { border-radius: 6px; }
.el-button { border-radius: 9px; }
.el-message-box { border-radius: 14px; }
/* 消息提示层级:Element 弹层 z-index 自 2000 递增,低于页面自定义 modal-mask(3000/3100)
遮罩弹窗内触发的 ElMessage 警告(如去重台账导入/编辑未选分组)会被浮层挡住看不见,
统一把消息提示抬到 4000(高于全部自定义浮层),!important 覆盖实例内联层级。
消息盒确认弹窗同类隐患一并抬到 4100z-index 落在 .el-overlay.is-message-box 内联样式)。 */
.el-message { z-index: 4000 !important; }
.el-overlay.is-message-box { z-index: 4100 !important; }
/* 分组筛选下拉(可模糊搜索):对齐旧版控件观感(42px/9px/浅底/focus ring)。 */
.el-select.admin-filter {
width: 100%;
}
.el-select.admin-filter .el-select__wrapper {
min-height: 42px;
border-radius: 9px;
background: #f8fbfd;
box-shadow: 0 0 0 1px #cbd9e6 inset;
}
.el-select.admin-filter .el-select__wrapper:hover {
box-shadow: 0 0 0 1px #9fb7cd inset;
}
.el-select.admin-filter.is-focused .el-select__wrapper {
background: #ffffff;
box-shadow: 0 0 0 3px rgba(95, 133, 173, 0.16);
}
@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; padding: 12px 18px; }
.admin-user { width: 100%; justify-content: space-between; }
.admin-user-meta { align-items: flex-start; }
.admin-content { padding: 18px 16px 40px; }
}