Files
ctms/frontend/src/styles/main.css
T

1230 lines
32 KiB
CSS

/**
* CTMS 全局样式系统
* 参考 shadcn-admin 的轻量、中性、分层风格
*/
:root {
/* 品牌色 - 低饱和蓝灰 */
--ctms-primary: #3f5d75;
--ctms-primary-hover: #365067;
--ctms-primary-active: #2b4356;
--ctms-primary-light: #e6edf2;
--ctms-brand-900: #13243a;
--ctms-brand-700: #24496f;
/* 语义色 */
--ctms-success: #3f8f6b;
--ctms-warning: #c58b2a;
--ctms-danger: #c24b4b;
--ctms-info: #64748b;
/* 文字颜色 - 高层级到低层级 */
--ctms-text-main: #0f172a;
--ctms-text-regular: #334155;
--ctms-text-secondary: #64748b;
--ctms-text-disabled: #94a3b8;
/* 中性色 & 背景 */
--ctms-bg-base: #f9fafb;
--ctms-bg-card: #ffffff;
--ctms-bg-muted: #f3f4f6;
--ctms-neutral-100: #f5f7fa;
--ctms-neutral-300: #d5dce5;
--ctms-border-color: #e5e7eb;
--ctms-border-color-hover: #cbd5e1;
/* 间距 - 8px 网格 */
--ctms-spacing-xs: 4px;
--ctms-spacing-sm: 8px;
--ctms-spacing-md: 16px;
--ctms-spacing-lg: 24px;
--ctms-spacing-xl: 32px;
/* 圆角 & 阴影 */
--ctms-radius-sm: 6px;
--ctms-radius: 10px;
--ctms-radius-lg: 12px;
--ctms-radius-round: 50%;
--ctms-shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.04);
--ctms-shadow: 0 8px 20px rgba(15, 23, 42, 0.06);
--ctms-shadow-md: 0 12px 26px rgba(15, 23, 42, 0.08);
--ctms-shadow-lg: 0 20px 40px rgba(15, 23, 42, 0.1);
/* 动画 */
--ctms-transition: all 0.25s cubic-bezier(0.22, 1, 0.36, 1);
--ctms-focus-ring: 0 0 0 3px rgba(36, 73, 111, 0.2);
/* Element Plus 主色适配 */
--el-color-primary: var(--ctms-primary);
--el-color-primary-light-3: #9bb1c2;
--el-color-primary-light-5: #c0cdd7;
--el-color-primary-light-7: #dde5ec;
--el-color-primary-light-8: #eef2f6;
--el-color-primary-dark-2: #2b4356;
--el-border-radius-base: var(--ctms-radius);
--el-border-color: var(--ctms-border-color);
--el-text-color-primary: var(--ctms-text-main);
--el-text-color-regular: var(--ctms-text-regular);
}
:root[data-ctms-theme="dark"] {
--ctms-primary: #8fb7d4;
--ctms-primary-hover: #a7c9df;
--ctms-primary-active: #c3dced;
--ctms-primary-light: #203145;
--ctms-brand-900: #d8e7f4;
--ctms-brand-700: #b4d0e5;
--ctms-success: #7dd3a8;
--ctms-warning: #f1c271;
--ctms-danger: #f28b8b;
--ctms-info: #a6b4c5;
--ctms-text-main: #f8fafc;
--ctms-text-regular: #dbe5f1;
--ctms-text-secondary: #9aaabd;
--ctms-text-disabled: #66788d;
--ctms-bg-base: #0f172a;
--ctms-bg-card: #172033;
--ctms-bg-muted: #111827;
--ctms-neutral-100: #182337;
--ctms-neutral-300: #334155;
--ctms-border-color: #26364a;
--ctms-border-color-hover: #3d5068;
--ctms-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.24);
--ctms-shadow: 0 8px 20px rgba(0, 0, 0, 0.32);
--ctms-shadow-md: 0 12px 26px rgba(0, 0, 0, 0.36);
--ctms-shadow-lg: 0 20px 40px rgba(0, 0, 0, 0.42);
--el-color-primary: var(--ctms-primary);
--el-color-primary-light-3: #567894;
--el-color-primary-light-5: #3c5871;
--el-color-primary-light-7: #283c50;
--el-color-primary-light-8: #203145;
--el-color-primary-dark-2: #c3dced;
--el-border-color: var(--ctms-border-color);
--el-text-color-primary: var(--ctms-text-main);
--el-text-color-regular: var(--ctms-text-regular);
--el-bg-color: var(--ctms-bg-card);
--el-bg-color-overlay: #172033;
--el-fill-color-blank: #172033;
--el-fill-color-light: #111827;
--el-fill-color-lighter: #0f172a;
--el-mask-color: rgba(0, 0, 0, 0.62);
}
/* 全局重置 */
html,
body,
#app {
min-height: 100%;
}
body {
margin: 0;
font-family: "Manrope", "Segoe UI", sans-serif;
background: var(--ctms-bg-base);
color: var(--ctms-text-main);
-webkit-font-smoothing: antialiased;
}
:root[data-ctms-theme="dark"] body {
background: var(--ctms-bg-base);
color: var(--ctms-text-main);
}
:root[data-ctms-theme="dark"] .el-button--default {
background-color: #172033;
border-color: #334155;
color: var(--ctms-text-regular);
}
:root[data-ctms-theme="dark"] .el-button--default:hover {
border-color: #4b6580;
background-color: #1f2d3d;
color: var(--ctms-text-main);
}
:root[data-ctms-theme="dark"] .el-card,
:root[data-ctms-theme="dark"] .el-alert,
:root[data-ctms-theme="dark"] .el-popper,
:root[data-ctms-theme="dark"] .el-dropdown-menu,
:root[data-ctms-theme="dark"] .el-popover.el-popper,
:root[data-ctms-theme="dark"] .el-dialog {
border-color: var(--ctms-border-color);
background-color: var(--ctms-bg-card);
color: var(--ctms-text-regular);
}
:root[data-ctms-theme="dark"] .el-card__header {
border-bottom-color: var(--ctms-border-color);
color: var(--ctms-text-main);
}
:root[data-ctms-theme="dark"] .el-input__wrapper,
:root[data-ctms-theme="dark"] .el-select .el-input__wrapper {
background-color: #172033;
box-shadow: 0 0 0 1px #334155 inset;
}
:root[data-ctms-theme="dark"] .el-input__inner {
color: var(--ctms-text-main);
}
:root[data-ctms-theme="dark"] .el-input__inner::placeholder {
color: var(--ctms-text-disabled);
}
:root[data-ctms-theme="dark"] .el-table {
background-color: transparent;
color: var(--ctms-text-regular);
}
:root[data-ctms-theme="dark"] .el-table th.el-table__cell {
background-color: #111827;
color: var(--ctms-text-main);
}
:root[data-ctms-theme="dark"] .el-table tr,
:root[data-ctms-theme="dark"] .el-table td.el-table__cell {
background-color: #172033;
border-bottom-color: var(--ctms-border-color);
}
:root[data-ctms-theme="dark"] .el-table--enable-row-hover .el-table__row:hover>td.el-table__cell {
background-color: #1f2d3d;
}
:root[data-ctms-theme="dark"] .el-dropdown-menu__item {
color: var(--ctms-text-regular);
}
:root[data-ctms-theme="dark"] .el-dropdown-menu__item:not(.is-disabled):focus,
:root[data-ctms-theme="dark"] .el-dropdown-menu__item:not(.is-disabled):hover {
background-color: #1f2d3d;
color: var(--ctms-text-main);
}
:root[data-ctms-theme="dark"] .ctms-state,
:root[data-ctms-theme="dark"] .ctms-table-card,
:root[data-ctms-theme="dark"] .ctms-section-card {
border-color: var(--ctms-border-color);
background: var(--ctms-bg-card);
}
/* Element Plus 全局覆盖 */
/* 按钮美化 */
.el-button {
border-radius: var(--ctms-radius);
font-weight: 600;
transition: var(--ctms-transition);
}
.el-button--primary {
background-color: var(--ctms-primary);
border-color: var(--ctms-primary);
}
.el-button--primary:hover {
background-color: var(--ctms-primary-hover);
border-color: var(--ctms-primary-hover);
}
.el-button--default {
background-color: #fff;
border-color: var(--ctms-border-color);
color: var(--ctms-text-regular);
}
.el-button--default:hover {
border-color: var(--ctms-border-color-hover);
color: var(--ctms-text-main);
}
.el-button--danger.is-plain {
color: var(--ctms-danger);
border-color: rgba(194, 75, 75, 0.4);
background-color: rgba(194, 75, 75, 0.04);
}
.el-button--default,
.el-button--primary,
.el-button--danger,
.el-button--success,
.el-button--warning {
height: 34px;
padding: 0 14px;
font-size: 13px;
}
.el-button--small {
height: 28px;
padding: 0 10px;
font-size: 12px;
}
.el-button--large {
height: 40px;
padding: 0 18px;
font-size: 14px;
}
/* 卡片美化 */
.el-card {
border: 1px solid var(--ctms-border-color);
box-shadow: none !important;
border-radius: var(--ctms-radius-lg);
margin-bottom: var(--ctms-spacing-md);
}
.el-card__header {
padding: var(--ctms-spacing-md) var(--ctms-spacing-lg);
border-bottom: 1px solid var(--ctms-border-color);
font-weight: 600;
color: var(--ctms-text-main);
}
.el-card__body {
padding: var(--ctms-spacing-lg);
}
/* 表格美化 */
.el-table {
color: var(--ctms-text-regular);
width: 100%;
max-width: 100%;
}
.el-table th.el-table__cell {
background-color: #f6f7f9;
color: var(--ctms-text-main);
font-weight: 600;
height: 44px;
}
.el-table td.el-table__cell {
padding: 10px 0;
}
.el-table--enable-row-hover .el-table__row:hover>td.el-table__cell {
background-color: #f2f5f8;
}
/* 表单美化 */
.el-form-item__label {
font-weight: 500;
color: var(--ctms-text-regular);
}
.el-input__inner {
border-radius: var(--ctms-radius);
}
.el-input__wrapper {
border-radius: var(--ctms-radius);
background-color: #ffffff;
min-height: 34px;
}
.el-select .el-input__wrapper {
background-color: #ffffff;
}
.el-input--small .el-input__wrapper,
.el-select--small .el-input__wrapper {
min-height: 30px;
}
.el-input--large .el-input__wrapper,
.el-select--large .el-input__wrapper {
min-height: 40px;
}
.el-form-item {
margin-bottom: 16px;
}
.ctms-form--dense .el-form-item {
margin-bottom: 12px;
}
.el-form-item__error {
color: #b45309;
font-size: 12px;
}
/* 标签美化 */
.el-tag {
border-radius: 999px;
border: none;
}
.el-tag--info {
background-color: #f5f5f5;
color: var(--ctms-text-secondary);
}
.el-tag--success {
background-color: rgba(63, 143, 107, 0.12);
color: var(--ctms-success);
border: 1px solid rgba(63, 143, 107, 0.2);
}
.el-tag--warning {
background-color: rgba(197, 139, 42, 0.12);
color: var(--ctms-warning);
border: 1px solid rgba(197, 139, 42, 0.2);
}
.el-tag--danger {
background-color: rgba(194, 75, 75, 0.12);
color: var(--ctms-danger);
border: 1px solid rgba(194, 75, 75, 0.2);
}
.el-alert {
border: 1px solid var(--ctms-border-color);
background-color: #ffffff;
}
.el-alert__title {
font-size: 13px;
color: var(--ctms-text-regular);
}
.el-alert--warning .el-alert__icon {
color: var(--ctms-warning);
}
.el-alert--success .el-alert__icon {
color: var(--ctms-success);
}
.el-alert--error .el-alert__icon {
color: var(--ctms-danger);
}
.el-button.is-disabled,
.el-input.is-disabled .el-input__wrapper,
.el-select.is-disabled .el-input__wrapper {
opacity: 0.6;
}
.el-empty__description {
color: var(--ctms-text-secondary);
}
.el-skeleton__item {
background: linear-gradient(90deg, #f2f3f5 25%, #eceef1 37%, #f2f3f5 63%);
}
/* 页面结构与筛选区域 */
.ctms-page {
display: flex;
flex-direction: column;
gap: var(--ctms-spacing-lg);
}
.ctms-page-header {
display: flex;
justify-content: space-between;
align-items: flex-end;
gap: 16px;
}
.ctms-page-title {
font-size: 22px;
font-weight: 600;
color: var(--ctms-text-main);
margin: 0;
}
.ctms-page-title,
.ctms-page-subtitle,
.page-title,
.page-subtitle {
display: none;
}
.ctms-page-actions {
display: flex;
align-items: center;
gap: 12px;
}
.ctms-filter-card {
margin-bottom: 0;
}
.ctms-filter-row {
display: flex;
align-items: flex-end;
gap: 12px;
flex-wrap: wrap;
}
.ctms-filter-item {
display: flex;
flex-direction: column;
gap: 4px;
min-width: 144px;
}
.ctms-filter-label {
font-size: 12px;
font-weight: 600;
color: var(--ctms-text-regular);
}
.ctms-filter-spacer {
flex: 1;
}
.ctms-table-card {
margin-bottom: 0;
border: 0;
border-radius: 0;
box-shadow: none !important;
background: transparent;
}
.ctms-table-card>.el-card__body {
padding: 0;
}
.ctms-table .el-table__row {
cursor: pointer;
}
.ctms-pagination {
margin-top: 10px;
display: flex;
justify-content: flex-end;
}
.ctms-section-card {
border: 1px solid var(--ctms-border-color);
}
.ctms-section-title {
font-size: 15px;
font-weight: 600;
color: var(--ctms-text-main);
}
.ctms-section-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 16px;
}
.ctms-section-actions {
display: flex;
gap: 8px;
}
.ctms-section-card {
margin-bottom: 16px;
}
.ctms-page-subtitle {
margin: 6px 0 0;
font-size: 13px;
color: var(--ctms-text-secondary);
}
.ctms-descriptions {
margin-top: 0;
}
.ctms-descriptions .el-descriptions__label {
font-weight: 500;
color: var(--ctms-text-regular);
background-color: #f8fafc;
}
.ctms-tabs .el-tabs__nav-wrap::after {
height: 1px;
background-color: var(--ctms-border-color);
}
.ctms-tabs .el-tabs__item {
font-weight: 500;
color: var(--ctms-text-regular);
}
.ctms-tabs .el-tabs__item.is-active {
color: var(--ctms-primary);
font-weight: 600;
}
/* Unified loading / empty / error states */
.ctms-state {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 8px;
padding: 28px 16px;
text-align: center;
border: 1px solid var(--ctms-border-color);
border-radius: var(--ctms-radius);
background: #ffffff;
}
.ctms-state-icon {
font-size: 34px;
}
.ctms-state-title {
margin: 0;
font-size: 15px;
font-weight: 600;
}
.ctms-state-desc {
margin: 0;
font-size: 13px;
color: var(--ctms-text-secondary);
}
.ctms-state-action {
margin-top: 4px;
}
.ctms-state-loading .ctms-state-skeleton {
width: min(560px, 100%);
margin-top: 4px;
}
/* Tool classes */
.text-main {
color: var(--ctms-text-main);
}
.text-secondary {
color: var(--ctms-text-secondary);
}
.text-danger {
color: var(--ctms-danger);
}
.text-primary {
color: var(--ctms-primary);
}
.font-medium {
font-weight: 500;
}
.font-mono {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
.text-xs {
font-size: 12px;
}
.text-sm {
font-size: 13px;
}
/* Desktop workbench density */
.desktop-workbench {
--ctms-radius-sm: 5px;
--ctms-radius: 6px;
--ctms-radius-lg: 8px;
--ctms-shadow-sm: none;
--ctms-shadow: none;
--ctms-shadow-md: none;
--ctms-shadow-lg: none;
}
.desktop-workbench .desktop-route-shell {
color: var(--ctms-text-regular);
font-size: 13px;
}
.desktop-workbench .desktop-route-shell.page,
.desktop-workbench .desktop-route-shell.ctms-page,
.desktop-workbench .desktop-route-shell.ctms-page-shell,
.desktop-workbench .desktop-route-shell.module-page,
.desktop-workbench .desktop-route-shell.medical-consult-page {
min-width: 0;
gap: 8px;
padding: 0 !important;
}
.desktop-workbench .desktop-route-shell .page,
.desktop-workbench .desktop-route-shell .ctms-page,
.desktop-workbench .desktop-route-shell .ctms-page-shell,
.desktop-workbench .desktop-route-shell .page-body,
.desktop-workbench .desktop-route-shell .page-inner,
.desktop-workbench .desktop-route-shell .main-content,
.desktop-workbench .desktop-route-shell .main-content-card,
.desktop-workbench .desktop-route-shell .main-content-flat,
.desktop-workbench .desktop-route-shell .study-home-container,
.desktop-workbench .desktop-route-shell .overview,
.desktop-workbench .desktop-route-shell .overview-grid,
.desktop-workbench .desktop-route-shell .content-area {
min-width: 0;
max-width: none;
width: 100%;
gap: 8px;
margin: 0 !important;
padding: 0 !important;
}
.desktop-workbench .desktop-route-shell .el-card,
.desktop-workbench .desktop-route-shell .unified-shell,
.desktop-workbench .desktop-route-shell .ctms-state,
.desktop-workbench .desktop-route-shell .ctms-section-card,
.desktop-workbench .desktop-route-shell .ctms-table-card,
.desktop-workbench .desktop-route-shell .table-card,
.desktop-workbench .desktop-route-shell .detail-card,
.desktop-workbench .desktop-route-shell .stats-card,
.desktop-workbench .desktop-route-shell .notifications-card,
.desktop-workbench .desktop-route-shell .hero-card,
.desktop-workbench .desktop-route-shell .hero-banner,
.desktop-workbench .desktop-route-shell .faq-hero {
border: 1px solid #d9e2ec;
border-radius: 6px !important;
background: #ffffff;
margin: 0 !important;
box-shadow: none !important;
}
/* page--flush 场景:表格铺满全屏,不需要圆角(desktop-route-shell 与 page--flush 在同一元素上)*/
.desktop-workbench .desktop-route-shell.page--flush > .unified-shell,
.desktop-workbench .desktop-route-shell.page--flush > .ctms-table-card {
border-radius: 0 !important;
}
/* 药品流向管理页面桌面端:table-card 铺满,去圆角 */
.desktop-workbench .desktop-route-shell .shipment-page--desktop .table-card {
border-radius: 0 !important;
box-shadow: none !important;
}
/* 设备管理页面桌面端:table-card 铺满,去圆角 */
.desktop-workbench .desktop-route-shell .equipment-page--desktop .table-card {
border-radius: 0 !important;
box-shadow: none !important;
}
.desktop-workbench .desktop-route-shell .hero-banner,
.desktop-workbench .desktop-route-shell .hero-card,
.desktop-workbench .desktop-route-shell .faq-hero {
min-height: 0;
padding: 12px 14px !important;
overflow: hidden;
}
.desktop-workbench .desktop-route-shell .hero-banner::before,
.desktop-workbench .desktop-route-shell .hero-banner::after,
.desktop-workbench .desktop-route-shell .hero-card::before,
.desktop-workbench .desktop-route-shell .hero-card::after,
.desktop-workbench .desktop-route-shell .faq-hero::before,
.desktop-workbench .desktop-route-shell .faq-hero::after,
.desktop-workbench .desktop-route-shell .hero-bg-pattern,
.desktop-workbench .desktop-route-shell .hero-accent {
display: none !important;
}
.desktop-workbench .desktop-route-shell .hero-top,
.desktop-workbench .desktop-route-shell .hero-content,
.desktop-workbench .desktop-route-shell .hero-body {
margin-bottom: 8px !important;
}
.desktop-workbench .desktop-route-shell .hero-title,
.desktop-workbench .desktop-route-shell .faq-hero h1 {
color: var(--ctms-text-main) !important;
font-size: 16px !important;
font-weight: 750 !important;
line-height: 1.35;
}
.desktop-workbench .desktop-route-shell .hero-stats,
.desktop-workbench .desktop-route-shell .hero-meta,
.desktop-workbench .desktop-route-shell .hero-status-row {
gap: 6px !important;
}
.desktop-workbench .desktop-route-shell .hero-stat,
.desktop-workbench .desktop-route-shell .hero-status-item {
min-height: 0;
padding: 8px 10px !important;
border: 1px solid #e1e8f0;
border-radius: 6px !important;
background: #f8fafc !important;
box-shadow: none !important;
transform: none !important;
}
.desktop-workbench .desktop-route-shell .table-card-toolbar,
.desktop-workbench .desktop-route-shell .ctms-page-header,
.desktop-workbench .desktop-route-shell .ctms-section-header {
min-height: 0;
padding: 9px 12px;
border-bottom-color: #d9e2ec;
gap: 8px;
}
.desktop-workbench .desktop-route-shell .ctms-table-card,
.desktop-workbench .desktop-route-shell .ctms-section-card,
.desktop-workbench .desktop-route-shell .detail-card,
.desktop-workbench .desktop-route-shell .section-card,
.desktop-workbench .desktop-route-shell .form-card,
.desktop-workbench .desktop-route-shell .stats-card,
.desktop-workbench .desktop-route-shell .notifications-card,
.desktop-workbench .desktop-route-shell .es-detail-card,
.desktop-workbench .desktop-route-shell .kpi-enterprise {
margin: 0 !important;
}
.desktop-workbench .desktop-route-shell .ctms-table-card + .ctms-table-card,
.desktop-workbench .desktop-route-shell .ctms-section-card + .ctms-section-card,
.desktop-workbench .desktop-route-shell .detail-card + .section-card,
.desktop-workbench .desktop-route-shell .section-card + .section-card,
.desktop-workbench .desktop-route-shell .form-card + .form-card {
margin-top: 8px !important;
}
.desktop-workbench .desktop-route-shell .toolbar-filters,
.desktop-workbench .desktop-route-shell .toolbar-right,
.desktop-workbench .desktop-route-shell .ctms-page-actions,
.desktop-workbench .desktop-route-shell .ctms-section-actions {
gap: 8px;
}
.desktop-workbench .desktop-route-shell .el-card__header {
padding: 10px 12px;
}
.desktop-workbench .desktop-route-shell .el-card__body {
padding: 12px;
}
.desktop-workbench .desktop-route-shell .el-button {
min-height: 28px;
border-radius: 6px;
}
.desktop-workbench .desktop-route-shell .el-button--small {
min-height: 26px;
padding: 0 8px;
}
.desktop-workbench .desktop-route-shell .el-input__wrapper,
.desktop-workbench .desktop-route-shell .el-select .el-input__wrapper,
.desktop-workbench .desktop-route-shell .el-textarea__inner {
border-radius: 6px;
min-height: 30px;
}
.desktop-workbench .desktop-route-shell .el-form-item {
margin-bottom: 12px;
}
.desktop-workbench .desktop-route-shell .el-form-item__label,
.desktop-workbench .desktop-route-shell .filter-label,
.desktop-workbench .desktop-route-shell .ctms-filter-label {
font-size: 11px;
font-weight: 700;
}
.desktop-workbench .desktop-route-shell .form-section {
padding-bottom: 4px;
}
.desktop-workbench .desktop-route-shell .form-section + .form-section {
margin-top: 14px;
padding-top: 14px;
}
.desktop-workbench .desktop-route-shell .form-section-title,
.desktop-workbench .desktop-route-shell .ctms-section-title {
margin-bottom: 10px;
font-size: 13px;
}
.desktop-workbench .desktop-route-shell .page-bg-dots,
.desktop-workbench .desktop-route-shell .decorative-bg,
.desktop-workbench .desktop-route-shell .hero-decoration {
display: none !important;
}
.desktop-workbench .desktop-route-shell .unified-action-bar,
.desktop-workbench .desktop-route-shell .module-header {
min-height: 0;
padding: 10px 12px;
border-bottom: 1px solid #d9e2ec;
background: #ffffff;
}
.desktop-workbench .desktop-route-shell .module-title {
font-size: 14px;
font-weight: 750;
}
.desktop-workbench .desktop-route-shell .module-subtitle {
margin-top: 2px;
font-size: 12px;
}
.desktop-workbench .desktop-route-shell .module-content,
.desktop-workbench .desktop-route-shell .unified-section {
padding: 12px;
}
.desktop-workbench .desktop-route-shell .module-placeholder-surface {
min-height: 118px;
border: 1px dashed #cbd7e5;
border-radius: 6px;
background: #f8fafc;
}
.desktop-workbench .desktop-route-shell .module-placeholder-main {
color: #475569;
font-size: 13px;
font-weight: 650;
letter-spacing: 0;
}
.desktop-workbench .desktop-route-shell .el-table th.el-table__cell {
height: 34px;
padding: 8px 10px;
border-bottom: 1px solid #d9e2ec !important;
background: #f4f7fa;
font-size: 11px;
}
.desktop-workbench .desktop-route-shell .el-table td.el-table__cell {
padding: 7px 10px;
border-bottom-color: #edf1f5;
font-size: 13px;
}
.desktop-workbench .desktop-route-shell .el-table--enable-row-hover .el-table__row:hover > td.el-table__cell {
background-color: #eef4fa;
}
.desktop-workbench .desktop-route-shell .el-descriptions__cell {
padding: 8px 10px;
}
.desktop-workbench .desktop-route-shell .el-pagination {
--el-pagination-button-height: 26px;
--el-pagination-button-width: 26px;
gap: 4px;
font-size: 12px;
}
.desktop-workbench .desktop-route-shell .el-radio-button__inner {
min-height: 26px;
padding: 5px 10px;
border-radius: 5px;
}
.desktop-workbench .desktop-route-shell .el-drawer__header {
margin-bottom: 0;
padding: 14px 18px 8px;
}
.desktop-workbench .desktop-route-shell .el-drawer__body {
padding: 0 18px 4px;
}
.desktop-workbench .desktop-route-shell .el-drawer__footer {
padding: 10px 18px 14px;
border-top: 1px solid #d9e2ec;
}
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .el-card,
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .unified-shell,
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .ctms-state,
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .ctms-section-card,
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .ctms-table-card,
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .table-card,
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .detail-card,
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .stats-card,
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .notifications-card,
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .hero-card,
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .hero-banner,
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .faq-hero {
border-color: #26364a;
background: #172033;
}
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .hero-stat,
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .hero-status-item {
border-color: #26364a;
background: #111827 !important;
}
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .table-card-toolbar,
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .ctms-page-header,
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .ctms-section-header,
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .unified-action-bar,
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .module-header,
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .el-drawer__footer {
border-color: #26364a;
}
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .module-placeholder-surface {
border-color: #31435b;
background: #111827;
}
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .el-table th.el-table__cell {
border-bottom-color: #26364a !important;
background: #111827;
}
:root[data-ctms-theme="dark"] .desktop-workbench .desktop-route-shell .el-table td.el-table__cell {
border-bottom-color: #26364a;
}
/* ============================================================
* 全局弹窗定位修复:弹窗仅显示在主内容区域,不覆盖左侧菜单栏
* --ctms-sidebar-width 由 Layout.vue 在 body 上动态设置
* ============================================================ */
/* ElMessage 提示消息:按“主内容区域”居中(而非全窗口/左上角) */
.el-message {
left: calc((100% + var(--ctms-sidebar-width, 0px)) / 2) !important;
margin-left: 0 !important;
transform: translateX(-50%) !important;
}
/* ElMessageBox / ElDialog 遮罩层:左侧偏移侧边栏宽度,只覆盖主内容区域 */
.el-overlay {
left: var(--ctms-sidebar-width, 0px) !important;
}
/* Desktop runtime modal surfaces */
body.is-desktop-runtime .el-message {
left: 50% !important;
min-height: 32px;
padding: 8px 12px;
border: 1px solid rgba(148, 163, 184, 0.32);
border-radius: 8px;
background: rgba(248, 250, 252, 0.96);
box-shadow: 0 16px 42px rgba(15, 23, 42, 0.16);
backdrop-filter: blur(16px) saturate(140%);
}
body.is-desktop-runtime .el-overlay {
left: 0 !important;
background: rgba(15, 23, 42, 0.22);
backdrop-filter: blur(12px) saturate(135%);
}
body.is-desktop-runtime .el-overlay-dialog,
body.is-desktop-runtime .el-overlay-message-box {
display: flex;
align-items: center;
justify-content: center;
padding: 52px 32px 32px;
overflow: auto;
}
body.is-desktop-runtime .el-dialog,
body.is-desktop-runtime .el-message-box {
overflow: hidden;
margin: 0 auto !important;
border: 1px solid rgba(148, 163, 184, 0.42);
border-radius: 12px;
background: rgba(248, 250, 252, 0.98);
box-shadow:
0 28px 84px rgba(15, 23, 42, 0.26),
0 1px 0 rgba(255, 255, 255, 0.82) inset;
backdrop-filter: blur(18px) saturate(145%);
color: #0f172a;
}
body.is-desktop-runtime .el-dialog {
max-width: min(calc(100vw - 72px), var(--el-dialog-width, 960px));
}
/* profile-settings-dialog / desktop-preferences-dialog:移除外层卡片外壳,内容区自带圆角阴影 */
body.is-desktop-runtime .profile-settings-dialog,
body.is-desktop-runtime .desktop-preferences-dialog {
overflow: visible !important;
border: none !important;
border-radius: 0 !important;
background: transparent !important;
box-shadow: none !important;
backdrop-filter: none !important;
}
body.is-desktop-runtime .el-message-box {
width: min(420px, calc(100vw - 72px));
padding: 0;
}
body.is-desktop-runtime .el-dialog__header,
body.is-desktop-runtime .el-message-box__header {
min-height: 38px;
margin: 0;
padding: 10px 42px 9px 14px;
border-bottom: 1px solid rgba(203, 213, 225, 0.82);
background: linear-gradient(180deg, rgba(255, 255, 255, 0.94), rgba(241, 245, 249, 0.92));
}
body.is-desktop-runtime .el-dialog__title,
body.is-desktop-runtime .el-message-box__title {
color: #0f172a;
font-size: 13px;
font-weight: 750;
line-height: 18px;
}
body.is-desktop-runtime .el-dialog__headerbtn,
body.is-desktop-runtime .el-message-box__headerbtn {
top: 0;
right: 0;
width: 40px;
height: 38px;
}
body.is-desktop-runtime .el-dialog__headerbtn .el-dialog__close,
body.is-desktop-runtime .el-message-box__headerbtn .el-message-box__close {
color: #64748b;
}
body.is-desktop-runtime .el-dialog__body {
padding: 14px;
color: #334155;
font-size: 13px;
}
body.is-desktop-runtime .desktop-preferences-dialog {
background: transparent !important;
box-shadow: none !important;
border-radius: 0 !important;
}
body.is-desktop-runtime .desktop-preferences-dialog .el-dialog__body {
padding: 0;
background: transparent !important;
}
body.is-desktop-runtime .el-dialog__footer,
body.is-desktop-runtime .el-message-box__btns {
display: flex;
justify-content: flex-end;
gap: 8px;
padding: 10px 14px 12px;
border-top: 1px solid rgba(226, 232, 240, 0.92);
background: rgba(241, 245, 249, 0.76);
}
body.is-desktop-runtime .el-message-box__content {
padding: 16px 14px 14px;
color: #334155;
font-size: 13px;
}
body.is-desktop-runtime .el-message-box__message {
color: #334155;
line-height: 1.6;
}
body.is-desktop-runtime .el-message-box__status {
font-size: 18px !important;
}
body.is-desktop-runtime .el-message-box__input {
padding-top: 10px;
}
body.is-desktop-runtime .el-dialog__footer .el-button,
body.is-desktop-runtime .el-message-box__btns .el-button {
min-height: 28px;
padding: 0 12px;
border-radius: 6px;
font-size: 13px;
font-weight: 650;
}
body.is-desktop-runtime .dialog-fade-enter-active .el-dialog,
body.is-desktop-runtime .dialog-fade-leave-active .el-dialog,
body.is-desktop-runtime .msgbox-fade-enter-active .el-message-box,
body.is-desktop-runtime .msgbox-fade-leave-active .el-message-box {
transition: opacity 130ms ease, transform 150ms ease;
}
body.is-desktop-runtime .dialog-fade-enter-from .el-dialog,
body.is-desktop-runtime .dialog-fade-leave-to .el-dialog,
body.is-desktop-runtime .msgbox-fade-enter-from .el-message-box,
body.is-desktop-runtime .msgbox-fade-leave-to .el-message-box {
opacity: 0;
transform: translateY(-8px) scale(0.985);
}
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-message {
border-color: rgba(71, 85, 105, 0.7);
background: rgba(17, 24, 39, 0.94);
box-shadow: 0 16px 42px rgba(0, 0, 0, 0.36);
}
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-overlay {
background: rgba(2, 6, 23, 0.42);
}
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-dialog,
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-message-box {
border-color: rgba(51, 65, 85, 0.92);
background: rgba(17, 24, 39, 0.98);
box-shadow:
0 28px 84px rgba(0, 0, 0, 0.42),
0 1px 0 rgba(148, 163, 184, 0.12) inset;
color: #e5edf7;
}
:root[data-ctms-theme="dark"] body.is-desktop-runtime .desktop-preferences-dialog,
:root[data-ctms-theme="dark"] body.is-desktop-runtime .desktop-preferences-dialog .el-dialog__body {
background: transparent !important;
}
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-dialog__header,
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-message-box__header {
border-bottom-color: rgba(51, 65, 85, 0.92);
background: linear-gradient(180deg, rgba(30, 41, 59, 0.96), rgba(17, 24, 39, 0.94));
}
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-dialog__title,
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-message-box__title {
color: #e5edf7;
}
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-dialog__body,
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-message-box__content,
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-message-box__message {
color: #cbd5e1;
}
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-dialog__footer,
:root[data-ctms-theme="dark"] body.is-desktop-runtime .el-message-box__btns {
border-top-color: rgba(51, 65, 85, 0.92);
background: rgba(15, 23, 42, 0.78);
}
@media (prefers-reduced-motion: reduce) {
body.is-desktop-runtime .dialog-fade-enter-active .el-dialog,
body.is-desktop-runtime .dialog-fade-leave-active .el-dialog,
body.is-desktop-runtime .msgbox-fade-enter-active .el-message-box,
body.is-desktop-runtime .msgbox-fade-leave-active .el-message-box {
transition-duration: 1ms !important;
}
}