/* Your Global Styles */

#AbpContentToolbar {
    display: none !important;
}

:root .lpx-brand-logo {
    --lpx-logo: url('/images/logo/leptonx/logo-light.png');
    --lpx-logo-icon: url('/images/logo/leptonx/logo-light-thumbnail.png');
}

.table thead th {
    background-color: #eef2ff !important;
    color: #1a1a2e !important;
    font-weight: 600;
    font-size: 13px;
    border-bottom: 2px solid #355dff !important;
    border-top: none !important;
    padding: 10px 12px !important;
    white-space: nowrap;
}
.table tr td {
    color: #333 !important;
    font-size: 13px;
    padding: 9px 12px !important;
    border-bottom: 1px solid #e9ecef !important;
}
.table tbody tr:hover {
    background-color: #f0f4ff !important;
}

/* DataTables 表头覆盖 */
table.dataTable thead th,
table.dataTable thead td {
    background-color: #eef2ff !important;
    color: #1a1a2e !important;
    font-weight: 600;
    font-size: 13px;
    border-bottom: 2px solid #355dff !important;
    border-top: none !important;
    padding: 10px 12px !important;
    white-space: nowrap;
}
table.dataTable thead .sorting::before,
table.dataTable thead .sorting::after,
table.dataTable thead .sorting_asc::before,
table.dataTable thead .sorting_asc::after,
table.dataTable thead .sorting_desc::before,
table.dataTable thead .sorting_desc::after {
    color: rgba(53, 93, 255, 0.3) !important;
}
table.dataTable thead .sorting_asc::before,
table.dataTable thead .sorting_desc::after {
    color: #355dff !important;
}

.table.table-striped > tbody > tr:nth-of-type(odd) > td, .table.table-bordered > tbody > tr:nth-of-type(odd) > td {
    color: black !important;
}
.table.table-striped > tbody > tr:nth-of-type(even) > td, .table.table-bordered > tbody > tr:nth-of-type(even) > td {
    color: black !important;
}
.dataTables_wrapper .dataTables_info {
    color: black !important;
}

.form-control {
    color: black !important;
}
body {
    color: black !important;
    /*min-width: 1000px;*/
}

.card {
    color: black !important;
}

.card-body {
    color: black !important;
}

.project-config-desc-card {
    margin-bottom: 16px;
    border: 1px solid #dbe4ee;
    box-shadow: 0 6px 16px rgba(15, 23, 42, 0.04);
}

.project-config-desc-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.project-config-desc-item {
    padding: 14px 16px;
    border-radius: 8px;
    background: linear-gradient(180deg, rgba(248, 250, 252, 0.96) 0%, rgba(241, 245, 249, 0.96) 100%);
    border: 1px solid #dbe4ee;
    color: #0f172a;
    line-height: 1.75;
}

.project-config-desc-item p:last-child {
    margin-bottom: 0;
}

/* ====== Sidebar 浅色主题 ====== */

/* 覆盖 html/body 暗色背景 */
body.abp-application-layout {
    background-color: #f5f5f7 !important;
}

/* 侧边栏容器 - 白色背景 */
#lpx-wrapper .lpx-sidebar-container {
    background: #fff !important;
    background-color: #fff !important;
    border-right: 1px solid #e8e8e8 !important;
    box-shadow: none !important;
}

/* 侧边栏主体 */
#lpx-wrapper .lpx-sidebar-container .lpx-sidebar {
    background: #fff !important;
    background-color: #fff !important;
    color: #333 !important;
}

/* Logo 容器 */
#lpx-wrapper .lpx-sidebar .lpx-logo-container {
    background: #fff !important;
    background-color: #fff !important;
}

/* 导航区域 */
#lpx-wrapper .lpx-sidebar .lpx-nav {
    background: #fff !important;
    background-color: #fff !important;
    color: #333 !important;
}

/* 导航菜单 - 这是关键！DLL中用4层class选择器设了 #161616 */
#lpx-wrapper .lpx-sidebar-container .lpx-sidebar .lpx-nav .lpx-nav-menu {
    background: #fff !important;
    background-color: #fff !important;
}
.lpx-nav-menu {
    background: #fff !important;
    background-color: #fff !important;
}

/* 滚动条隐藏 */
.lpx-sidebar {
    overflow-y: auto !important;
    -ms-overflow-style: none;
    scrollbar-width: none;
}
.lpx-sidebar::-webkit-scrollbar {
    display: none;
}

/* 菜单项 - 常态：深色文字 */
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link {
    color: #333 !important;
}
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-icon {
    color: #999 !important;
}
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-icon .lpx-icon {
    color: #999 !important;
}
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-text {
    color: #333 !important;
}
#lpx-wrapper .lpx-menu-item {
    color: #333 !important;
}

/* 菜单项 - Hover */
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link:hover {
    background-color: #f0f4ff !important;
    color: #1677ff !important;
}
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link:hover .lpx-menu-item-icon,
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link:hover .lpx-menu-item-icon .lpx-icon,
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link:hover .lpx-menu-item-text {
    color: #1677ff !important;
}
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link:hover .dd-icon {
    color: #1677ff !important;
}

/* 菜单项 - 选中 */
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link.selected {
    background-color: #e8f0fe !important;
    color: #1677ff !important;
    border-left: 3px solid #1677ff !important;
}
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link.selected .lpx-menu-item-icon,
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link.selected .lpx-menu-item-icon .lpx-icon {
    color: #1677ff !important;
    opacity: 1;
}
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link.selected .lpx-menu-item-text {
    color: #1677ff !important;
    font-weight: 500;
}
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link.selected .dd-icon {
    color: #1677ff !important;
    opacity: 1;
}

/* 子菜单项 - 选中/Hover */
#lpx-wrapper .lpx-nav-menu .lpx-inner-menu-item .lpx-menu-item-link.selected,
#lpx-wrapper .lpx-nav-menu .lpx-inner-menu-item .lpx-menu-item-link:hover {
    background-color: #e8f0fe !important;
}

/* 展开箭头 */
#lpx-wrapper .lpx-nav-menu .lpx-arrow,
#lpx-wrapper .lpx-nav-menu .dd-icon {
    color: #bbb !important;
}
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link.selected .lpx-arrow,
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link:hover .lpx-arrow,
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link.selected .dd-icon,
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link:hover .dd-icon {
    color: #1677ff !important;
}

/* Toggle 按钮 */
#lpx-wrapper .lpx-sidebar .menu-collapse-icon {
    color: #666 !important;
}

/* 版本信息 */
.lpx-version-info {
    color: #999 !important;
    font-size: 13px !important;
    border-top: 1px solid #e8e8e8;
}

/* ====== Topbar 大通栏 - 全宽横贯顶部 ====== */

/* 通栏容器：脱离内容区，固定在视口最顶部，全宽 */
#lpx-wrapper .lpx-topbar-container {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100vw !important;
    height: 50px !important;
    z-index: 1100 !important;
    background: linear-gradient(90deg, #0d6efd 0%, #1677ff 45%, #2b9aff 100%) !important;
    background-color: #1677ff !important;
    border-radius: 0 !important;
    border: none !important;
    border-bottom: 1px solid rgba(255,255,255,0.25) !important;
    box-shadow: 0 1px 0 rgba(0,0,0,0.06), 0 3px 12px rgba(0,0,0,0.12) !important;
}

/* 通栏内部 */
#lpx-wrapper .lpx-topbar-container .lpx-topbar {
    background: transparent !important;
    border: none !important;
    border-radius: 0 !important;
    padding: 0 16px !important;
    height: 50px !important;
    display: flex !important;
    align-items: center !important;
    color: rgba(255,255,255,0.92) !important;
}

/* ====== 通栏左侧：品牌区（Logo/项目名 + 副标题） ====== */
#lpx-wrapper .lpx-topbar .ems-topbar-brand {
    display: flex;
    align-items: flex-end;
    gap: 6px;
    margin-right: auto;
    flex-shrink: 0;
}
#lpx-wrapper .lpx-topbar .ems-topbar-brand .ems-brand-main {
    display: flex;
    align-items: flex-end;
    font-size: 22px;
    font-weight: 700;
    color: #fff;
    white-space: nowrap;
    line-height: 1;
}
#lpx-wrapper .lpx-topbar .ems-topbar-brand .ems-brand-main img {
    height: 36px;
    width: auto;
    display: block;
}
#lpx-wrapper .lpx-topbar .ems-topbar-brand .ems-brand-sub {
    font-size: 13px;
    font-weight: 400;
    color: rgba(255,255,255,0.85);
    white-space: nowrap;
    line-height: 1;
    padding-bottom: 1px;
}

/* ====== 通栏右侧内容 ====== */
#lpx-wrapper .lpx-topbar .lpx-topbar-content {
    display: flex !important;
    align-items: center !important;
    height: 50px !important;
    gap: 12px !important;
    font-size: 13px !important;
}

#lpx-wrapper .lpx-topbar .lpx-topbar-content > a,
#lpx-wrapper .lpx-topbar .lpx-topbar-content > button,
#lpx-wrapper .lpx-topbar .lpx-topbar-content > .dropdown > .dropdown-toggle {
    color: rgba(255,255,255,0.92) !important;
}
#lpx-wrapper .lpx-topbar .lpx-topbar-content > a:hover,
#lpx-wrapper .lpx-topbar .lpx-topbar-content > button:hover,
#lpx-wrapper .lpx-topbar .lpx-topbar-content > .dropdown > .dropdown-toggle:hover {
    color: #fff !important;
}

#lpx-wrapper .lpx-topbar .lpx-topbar-content > a,
#lpx-wrapper .lpx-topbar .lpx-topbar-content > button,
#lpx-wrapper .lpx-topbar .lpx-topbar-content > .dropdown > .dropdown-toggle {
    padding: 6px 10px !important;
    border-radius: 999px !important;
    text-decoration: none !important;
    transition: background-color 150ms ease, color 150ms ease !important;
}
#lpx-wrapper .lpx-topbar .lpx-topbar-content .dropdown-toggle:not(.dropdown-item),
#lpx-wrapper .lpx-topbar .lpx-topbar-content .nav-link:not(.dropdown-item) {
    color: rgba(255,255,255,0.92) !important;
    padding: 6px 10px !important;
    border-radius: 999px !important;
    text-decoration: none !important;
    background: transparent !important;
    transition: background-color 150ms ease, color 150ms ease !important;
}
#lpx-wrapper .lpx-topbar .lpx-topbar-content .dropdown-toggle:not(.dropdown-item) i,
#lpx-wrapper .lpx-topbar .lpx-topbar-content .dropdown-toggle:not(.dropdown-item) svg,
#lpx-wrapper .lpx-topbar .lpx-topbar-content .nav-link:not(.dropdown-item) i,
#lpx-wrapper .lpx-topbar .lpx-topbar-content .nav-link:not(.dropdown-item) svg {
    color: rgba(255,255,255,0.92) !important;
    fill: currentColor !important;
    stroke: currentColor !important;
}
#lpx-wrapper .lpx-topbar .lpx-topbar-content > .dropdown {
    border-radius: 999px !important;
}
#lpx-wrapper .lpx-topbar .lpx-topbar-content > a:hover,
#lpx-wrapper .lpx-topbar .lpx-topbar-content > button:hover,
#lpx-wrapper .lpx-topbar .lpx-topbar-content > .dropdown > .dropdown-toggle:hover {
    background-color: rgba(255,255,255,0.18) !important;
}
#lpx-wrapper .lpx-topbar .lpx-topbar-content .dropdown-toggle:not(.dropdown-item):hover,
#lpx-wrapper .lpx-topbar .lpx-topbar-content .nav-link:not(.dropdown-item):hover {
    color: #fff !important;
    background-color: rgba(255,255,255,0.18) !important;
}
#lpx-wrapper .lpx-topbar .lpx-topbar-content > .dropdown:hover,
#lpx-wrapper .lpx-topbar .lpx-topbar-content > .dropdown:focus-within {
    background-color: rgba(255,255,255,0.18) !important;
}

#lpx-wrapper .lpx-topbar .lpx-topbar-content .dropdown-menu {
    border: 1px solid rgba(13,110,253,0.22) !important;
    border-radius: 12px !important;
    box-shadow: 0 12px 30px rgba(0,0,0,0.18) !important;
    padding: 6px !important;
    min-width: 180px !important;
}
#lpx-wrapper .lpx-topbar .lpx-topbar-content .dropdown-menu .dropdown-item,
#lpx-wrapper .lpx-topbar .lpx-topbar-content .dropdown-menu .dropdown-header {
    color: #1a1a2e !important;
}
#lpx-wrapper .lpx-topbar .lpx-topbar-content .dropdown-menu .dropdown-item {
    padding: 8px 10px !important;
    border-radius: 10px !important;
}
#lpx-wrapper .lpx-topbar .lpx-topbar-content .dropdown-menu .dropdown-item:hover,
#lpx-wrapper .lpx-topbar .lpx-topbar-content .dropdown-menu .dropdown-item:focus {
    color: #0b5ed7 !important;
    background-color: #f0f6ff !important;
}
#lpx-wrapper .lpx-topbar .lpx-topbar-content .dropdown-menu .dropdown-item.active,
#lpx-wrapper .lpx-topbar .lpx-topbar-content .dropdown-menu .dropdown-item:active {
    color: #0b5ed7 !important;
    background-color: #e0edff !important;
}
#lpx-wrapper .lpx-topbar .lpx-topbar-content .dropdown-menu .dropdown-item i,
#lpx-wrapper .lpx-topbar .lpx-topbar-content .dropdown-menu .dropdown-item svg {
    color: #1677ff !important;
}
#lpx-wrapper .lpx-topbar .lpx-topbar-content .dropdown-menu .dropdown-item:hover i,
#lpx-wrapper .lpx-topbar .lpx-topbar-content .dropdown-menu .dropdown-item:hover svg {
    color: #0b5ed7 !important;
}

/* 右侧用户头像 */
#lpx-wrapper .lpx-topbar .ems-user-avatar {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background-color: rgba(255,255,255,0.95);
    color: #1677ff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    flex-shrink: 0;
}

/* 隐藏原有的空面包屑容器 */
#lpx-wrapper .lpx-topbar .lpx-breadcrumb-container {
    display: none !important;
}

/* 原来移入topbar-content的logo隐藏（改为左侧brand显示） */
#lpx-wrapper .lpx-topbar .lpx-topbar-logo {
    display: none !important;
}

/* 隐藏侧边栏原Logo容器 */
#lpx-wrapper .lpx-nav .lpx-logo-container {
    display: none !important;
}

/* 折叠按钮占位：CSS ::before 先占好位置，防止JS插入时菜单跳动 */
#lpx-wrapper .lpx-sidebar::before {
    content: '';
    display: block;
    width: 100%;
    height: 44px;
    flex-shrink: 0;
    border-bottom: 1px solid #f0f0f0;
    box-sizing: border-box;
}
/* JS 插入真实按钮后，移除占位 */
#lpx-wrapper .lpx-sidebar.ems-btn-ready::before {
    display: none;
}

/* 折叠按钮：始终固定在侧边栏第一行左侧 */
#lpx-wrapper .lpx-sidebar .ems-collapse-btn {
    display: flex !important;
    align-items: center;
    justify-content: flex-start;
    width: 100% !important;
    padding: 8px 10px;
    cursor: pointer;
    color: #999;
    font-size: 1.3em;
    border-bottom: 1px solid #f0f0f0;
    box-sizing: border-box;
    flex-shrink: 0;
}
#lpx-wrapper .lpx-sidebar .ems-collapse-btn:hover {
    color: #1677ff;
    background-color: #f0f4ff;
}
/* 收缩态也要显示折叠按钮 */
#lpx-wrapper.hover-trigger .lpx-sidebar-container:not(:hover) .ems-collapse-btn {
    display: flex !important;
    justify-content: center !important;
    padding: 8px 0 !important;
}

/* 侧边栏：从通栏下方开始 */
#lpx-wrapper .lpx-sidebar-container {
    top: 50px !important;
    height: calc(100vh - 50px) !important;
}

/* 侧边栏内部高度跟随 */
#lpx-wrapper .lpx-sidebar-container .lpx-sidebar {
    min-height: calc(100vh - 50px) !important;
}
/* 菜单顶格，不留空 */
#lpx-wrapper .lpx-sidebar-container .lpx-sidebar .lpx-nav {
    height: calc(100vh - 50px) !important;
    padding-top: 0 !important;
}

/* 内容区顶部留出通栏空间（因为通栏变成fixed了） */
#lpx-wrapper .lpx-content-container {
    padding-top: 50px !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
}
#lpx-wrapper .lpx-content-container .lpx-content {
    padding: 1.5em !important;
}

/* ====== Sidebar 190px 宽度（支持折叠） ====== */

/* --- 展开态（无 hover-trigger）：190px --- */
#lpx-wrapper:not(.hover-trigger) .lpx-sidebar-container {
    min-width: 190px !important;
    max-width: 190px !important;
    width: 190px !important;
}
#lpx-wrapper:not(.hover-trigger) .lpx-sidebar-container .lpx-sidebar .lpx-nav {
    min-width: 190px !important;
    width: 190px !important;
}
#lpx-wrapper:not(.hover-trigger) .lpx-sidebar-container .lpx-sidebar .lpx-nav .lpx-nav-menu {
    max-width: 190px !important;
    width: 190px !important;
}
@media only screen and (min-width: 1200px) {
    #lpx-wrapper:not(.hover-trigger) .lpx-content-container {
        margin-left: 190px !important;
    }
    #lpx-wrapper:not(.hover-trigger) .lpx-footbar-container {
        left: 190px !important;
    }
}

/* --- 折叠态（hover-trigger）：48px，悬停展开到 190px --- */
#lpx-wrapper.hover-trigger .lpx-sidebar-container {
    min-width: 48px !important;
    max-width: 48px !important;
    transition: max-width 0.2s ease !important;
}
#lpx-wrapper.hover-trigger .lpx-sidebar-container:hover {
    min-width: 190px !important;
    max-width: 190px !important;
}
#lpx-wrapper.hover-trigger .lpx-sidebar-container .lpx-sidebar .lpx-nav {
    min-width: 48px !important;
}
#lpx-wrapper.hover-trigger .lpx-sidebar-container:hover .lpx-sidebar .lpx-nav {
    min-width: 190px !important;
    width: 190px !important;
}
#lpx-wrapper.hover-trigger .lpx-sidebar-container:hover .lpx-sidebar .lpx-nav .lpx-nav-menu {
    max-width: 190px !important;
    width: 190px !important;
}
#lpx-wrapper.hover-trigger .lpx-sidebar-container:not(:hover) .lpx-nav-menu .lpx-menu-item-text,
#lpx-wrapper.hover-trigger .lpx-sidebar-container:not(:hover) .lpx-nav-menu .dd-icon {
    display: none !important;
}
/* 收缩态图标居中 */
#lpx-wrapper.hover-trigger .lpx-sidebar-container:not(:hover) .lpx-nav-menu .lpx-menu-item-link {
    justify-content: center !important;
    padding: 0 !important;
}
#lpx-wrapper.hover-trigger .lpx-sidebar-container:not(:hover) .lpx-nav-menu .lpx-menu-item-icon {
    margin: 0 !important;
}
#lpx-wrapper.hover-trigger .lpx-sidebar-container:not(:hover) .lpx-nav-menu .lpx-menu-item-icon .lpx-icon {
    width: auto !important;
    text-align: center !important;
}
@media only screen and (min-width: 1200px) {
    #lpx-wrapper.hover-trigger .lpx-content-container {
        margin-left: 48px !important;
    }
    #lpx-wrapper.hover-trigger .lpx-footbar-container {
        left: 48px !important;
    }
}

/* 菜单项 - 内边距和图标 */
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link {
    padding: 0 10px !important;
}
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link .lpx-menu-item-icon .lpx-icon {
    width: 32px !important;
    font-size: 14px !important;
}
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link .lpx-menu-item-text {
    width: 126px !important;
    font-size: 13px !important;
}

/* 展开箭头位置调整 */
#lpx-wrapper .lpx-nav-menu .lpx-menu-item-link .dd-icon {
    right: 8px !important;
    width: 16px !important;
}

/* 子菜单项 - 缩进 */
#lpx-wrapper .lpx-nav-menu .lpx-inner-menu-item .lpx-menu-item-link {
    padding-left: 36px !important;
}
/* 子菜单项 icon 与文字间距 - 与一级菜单保持一致 */
#lpx-wrapper .lpx-nav-menu .lpx-inner-menu-item .lpx-menu-item-link .lpx-menu-item-icon {
    margin-right: 0 !important;
    padding-right: 0 !important;
}
#lpx-wrapper .lpx-nav-menu .lpx-inner-menu-item .lpx-menu-item-link .lpx-menu-item-icon .lpx-icon {
    width: 32px !important;
    font-size: 14px !important;
}
#lpx-wrapper .lpx-nav-menu .lpx-inner-menu-item .lpx-menu-item-text {
    width: 110px !important;
    font-size: 13px !important;
    margin-left: 0 !important;
    padding-left: 0 !important;
}
#lpx-wrapper .lpx-nav-menu .lpx-inner-menu .lpx-inner-menu .lpx-menu-item-link {
    padding-left: 48px !important;
}

/* hover-trigger 模式悬停展开菜单项文字 */
#lpx-wrapper.hover-trigger .lpx-sidebar-container:hover .lpx-nav-menu .lpx-menu-item-link .lpx-menu-item-text {
    display: inline-block !important;
}

/* Logo 品牌图适配小宽度 */
#lpx-wrapper .lpx-brand-logo {
    background-size: contain !important;
    max-width: 120px !important;
}

/* 版本信息适配窄侧边栏 */
.lpx-version-info {
    padding: 6px 8px !important;
    font-size: 12px !important;
}

/* ====== 项目选择器 - 弹出面板 ====== */
.ems-project-selector {
    position: relative;
}
.ems-project-trigger {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 10px;
    border-radius: 999px;
    transition: background-color 0.15s, color 0.15s;
    user-select: none;
}
.ems-project-trigger,
.ems-project-trigger i,
.ems-project-trigger .lpx-icon {
    color: rgba(255,255,255,0.92) !important;
}
.ems-project-trigger:hover {
    background-color: rgba(255,255,255,0.18);
    color: #fff !important;
}
.ems-project-selector.open .ems-project-trigger {
    background-color: rgba(255,255,255,0.18);
    color: #fff !important;
}
.ems-project-panel {
    display: none;
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    width: 350px;
    max-height: 80vh;
    background: #fff;
    border: 1px solid rgba(13,110,253,0.22);
    border-radius: 12px;
    box-shadow: 0 12px 30px rgba(0,0,0,0.18);
    z-index: 1150;
    flex-direction: column;
    overflow: hidden;
}
.ems-project-panel.open {
    display: flex;
}
.ems-project-search {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 12px;
    border-bottom: 1px solid #f0f0f0;
    flex-shrink: 0;
}
.ems-project-search i {
    color: #bbb;
    font-size: 13px;
    flex-shrink: 0;
}
.ems-project-search input {
    flex: 1;
    border: none !important;
    outline: none !important;
    box-shadow: none !important;
    font-size: 13px !important;
    height: 28px !important;
    padding: 0 !important;
    color: #333 !important;
    background: transparent !important;
}
.ems-project-search input::placeholder {
    color: #bbb;
}
.ems-project-tree {
    flex: 1;
    overflow-y: auto;
    padding: 6px 0;
}
.ems-project-tree::-webkit-scrollbar {
    width: 5px;
}
.ems-project-tree::-webkit-scrollbar-thumb {
    background: #d9d9d9;
    border-radius: 3px;
}
.ems-project-tree::-webkit-scrollbar-track {
    background: transparent;
}
/* 树节点 */
.ems-pt-node {
    /* level indentation via data-level */
}
.ems-pt-node[data-level="0"] > .ems-pt-header { padding-left: 12px; }
.ems-pt-node[data-level="1"] > .ems-pt-header { padding-left: 30px; }
.ems-pt-node[data-level="2"] > .ems-pt-header { padding-left: 48px; }
.ems-pt-node[data-level="3"] > .ems-pt-header { padding-left: 66px; }

.ems-pt-header {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 5px 12px 5px 12px;
    cursor: pointer;
    border-radius: 0;
    transition: background 0.1s;
    user-select: none;
}
.ems-pt-header:hover {
    background-color: #f0f4ff;
}
.ems-pt-header.active {
    background-color: #e8f0fe;
}
.ems-pt-header.active .ems-pt-label {
    color: #1677ff;
    font-weight: 500;
}
.ems-pt-toggle {
    width: 16px;
    height: 16px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 11px;
    color: #999;
    transition: transform 0.15s ease;
}
.ems-pt-toggle.expanded {
    transform: rotate(90deg);
}
.ems-pt-toggle.leaf {
    visibility: hidden;
}
.ems-pt-label {
    font-size: 13px;
    color: #333;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 22px;
}
.ems-pt-children.collapsed {
    display: none;
}
.ems-pt-highlight {
    font-style: normal;
    color: #1677ff;
    font-weight: 600;
    background: rgba(22,119,255,0.08);
    border-radius: 2px;
    padding: 0 1px;
}

/* ====== EMS 全局搜索/过滤栏 ====== */
.ems-filter {
    display: inline-flex;
    align-items: center;
    gap: 15px;
    padding: 8px 15px;
    background: #f8f9fa;
    border-radius: 8px;
    margin-left: auto;
}
.ems-filter-group {
    display: flex;
    align-items: center;
    gap: 8px;
}
.ems-filter-label {
    font-weight: 500;
    color: #666;
    font-size: 14px;
}
.ems-date-picker {
    padding: 8px 12px;
    border: 1px solid #ddd;
    border-radius: 4px;
    background: white;
    font-size: 14px;
    width: 160px;
}

/* ====== EMS 全局按钮 ====== */

/* 统一所有按钮为中等大小 */
.btn {
    padding: 6px 16px !important;
    font-size: 13px !important;
    line-height: 1.5 !important;
    border-radius: 4px !important;
}
.btn-sm {
    padding: 6px 16px !important;
    font-size: 13px !important;
    line-height: 1.5 !important;
}
.btn-lg {
    padding: 6px 16px !important;
    font-size: 13px !important;
    line-height: 1.5 !important;
}

/* 覆盖 Bootstrap .btn-primary 为统一风格 */
.btn-primary {
    background-color: #355dff !important;
    border-color: #355dff !important;
    color: white !important;
    border-radius: 4px;
    transition: background-color 0.3s;
}
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active,
.btn-primary.active,
.btn-primary:first-child:active {
    background-color: #2548cc !important;
    border-color: #2548cc !important;
    color: white !important;
}
.btn-primary:focus,
.btn-primary:focus-visible {
    box-shadow: 0 0 0 0.25rem rgba(53, 93, 255, 0.25) !important;
}

/* 覆盖 Bootstrap .btn-secondary */
.btn-secondary {
    background-color: #6c757d !important;
    border-color: #6c757d !important;
    color: white !important;
    border-radius: 4px;
    transition: background-color 0.3s;
}
.btn-secondary:hover,
.btn-secondary:focus,
.btn-secondary:active,
.btn-secondary.active,
.btn-secondary:first-child:active {
    background-color: #565e64 !important;
    border-color: #565e64 !important;
    color: white !important;
}
.btn-secondary:focus,
.btn-secondary:focus-visible {
    box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.25) !important;
}

/* 覆盖 Bootstrap .btn-success */
.btn-success {
    background-color: #28a745 !important;
    border-color: #28a745 !important;
    color: white !important;
    border-radius: 4px;
    transition: background-color 0.3s;
}
.btn-success:hover,
.btn-success:focus,
.btn-success:active,
.btn-success.active,
.btn-success:first-child:active {
    background-color: #218838 !important;
    border-color: #218838 !important;
    color: white !important;
}
.btn-success:focus,
.btn-success:focus-visible {
    box-shadow: 0 0 0 0.25rem rgba(40, 167, 69, 0.25) !important;
}

/* 覆盖 Bootstrap .btn-danger */
.btn-danger {
    background-color: #dc3545 !important;
    border-color: #dc3545 !important;
    color: white !important;
    border-radius: 4px;
    transition: background-color 0.3s;
}
.btn-danger:hover,
.btn-danger:focus,
.btn-danger:active,
.btn-danger.active,
.btn-danger:first-child:active {
    background-color: #c82333 !important;
    border-color: #c82333 !important;
    color: white !important;
}
.btn-danger:focus,
.btn-danger:focus-visible {
    box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25) !important;
}

/* 覆盖 Bootstrap .btn-warning */
.btn-warning {
    background-color: #ffc107 !important;
    border-color: #ffc107 !important;
    color: #212529 !important;
    border-radius: 4px;
    transition: background-color 0.3s;
}
.btn-warning:hover,
.btn-warning:focus,
.btn-warning:active,
.btn-warning.active,
.btn-warning:first-child:active {
    background-color: #e0a800 !important;
    border-color: #e0a800 !important;
    color: #212529 !important;
}
.btn-warning:focus,
.btn-warning:focus-visible {
    box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.25) !important;
}

/* 覆盖 Bootstrap .btn-info */
.btn-info {
    background-color: #17a2b8 !important;
    border-color: #17a2b8 !important;
    color: white !important;
    border-radius: 4px;
    transition: background-color 0.3s;
}
.btn-info:hover,
.btn-info:focus,
.btn-info:active,
.btn-info.active,
.btn-info:first-child:active {
    background-color: #138496 !important;
    border-color: #138496 !important;
    color: white !important;
}
.btn-info:focus,
.btn-info:focus-visible {
    box-shadow: 0 0 0 0.25rem rgba(23, 162, 184, 0.25) !important;
}

/* 覆盖 Bootstrap .btn-outline-primary */
.btn-outline-primary {
    color: #355dff !important;
    border-color: #355dff !important;
    border-radius: 4px;
    transition: all 0.3s;
}
.btn-outline-primary:hover,
.btn-outline-primary:focus,
.btn-outline-primary:active,
.btn-outline-primary.active {
    background-color: #355dff !important;
    border-color: #355dff !important;
    color: white !important;
}
.btn-outline-primary:focus,
.btn-outline-primary:focus-visible {
    box-shadow: 0 0 0 0.25rem rgba(53, 93, 255, 0.25) !important;
}

/* 覆盖 Bootstrap .btn-outline-secondary */
.btn-outline-secondary {
    color: #6c757d !important;
    border-color: #6c757d !important;
    border-radius: 4px;
    transition: all 0.3s;
}
.btn-outline-secondary:hover,
.btn-outline-secondary:focus,
.btn-outline-secondary:active,
.btn-outline-secondary.active {
    background-color: #6c757d !important;
    border-color: #6c757d !important;
    color: white !important;
}
.btn-outline-secondary:focus,
.btn-outline-secondary:focus-visible {
    box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.25) !important;
}

/* 覆盖 Bootstrap .btn-outline-success */
.btn-outline-success {
    color: #28a745 !important;
    border-color: #28a745 !important;
    border-radius: 4px;
    transition: all 0.3s;
}
.btn-outline-success:hover,
.btn-outline-success:focus,
.btn-outline-success:active,
.btn-outline-success.active {
    background-color: #28a745 !important;
    border-color: #28a745 !important;
    color: white !important;
}
.btn-outline-success:focus,
.btn-outline-success:focus-visible {
    box-shadow: 0 0 0 0.25rem rgba(40, 167, 69, 0.25) !important;
}

/* 覆盖 Bootstrap .btn-outline-danger */
.btn-outline-danger {
    color: #dc3545 !important;
    border-color: #dc3545 !important;
    border-radius: 4px;
    transition: all 0.3s;
}
.btn-outline-danger:hover,
.btn-outline-danger:focus,
.btn-outline-danger:active,
.btn-outline-danger.active {
    background-color: #dc3545 !important;
    border-color: #dc3545 !important;
    color: white !important;
}
.btn-outline-danger:focus,
.btn-outline-danger:focus-visible {
    box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25) !important;
}

/* ====== EMS 通用页面 Card 样式 ====== */
/* Page card - 满屏高度，分页栏置底 */
.ems-page {
    font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
    font-size: 12px !important;
    color: #333;
    background: #fff;
    border-radius: 6px;
    border: 1px solid #e8e8e8;
    min-height: calc(100vh - 100px);
    display: flex;
    flex-direction: column;
}
.ems-page *:not(h4) {
    font-size: 12px;
}

/* ---------- Header ---------- */
.ems-page-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    padding: 16px 20px 10px 20px;
}
.ems-page-title h4 {
    margin: 0;
    font-size: 16px;
    font-weight: 700;
    color: #222;
    line-height: 1.4;
}
.ems-page-subtitle {
    display: block;
    font-size: 12px;
    color: #b0b0b0;
    margin-top: 2px;
}
.ems-page-subtitle em { font-style: normal; color: #ccc; margin: 0 3px; }
.ems-subtitle-link { color: #b0b0b0; text-decoration: none; }
.ems-subtitle-link:hover { color: #355dff; text-decoration: none; }
.ems-subtitle-link.active { color: #355dff; }
.ems-page-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.ems-page-actions .btn { height: 30px !important; line-height: 1 !important; font-size: 12px !important; padding: 0 16px !important; }

/* ---------- Search ---------- */
.ems-page-search {
    padding: 0 20px 12px 20px;
}
.ems-search-row {
    display: flex;
    align-items: flex-start;
    gap: 18px;
    border: 1px dashed #c0c6d0;
    border-radius: 0;
    padding: 12px 16px;
    width: 100%;
    box-sizing: border-box;
    overflow: hidden;
}
.ems-search-items {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px 18px;
    flex: 1;
    min-width: 0;
    overflow: hidden;
}
.ems-search-item { display: flex; align-items: center; gap: 6px; }
.ems-search-item label { font-size: 12px; color: #666; white-space: nowrap; margin: 0; font-weight: normal; }
.ems-search-item .form-control {
    width: 140px !important; height: 30px !important; font-size: 12px !important;
    padding: 2px 8px !important; border: 1px solid #d9d9d9 !important;
    border-radius: 4px !important; color: #333 !important; background: #fff !important;
}
.ems-search-item .form-control:focus { border-color: #355dff !important; box-shadow: 0 0 0 2px rgba(53,93,255,.08) !important; }
.ems-search-btns { display: flex; align-items: center; gap: 8px; flex-shrink: 0; padding-top: 0; }
.ems-search-btns .btn { height: 30px !important; line-height: 1 !important; font-size: 12px !important; padding: 0 16px !important; }

/* ---------- Table 区域 ---------- */
.ems-page-table {
    padding: 0 20px 12px 20px;
    overflow-x: auto;
    flex: 1;
    display: flex;
    flex-direction: column;
}

/* DataTables wrapper flex 布局 */
.ems-page-table .dataTables_wrapper {
    padding: 0 !important;
    margin: 0 !important;
    font-size: 12px !important;
    flex: 1;
    display: flex !important;
    flex-direction: column !important;
}
.ems-page-table .dataTables_wrapper > .row.dt-row,
.ems-page-table .dataTables_wrapper > .dataTables_scrollHead + .dataTables_scrollBody,
.ems-page-table .dataTables_wrapper > .dataTables_scroll {
    flex: 1;
}
.ems-page-table .dataTables_wrapper > .dataTables_scroll {
    display: flex !important;
    flex-direction: column !important;
}
.ems-page-table .dataTables_wrapper > .dataTables_scroll > .dataTables_scrollBody {
    flex: 1;
}
.ems-page-table .dataTables_wrapper > .row:last-child,
.ems-page-table .dataTables_wrapper > .dataTable_footer {
    margin-top: auto !important;
    padding-top: 10px;
    padding-bottom: 10px;
}
.ems-page-table .dataTables_wrapper .dataTables_length select {
    padding-left: 8px !important;
    padding-right: 30px !important;
    border-radius: 4px !important;
}
.ems-page-table .dataTables_wrapper .dataTables_length,
.ems-page-table .dataTables_wrapper .dataTables_length select,
.ems-page-table .dataTables_wrapper .dataTables_length label,
.ems-page-table .dataTables_wrapper .dataTables_filter,
.ems-page-table .dataTables_wrapper .dataTables_filter input,
.ems-page-table .dataTables_wrapper .dataTables_info,
.ems-page-table .dataTables_wrapper .dataTables_paginate {
    font-size: 12px !important;
}

/* 通用表格样式 */
.ems-page-table .ems-table {
    width: 100% !important;
    margin: 0 !important;
    border-collapse: collapse !important;
    border-spacing: 0 !important;
}
.ems-page-table .ems-table thead {
    background-color: #f6f7fb !important;
}
.ems-page-table .ems-table thead th,
.ems-page-table .ems-table thead td {
    background-color: #f6f7fb !important;
    color: #333 !important;
    font-weight: 500 !important;
    font-size: 12px !important;
    border-top: none !important;
    border-bottom: 1px solid #e0e0e0 !important;
    padding: 10px 12px !important;
    white-space: nowrap;
    box-shadow: none !important;
}
.ems-page-table .ems-table > :not(:first-child) {
    border-top: 0 !important;
}
.ems-page-table .ems-table tbody td {
    font-size: 12px !important;
    color: #333 !important;
    padding: 9px 12px !important;
    border-bottom: 1px solid #f0f0f0 !important;
    vertical-align: middle;
    box-shadow: none !important;
}
.ems-page-table .ems-table tbody tr:hover {
    background-color: #f5f7ff !important;
}
.ems-page-table .ems-table > tbody > tr:nth-of-type(odd) > td {
    background-color: transparent !important;
}
.ems-page-table .ems-table > tbody > tr:nth-of-type(even) > td {
    background-color: #fafbfd !important;
}

/* DataTables scrollX 模式下的间隔消除 */
.ems-page-table .dataTables_scrollHead {
    margin-bottom: 0 !important;
    padding-bottom: 0 !important;
    border-bottom: none !important;
    overflow: visible !important;
}
.ems-page-table .dataTables_scrollBody {
    margin-top: 0 !important;
    padding-top: 0 !important;
    border-top: none !important;
}
.ems-page-table .dataTables_scrollHead table {
    margin-bottom: 0 !important;
}
.ems-page-table .dataTables_scrollBody table {
    margin-top: 0 !important;
    border-top: none !important;
}

/* EMS 管理页统一隐藏 DataTables 自动插入的列宽计算表头行 */
.ems-page-table table.dataTable thead tr:not(:first-child),
.ems-page-table .dataTables_scrollHead table.dataTable thead tr:not(:first-child),
.ems-page-table .dataTables_scrollBody table.dataTable thead tr:not(:first-child) {
    display: none !important;
}
.ems-page-table table.dataTable thead tr:not(:first-child) th,
.ems-page-table table.dataTable thead tr:not(:first-child) td,
.ems-page-table .dataTables_scrollHead table.dataTable thead tr:not(:first-child) th,
.ems-page-table .dataTables_scrollHead table.dataTable thead tr:not(:first-child) td,
.ems-page-table .dataTables_scrollBody table.dataTable thead tr:not(:first-child) th,
.ems-page-table .dataTables_scrollBody table.dataTable thead tr:not(:first-child) td {
    padding: 0 !important;
    border: 0 !important;
    height: 0 !important;
    line-height: 0 !important;
}

/* ABP rowAction 操作按钮 - 缩小为与搜索按钮一致 */
.ems-page-table .btn-group .btn,
.ems-page-table .btn-group .dropdown-toggle {
    padding: 0 12px !important;
    font-size: 12px !important;
    line-height: 28px !important;
    height: 28px !important;
}

/* Checkbox 列 */
.ems-page-table .alarm-check-col {
    width: 40px !important;
    text-align: center !important;
}
.ems-page-table .alarm-check-col input[type="checkbox"] {
    width: 15px; height: 15px; cursor: pointer; accent-color: #355dff;
}

/* ====== EMS Split Layout (左右分栏) ====== */
.ems-page-body {
    display: flex;
    flex: 1;
    min-height: 0;
    overflow: hidden;
    position: relative;
}
.ems-page-sidebar {
    width: 260px;
    min-width: 260px;
    border-right: 1px solid #e8e8e8;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: #fafbfd;
    transition: width 0.25s ease, min-width 0.25s ease;
    position: relative;
    border-bottom-left-radius: 6px;
}
.ems-page-sidebar.collapsed {
    width: 0;
    min-width: 0;
    border-right: none;
    overflow: hidden;
}
.ems-page-sidebar.collapsed .ems-page-sidebar-search,
.ems-page-sidebar.collapsed .ems-page-tree {
    display: none;
}
/* Sidebar toggle button - thin handle bar */
.ems-sidebar-toggle {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    left: 260px;
    z-index: 5;
    width: 6px;
    height: 40px;
    background: #d9d9d9;
    border: none;
    border-radius: 3px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0;
    color: transparent;
    transition: left 0.25s ease, background 0.15s;
}
.ems-sidebar-toggle:hover {
    background: #355dff;
}
.ems-page-sidebar-search {
    padding: 12px 12px 8px 12px;
    flex-shrink: 0;
}
.ems-page-sidebar-search input {
    width: 100% !important;
    height: 30px !important;
    font-size: 12px !important;
    padding: 2px 8px !important;
    border: 1px solid #d9d9d9 !important;
    border-radius: 4px !important;
    color: #333 !important;
    background: #fff !important;
}
.ems-page-sidebar-search input:focus {
    border-color: #355dff !important;
    box-shadow: 0 0 0 2px rgba(53,93,255,.08) !important;
    outline: none;
}
.ems-page-tree {
    flex: 1;
    overflow-y: auto;
    padding: 0 8px 12px 8px;
}
.ems-page-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
    overflow: hidden;
}
/* Right side: chart area (50%) */
.ems-page-chart {
    padding: 8px 20px 8px 20px;
    flex: 1;
    min-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.ems-page-chart > div {
    flex: 1;
    min-height: 0;
}
/* Right side: divider between chart and table */
.ems-content-divider {
    height: 1px;
    background: #e0e0e0;
    margin: 0 20px;
    flex-shrink: 0;
}
/* Right side: table area (50%) */
.ems-page-content > .ems-page-table {
    flex: 1;
    min-height: 0;
    overflow: auto;
}

/* ---------- Tree 树组件 ---------- */
.ems-tree-node {
    user-select: none;
}
.ems-tree-node.hidden {
    display: none;
}
.ems-tree-node-content {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 4px 6px;
    border-radius: 3px;
    cursor: pointer;
    line-height: 22px;
}
.ems-tree-node-content:hover {
    background-color: #e8eeff;
}
.ems-tree-toggle {
    width: 16px;
    height: 16px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 10px;
    color: #999;
    transition: transform 0.15s ease;
}
.ems-tree-toggle.expanded {
    transform: rotate(90deg);
}
.ems-tree-toggle.leaf {
    visibility: hidden;
}
/* Tree node icon */
.ems-tree-icon {
    width: 16px;
    height: 16px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 13px;
}
.ems-tree-icon.icon-project { color: #f5a623; }
.ems-tree-icon.icon-module  { color: #4a90d9; }
.ems-tree-icon.icon-point   { color: #7ec699; }
.ems-tree-checkbox {
    width: 14px;
    height: 14px;
    cursor: pointer;
    accent-color: #355dff;
    flex-shrink: 0;
    margin: 0;
}
.ems-tree-label {
    font-size: 12px;
    color: #333;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.ems-tree-children {
    padding-left: 18px;
}
.ems-tree-children.collapsed {
    display: none;
}

/* Fixed columns bg */
.dtfc-fixed-left, .dtfc-fixed-right {
    background-color: #fff !important;
}

.ems-page-table table.dataTable tbody tr.odd > .dtfc-fixed-left,
.ems-page-table table.dataTable tbody tr.odd > .dtfc-fixed-right {
    background-color: #fff !important;
}

.ems-page-table table.dataTable tbody tr.even > .dtfc-fixed-left,
.ems-page-table table.dataTable tbody tr.even > .dtfc-fixed-right {
    background-color: #fafbfd !important;
}

.ems-page-table table.dataTable tbody tr:hover > .dtfc-fixed-left,
.ems-page-table table.dataTable tbody tr:hover > .dtfc-fixed-right {
    background-color: #f5f7ff !important;
}

/* ====== 弹层/遮罩层 z-index 高于顶栏(1100) ====== */
.modal-backdrop {
    z-index: 1200 !important;
}
.modal {
    z-index: 1210 !important;
}
.modal .modal-dialog {
    display: flex !important;
    align-items: center !important;
    min-height: calc(100% - 3.5rem) !important;
    margin-top: 1.75rem !important;
    margin-bottom: 1.75rem !important;
}
.modal.fade .modal-dialog {
    transform: none !important;
}
.swal2-container {
    z-index: 1220 !important;
}

/* SweetAlert2 弹层样式 */
.swal2-popup {
    font-size: 12px !important;
    border-radius: 8px !important;
    padding: 24px !important;
}
.swal2-icon {
    transform: scale(0.7);
    margin: 0 auto 8px !important;
}
.swal2-title {
    font-size: 16px !important;
    font-weight: 600 !important;
    color: #333 !important;
}
.swal2-html-container {
    font-size: 13px !important;
    color: #666 !important;
}
.swal2-actions .swal2-styled {
    font-size: 12px !important;
    padding: 6px 24px !important;
    border-radius: 4px !important;
    min-width: 72px;
}
.swal2-actions .swal2-confirm {
    background-color: #355dff !important;
    border-color: #355dff !important;
}
.swal2-actions .swal2-confirm:hover {
    background-color: #2a4de6 !important;
}
.swal2-actions .swal2-cancel {
    background-color: #6c757d !important;
    border-color: #6c757d !important;
}
.swal2-actions .swal2-deny {
    background-color: #dc3545 !important;
}
#toast-container {
    z-index: 1230 !important;
}

/* ====== DataTables 分页选中颜色 ====== */
.dataTables_wrapper .dataTables_paginate .paginate_button.current,
.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
    background: #355dff !important;
    background-color: #355dff !important;
    border-color: #355dff !important;
    color: #fff !important;
    border-radius: 4px !important;
}
.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
    background: #e8eeff !important;
    background-color: #e8eeff !important;
    border-color: #d0d9ff !important;
    color: #355dff !important;
    border-radius: 4px !important;
}
.dataTables_wrapper .dataTables_paginate .paginate_button {
    color: #333 !important;
    border-radius: 4px !important;
}

/* Bootstrap 分页 active 样式 */
.dataTables_wrapper .dataTables_paginate .pagination .page-item.active .page-link,
.page-item.active .page-link {
    background-color: #355dff !important;
    border-color: #355dff !important;
    color: #fff !important;
    border-radius: 4px !important;
}
.dataTables_wrapper .dataTables_paginate .pagination .page-link:hover,
.page-link:hover {
    background-color: #e8eeff !important;
    border-color: #d0d9ff !important;
    color: #355dff !important;
    border-radius: 4px !important;
}
.dataTables_wrapper .dataTables_paginate .pagination .page-link:focus,
.page-link:focus {
    box-shadow: 0 0 0 0.25rem rgba(53, 93, 255, 0.25) !important;
}
.dataTables_wrapper .dataTables_paginate .pagination .page-link,
.page-link {
    color: #333 !important;
    border-radius: 4px !important;
}
.dataTables_wrapper .dataTables_paginate .pagination .page-item,
.page-item {
    margin: 0 2px;
}
.dataTables_wrapper .dataTables_paginate .pagination .page-item:first-child .page-link,
.dataTables_wrapper .dataTables_paginate .pagination .page-item:last-child .page-link {
    border-radius: 4px !important;
}

/* ====== Settings 页面通用样式 ====== */
/* ABP Card 内表格 - 表头灰色 + 无行线 */
.lpx-content-wrapper .card table.table thead th {
    background-color: #f6f7fb !important;
    color: #333 !important;
    font-weight: 500 !important;
    font-size: 12px !important;
    border: none !important;
    border-bottom: 1px solid #e0e0e0 !important;
    padding: 10px 12px !important;
    white-space: nowrap;
    box-shadow: none !important;
}
.lpx-content-wrapper .card table.table > :not(:first-child) {
    border-top: none !important;
}
.lpx-content-wrapper .card table.table tbody th,
.lpx-content-wrapper .card table.table tbody td {
    font-size: 12px !important;
    color: #333 !important;
    padding: 8px 12px !important;
    border: none !important;
    vertical-align: middle;
    box-shadow: none !important;
}
.lpx-content-wrapper .card table.table tbody tr:hover {
    background-color: #f5f7ff !important;
}
/* 去掉 Bootstrap 奇偶行底色 */
.lpx-content-wrapper .card table.table > tbody > tr > td,
.lpx-content-wrapper .card table.table > tbody > tr > th {
    background-color: transparent !important;
}
.lpx-content-wrapper .card table.table > tbody > tr:hover > td,
.lpx-content-wrapper .card table.table > tbody > tr:hover > th {
    background-color: #f5f7ff !important;
}

/* ====== ABP 模块页面（Identity/Users 等）DataTable 样式 ====== */
/* 覆盖蓝色强调风格，统一为 EMS 灰色主题 */
.lpx-content-wrapper .card table.dataTable thead th,
.lpx-content-wrapper .card table.dataTable thead td {
    background-color: #f6f7fb !important;
    color: #333 !important;
    font-weight: 500 !important;
    font-size: 12px !important;
    border-top: none !important;
    border-bottom: 1px solid #e0e0e0 !important;
    padding: 10px 12px !important;
    white-space: nowrap;
    box-shadow: none !important;
}
.lpx-content-wrapper .card table.dataTable thead .sorting::before,
.lpx-content-wrapper .card table.dataTable thead .sorting::after,
.lpx-content-wrapper .card table.dataTable thead .sorting_asc::before,
.lpx-content-wrapper .card table.dataTable thead .sorting_asc::after,
.lpx-content-wrapper .card table.dataTable thead .sorting_desc::before,
.lpx-content-wrapper .card table.dataTable thead .sorting_desc::after {
    color: rgba(0, 0, 0, 0.15) !important;
}
.lpx-content-wrapper .card table.dataTable thead .sorting_asc::before,
.lpx-content-wrapper .card table.dataTable thead .sorting_desc::after {
    color: #333 !important;
}
.lpx-content-wrapper .card table.dataTable tbody td {
    font-size: 12px !important;
    color: #333 !important;
    padding: 9px 12px !important;
    border-bottom: 1px solid #f0f0f0 !important;
    border-top: none !important;
    vertical-align: middle;
    box-shadow: none !important;
}
.lpx-content-wrapper .card table.dataTable tbody tr:hover td {
    background-color: #f5f7ff !important;
}
.lpx-content-wrapper .card table.dataTable > tbody > tr:nth-of-type(odd) > td {
    background-color: transparent !important;
}
.lpx-content-wrapper .card table.dataTable > tbody > tr:nth-of-type(even) > td {
    background-color: #fafbfd !important;
}
.lpx-content-wrapper .card table.dataTable > :not(:first-child) {
    border-top: none !important;
}
.lpx-content-wrapper .card .dataTables_wrapper {
    font-size: 12px !important;
}
.lpx-content-wrapper .card .dataTables_wrapper .dataTables_length,
.lpx-content-wrapper .card .dataTables_wrapper .dataTables_length select,
.lpx-content-wrapper .card .dataTables_wrapper .dataTables_length label,
.lpx-content-wrapper .card .dataTables_wrapper .dataTables_filter,
.lpx-content-wrapper .card .dataTables_wrapper .dataTables_filter input,
.lpx-content-wrapper .card .dataTables_wrapper .dataTables_info,
.lpx-content-wrapper .card .dataTables_wrapper .dataTables_paginate {
    font-size: 12px !important;
}
/* ABP 模块页面 card-body 紧凑 */
.lpx-content-wrapper .card .card-body {
    font-size: 12px !important;
}

/* Settings 表单控件 - 中等尺寸 */
.lpx-content-wrapper .card .form-control,
.lpx-content-wrapper .card select.form-control,
.modal .form-control,
.modal select.form-control {
    height: 36px !important;
    font-size: 12px !important;
    padding: 6px 12px !important;
    border: 1px solid #d9d9d9 !important;
    border-radius: 4px !important;
    color: #333 !important;
}
.lpx-content-wrapper .card .form-control:focus,
.modal .form-control:focus {
    border-color: #355dff !important;
    box-shadow: 0 0 0 2px rgba(53,93,255,.08) !important;
}

/* 模态框字号 */
.modal .modal-title {
    font-size: 14px !important;
}
.modal .modal-body {
    font-size: 12px !important;
}
.modal .modal-body label,
.modal .modal-body .form-check-label {
    font-size: 12px !important;
}

/* ============================================================
   Settings 页面表格通用样式 (table-borderless)
   适用于 Price, Mode 等 Settings 子页面的普通表格
   ============================================================ */
/* 表头灰色背景 */
.lpx-content-wrapper .card table.table-borderless thead th,
.lpx-content .card table.table-borderless thead th {
    background-color: #f6f7fb !important;
    color: #333 !important;
    font-weight: 500 !important;
    font-size: 12px !important;
    border: none !important;
    border-bottom: 1px solid #e0e0e0 !important;
    padding: 10px 12px !important;
    white-space: nowrap;
}
/* 去掉 Bootstrap table > :not(:first-child) 上边框 */
.lpx-content-wrapper .card table.table-borderless > :not(:first-child),
.lpx-content .card table.table-borderless > :not(:first-child) {
    border-top: none !important;
}
/* 去掉 table-borderless 的 border-bottom-width/box-shadow */
.lpx-content-wrapper .card table.table-borderless > :not(caption) > * > *,
.lpx-content .card table.table-borderless > :not(caption) > * > * {
    border-bottom-width: 0 !important;
    box-shadow: none !important;
}
/* 行：无行线、垂直居中 */
.lpx-content-wrapper .card table.table-borderless tbody th,
.lpx-content-wrapper .card table.table-borderless tbody td,
.lpx-content .card table.table-borderless tbody th,
.lpx-content .card table.table-borderless tbody td {
    border: none !important;
    font-size: 12px !important;
    padding: 6px 12px !important;
    vertical-align: middle !important;
    box-shadow: none !important;
    background-color: transparent !important;
}
/* hover 效果 */
.lpx-content-wrapper .card table.table-borderless tbody tr:hover td,
.lpx-content-wrapper .card table.table-borderless tbody tr:hover th,
.lpx-content .card table.table-borderless tbody tr:hover td,
.lpx-content .card table.table-borderless tbody tr:hover th {
    background-color: #f5f7ff !important;
}

:root {
    --ems-brand: #1677ff;
    --ems-brand-weak: rgba(22, 119, 255, 0.25);
    --ems-brand-bg: rgba(22, 119, 255, 0.12);
    --bs-primary: var(--ems-brand);
    --bs-primary-rgb: 22, 119, 255;
    --bs-link-color: var(--ems-brand);
    --bs-link-hover-color: #0d6efd;
}

#lpx-wrapper .form-check-input:checked {
    background-color: var(--ems-brand) !important;
    border-color: var(--ems-brand) !important;
}
#lpx-wrapper .form-check-input:focus {
    border-color: var(--ems-brand) !important;
    box-shadow: 0 0 0 0.25rem var(--ems-brand-weak) !important;
}

#lpx-wrapper .lpx-content .nav-tabs,
#lpx-wrapper .lpx-content-wrapper .nav-tabs {
    --bs-nav-tabs-link-active-color: var(--ems-brand);
    --bs-nav-tabs-link-active-border-color: transparent transparent var(--ems-brand);
}

#lpx-wrapper .lpx-content .nav-tabs .nav-link,
#lpx-wrapper .lpx-content-wrapper .nav-tabs .nav-link {
    border: 0 !important;
    border-bottom: 2px solid transparent !important;
    background: transparent !important;
    box-shadow: none !important;
}

#lpx-wrapper .lpx-content .nav-tabs .nav-link:hover,
#lpx-wrapper .lpx-content .nav-tabs .nav-link:focus,
#lpx-wrapper .lpx-content-wrapper .nav-tabs .nav-link:hover,
#lpx-wrapper .lpx-content-wrapper .nav-tabs .nav-link:focus {
    color: var(--ems-brand) !important;
    border-bottom-color: var(--ems-brand-weak) !important;
    box-shadow: none !important;
}

#lpx-wrapper .lpx-content .nav-tabs .nav-link.active,
#lpx-wrapper .lpx-content .nav-tabs .nav-item.show > .nav-link,
#lpx-wrapper .lpx-content-wrapper .nav-tabs .nav-link.active,
#lpx-wrapper .lpx-content-wrapper .nav-tabs .nav-item.show > .nav-link {
    color: var(--ems-brand) !important;
    border-bottom-color: var(--ems-brand) !important;
    box-shadow: none !important;
}

#lpx-wrapper .lpx-content .nav-tabs,
#lpx-wrapper .lpx-content-wrapper .nav-tabs {
    border-bottom-color: #e9ecef !important;
}

#lpx-wrapper #ModuleNav.nav-tabs .nav-link.active,
#lpx-wrapper #ModuleNav.nav-tabs .nav-item.show > .nav-link {
    color: var(--ems-brand) !important;
    border-bottom-color: var(--ems-brand) !important;
}

#lpx-wrapper #ModuleNav.nav-tabs .nav-link:hover,
#lpx-wrapper #ModuleNav.nav-tabs .nav-link:focus {
    color: var(--ems-brand) !important;
    border-bottom-color: var(--ems-brand-weak) !important;
}

#lpx-wrapper .lpx-content .nav-tabs .dropdown-menu,
#lpx-wrapper .lpx-content-wrapper .nav-tabs .dropdown-menu {
    --bs-dropdown-link-active-color: var(--ems-brand);
    --bs-dropdown-link-active-bg: var(--ems-brand-bg);
}

#lpx-wrapper .lpx-content .nav-tabs .dropdown-menu .dropdown-item.active,
#lpx-wrapper .lpx-content .nav-tabs .dropdown-menu .dropdown-item:active,
#lpx-wrapper .lpx-content-wrapper .nav-tabs .dropdown-menu .dropdown-item.active,
#lpx-wrapper .lpx-content-wrapper .nav-tabs .dropdown-menu .dropdown-item:active {
    color: var(--ems-brand) !important;
    background-color: var(--ems-brand-bg) !important;
}

#lpx-wrapper .lpx-content .nav-tabs .dropdown-menu .dropdown-item:hover,
#lpx-wrapper .lpx-content .nav-tabs .dropdown-menu .dropdown-item:focus,
#lpx-wrapper .lpx-content-wrapper .nav-tabs .dropdown-menu .dropdown-item:hover,
#lpx-wrapper .lpx-content-wrapper .nav-tabs .dropdown-menu .dropdown-item:focus {
    color: var(--ems-brand) !important;
    background-color: rgba(22, 119, 255, 0.08) !important;
}
