/*! AuAdmin - 后台管理框架样式（layuimini 布局 + 自研浅色/深色主题）
 * ---------------------------------------------------------------------------
 * 加载顺序（后面的规则优先级更高）：
 *   1) layui.min.css          —— 外部引入，见下方「1) Layui core」说明
 *   2) layuimini 布局与交互    —— 本文件第 2 段
 *   3) 自研方案                —— 本文件第 3 段（设计变量 + 主题 + 组件覆盖）
 *
 * 历史上删除的三处冗余（视觉零变化）：
 *   · 内联 layui core（约 930 行 / 130KB）：与 /static/2.12.0/css/layui.min.css
 *     的 794 个选择器 100% 重复，同一份样式被下载解析两遍
 *   · 第三方 dark-mode.css（约 3300 行）：被自研变量方案完全覆盖
 *   · 第三方 theme 深色配色（约 100 行）：与浅色设计冲突
 *
 * 维护约定：所有主题令牌以末尾「样式优化终版」收口层为唯一权威定义，
 *          改动配色请只改那里的 :root 变量（明暗切换已移除，仅浅色主题）。
 * --------------------------------------------------------------------------- */
/* == 1) Layui core == */
/* 说明：layui core 已改由 /static/2.12.0/css/layui.min.css 引入（与子页面
 * public/css.html 共用同一份文件）。本文件原先内联的那一份与其 794 个选择器
 * 100% 重复，故于 2026-09-30 移除，减少约 130KB 重复下载与解析。
 * 主框架页 index.html 与子页面 header.html 均已正确引用该文件。 */

/* == 2) layuimini == */
/**
 * 说明：原 layuimini 自带「配色方案」段（青绿 #1aa094 / 深蓝 #243346 /
 * 深灰 #2f4056 等硬编码值）已统一改为设计变量，颜色由文件末尾的
 * 收口层集中定义。下方这些规则保留选择器结构，仅替换颜色来源，
 * 以保证在收口层未覆盖到的细分场景下仍取到正确主题色。
 */
/**头部-配色*/
.layui-layout-admin .layui-header {
    background-color: var(--au-surface) !important;
}

.layui-header > ul > .layui-nav-item.layui-this, .layuimini-tool i:hover {
    background-color: var(--au-primary-soft) !important;
}

.layui-header .layuimini-header-content > ul > .layui-nav-item.layui-this, .layuimini-tool i:hover {
    background-color: var(--au-primary-soft) !important;
}

/**logo-配色*/
.layui-layout-admin .layuimini-logo {
    background-color: transparent !important;
}

/**左侧-配色*/
.layui-side.layui-bg-black, .layui-side.layui-bg-black > .layuimini-menu-left > ul {
    background-color: var(--au-sidebar-bg) !important;
}

/**左侧菜单选中-配色*/
.layui-layout-admin .layui-nav-tree .layui-this, .layui-layout-admin .layui-nav-tree .layui-this > a, .layui-layout-admin .layui-nav-tree .layui-nav-child dd.layui-this, .layui-layout-admin .layui-nav-tree .layui-nav-child dd.layui-this a {
    background-color: var(--au-primary) !important;
    color: #ffffff !important;
}


/**头部样式 */
.layui-layout-admin .header {
    position: fixed;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
}

.layuimini-header-menu, .layui-header {
    height: var(--au-header-h) !important;
}

.layuimini-header-menu > .layui-nav-item {
    color: var(--au-text-2);
    height: var(--au-header-h) !important;
    line-height: var(--au-header-h) !important;
}

.layui-header > .layui-layout-right > .layui-nav-item {
    height: var(--au-header-h) !important;
    line-height: var(--au-header-h) !important;
}

/* 右侧按钮的 a 本体也要约束在顶栏高度内：
 * layui 核心给 .layui-nav-item a 继承了 60px 行高，
 * 不约束时「用户名 / 配色方案」会向下溢出顶栏 12px，
 * 视觉表现为按钮错位、贴着右缘。 */
.layui-layout-admin .layui-header .layui-nav.layui-layout-right .layui-nav-item > a {
    height: var(--au-header-h) !important;
    line-height: var(--au-header-h) !important;
}

/* 右侧按钮组与页缘留一点呼吸空隙（配色方案按钮不再贴边） */
.layui-layout-admin .layui-header .layui-nav.layui-layout-right {
    padding-right: 10px;
}

/* 用户菜单的下拉箭头：垂直居中于按钮。
 * layui 核心默认 top:0，在 48px 的按钮里会浮到顶缘；
 * 水平落在 a 的右内边距带内（padding 0 20px，箭头宽 12px，
 * 取 right:4px 恰好居中且不压到文字）。 */
.layui-layout-admin .layui-header .layui-layout-right .layui-nav-item > a .layui-nav-more {
    top: 50% !important;
    right: 4px !important;
    margin-top: -6px !important;
}

.layui-nav.layui-layout-left.layuimini-header-menu.layuimini-pc-show {
    font-weight: bold;
    transition: all .2s;
}


/**logo演示（通用） */
.layui-layout-admin .layuimini-logo {
    font-weight: bold;
    color: var(--au-text) !important;
    height: var(--au-header-h) !important;
    line-height: var(--au-header-h) !important;
    overflow: hidden;
    transition: all .2s !important;
}

.layui-layout-admin .layuimini-logo img {
    display: inline-block;
    height: 32px;
    vertical-align: middle;
}

.layui-layout-admin .layuimini-logo h1 {
    display: inline-block;
    margin: 0 0 0 10px;
    color: var(--au-text);
    font-weight: 600;
    font-size: 17px;
    font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
    vertical-align: middle;
}

/**缩放工具（通用） */
.layuimini-tool {
    position: absolute !important;
    top: 0;
    left: var(--au-sidebar-w);
    width: 48px;
    height: 100%;
    line-height: var(--au-header-h);
    text-align: center;
    color: var(--au-text-2) !important;
    transition: all .2s;
}

/**缩放工具（缩放） */
.layuimini-tool i {
    display: block;
    color: var(--au-text-2);
    width: 30px;
    height: 30px;
    line-height: 30px;
    border-radius: var(--au-radius);
    text-align: center;
    /* 垂直居中交给容器的 flex（见收口层 .layuimini-tool），不写死偏移 */
    margin: 0 auto;
    cursor: pointer;
}

/**tab选项卡 */
.layuimini-tab {
    margin: 0px;
    overflow: hidden;
    height: 100% !important;
}

.layuimini-tab .layui-tab-content {
    height: calc(100% - var(--au-tabbar-h)) !important;
}

.layuimini-tab .layui-tab-content .layui-tab-item {
    height: 100%;
}

.layuimini-tab .layui-tab-content {
    padding: 0px;
}

.layuimini-tab .layui-tab-title {
    border: none;
    border: 1px solid whitesmoke;
    background-color: white;
}

.layuimini-tab .layui-tab-title li {
    border-right: 1px solid whitesmoke;
    color: dimgray;
}

.layuimini-tab .layui-tab-title .layui-tab-bar {
    display: none !important;
}

/* layui 2.12 会给选中的标签绘制一条 2px 的 #16b777 底部指示条
 * （.layui-tab-title .layui-this:after{border-bottom:2px solid #16b777}），
 * 与我们的药丸设计冲突。这里的 display:none 必须带 !important：
 * layui 核心的同名规则在部分页面（iframe 子页面引用公共 css 时）加载顺序
 * 可能不同，不带会被翻盘，表现为「选中标签下面出现一条深色横条」。 */
.layuimini-tab .layui-tab-title .layui-this:after {
    display: none !important;
    content: none !important;
}

/* 关闭下拉（close-box）也是 .layui-nav，layui element 会给它注入
 * 滑动指示条 .layui-nav-bar，同样不属于本设计，统一隐藏。 */
.layuimini-tab .layui-nav-bar {
    display: none !important;
}

.layuimini-tab .layui-tab-title .layuimini-tab-active {
    display: inline-block;
    background-color: lightgray;
    width: 9px;
    height: 9px;
    border-radius: 30px;
    margin-right: 5px;
}

.layuimini-tab .layui-tab-title .layui-this .layuimini-tab-active {
    background-color: var(--au-primary);
}

/* 标签条高度统一由 --au-tabbar-h 控制（原 35px / 43px 两处冲突值已合并）
 * 注意：这里只给「li」设置行高是不完整的——
 * li 内部还有 span / i.layui-tab-close 等行内元素，它们默认 line-height
 * 会继承自 body（1.6），在 44px 的 li 里形成额外的高度撑开，
 * 表现为「标签条比预期高、文字不垂直居中」。
 * 因此统一改为 flex 居中 + 行高归一，见文件末尾收口层的标签页段落。 */
.layuimini-tab > .layui-tab-title, .layuimini-tab > .close-box {
    height: var(--au-tabbar-h) !important;
}

.layuimini-tab > .layui-tab-title li, .layuimini-tab > .close-box li {
    line-height: var(--au-tabbar-h) !important;
}

.layuimini-tab .layui-tab-title span {
    color: #acafb1;
}

.layuimini-tab .layui-tab-title .layui-this span {
    color: dimgray;
}

.layuimini-tab .layui-tab-title .layui-tab-close {
    font-size: 12px !important;
    width: 16px !important;
    height: 16px !important;
    line-height: 16px !important;
}

.layuimini-tab .layui-tab-title .layui-tab-close:hover {
    border-radius: 4em;
    background: #ff5722;
}

.layuimini-tab .layui-tab-title .disable-close + .layui-tab-close {
    display: none;
}

.layuimini-tab .layui-tab-title .able-close + .layui-tab-close {
    display: inline-block;
}

.layuimini-tab .layui-tab-control > li {
    position: absolute;
    top: 0px;
    height: var(--au-tabbar-h);
    line-height: var(--au-tabbar-h);
    width: var(--au-tabbar-h);
    text-align: center;
    background-color: white;
    border-top: none;
    border-bottom: none;
}

.layuimini-tab .layuimini-tab-roll-left {
    left: 0px;
    right: auto;
    border-right: 1px solid var(--au-border);
    border-left: none;
}

.layuimini-tab .layuimini-tab-roll-right {
    right: var(--au-tabbar-h);
    left: auto;
    border-left: 1px solid var(--au-border);
}

/* 注意：DOM 类名是 layuimini-tab-tool（带前缀），
 * 旧规则只写了 .layui-tab-tool 导致从未匹配，
 * 工具按钮因此悬空在标签栏左缘（首页左侧）。 */
.layuimini-tab .layui-tab-tool,
.layuimini-tab .layuimini-tab-tool {
    right: 0px;
    left: auto;
    border-left: 1px solid var(--au-border);
}

.layuimini-tab .layui-tab-control .layui-tab-tool,
.layuimini-tab .layui-tab-control .layuimini-tab-roll-left,
.layuimini-tab .layui-tab-control .layuimini-tab-roll-right {
    display: none;
}

.layuimini-tab.layui-tab-roll .layui-tab-control .layuimini-tab-roll-left,
.layuimini-tab.layui-tab-roll .layui-tab-control .layuimini-tab-roll-right {
    display: block;
}

.layuimini-tab.layui-tab-roll .layui-tab-control .layuimini-tab-roll-right {
    right: 0px;
    border-right: 1px solid whitesmoke;
}

.layuimini-tab.layui-tab-roll .layui-tab-title {
    padding-left: 35px;
    padding-right: 35px;
}


.layuimini-tab.layui-tab-tool .layui-tab-control .layui-tab-tool {
    display: block;
}

.layuimini-tab.layui-tab-tool .layui-tab-title {
    padding-left: 0px;
    padding-right: 35px;
}


.layuimini-tab.layui-tab-rollTool .layui-tab-title {
    padding-left: 35px;
    padding-right: 80px;
}

.layuimini-tab.layui-tab-rollTool .layui-tab-control .layuimini-tab-roll-left,
.layuimini-tab.layui-tab-rollTool .layui-tab-control .layuimini-tab-roll-right,
.layuimini-tab.layui-tab-rollTool .layui-tab-control .layui-tab-tool {
    display: block;
}

.layuimini-tab .layui-tab-tool .layui-nav {
    position: absolute;
    top: 0;
    width: 100%;
    height: 100%;
    padding: 0;
    background: 0 0;
}

.layuimini-tab .layui-tab-tool .layui-nav-item {
    height: 35px;
}

.layuimini-tab .layui-tab-tool .layui-nav-bar {
    display: none;
}

.layuimini-tab .layui-tab-tool .layui-nav-child {
    left: auto;
    top: 45px;
    right: 3px;
    width: 120px;
    border: 1px solid whitesmoke;
}

.layuimini-tab .layui-tab-tool .layui-this a {
    background-color: var(--au-primary-soft);
    color: var(--au-primary);
}

.layuimini-tab-loading {
    position: absolute;
    display: none;
    width: 100%;
    height: calc(100% - var(--au-tabbar-h));
    top: var(--au-tabbar-h);
    z-index: 19;
    background-color: #fff
}

.layuimini-tab-loading.close {
    animation: close 1s;
    -webkit-animation: close 1s;
    animation-fill-mode: forwards;
}

/**左侧菜单栏 (通用) */
.layui-side.layui-bg-black {
    transition: all .2s;
}

.layui-side.layui-bg-black > .layuimini-menu-left > ul {
    transition: all .2s;
}

/* 首项不再加分隔线：模块标题条已有 border-bottom，避免双线 */
.layui-side.layui-bg-black > .layuimini-menu-left > ul > .layui-nav-item:first-child {
    border-top: none;
}

.layuimini-menu-left .layui-nav .layui-nav-item a {
    height: 40px;
    line-height: 40px;
    padding-right: 30px;
}

.layuimini-menu-left .layui-nav .layui-nav-item > a {
    padding-top: 5px;
    padding-bottom: 5px;
}

.layuimini-menu-left .layui-nav .layui-nav-child .layui-nav-child {
    background: 0 0 !important
}

.layuimini-menu-left .layui-nav .layui-nav-more {
    right: 15px;
    top: 20px;
}

.layuimini-menu-left .layui-nav .layui-nav-item a:hover {
    background-color: transparent !important;
}

.layuimini-menu-left .layui-nav {
    background-color: transparent !important;
}


/**左侧菜单栏 (正常) */
.layui-layout-body .layui-nav-itemed .layui-nav-child a, .layui-layout-body .layuimini-menu-left .layui-nav .layui-nav-child a {
    padding-left: 35px;
}

.layui-layout-body .layuimini-menu-left .layui-nav .layui-nav-child .layui-nav-child a {
    padding-left: 45px;
}

.layui-layout-body .layuimini-menu-left .layui-nav .layui-nav-child .layui-nav-child .layui-nav-child a {
    padding-left: 55px;
}

.layui-layout-body .layuimini-menu-left .layui-nav .layui-nav-child .layui-nav-child .layui-nav-child .layui-nav-child a {
    padding-left: 65px;
}

.layui-layout-body .layuimini-menu-left .layui-nav .layui-nav-itemed > .layui-nav-child {
    padding: 5px 0;
}

/**内容主体（通用） */
.layui-layout-admin .layui-body {
    overflow: hidden;
    bottom: 0px !important;
    /* 顶栏高度走令牌：顶栏改矮后内容区自动上移，不再留空带 */
    top: var(--au-header-h) !important;
    transition: all .2s;
}

/**选择配色方案（圆形色点，紧凑版） */
.layuimini-color {
    padding: 4px 0 2px;
}

.layuimini-color .color-title {
    margin: 0 14px;
    padding: 8px 0;
    border-bottom: 1px solid var(--au-border);
    font-size: 13px;
    font-weight: 600;
    color: var(--au-text);
}

.layuimini-color .color-content {
    padding: 12px 14px 4px;
}

.layuimini-color .color-content ul {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    list-style: none;
    margin: 0;
    padding: 0;
}

.layuimini-color .color-content ul li.au-color-dot {
    width: 22px;
    height: 22px;
    margin: 0;
    padding: 0;
    border-radius: 50%;
    cursor: pointer;
    border: 2px solid transparent;
    box-shadow: inset 0 0 0 1px rgba(23, 29, 43, .15);
    transition: transform var(--au-transition), box-shadow var(--au-transition);
}

.layuimini-color .color-content ul li.au-color-dot:hover {
    transform: scale(1.18);
}

/* 选中态：外圈用色点自身的颜色（color 由 JS 内联为同色） */
.layuimini-color .color-content ul li.au-color-dot.layui-this {
    box-shadow: 0 0 0 2px var(--au-surface), 0 0 0 4px currentColor;
}


/**其它 */
.layui-tab-item {
    width: 100% !important;
    height: 100% !important;
}

.layui-nav-item.layui-this {
    background-color: transparent;
}

.layui-width-height {
    width: 100%;
    height: 95%;
}

.layui-tab {
    margin: 0 0 0 0;
    z-index: 99999;
}

.text-center {
    height: 30px !important;
    line-height: 30px !important;
    text-align: center !important;
}

.layui-nav {
    padding: 0 !important;
}

.layui-nav .layui-this:after, .layui-nav-bar, .layui-nav-tree .layui-nav-itemed:after {
    width: 0 !important;
    height: 0 !important;
}

.layui-layout-admin .layui-side {
    top: var(--au-header-h) !important;
}

.layui-tab-card {
    box-shadow: 0px 0px 0px #888888;
    border-bottom: 0;
}


/**自定义滚动条样式
 * 注意：这里不再全局 display:none。
 * 原写法会让所有 iframe 子页面（列表页、表单页）彻底失去滚动条，
 * 用户无法判断内容是否可滚动。改为统一在文件末尾的收口层定义
 * 可见滚动条（8px、圆角、深浅色自适应）。
 */


/*移动端遮罩层*/
.layuimini-make {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    top: 0;
    z-index: 1000;
    background: rgba(0, 0, 0, .5);
    display: none;
}

.layuimini-mini .layui-header {
    z-index: 1001;
}

/**初始化加载层*/
.layuimini-loader {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #ffffff;
    z-index: 999999;
}

.layuimini-loader .layuimini-loader-inner {
    display: block;
    position: relative;
    left: 50%;
    top: 50%;
    width: 150px;
    height: 150px;
    margin: -75px 0 0 -75px;
    border-radius: 50%;
    border: 3px solid transparent;
    border-top-color: #1E9FFF;
    animation: spin 2s linear infinite;
}

.layuimini-loader .layuimini-loader-inner:before {
    content: "";
    position: absolute;
    top: 5px;
    left: 5px;
    right: 5px;
    bottom: 5px;
    border-radius: 50%;
    border: 3px solid transparent;
    border-top-color: #1E9FFF;
    animation: spin 3s linear infinite;
}

.layuimini-loader .layuimini-loader-inner:after {
    content: "";
    position: absolute;
    top: 15px;
    left: 15px;
    right: 15px;
    bottom: 15px;
    border-radius: 50%;
    border: 3px solid transparent;
    border-top-color: #1E9FFF;
    animation: spin 1.5s linear infinite;
}

@keyframes spin {
    0% {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(1turn);
    }
}

/*系统设置*/

.layuimini-color .layui-word-aux {
    position: absolute;
    left: 60px;
    top: 12px;
    font-size: 12px;
}

.layuimini-color .layui-input-block {
    margin-left: 15px;
    min-height: 36px;
}

.layuimini-color .more-menu-list {
    width: 100%;
    margin-top: 30px;
}


.layuimini-color .more-menu-item:first-child {
    border-top: 1px solid #e8e8e8;
}

.layuimini-color .more-menu-item .layui-icon {
    font-size: 18px;
    padding-right: 10px;
}

.layuimini-color .more-menu-item {
    color: #595959;
    height: 50px;
    line-height: 50px;
    font-size: 16px;
    padding: 0 25px;
    border-bottom: 1px solid #e8e8e8;
    font-style: normal;
    display: block;
}

.layuimini-color .more-menu-item:hover {
    background-color: whitesmoke;
}

.layuimini-color .more-menu-item:after {
    color: #8c8c8c;
    right: 16px;
    content: "\e602";
    position: absolute;
    font-family: layui-icon !important;
}

/**
鼠标右键
 */
.layuimini-tab-mousedown {
    display: none;
    width: 80px;
    position: absolute;
    top: 0px !important;
    left: 0px !important;
}

.layuimini-tab-mousedown dd a {
    padding: 0 15px;
    color: #484545;
}

.layuimini-tab-make{
    position: absolute;
    top: var(--au-tabbar-h);
    bottom: 0px;
    width: 100%;
    background: rgb(255, 255, 255,0);
    padding: 0px;
    overflow: hidden;
}

/**
菜单缩放
 */
.popup-tips .layui-layer-TipsG{
    display: none;
}
.popup-tips.layui-layer-tips .layui-layer-content{
    padding: 0;
}
.popup-tips .layui-nav-tree{
    width: 150px;
    border-radius: 10px;
}

/**左侧菜单字体间距*/
.layuimini-menu-left .layui-nav-item a span {
    letter-spacing: 1px;
}

/**头部菜单字体间距*/
.layui-layout-admin .layui-header .layuimini-header-menu.layuimini-pc-show,.layui-layout-admin .layui-header .layuimini-header-menu.layuimini-mobile-show {
    letter-spacing: 1px;
}


/**左侧菜单更多下拉样式*/
.layuimini-menu-left .layui-nav-more,.layuimini-menu-left-zoom .layui-nav-more {
    font-family: layui-icon !important;
    font-size: 12px;
    font-style: normal;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow: hidden;
    width: auto;
    height: auto;
    line-height: normal;
    border: none;
    display: inline-block;
    margin-top: -6px !important;
}

.layuimini-menu-left .layui-nav-child .layui-nav-more {
    margin-top: -6px !important;
}

.layuimini-menu-left .layui-nav .layui-nav-mored,.layuimini-menu-left .layui-nav-itemed>a .layui-nav-more{
    margin-top: -9px!important;
}

.layuimini-menu-left-zoom.layui-nav .layui-nav-mored,.layuimini-menu-left-zoom.layui-nav-itemed>a .layui-nav-more{
    margin-top: -9px!important;
}

.layuimini-menu-left .layui-nav-more:before,.layuimini-menu-left-zoom .layui-nav-more:before {
    content: "\e61a";
}
.layuimini-menu-left .layui-nav-itemed > a > .layui-nav-more,.layuimini-menu-left-zoom .layui-nav-itemed > a > .layui-nav-more {
    transform: rotate(180deg);
    -ms-transform: rotate(180deg);
    -moz-transform: rotate(180deg);
    -webkit-transform: rotate(180deg);
    -o-transform: rotate(180deg);
    width: 12px;
    text-align: center;
    border-style:none;
}

.layuimini-menu-left .layui-nav-itemed > a > .layui-nav-more:before,.layuimini-menu-left-zoom .layui-nav-itemed > a > .layui-nav-more:before {
    content: '\e61a';
    background-color: transparent;
    display: inline-block;
    vertical-align: middle;
}

/**修复左侧菜单字体不对齐的问题*/
.layuimini-menu-left .layui-nav-item a .fa,.layuimini-menu-left .layui-nav-item a .layui-icon{
    width: 20px;
}


/**
 PC版样式
 */
@media screen and (min-width: 1025px) {
    /**头部样式（缩放）：紧接折叠按钮之后 */
    .layuimini-mini .layui-layout-left.layuimini-header-menu.layuimini-pc-show {
        left: calc(var(--au-sidebar-w-min) + 48px + 8px) !important;
    }

    /**logo演示（缩放） */
    .layuimini-mini .layui-layout-admin .layuimini-logo {
        width: 60px !important;
    }

    .layuimini-mini .layui-layout-admin .layuimini-logo h1 {
        display: none;
    }

    /**左侧菜单栏（缩放） */
    .layuimini-mini .layuimini-menu-left {
        width: 80px !important;
    }

    .layuimini-mini .layui-side.layui-bg-black, .layuimini-mini .layuimini-menu-left > ul, .layuimini-mini .layuimini-menu-left > ul li i {
        width: 60px !important;
    }

    .layuimini-mini .layuimini-menu-left > ul li span:first-child {
        display: none;
    }

    .layuimini-mini .layuimini-menu-left > ul li span:last-child {
        float: right;
        right: 7px;
    }

    .layuimini-mini .layuimini-menu-left .layui-nav .layui-nav-item a {
        height: 40px;
        line-height: 40px;
        padding-right: 0px !important;
    }

    /**内容主体（缩放） */
    .layuimini-mini .layui-layout-admin .layui-body {
        left: 60px !important;
    }

    .layuimini-mini .layuimini-tool {
        left: 95px !important;
    }

    .layuimini-pc-show{
        display: block;
    }
    .layuimini-mobile-show{
        display: none;
    }

    /**菜单缩放*/
    .layuimini-mini .layuimini-menu-left .layui-nav-more,.layuimini-mini .layuimini-menu-left .layui-nav-child{
        display: none !important;
    }
}

/**
 手机自适应样式
*/
@media screen and (max-width: 1024px) {

    /**
    todo 修复低版本IOS不能滑动问题, 但还是有问题, 低版本IOS部分情况下子页面无法自适应
     */
    .layuimini-tab .layui-tab-content .layui-tab-item {
        -webkit-overflow-scrolling: touch;
        overflow: scroll;
        width: 100%;
        height: 100%;
    }

    .layuimini-tab .layui-tab-content .layui-tab-item iframe {
        height: 100%;
        width: 100%;
    }

    .layuimini-pc-show{
        display: none;
    }
    .layuimini-mobile-show{
        display: block;
    }
    .layuimini-header-content {
        left: 0;
    }

    .layui-layout-admin .layui-body .layui-tab-item.layui-show {
        border-top: 1px solid #e2e2e2;
    }

    .layuimini-all .layui-layout-left.layuimini-header-menu {
        left: 15px !important
    }

    .layuimini-mini .layui-layout-left.layuimini-header-menu {
        left: calc(var(--au-sidebar-w) + 5px) !important
    }

    .layui-layout-admin .layui-nav.layui-layout-right > li:not(.layuimini-setting) {
        width: 40px !important;
    }

    .layui-layout-admin .layui-nav.layui-layout-right > li:not(.layuimini-setting) a {
        padding: 0 15px;
    }

    .layuimini-all .layui-layout-admin .layui-body {
        left: 0px !important;
    }

    .layuimini-mini .layui-layout-admin .layuimini-menu-left, .layuimini-mini .layui-header .layuimini-logo {
        left: 0;
        transition: left .2s;
        z-index: 1001 !important;
    }

    /* 抽屉收起时必须完全移出屏幕：现侧栏宽 220px（.layui-side 240px），
       原 -200px 按旧版 200px 侧栏写死，导致屏幕左缘露出约 40px 菜单条 */
    .layuimini-all .layui-layout-admin .layuimini-menu-left, .layuimini-all .layui-header .layuimini-logo {
        left: calc(-1 * var(--au-sidebar-w) - 20px) !important;
        transition: left .2s;
        top: 0;
        z-index: 1002;
    }

    .layuimini-mini .layui-layout-admin .layui-body {
        left: 0!important;
        transition: left .2s;
        top: 0;
        z-index: 998;
    }

    .layuimini-mini .layuimini-make {
        display: block;
    }

    .layuimini-multi-module .layuimini-header-content .layuimini-tool {
        display: none;
    }

    .layuimini-single-module .layuimini-header-content .layuimini-tool {
        left: 15px;
    }

    .layuimini-mini .layuimini-site-mobile {
        display: none !important;
    }

    .layuimini-site-mobile {
        display: block !important;
        position: fixed;
        z-index: 100000;
        bottom: 15px;
        left: 15px;
        width: 40px;
        height: 40px;
        line-height: 40px;
        border-radius: 2px;
        text-align: center;
        background-color: rgba(0, 0, 0, .7);
        color: #fff;
    }

    .layuimini-header-content {
        z-index: 997;
    }

    /*修复UC之类的浏览器点击无效*/
    .layuimini-make {
        cursor: pointer;
    }

    .layuimini-site-mobile {
        cursor: pointer;
    }
}

@media screen and (max-width: 550px){

    /**头部右侧数据*/
    .layuimini-multi-module.layuimini-mini .layuimini-header-content .layui-layout-right {
        display: none;
    }
}

/* == 3) 自研方案（设计变量 + 浅色/深色主题 + 组件覆盖） == */
/* AuAdmin - 现代后台管理框架样式
 * 完全自研，替代 layui / layuimini 主题，仅依赖图标库（font-awesome）
 */

/* ============ 主题变量 ============ */
:root {
    --au-primary: #e11d48;
    --au-primary-hover: #be123c;
    --au-primary-soft: rgba(225, 29, 72, .12);
    --au-bg: #f3f4f8;
    --au-surface: #ffffff;
    --au-border: #e7e9f0;
    --au-text: #1c2333;
    --au-text-2: #6c7486;
    --au-text-3: #9aa1b2;
    --au-sidebar-bg: #ffffff;
    --au-sidebar-hover: rgba(23, 29, 43, .05);
    --au-sidebar-text: #5b6472;
    /* 尺寸令牌（--au-header-h / --au-sidebar-w / --au-sidebar-w-min /
       --au-tabbar-h）统一由文件末尾的收口层定义，此处不再重复，
       避免出现 236px 与 220px 这种「两处定义、生效看顺序」的隐患。 */
    --au-radius: 8px;
    --au-shadow: 0 1px 2px rgba(23, 29, 43, .06), 0 1px 3px rgba(23, 29, 43, .08);
    --au-shadow-lg: 0 12px 32px rgba(23, 29, 43, .16);
    --au-transition: .22s cubic-bezier(.4, 0, .2, 1);
}

[data-au-theme="violet"] { --au-primary: #7c3aed; --au-primary-hover: #6d28d9; --au-primary-soft: rgba(124, 58, 237, .12); }
[data-au-theme="green"] { --au-primary: #0e9f6e; --au-primary-hover: #0b8a5e; --au-primary-soft: rgba(14, 159, 110, .12); }
[data-au-theme="cyan"] { --au-primary: #0891b2; --au-primary-hover: #076e88; --au-primary-soft: rgba(8, 145, 178, .12); }
[data-au-theme="orange"] { --au-primary: #ea580c; --au-primary-hover: #c2410c; --au-primary-soft: rgba(234, 88, 12, .12); }
[data-au-theme="rose"] { --au-primary: #e11d48; --au-primary-hover: #be123c; --au-primary-soft: rgba(225, 29, 72, .12); }
[data-au-theme="blue"] { --au-primary: #2563eb; --au-primary-hover: #1d4ed8; --au-primary-soft: rgba(37, 99, 235, .12); }
[data-au-theme="indigo"] { --au-primary: #4f46e5; --au-primary-hover: #4338ca; --au-primary-soft: rgba(79, 70, 229, .12); }
[data-au-theme="teal"] { --au-primary: #0d9488; --au-primary-hover: #0f766e; --au-primary-soft: rgba(13, 148, 136, .12); }
[data-au-theme="purple"] { --au-primary: #9333ea; --au-primary-hover: #7e22ce; --au-primary-soft: rgba(147, 51, 234, .12); }
[data-au-theme="pink"] { --au-primary: #ec4899; --au-primary-hover: #db2777; --au-primary-soft: rgba(236, 72, 153, .12); }
[data-au-theme="amber"] { --au-primary: #f59e0b; --au-primary-hover: #d97706; --au-primary-soft: rgba(245, 158, 11, .12); }

/* ============ 基础 ============ */
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; }
body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
    background: var(--au-bg);
    color: var(--au-text);
    font-size: 14px;
    -webkit-font-smoothing: antialiased;
    overflow: hidden;
}
a { text-decoration: none; color: inherit; }
button { font-family: inherit; }
::selection { background: var(--au-primary-soft); }


/* ============ 认证页（登录 / 注册 / 找回密码 / OAuth 错误） ============ */
.au-auth-page {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px 16px;
    background: linear-gradient(135deg, #5b6cf8 0%, #7c5cd6 55%, #a35dd6 100%);
    overflow-y: auto;
}
.au-auth-page body { overflow: auto; }
.au-auth-card {
    width: 100%;
    max-width: 500px;
    background: var(--au-surface);
    border-radius: 18px;
    box-shadow: 0 18px 48px rgba(23, 29, 43, .28);
    padding: 36px 34px 26px;
}
.au-auth-logo { text-align: center; margin-bottom: 14px; }
.au-auth-logo img { max-height: 52px; }
.au-auth-title { text-align: center; margin-bottom: 26px; }
.au-auth-title h2 { font-size: 24px; color: var(--au-text); font-weight: 700; letter-spacing: .5px; }
.au-auth-title p { color: var(--au-text-3); margin-top: 8px; font-size: 13.5px; }

.au-auth-form { display: flex; flex-direction: column; gap: 16px; }
.au-auth-field { position: relative; }
.au-auth-input {
    width: 100%; height: 46px;
    padding: 0 14px;
    border: 1px solid var(--au-border);
    border-radius: 10px;
    font-size: 14px;
    color: var(--au-text);
    background: #fafbfe;
    outline: none;
    transition: var(--au-transition);
}
.au-auth-input:focus {
    border-color: var(--au-primary);
    background: #fff;
    box-shadow: 0 0 0 3px var(--au-primary-soft);
}
.au-auth-input::placeholder { color: var(--au-text-3); }
.au-auth-row { display: flex; gap: 10px; }
.au-auth-row .au-auth-input { flex: 1; }
.au-auth-captcha { height: 46px; border-radius: 10px; cursor: pointer; flex-shrink: 0; }
.au-auth-code-btn {
    height: 46px; padding: 0 14px;
    border: 1px solid var(--au-primary); color: var(--au-primary);
    background: transparent; border-radius: 10px;
    font-size: 13px; cursor: pointer;
    white-space: nowrap;
    transition: var(--au-transition);
    flex-shrink: 0;
}
.au-auth-code-btn:hover { background: var(--au-primary-soft); }
.au-auth-code-btn[disabled] { opacity: .55; cursor: not-allowed; }

.au-auth-tools {
    display: flex; justify-content: space-between; align-items: center;
    font-size: 12.5px;
    margin-top: -4px;
}
.au-auth-tools a { color: var(--au-text-3); }
.au-auth-tools a:hover { color: var(--au-primary); }
.au-auth-tools .au-auth-primary-link { color: var(--au-primary); font-weight: 500; }

.au-auth-submit {
    width: 100%; height: 46px;
    border: 0; border-radius: 10px;
    background: linear-gradient(135deg, var(--au-primary), #8b5cf6);
    color: #fff; font-size: 15px; font-weight: 600; letter-spacing: 2px;
    cursor: pointer;
    transition: var(--au-transition);
    box-shadow: 0 6px 16px color-mix(in srgb, var(--au-primary) 32%, transparent);
}
.au-auth-submit:hover { transform: translateY(-1px); box-shadow: 0 8px 20px color-mix(in srgb, var(--au-primary) 40%, transparent); }
.au-auth-submit:active { transform: translateY(0); }
.au-auth-submit[disabled] { opacity: .65; cursor: not-allowed; transform: none; }

.au-auth-msg {
    display: none;
    padding: 10px 14px;
    margin-bottom: 14px;
    background: #fff3f3; border: 1px solid #fdd;
    border-radius: 8px;
    color: #d34; font-size: 13px;
}
.au-auth-msg.show { display: block; }

.au-auth-oauth-divider {
    text-align: center; margin: 22px 0 16px;
    border-top: 1px solid var(--au-border);
    position: relative;
}
.au-auth-oauth-divider span {
    display: inline-block; padding: 0 14px;
    background: var(--au-surface);
    color: var(--au-text-3); font-size: 12.5px;
    position: relative; top: -9px;
}
.au-auth-oauth { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.au-auth-oauth a {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 8px 16px;
    border: 1px solid var(--au-border);
    border-radius: 999px;
    font-size: 13px;
    background: var(--au-surface);
    transition: var(--au-transition);
}
.au-auth-oauth a:hover {
    border-color: var(--au-primary); color: var(--au-primary);
    box-shadow: 0 2px 8px color-mix(in srgb, var(--au-primary) 12%, transparent);
    transform: translateY(-1px);
}

.au-auth-back { text-align: center; margin-top: 16px; font-size: 13px; }
.au-auth-back a { color: var(--au-primary); }
.au-auth-back a:hover { text-decoration: underline; }
.au-auth-footer { text-align: center; margin-top: 22px; color: var(--au-text-3); font-size: 12px; line-height: 1.9; }
.au-auth-footer a { color: var(--au-text-3); }
.au-auth-footer a:hover { color: var(--au-primary); }

/* 认证页提示卡片（注册关闭 / OAuth 错误） */
.au-auth-error { text-align: center; padding: 14px 4px 4px; }
.au-auth-error-icon { font-size: 58px; color: #ff6b6b; margin-bottom: 16px; }
.au-auth-error-title { font-size: 17px; color: var(--au-text); margin-bottom: 10px; font-weight: 600; }
.au-auth-error-msg { font-size: 14px; color: var(--au-text-2); margin-bottom: 26px; line-height: 1.7; }
.au-auth-error-actions { display: flex; justify-content: center; gap: 12px; flex-wrap: wrap; }
.au-auth-link-btn {
    display: inline-flex; align-items: center; gap: 6px;
    height: 40px; padding: 0 22px;
    border-radius: 10px;
    border: 1px solid var(--au-border);
    color: var(--au-text);
    font-size: 13.5px;
    background: var(--au-surface);
    transition: var(--au-transition);
}
.au-auth-link-btn:hover { border-color: var(--au-primary); color: var(--au-primary); }
.au-auth-link-btn.au-auth-link-primary {
    background: var(--au-primary); border-color: var(--au-primary); color: #fff;
}
.au-auth-link-btn.au-auth-link-primary:hover { background: var(--au-primary-hover); }

@media (max-width: 480px) {
    .au-auth-card { padding: 26px 20px 20px; }
    .au-auth-title h2 { font-size: 20px; }
    .au-auth-row { flex-wrap: wrap; }
    .au-auth-captcha { width: 120px; height: 42px; }
    .au-auth-oauth { flex-direction: column; }
    .au-auth-oauth a { justify-content: center; }
    .au-auth-error-actions { flex-direction: column; align-items: center; }
}


/* ============================================================
 * AuAdmin：图标改为 Font Awesome
 * ------------------------------------------------------------
 * 原 layui 图标字体（/font/iconfont.*）资源缺失会 404，
 * 此处移除 @font-face 依赖，并把用到的 layui-icon 类
 * 映射为 font-awesome 4.7.0 的等价图标。
 * ============================================================ */

/* 移除 layui 图标字体依赖：不再请求 /font/iconfont.* */
.layui-icon {
    font-family: FontAwesome !important;
    font-size: 14px;
    font-style: normal;
    line-height: 1;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* 注意：不要一刀切清空 .layui-icon:before，
   否则会破坏 layer 弹窗、表格排序等 layui 组件自身的图标。
   仅对下面显式映射的图标做覆盖即可（见映射区）。 */

/* ---- layui 图标 -> font-awesome 映射 ---- */
/* 组件通用图标（layer 弹窗关闭、loading、表格排序等） */
.layui-icon-close:before            { content: "\f00d"; }  /* fa-times */
.layui-layer-setwin .layui-icon-close:before { content: "\f00d"; }
.layui-icon-loading:before          { content: "\f110"; }  /* fa-spinner */
.layui-icon-loading-1:before        { content: "\f110"; }
.layui-table-sort .layui-edge:before { font-family: FontAwesome; }
.layui-icon-up:before               { content: "\f077"; }  /* fa-chevron-up */
.layui-icon-down:before             { content: "\f078"; }  /* fa-chevron-down */
.layui-icon-left:before            { content: "\f053"; }  /* fa-chevron-left  */
.layui-icon-right:before           { content: "\f054"; }  /* fa-chevron-right */
.layui-icon-up:before              { content: "\f077"; }  /* fa-chevron-up    */
.layui-icon-down:before            { content: "\f078"; }  /* fa-chevron-down  */
.layui-icon-close:before           { content: "\f00d"; }  /* fa-times         */
.layui-icon-more:before            { content: "\f0d7"; }  /* fa-caret-down    */
.layui-icon-search:before          { content: "\f002"; }  /* fa-search        */
.layui-icon-refresh:before         { content: "\f021"; }  /* fa-refresh       */
.layui-icon-loading:before         { content: "\f110"; }  /* fa-spinner       */
.layui-icon-add-1:before           { content: "\f067"; }  /* fa-plus          */
.layui-icon-edit:before            { content: "\f044"; }  /* fa-pencil        */
.layui-icon-delete:before          { content: "\f014"; }  /* fa-trash-o       */
.layui-icon-cols:before            { content: "\f0ce"; }  /* fa-table         */
.layui-icon-export:before          { content: "\f019"; }  /* fa-download      */
.layui-icon-print:before           { content: "\f02f"; }  /* fa-print         */
.layui-icon-ok:before              { content: "\f00c"; }  /* fa-check         */
.layui-icon-return:before          { content: "\f112"; }  /* fa-reply        */
.layui-icon-set:before             { content: "\f013"; }  /* fa-cog           */
.layui-icon-user:before            { content: "\f007"; }  /* fa-user          */
.layui-icon-file:before            { content: "\f15b"; }  /* fa-file          */
.layui-icon-triangle-r:before      { content: "\f0da"; }  /* fa-caret-right   */
.layui-icon-triangle-d:before      { content: "\f0d7"; }  /* fa-caret-down    */
.layui-icon-folder:before          { content: "\f07b"; }  /* fa-folder-o      */
.layui-icon-folder-open:before     { content: "\f07c"; }  /* fa-folder-open-o */
.layui-icon-leaf:before            { content: "\f016"; }  /* fa-file-o        */

/* 旋转动画（loading 图标沿用） */
.layui-anim-rotate {
    -webkit-animation: layui-anim-rotate 1s linear infinite;
    animation: layui-anim-rotate 1s linear infinite;
}


/* ============================================================
 * AuAdmin 菜单/框架样式改造（参考 Au-server 的 au-* 设计语言）
 * ------------------------------------------------------------
 * 设计要点：
 *   - 浅色系：白色侧栏 + 浅灰页面底
 *   - 主题色：#e11d48（可被顶栏配色方案覆盖）
 *   - 圆角 8px、轻阴影、平滑过渡
 *   - 选中项：浅色底 + 主题色文字 + 左侧竖条指示
 *   - 折叠态、移动端、深色模式同步适配
 * 说明：本段为「覆盖层」，追加在文件末尾，优先级高于前面的 layuimini 原始样式。
 * ============================================================ */

/* ---------- 设计变量 ----------
 * 全部令牌已集中在两处定义：
 *   1) 通用 —— 文件「自研方案」段开头的 :root（第 951 行附近）
 *   2) 尺寸 —— 文件末尾收口层的 :root
 * 此处原先重复声明了一份完全相同的变量，已删除以避免「三处定义」。
 */

/* ---------- 左侧菜单容器：白底 ---------- */
.layui-side.layui-bg-black,
.layui-side.layui-bg-black > .layuimini-menu-left > ul {
    background-color: var(--au-sidebar-bg) !important;
    border-right: 1px solid var(--au-border);
}

.layui-layout-admin .layui-side {
    box-shadow: none;
}

/* ---------- 菜单项：基础 ---------- */
.layuimini-menu-left .layui-nav,
.layui-side.layui-bg-black > .layuimini-menu-left > ul {
    background-color: transparent !important;
}

.layuimini-menu-left .layui-nav .layui-nav-item a,
.layuimini-menu-left .layui-nav .layui-nav-child dd a {
    color: var(--au-sidebar-text) !important;
    font-size: 14px;
    transition: background-color var(--au-transition), color var(--au-transition);
    border-radius: 0;
}

/* 图标统一对齐 */
.layuimini-menu-left .layui-nav-item a i.fa,
.layuimini-menu-left .layui-nav-item a i.layui-icon {
    width: 20px;
    text-align: center;
    margin-right: 8px;
    font-size: 15px;
    color: var(--au-text-3);
    transition: color var(--au-transition);
}

/* ---------- 菜单项：hover ---------- */
.layuimini-menu-left .layui-nav .layui-nav-item a:hover,
.layuimini-menu-left .layui-nav .layui-nav-child dd a:hover {
    background-color: var(--au-sidebar-hover) !important;
    color: var(--au-text) !important;
}

.layuimini-menu-left .layui-nav .layui-nav-item a:hover i.fa,
.layuimini-menu-left .layui-nav .layui-nav-item a:hover i.layui-icon {
    color: var(--au-primary);
}

/* ---------- 菜单项：选中（浅底 + 主题色 + 左侧竖条） ---------- */
.layui-layout-admin .layui-nav-tree .layui-this,
.layui-layout-admin .layui-nav-tree .layui-this > a,
.layui-layout-admin .layui-nav-tree .layui-nav-child dd.layui-this,
.layui-layout-admin .layui-nav-tree .layui-nav-child dd.layui-this a,
.layuimini-menu-left .layui-nav-tree .layui-this,
.layuimini-menu-left .layui-nav-tree .layui-this > a,
.layuimini-menu-left .layui-nav-tree .layui-nav-child dd.layui-this,
.layuimini-menu-left .layui-nav-tree .layui-nav-child dd.layui-this a {
    background-color: var(--au-primary-soft) !important;
    color: var(--au-primary) !important;
    font-weight: 600;
}

.layuimini-menu-left .layui-nav-tree .layui-this > a i.fa,
.layuimini-menu-left .layui-nav-tree .layui-this > a i.layui-icon,
.layuimini-menu-left .layui-nav-tree .layui-nav-child dd.layui-this a i.fa,
.layuimini-menu-left .layui-nav-tree .layui-nav-child dd.layui-this a i.layui-icon {
    color: var(--au-primary);
}

/* 选中项左侧竖条指示器 */
.layuimini-menu-left .layui-nav-tree > .layui-nav-item.layui-this > a,
.layuimini-menu-left .layui-nav-tree .layui-nav-child dd.layui-this > a {
    position: relative;
}

.layuimini-menu-left .layui-nav-tree > .layui-nav-item.layui-this > a::before,
.layuimini-menu-left .layui-nav-tree .layui-nav-child dd.layui-this > a::before {
    content: "";
    position: absolute;
    left: 0;
    top: 6px;
    bottom: 6px;
    width: 3px;
    border-radius: 0 3px 3px 0;
    background-color: var(--au-primary);
}

/* ---------- 一级菜单展开态 ---------- */
.layuimini-menu-left .layui-nav .layui-nav-itemed > a {
    color: var(--au-text) !important;
    font-weight: 600;
}

.layuimini-menu-left .layui-nav .layui-nav-itemed > a i.fa,
.layuimini-menu-left .layui-nav .layui-nav-itemed > a i.layui-icon {
    color: var(--au-primary);
}

/* 子菜单容器：透明底（颜色只出现在子项按钮上，容器不再有灰色块） */
.layui-layout-body .layuimini-menu-left .layui-nav .layui-nav-itemed > .layui-nav-child {
    background-color: transparent !important;
    padding: 2px 0 4px;
}

.layuimini-menu-left .layui-nav .layui-nav-child dd a {
    height: 38px;
    line-height: 38px;
}

/* 展开箭头颜色 */
.layuimini-menu-left .layui-nav .layui-nav-more {
    border-top-color: var(--au-text-3) !important;
}

.layuimini-menu-left .layui-nav .layui-nav-mored,
.layuimini-menu-left .layui-nav-itemed > a .layui-nav-more {
    border-color: transparent transparent var(--au-text-3) !important;
}

/* 菜单标题悬浮提示（折叠态） */
.popup-tips .layui-nav-tree {
    background-color: var(--au-surface);
    color: var(--au-text);
}

/* ---------- 顶栏：白底 + 极淡底边线 ----------
 * 不再用投影叠加：1px 边框 + box-shadow 双层叠加会让顶栏与内容区的
 * 分界线显得过重。这里只用一条极淡的边框线。 */
.layui-layout-admin .layui-header {
    background-color: var(--au-surface) !important;
    border-bottom: 1px solid rgba(23, 29, 43, .06);
    box-shadow: none;
}

.layui-header .layuimini-tool i {
    color: var(--au-text-2);
}

.layui-header .layuimini-tool i:hover {
    color: var(--au-primary);
    background-color: var(--au-primary-soft) !important;
}

/* 顶栏一级菜单文字 */
.layuimini-header-menu .layui-nav-item > a,
.layui-header .layui-nav .layui-nav-item > a {
    color: var(--au-text-2) !important;
}

.layuimini-header-menu .layui-nav-item.layui-this > a,
.layuimini-header-menu .layui-nav-item > a:hover {
    color: var(--au-primary) !important;
}

/* logo 文字颜色（白底顶栏上用深色字） */
.layui-layout-admin .layuimini-logo,
.layui-layout-admin .layuimini-logo h1 {
    color: var(--au-text) !important;
}

/* ---------- 标签页：现代浅色 ---------- */
.layuimini-tab .layui-tab-title {
    background-color: var(--au-surface);
    border-bottom: 1px solid var(--au-border);
    border-top: none;
    padding-left: 8px;
}

.layuimini-tab .layui-tab-title li {
    border-right: none;
    color: var(--au-text-2);
    border-radius: var(--au-radius) var(--au-radius) 0 0;
    margin-right: 2px;
    transition: background-color var(--au-transition), color var(--au-transition);
}

.layuimini-tab .layui-tab-title li:hover {
    background-color: var(--au-sidebar-hover);
}

.layuimini-tab .layui-tab-title li.layui-this {
    background-color: var(--au-primary-soft);
    color: var(--au-primary);
}

.layuimini-tab .layui-tab-title span {
    color: var(--au-text-2);
}

.layuimini-tab .layui-tab-title .layui-this span {
    color: var(--au-primary);
    font-weight: 600;
}

/* 标签页圆点指示 */
.layuimini-tab .layui-tab-title .layuimini-tab-active {
    background-color: var(--au-text-3);
}

.layuimini-tab .layui-tab-title .layui-this .layuimini-tab-active {
    background-color: var(--au-primary);
}

/* 标签页右侧控制按钮 */
.layuimini-tab .layui-tab-control > li {
    background-color: var(--au-surface);
    border-color: var(--au-border);
    color: var(--au-text-2);
}

.layuimini-tab .layui-tab-control > li:hover {
    /* 悬停只做轻微提示，不再整块泛主题色 */
    background-color: var(--au-sidebar-hover);
    color: var(--au-text);
}

/* ---------- 配色面板：现代卡片 ---------- */
.layuimini-color {
    border-radius: var(--au-radius);
    box-shadow: var(--au-shadow);
}

/* ---------- 表单/按钮主题色对齐 ---------- */
.layui-btn:not(.layui-btn-primary):not(.layui-btn-normal):not(.layui-btn-warm):not(.layui-btn-danger):not(.layui-btn-disabled) {
    background-color: var(--au-primary);
}

.layui-btn.layui-btn-normal {
    background-color: var(--au-primary);
}

/* 说明：深色模式的变量声明与组件适配已统一收口到本文件末尾
 * 「AuAdmin 样式优化终版」段落中，此处不再重复声明，避免同一令牌多处定义。 */

/* ---------- 配色面板：圆形色点（权威定义，基础段的同名规则已被本段覆盖） ---------- */
.layuimini-color .color-content ul li {
    width: 22px;
    height: 22px;
    border: 2px solid transparent;
    background-clip: padding-box;
}

/* 底部「恢复默认配色」按钮 */
.layuimini-color .more-menu-list {
    padding: 6px 14px 10px;
    border-top: 1px solid var(--au-border);
    margin: 4px 0 0;
}

.layuimini-color .more-menu-item {
    display: block;
    height: auto;
    line-height: 1.6;
    padding: 6px 8px;
    border-bottom: none;
    border-radius: var(--au-radius);
    color: var(--au-text-2);
    font-size: 12.5px;
    transition: background-color var(--au-transition), color var(--au-transition);
}

.layuimini-color .more-menu-item:first-child {
    border-top: none;
}

/* 去掉基础段遗留的 layui-icon 箭头伪元素（字体缺失时显示为杂符） */
.layuimini-color .more-menu-item:after {
    display: none;
}

.layuimini-color .more-menu-item:hover {
    background-color: var(--au-sidebar-hover);
    color: var(--au-text);
}

.layuimini-color .more-menu-item i {
    margin-right: 6px;
}

/* ---------- 折叠态：浅色适配 ---------- */
@media screen and (min-width: 1025px) {
    .layuimini-mini .layuimini-menu-left .layui-nav .layui-nav-item a {
        color: var(--au-sidebar-text) !important;
    }

    .layuimini-mini .layuimini-menu-left .layui-nav .layui-nav-item.layui-this a {
        color: var(--au-primary) !important;
        background-color: var(--au-primary-soft) !important;
    }

    /* 折叠态下选中竖条改到顶部，避免被窄栏裁切 */
    .layuimini-mini .layuimini-menu-left .layui-nav-tree > .layui-nav-item.layui-this > a::before {
        top: 0;
        bottom: auto;
        left: 0;
        right: 0;
        width: auto;
        height: 3px;
        border-radius: 0 0 3px 3px;
    }
}

/* ---------- 折叠态悬浮的子菜单提示（浅色） ---------- */
.popup-tips {
    border-radius: var(--au-radius);
    box-shadow: var(--au-shadow);
    border: 1px solid var(--au-border);
    overflow: hidden;
}

.popup-tips .layui-nav-tree .layui-nav-item a,
.popup-tips .layui-nav-tree .layui-nav-child dd a {
    color: var(--au-sidebar-text) !important;
}

.popup-tips .layui-nav-tree .layui-nav-item a:hover,
.popup-tips .layui-nav-tree .layui-this a {
    background-color: var(--au-primary-soft) !important;
    color: var(--au-primary) !important;
}

/* ---------- 移动端（<=1024px）：浅色菜单抽屉 ---------- */
@media screen and (max-width: 1024px) {
    .layuimini-mini .layuimini-menu-left,
    .layuimini-menu-left {
        background-color: var(--au-sidebar-bg) !important;
    }

    .layuimini-mini .layuimini-make {
        background: rgba(23, 29, 43, .45);
    }

    .layuimini-site-mobile {
        background-color: var(--au-surface);
        color: var(--au-text-2);
        border-right: 1px solid var(--au-border);
    }
}


/* ============================================================
 * 补充：此前遗漏的元素（标签页关闭按钮 / 徽标 / 关闭下拉）
 * ------------------------------------------------------------
 * 说明：深色模式已整体移除（明暗切换功能按需求下线），
 * 相关变量声明与组件适配不再保留。
 * ============================================================ */

/* ---------- 标签页关闭按钮 ---------- */
.layuimini-tab .layui-tab-title .layui-tab-close {
    color: var(--au-text-3);
    border-radius: 4px;
    transition: background-color var(--au-transition), color var(--au-transition);
}

.layuimini-tab .layui-tab-title .layui-tab-close:hover {
    background-color: #ff5722;
    color: #fff;
}

.layuimini-tab .layui-tab-title li.layui-this .layui-tab-close {
    color: var(--au-primary);
}

.layuimini-tab .layui-tab-title li.layui-this .layui-tab-close:hover {
    background-color: #ff5722;
    color: #fff;
}

/* ---------- 顶栏「关闭当前/其他/全部」下拉 ---------- */
.layuimini-tab .layui-tab-tool .layui-nav-child {
    border: 1px solid var(--au-border);
    border-radius: var(--au-radius);
    box-shadow: var(--au-shadow);
    background-color: var(--au-surface);
    padding: 4px 0;
    overflow: hidden;
}

.layuimini-tab .layui-tab-tool .layui-nav-child dd a {
    color: var(--au-text-2);
    font-size: 13px;
    transition: background-color var(--au-transition), color var(--au-transition);
}

.layuimini-tab .layui-tab-tool .layui-nav-child dd a:hover {
    background-color: var(--au-primary-soft);
    color: var(--au-primary);
}

/* ---------- 顶栏右侧图标按钮（悬停浅底） ---------- */
.layui-layout-admin .layui-header .layui-nav.layui-layout-right > .layui-nav-item > a {
    color: var(--au-text-2);
    transition: background-color var(--au-transition), color var(--au-transition);
}

.layui-layout-admin .layui-header .layui-nav.layui-layout-right > .layui-nav-item > a:hover {
    color: var(--au-primary);
    background-color: var(--au-primary-soft);
}

/* 用户下拉菜单 */
.layui-layout-admin .layui-header .layuimini-setting .layui-nav-child {
    border: 1px solid var(--au-border);
    border-radius: var(--au-radius);
    box-shadow: var(--au-shadow);
    background-color: var(--au-surface);
    padding: 4px 0;
    overflow: hidden;
}

.layui-layout-admin .layui-header .layuimini-setting .layui-nav-child a {
    color: var(--au-text-2);
    transition: background-color var(--au-transition), color var(--au-transition);
}

.layui-layout-admin .layui-header .layuimini-setting .layui-nav-child a:hover {
    background-color: var(--au-primary-soft);
    color: var(--au-primary);
}

/* 徽标小红点（消息提醒） */
.layui-badge-dot {
    background-color: var(--au-primary);
}

/* ---------- 侧栏折叠后的悬浮子菜单（popup） ---------- */
.popup-tips .layui-nav-tree .layui-nav-itemed > .layui-nav-child {
    background-color: transparent !important;
}

.popup-tips .layui-nav-tree .menu-dd > a {
    color: var(--au-sidebar-text) !important;
}

.popup-tips .layui-nav-tree .menu-dd > a:hover {
    background-color: var(--au-primary-soft) !important;
    color: var(--au-primary) !important;
}

/* ---------- 移动端侧栏遮罩层级 ---------- */
.layuimini-make {
    background: rgba(23, 29, 43, .45);
}

/* 移动导航按钮（.layuimini-site-mobile）：仅移动端抽屉态显示。
 * 原始 layuimini 的桌面端 display:none 基础规则在历次清理中丢失，
 * 导致该按钮在桌面端以静态流渲染 —— 一个深色 fa-outdent 图标
 * 落在标签栏左缘，挡住「首页」标签的左侧。这里恢复隐藏。
 * 注意：不能加 !important —— 移动端媒体查询里的 display:block !important
 *（文件前部）依赖后续覆盖关系生效，加重要标记会把移动端按钮一并隐藏。 */
.layuimini-site-mobile {
    display: none;
}


/* ============================================================
 * 顶栏一级菜单（基于浏览器计算样式实测）
 * ------------------------------------------------------------
 * layui 默认给顶栏菜单文字设了 #565656，会盖掉主题色体系，
 * 这里显式改回设计变量，并给选中项加主题色下划线。
 * ============================================================ */

.layui-layout-admin .layui-header .layuimini-menu-header-pc.layui-nav .layui-nav-item > a,
.layui-layout-admin .layui-header .layuimini-header-menu.layui-nav .layui-nav-item > a {
    color: var(--au-text-2) !important;
}

.layui-layout-admin .layui-header .layuimini-menu-header-pc.layui-nav .layui-nav-item.layui-this > a,
.layui-layout-admin .layui-header .layuimini-menu-header-pc.layui-nav .layui-nav-item > a:hover,
.layui-layout-admin .layui-header .layuimini-header-menu.layui-nav .layui-nav-item.layui-this > a,
.layui-layout-admin .layui-header .layuimini-header-menu.layui-nav .layui-nav-item > a:hover {
    color: var(--au-primary) !important;
}

/* 顶栏一级菜单选中下划线 */
.layui-layout-admin .layui-header .layuimini-menu-header-pc.layui-nav .layui-nav-item.layui-this > a {
    position: relative;
}

.layui-layout-admin .layui-header .layuimini-menu-header-pc.layui-nav .layui-nav-item.layui-this > a::after {
    content: "";
    position: absolute;
    left: 15px;
    right: 15px;
    bottom: 0;
    height: 2px;
    border-radius: 2px 2px 0 0;
    background-color: var(--au-primary);
}

/* 隐藏 layui 默认的滑动条，避免与新下划线冲突 */
.layui-layout-admin .layui-header .layui-nav-bar {
    display: none !important;
}

/* 顶栏菜单图标颜色 */
.layui-layout-admin .layui-header .layuimini-header-menu .layui-nav-item > a i.fa {
    color: inherit;
    margin-right: 6px;
}


/* ============================================================
 * AuAdmin 样式优化终版（统一收口层 · 必须是文件最后一段）
 * ------------------------------------------------------------
 * 本文件由「layui core + layuimini + 旧自研」三段合并而成，
 * 历史上以「再追加一段修正」的方式打补丁，导致同一元素存在 10+ 处
 * 重复定义（如标签页高度 35px → 43px 写了两遍，深色变量三处重复声明）。
 *
 * 已完成的结构清理（视觉零变化）：
 *   - 删除第三方 dark-mode.css 整段（约 3300 行）：项目改用自研浅色/深色
 *     变量方案后，该段已 100% 被覆盖，却因 !important 过猛导致后续
 *     不得不在文件末尾反复追加「收口层」去压制它。
 *   - 删除旧 theme 段（约 100 行）：深色配色主题，与浅色设计冲突。
 *   - 删除明暗切换全链路（按钮 / DarkMode 模块 / 首帧预载 / 深色规则）。
 *   文件规模 6869 行 → 约 2200 行。
 *
 * 本段用一份「权威定义」统一收口，并修掉 6 个实测可见的样式缺陷：
 *   1. 侧栏折叠后菜单「药丸居中」依赖 flex 覆盖 layui 的 display:block，
 *      后代组合器把容器 padding 也一起覆盖，折叠态图标被裁切
 *   2. 无选中项时顶部菜单层残留 layui 默认滑块（深色横条），
 *      却只写了「有 .layui-this 时才隐藏」
 *   3. 选中菜单项的投影硬编码 rgba(225,29,72)，换主题色后投影颜色不跟随
 *   4. 标签页关闭按钮 hover 用的是 #ff5722（旧橙色），与主题色体系冲突
 *   5. 侧栏内嵌模块标题条与首项边框叠加，出现双线
 *   6. 全局 `::-webkit-scrollbar{display:none}` 会让 iframe 子页面
 *      完全失去滚动条，无法判断是否可滚动
 * ============================================================ */

/* ---------- 1. 尺寸令牌收口（以 200px 侧栏 / 48px 顶栏为唯一基准） ----------
 * 注意：--au-sidebar-w 必须与侧栏的真实渲染宽度一致。
 * layui 核心默认侧栏宽 200px（.layui-side 无覆盖时即 200px），
 * 曾在此写 220px 导致令牌与实际脱节：折叠按钮、菜单起点全部右偏 20px，
 * 表现为「按钮与菜单之间隔着一段空格」。侧栏宽度如需调整，
 * 请同步修改 layui 侧栏的 width 与这里的令牌。 */
:root {
    --au-sidebar-w: 200px;
    --au-sidebar-w-min: 60px;
    --au-header-h: 48px;
    --au-tabbar-h: 44px;
    --au-radius: 8px;
    /* 主题色阴影统一由 --au-primary-soft 派生，换配色时自动跟随 */
    --au-primary-shadow: 0 6px 18px rgba(23, 29, 43, .10);
}

/* 折叠态宽度统一（原 60px / 64px 两处不一致）
   注意：必须限定在桌面端——手机端抽屉展开时 body 同样带 layuimini-mini 类
   （layuimini 的移动端语义与桌面相反），不加媒体查询会把抽屉压成 60px，
   菜单图标和文字全部被裁切 */
@media screen and (min-width: 1025px) {
    .layuimini-mini .layui-layout-admin .layui-side,
    .layuimini-mini .layui-layout-admin .layui-side.layui-bg-black {
        width: var(--au-sidebar-w-min) !important;
    }

    .layuimini-mini .layui-layout-admin .layuimini-logo {
        width: var(--au-sidebar-w-min) !important;
    }

    .layuimini-mini .layuimini-tool {
        left: var(--au-sidebar-w-min) !important;
    }
}

/* ---------- 2. 侧栏折叠态：修正被覆盖的容器内边距 ---------- */
@media screen and (min-width: 1025px) {
    /* 容器保留左右 6px，保证 40px 药丸能完整居中不被裁切 */
    .layuimini-mini .layui-layout-admin .layuimini-menu-left ul.layui-nav-tree,
    .layuimini-mini .layui-layout-admin .layui-side.layui-bg-black > .layuimini-menu-left > ul {
        padding: 10px 6px 20px !important;
    }

    /* 条目恢复为块级 + 居中，避免 flex 覆盖导致文字/图标错位 */
    .layuimini-mini .layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-item > a,
    .layuimini-mini .layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-child dd > a {
        display: flex !important;
        justify-content: center !important;
        align-items: center !important;
        width: 40px !important;
        height: 40px !important;
        line-height: 40px !important;
        padding: 0 !important;
        margin: 0 auto 4px !important;
    }

    .layuimini-mini .layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-item > a > i.fa,
    .layuimini-mini .layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-item > a > i.layui-icon {
        margin-right: 0 !important;
        width: 18px !important;
        font-size: 15px !important;
    }

    .layuimini-mini .layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-item a span,
    .layuimini-mini .layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-item a .layui-nav-more {
        display: none !important;
    }
}

/* ---------- 3. 顶栏：统一高度、统一隐藏 layui 滑块 ---------- */
/* 无论是否存在选中项，layui 的滑块条都不应出现 */
.layui-layout-admin .layui-header .layui-nav-bar,
.layui-layout-admin .layui-header .layui-nav .layui-nav-bar {
    display: none !important;
    opacity: 0 !important;
    height: 0 !important;
    background: transparent !important;
}

/* 顶栏一级菜单：条目容器与药丸
 * ------------------------------------------------------------
 * DOM 结构（由 auadmin.js 的 miniMenu.compileMenu 生成）：
 *   li.layui-nav-item > a > (i.icon + span.layui-left-nav)
 * layui 默认给 a 设了 height/line-height: 56px + 两侧超大 padding，
 * 直接改 a 的高度会让「药丸高度」与「文字基线」互相打架（表现为文字溢出药丸）。
 * 正确做法：li 作为 56px 的 flex 居中容器，a 作为内部 38px 药丸，
 * 且 a 的文字居中完全交给 flex，不依赖 line-height。 */

/* 顶栏药丸样式的作用范围限定：
 * ------------------------------------------------------------
 * 顶栏有两个 .layuimini-header-menu 容器：
 *   A) .layuimini-pc-show      —— 电脑端一级菜单（多模块时才渲染 li）
 *   B) .layuimini-mobile-show  —— 手机端「选择模块」下拉，结构固定为
 *        li > a > (i.fa + 纯文本 + i.layui-nav-more) + dl.layui-nav-child
 * 二者共用 .layuimini-header-menu 类。若选择器只写到这一层，
 * 药丸规则会同时命中手机端那个 li，导致它的两个图标与文字挤在一起重叠。
 * 因此下面所有药丸相关规则都必须带上 .layuimini-pc-show 限定。 */

/* 第一步：PC 菜单容器必须是「不换行的横向 flex」，并预留右侧菜单空间。
 * 实测根因（layui 核心样式）：
 *   .layui-layout-left  { position: absolute !important; left: 200px; top: 0 }
 *   .layui-layout-right { position: absolute !important; right: 0;    top: 0 }
 *   .layui-nav-item     { display: inline-block; line-height: 60px }
 * 左侧容器是绝对定位且只有 left、没有 right/width，宽度由内容撑开；
 * layuimini 又给 li 加了 float。当 li 从 float 变成 flex item 后，
 * 容器可用宽度收窄，装不下的 li 就换到第二行 —— 即「掉行」。
 * 解决：显式 flex + nowrap；用 max-width 限制在右侧菜单左侧，
 * 既保证不换行，又不会与右侧菜单重叠（不能直接 right:0，那会横向压住右侧）。
 *
 * 注意：只能用 flex-direction 等属性，display 必须交给 .layuimini-pc-show /
 * .layuimini-mobile-show 的响应式规则（两者用 display 做断点切换），
 * 这里若写 display 并加 !important 会击穿断点导致两端菜单同时显示。 */
@media screen and (min-width: 1025px) {
    .layui-layout-admin .layui-header .layui-nav.layui-layout-left.layuimini-header-menu.layuimini-pc-show {
        flex-wrap: nowrap !important;
        align-items: center !important;
        height: var(--au-header-h) !important;
        top: 0 !important;
        white-space: nowrap;
        overflow: hidden;
    }

    /* 菜单容器的水平位置必须区分展开/收起两种 body 状态：
     *   展开态（layuimini-all）：logo 220 + 按钮 48 + 间距 8 = 276px
     *   收起态（layuimini-mini）：logo 60 + 按钮 48 + 间距 8 = 116px
     * 若不区分（固定用展开值），收起时菜单会停在 276px，
     * 与折叠按钮之间拉出一条大空白 —— 即「收起来变丑」的成因。
     * 用 body 前缀限定，两条互斥（JS 切换 layuimini-all ↔ layuimini-mini），
     * 也避免了与 layuimini 段 mini 规则的优先级竞争。 */
    body.layuimini-all .layui-layout-admin .layui-header .layui-nav.layui-layout-left.layuimini-header-menu.layuimini-pc-show {
        left: calc(var(--au-sidebar-w) + 48px) !important;
        max-width: calc(100% - var(--au-sidebar-w) - 48px - 200px);
    }

    body.layuimini-mini .layui-layout-admin .layui-header .layui-nav.layui-layout-left.layuimini-header-menu.layuimini-pc-show {
        left: calc(var(--au-sidebar-w-min) + 48px) !important;
        max-width: calc(100% - var(--au-sidebar-w-min) - 48px - 200px);
    }

    /* 断点内显式声明为 flex（与 .layuimini-pc-show{display:block} 竞争，
       写在同一断点内且选择器更具体，可稳定生效） */
    .layui-layout-admin .layui-header .layuimini-header-menu.layuimini-pc-show {
        display: flex !important;
    }
}

/* 第二步：PC 菜单条目作为 56px 高的 flex 居中项（不换行、不定宽） */
.layui-layout-admin .layui-header .layuimini-menu-header-pc.layuimini-pc-show > .layui-nav-item,
.layui-layout-admin .layui-header .layuimini-header-menu.layuimini-pc-show > .layui-nav-item {
    display: flex !important;
    align-items: center !important;
    flex: 0 0 auto !important;
    float: none !important;
    height: var(--au-header-h) !important;
    line-height: normal !important;
    white-space: nowrap;
}

/* 第三步：PC 菜单药丸本体（仅 PC） */
.layui-layout-admin .layui-header .layuimini-menu-header-pc.layuimini-pc-show.layui-nav .layui-nav-item > a,
.layui-layout-admin .layui-header .layuimini-header-menu.layuimini-pc-show.layui-nav .layui-nav-item > a {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 6px;
    height: 34px !important;
    /* 关键：不用 line-height 撑高，避免与 flex 居中叠加导致文字下坠 */
    line-height: 1 !important;
    margin: 0 3px !important;
    padding: 0 16px !important;
    border-radius: 10px !important;
    font-size: 14px;
    font-weight: 500;
    /* 药丸自身不参与绝对定位，避免脱离 flex 容器 */
    position: relative;
    top: auto !important;
    transition: background-color var(--au-transition), color var(--au-transition) !important;
}

/* 第四步：药丸内的图标与文字垂直居中（仅 PC） */
.layui-layout-admin .layui-header .layuimini-header-menu.layuimini-pc-show .layui-nav-item > a > i.fa,
.layui-layout-admin .layui-header .layuimini-header-menu.layuimini-pc-show .layui-nav-item > a > i.layui-icon {
    display: inline-flex;
    align-items: center;
    line-height: 1 !important;
    font-size: 14px;
    margin-right: 2px;
}

.layui-layout-admin .layui-header .layuimini-header-menu.layuimini-pc-show .layui-nav-item > a > span {
    display: inline-flex;
    align-items: center;
    line-height: 1 !important;
    letter-spacing: 0;
}

/* 第五步：手机端「选择模块」——保持 layui 默认布局，仅做行高归一，
 * 避免与 PC 药丸规则混用造成图标/文字重叠。
 * 结构：li > a > (i.fa + 纯文本 + i.layui-nav-more) + dl.child
 * 注意：只处理直接子级 > a，不要影响下拉里的 dd > a。 */
.layui-layout-admin .layui-header .layuimini-header-menu.layuimini-mobile-show > .layui-nav-item > a {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px;
    line-height: 1 !important;
    white-space: nowrap;
}

.layui-layout-admin .layui-header .layuimini-header-menu.layuimini-mobile-show > .layui-nav-item > a > i {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1 !important;
    flex-shrink: 0;
}

/* 手机端下拉里的模块项（dd > a）也做行高归一，防止图标与文字挤在一起 */
.layui-layout-admin .layui-header .layuimini-menu-header-mobile > dd > a {
    display: flex !important;
    align-items: center !important;
    gap: 8px;
    line-height: 1 !important;
    white-space: nowrap;
}

.layui-layout-admin .layui-header .layuimini-menu-header-mobile > dd > a > i {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1 !important;
    flex-shrink: 0;
    margin: 0 !important;
}

.layui-layout-admin .layui-header .layuimini-menu-header-mobile > dd > a > span {
    display: inline-flex;
    align-items: center;
    line-height: 1 !important;
}

/* ============================================================
 * 对照目标设计稿的视觉还原
 * ------------------------------------------------------------
 * 设计要点（来源：Au-Server 后台截图）：
 *   1. Logo 区：左侧一个橙粉渐变圆角方块（内含白色卡片图标 + "au"），
 *      右侧深色粗体标题，整体留白舒展
 *   2. 顶栏一级菜单：默认灰字；选中项为「主题色实心药丸 + 白字」
 *   3. 侧栏：白色底，一级项为可点区块，选中项为「主题色实心药丸 + 白字 + 投影」
 *   4. 标签页：白底，选中项为「浅色药丸 + 主题色描边 + 主题色文字」
 * ============================================================ */

/* ---------- A. 顶栏 Logo：渐变圆角方块 + 粗体标题 ---------- */
.layui-layout-admin .layuimini-logo {
    display: flex !important;
    align-items: center !important;
    padding: 0 14px !important;
    background-color: var(--au-surface) !important;
}

.layui-layout-admin .layuimini-logo > a {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    width: 100%;
    min-width: 0;
    overflow: hidden;
}

/* Logo 图片：不带任何背景底色，按原图等比展示 */
.layui-layout-admin .layuimini-logo img {
    width: 34px !important;
    height: 34px !important;
    border-radius: 8px !important;
    object-fit: contain !important;
    flex-shrink: 0;
}

.layui-layout-admin .layuimini-logo h1 {
    margin: 0 !important;
    color: var(--au-text) !important;
    font-size: 17px !important;
    font-weight: 700 !important;
    letter-spacing: -0.2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ---------- B2. 顶栏条目本身不带块状背景 ----------
 * 需求：药丸以外的区域不要任何底色。
 * layuimini 原始规则给选中的 li（.layui-nav-item.layui-this）整块涂了
 * --au-primary-soft 底色，视觉上变成「药丸外面还套着一个大方块」。
 * 这里统一把顶栏所有 li 级背景清为透明；颜色只保留在药丸 a 上。
 * 注意：右侧图标按钮的悬停反馈在 a:hover 层，不受影响。 */
.layui-layout-admin .layui-header .layui-nav .layui-nav-item,
.layui-layout-admin .layui-header .layui-nav .layui-nav-item.layui-this,
.layui-layout-admin .layui-header .layui-nav .layui-nav-itemed {
    background-color: transparent !important;
}

/* ---------- B. 顶栏一级菜单：选中项为主题色实心药丸 ---------- */
.layui-layout-admin .layui-header .layuimini-menu-header-pc.layui-nav .layui-nav-item.layui-this > a,
.layui-layout-admin .layui-header .layuimini-header-menu.layui-nav .layui-nav-item.layui-this > a {
    background-color: var(--au-primary) !important;
    color: #ffffff !important;
    font-weight: 500 !important;
    box-shadow: 0 4px 12px color-mix(in srgb, var(--au-primary) 30%, transparent) !important;
}

/* 选中项的文字/图标同步为白色 */
.layui-layout-admin .layui-header .layuimini-header-menu .layui-nav-item.layui-this > a i.fa {
    color: #ffffff !important;
}

.layui-layout-admin .layui-header .layuimini-header-menu .layui-nav-item > a:hover {
    background-color: var(--au-sidebar-hover) !important;
    color: var(--au-text) !important;
}

/* 去掉旧的下划线指示器（已改为药丸） */
.layui-layout-admin .layui-header .layuimini-menu-header-pc.layui-nav .layui-nav-item.layui-this > a::after {
    content: none !important;
}

/* ---------- C. 侧栏：模块标题条 + 选中药丸 ---------- */
/* 一级菜单项：留白更舒展 */
.layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-item > a {
    height: 40px !important;
    line-height: 40px !important;
    margin: 0 0 2px !important;
    padding: 0 12px !important;
    border-radius: 9px !important;
}

/* 侧栏折叠箭头：跟随文字右侧 */
.layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-more {
    right: 14px !important;
    top: 19px !important;
}

/* ---------- D. 标签页：圆角药丸 ----------
 * 高度问题说明：
 *   标签条容器是 44px（--au-tabbar-h），但内部 li 一旦用 line-height 撑高，
 *   li 里的 span / i.layui-tab-close 会各自带上自己的行高（继承 body 的 1.6），
 *   在 44px 内形成额外的行盒，导致「标签条显得很高、文字不垂直居中」。
 *   解决：容器负责高度并做 flex 居中，li 与内部元素全部 line-height:1，
 *   垂直居中完全交给 flex，不再依赖行高。 */
.layuimini-tab .layui-tab-title,
.layuimini-tab > .layui-tab-title {
    display: flex !important;
    align-items: center !important;
    height: var(--au-tabbar-h) !important;
    background-color: var(--au-surface) !important;
    border: none !important;
    border-bottom: 1px solid var(--au-border) !important;
    padding: 0 8px !important;
    overflow-x: auto;
    overflow-y: hidden;
    box-sizing: border-box;
}

/* rollTool 模式：标签条两侧有「‹」「›」「▼」三个 44px 的控制按钮，
 * 标题区必须避让，否则第一个药丸会钻到「‹」按钮底下（实测发生）。 */
.layuimini-tab.layui-tab-rollTool .layui-tab-title,
.layuimini-tab.layui-tab-rollTool > .layui-tab-title {
    padding-left: calc(var(--au-tabbar-h) + 8px) !important;
    padding-right: calc(var(--au-tabbar-h) * 2 + 8px) !important;
}

/* 条目标签：默认无底色、无边框，仅作为点击区 */
.layuimini-tab .layui-tab-title li {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex: 0 0 auto !important;
    border: none !important;
    border-right: none !important;
    background-color: transparent !important;
    border-radius: 999px !important;
    margin: 0 3px !important;
    padding: 0 14px !important;
    height: 30px !important;
    /* 不再用 line-height 撑高，居中完全交给 flex */
    line-height: 1 !important;
    color: var(--au-text-2) !important;
    white-space: nowrap;
    transition: background-color var(--au-transition), color var(--au-transition) !important;
}

/* li 内部的文字与图标：归一化行高与居中 */
.layuimini-tab .layui-tab-title li > span,
.layuimini-tab .layui-tab-title li > i {
    display: inline-flex;
    align-items: center;
    line-height: 1 !important;
}

.layuimini-tab .layui-tab-title li:hover {
    background-color: var(--au-sidebar-hover) !important;
}

/* 选中项：浅底药丸 + 主题色描边 + 主题色文字 */
.layuimini-tab .layui-tab-title li.layui-this {
    background-color: var(--au-primary-soft) !important;
    color: var(--au-primary) !important;
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--au-primary) 35%, transparent) !important;
}

.layuimini-tab .layui-tab-title li.layui-this span {
    color: var(--au-primary) !important;
    font-weight: 500;
}

/* 标签页选中圆点：跟随主题色 */
.layuimini-tab .layui-tab-title .layuimini-tab-active {
    display: inline-block !important;
    width: 8px !important;
    height: 8px !important;
    border-radius: 999px !important;
    margin-right: 6px !important;
    flex-shrink: 0;
    background-color: var(--au-text-3) !important;
    vertical-align: middle;
}

.layuimini-tab .layui-tab-title .layui-this .layuimini-tab-active {
    background-color: var(--au-primary) !important;
}

/* 首页标签的关闭叉在选中态下同样跟随主题色 */
.layuimini-tab .layui-tab-title li.layui-this .layui-tab-close {
    color: var(--au-primary) !important;
}

/* ---------- 4. 侧栏：首项边框去重 + 选中药丸 ---------- */
.layui-layout-admin .layui-side.layui-bg-black > .layuimini-menu-left > ul > .layui-nav-item:first-child {
    border-top: none !important;
}

/* 设计稿要求：侧栏选中项为「主题色实心药丸 + 白字 + 投影」，
 * 而非浅色底 + 左侧竖条。这里统一覆盖前面所有浅色底写法。 */
.layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-item.layui-this > a,
.layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-child dd.layui-this > a,
.layui-layout-admin .layuimini-menu-left .layui-nav-tree .layui-this > a,
.layui-layout-admin .layuimini-menu-left .layui-nav-tree .layui-nav-child dd.layui-this > a {
    background-color: var(--au-primary) !important;
    color: #ffffff !important;
    font-weight: 500 !important;
    box-shadow: 0 6px 16px color-mix(in srgb, var(--au-primary) 32%, transparent) !important;
}

/* 选中项图标与文字同步为白色 */
.layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-item.layui-this > a > i.fa,
.layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-item.layui-this > a > i.layui-icon,
.layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-child dd.layui-this > a > i.fa,
.layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-child dd.layui-this > a > i.layui-icon,
.layui-layout-admin .layuimini-menu-left .layui-nav .layui-this > a span {
    color: #ffffff !important;
}

/* 撤销浅色方案遗留的左侧竖条（已改为实心药丸）
 * 注意：只写 content:none 时伪元素仍可能占位（不同内核行为不一致），
 * 必须同时清零尺寸与背景，确保完全不产生视觉与布局影响。 */
.layuimini-menu-left .layui-nav-tree > .layui-nav-item.layui-this > a::before,
.layuimini-menu-left .layui-nav-tree .layui-nav-child dd.layui-this > a::before {
    content: none !important;
    display: none !important;
    width: 0 !important;
    height: 0 !important;
    background: none !important;
}

/* 选中项的父级 li / dd 本身设为透明，避免浅色底从 li 层透出来
 * （前面的规则把 background 加在了 li 上，只改 a 会露出 li 的底色） */
.layui-layout-admin .layuimini-menu-left .layui-nav-tree .layui-this,
.layui-layout-admin .layuimini-menu-left .layui-nav-tree .layui-nav-child dd.layui-this,
.layui-layout-admin .layuimini-menu-left li.layui-nav-item.layui-this {
    background-color: transparent !important;
}

/* ---------- 子菜单项：按钮化（两侧留白 + 圆角），不再通栏充满 ----------
 * 需求：悬停 / 选中时的颜色变化不要充满整行，做成按钮的样子。
 * 做法：给子项 a 左右各 10px 外边距 + 圆角，背景只落在按钮本体上；
 * 文字缩进沿用基础样式的分级 padding-left（35/45/55px），不在此覆盖。 */
.layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-child dd > a {
    display: flex !important;
    align-items: center !important;
    height: 36px !important;
    line-height: 1 !important;
    margin: 0 10px 2px !important;
    border-radius: 8px !important;
}

/* 更深层级的子菜单按钮：整体再右移一档，保持层级感 */
.layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-child .layui-nav-child dd > a {
    margin-left: 24px !important;
}

/* 不支持 color-mix 的旧内核回退到中性投影 */
@supports not (color: color-mix(in srgb, red 50%, blue)) {
    .layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-item.layui-this > a,
    .layui-layout-admin .layuimini-menu-left .layui-nav .layui-nav-child dd.layui-this > a {
        box-shadow: var(--au-primary-shadow) !important;
    }
}

/* ---------- 5. 标签页：控制按钮与关闭下拉 ----------
 * 实测问题（浏览器 elementsFromPoint 定位）：
 *   1. 关闭下拉容器 .close-box 是 .layui-nav，layui 核心给它深蓝底
 *      rgb(47,54,60)，透明化规则在历次清理中失效后，
 *      它以深色方块的形式露在标签栏左缘，挡住「首页」
 *   2. 左右滚动/工具三个控制按钮仍是 35px 时代的高度，
 *      在 44px 的标签条里上下各留 4.5px、箭头不居中
 * 这里统一按 --au-tabbar-h 收口：控制按钮占满条高、箭头居中，
 * 关闭下拉钉在工具按钮正下方且完全透明（只在展开时出现）。 */
.layuimini-tab .layui-tab-control > li {
    top: 0 !important;
    height: var(--au-tabbar-h) !important;
    line-height: var(--au-tabbar-h) !important;
}

.layuimini-tab .layuimini-tab-tool .layui-nav.close-box,
.layuimini-tab .layui-tab-tool .layui-nav.close-box {
    position: absolute !important;
    top: 0 !important;
    right: 0 !important;
    left: auto !important;
    width: var(--au-tabbar-h) !important;
    height: var(--au-tabbar-h) !important;
    background: transparent !important;
}

/* ---------- 5. 标签页：关闭按钮 hover 统一为语义色 ---------- */
.layuimini-tab .layui-tab-title .layui-tab-close {
    width: 16px !important;
    height: 16px !important;
    line-height: 16px !important;
    font-size: 11px !important;
    border-radius: 50% !important;
    opacity: .6;
    transition: background-color var(--au-transition), color var(--au-transition), opacity var(--au-transition);
}

.layuimini-tab .layui-tab-title .layui-tab-close:hover {
    background-color: var(--au-primary) !important;
    color: #fff !important;
    opacity: 1;
}

/* 首页标签不显示关闭按钮 */
.layuimini-tab .layui-tab-title .disable-close + .layui-tab-close {
    display: none !important;
}

/* ---------- 6. 滚动条：恢复内容区可见滚动条（仅隐藏横向细条） ---------- */
html,
body.layui-layout-body,
.layui-layout-body,
.layuimini-menu-left,
.layuimini-tab .layui-tab-title {
    scrollbar-width: thin;
}

::-webkit-scrollbar {
    width: 8px;
    height: 8px;
    display: block;
}

::-webkit-scrollbar-track {
    background: transparent;
}

::-webkit-scrollbar-thumb {
    background: rgba(23, 29, 43, .18);
    border-radius: 999px;
}

::-webkit-scrollbar-thumb:hover {
    background: rgba(23, 29, 43, .3);
}

/* ---------- 7. 无障碍与细节 ---------- */
/* 焦点可见（键盘导航），不干扰鼠标操作
 * （明暗切换已移除，深色主题规则与开关样式已整体清理） */
.layuimini-menu-left .layui-nav-item a:focus-visible,
.layui-layout-admin .layui-header .layui-nav-item a:focus-visible,
.layuimini-tool:focus-visible,
.layuimini-tab .layui-tab-control > li:focus-visible {
    outline: 2px solid var(--au-primary);
    outline-offset: -2px;
}

/* 跳转到主内容（仅键盘聚焦时出现） */
.au-skip-link {
    position: fixed;
    top: 6px;
    left: 50%;
    transform: translate(-50%, -200%);
    z-index: 100000;
    padding: 8px 18px;
    border-radius: var(--au-radius);
    background-color: var(--au-primary);
    color: #fff !important;
    font-size: 13px;
    box-shadow: var(--au-shadow-lg);
    transition: transform var(--au-transition);
}

.au-skip-link:focus {
    transform: translate(-50%, 0);
    outline: none;
}

/* 主内容区获得焦点时不显示描边（仅程序性聚焦） */
.layui-body:focus,
.layui-body:focus-visible {
    outline: none;
}

/* 折叠按钮在顶栏内垂直居中 */
.layuimini-tool {
    display: flex;
    align-items: center;
    justify-content: center;
}

.layuimini-tool i {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    border-radius: var(--au-radius);
    transition: background-color var(--au-transition), color var(--au-transition);
}

/* 标签页滚动按钮可点击区域（role=button 后需要显式手型） */
.layuimini-tab .layui-tab-control > li {
    cursor: pointer;
    transition: background-color var(--au-transition), color var(--au-transition);
}

/* 尊重系统「减少动态效果」偏好 */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: .001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .001ms !important;
        scroll-behavior: auto !important;
    }
}

/* 移动端：侧栏抽屉宽度收窄，避免遮挡全部内容 */
@media screen and (max-width: 1024px) {
    .layui-layout-admin .layui-side,
    .layui-layout-admin .layui-side.layui-bg-black {
        width: 240px !important;
    }

    .layuimini-site-mobile {
        width: 44px !important;
        height: var(--au-header-h) !important;
        line-height: var(--au-header-h) !important;
    }
}

/* ---------- 9. 顶栏下拉菜单（手机端「选择模块」/ 右上角用户菜单） ----------
 * layui 默认是直角贴边的白盒，与整体圆角设计不符；
 * 统一为圆角卡片 + 投影 + 与顶栏留 6px 间隙，深浅色自动跟随令牌。 */
.layui-layout-admin .layui-header .layui-nav .layui-nav-child {
    margin-top: 6px !important;
    border: 1px solid var(--au-border);
    border-radius: var(--au-radius-lg) !important;
    box-shadow: var(--au-shadow-lg);
    padding: 6px !important;
    background-color: var(--au-surface) !important;
    min-width: 150px;
}

.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd a {
    margin: 2px 0;
    border-radius: var(--au-radius);
    transition: background-color var(--au-transition), color var(--au-transition);
}

.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd a:hover {
    background-color: var(--au-primary-soft) !important;
    color: var(--au-primary) !important;
}

/* 下拉里的分隔线与卡片边缘留出距离 */
.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd hr {
    margin: 6px 4px;
}

