/*
 * LoliMeow 皮肤桥接层
 * 用途：将现有 DNS 管理系统（white-theme + homepage.css）的 CSS 变量与组件外观
 *       与 LoliMeow WordPress 主题的紫色系视觉规范统一。
 * 使用：引入顺序   bootstrap.min.css → white-theme.css → 本文件 → 页面专属 CSS
 *       LoliMeow 资源在 assets/lolimeow/ 下，相对路径需匹配。
 * 更新主题时只需替换本文件 + assets/lolimeow/ 目录。
 */

/* ========== 1. 全局 CSS 变量统一（LoliMeow 色系 #D87CFF 紫色）========== */
:root {
    /* --- LoliMeow 原生规范 --- */
    --lm-primary:        #D87CFF;   /* 主色：紫色滑块条 */
    --lm-primary-hover:  #F59DFF;
    --lm-primary-active: #A34F9B;
    --lm-primary-soft:   #ac9bd7;   /* 次级紫色（blockquote 左边） */
    --lm-primary-tint:   rgba(172, 155, 215, 0.25);
    --lm-bg-wave:        #f8c3cd;   /* 启动加载背景（粉樱花色） */
    --lm-scroll-track:   #DFE9EB;
    --lm-scroll-thumb-border: #FFFFFF;
    --lm-dark:           #272727;
    --lm-dark-soft:      #272727bf;

    /* --- 向后兼容：原有 --neko-* 变量（index.php 内联在用）--- */
    --neko-primary:      #D87CFF;
    --neko-text-muted:   #6c757d;

    /* --- 覆盖 white-theme 的珊瑚橙主色 --- */
    --bs-primary:        #D87CFF;
    --bs-primary-rgb:    216, 124, 255;
    --bs-primary-bg-subtle: rgba(216, 124, 255, 0.15);
    --bs-primary-border-subtle: #D87CFF;

    --bs-hui:            #272727bf;

    --bs-btn-color:             #FFFFFF;
    --bs-btn-bg:                #D87CFF;
    --bs-btn-border-color:      #D87CFF;
    --bs-btn-primary-color:     #FFFFFF;
    --bs-btn-primary-bg:        linear-gradient(135deg, #D87CFF, #8B5CF6);
    --bs-btn-primary-border-color: #A34F9B;
    --bs-btn-primary-hover-bg:  linear-gradient(135deg, #F59DFF, #A78BFA);

    --bs-secondary:             #8B5CF6;
    --bs-secondary-rgb:         139, 92, 246;

    --bs-info:                  #8B5CF6;
    --bs-info-rgb:              139, 92, 246;
    --bs-info-bg-subtle:        rgba(139, 92, 246, 0.15);
    --bs-info-border-subtle:    #8B5CF6;

    --bs-success:               #10B981;
    --bs-success-rgb:           16, 185, 129;
    --bs-danger:                #EF4444;
    --bs-danger-rgb:            239, 68, 68;
    --bs-warning:               #F59E0B;
    --bs-warning-rgb:           245, 158, 11;
}

/* ========== 2. 深色模式覆盖（LoliMeow 规范）========== */
[data-bs-theme="dark"] {
    --bs-body-bg:       #0e0e0e;
    --bs-body-color:    #fff;
    --bs-white:         #0e0e0e;
    --bs-gray-600:      #fff;
    --bs-gray-700:      #fff;
    --bs-gray-800:      #fff;
    --bs-gray-900:      #fff;
    --bs-hui:           #fff;
}

/* ========== 3. 滚动条样式（LoliMeow 紫色）========== */
*::-webkit-scrollbar { height: 10px; width: 10px; }
*::-webkit-scrollbar-track { border-radius: 5px; background-color: #DFE9EB; }
*::-webkit-scrollbar-track:hover,
*::-webkit-scrollbar-track:active { background-color: #B8C0C2; }
*::-webkit-scrollbar-thumb {
    border-radius: 5px;
    background-color: #D87CFF;
    border: 2px solid #FFFFFF;
}
*::-webkit-scrollbar-thumb:hover  { background-color: #F59DFF; }
*::-webkit-scrollbar-thumb:active { background-color: #A34F9B; }

/* ========== 4. 全局排版（LoliMeow 阿里妈妈字体）========== */
body {
    font-family: "boxmoe", "Microsoft YaHei", "PingFang SC", Georgia, Open Sans, sans-serif;
    font-size: 0.9rem;
    line-height: 1.7;
    overflow-x: hidden;
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
    letter-spacing: 0.02em;
}
a { transition: all 300ms ease; text-decoration: none; }
b, strong { font-weight: 700; }

/* ========== 5. LoliMeow 式按钮 ========== */
.btn {
    --bs-btn-font-weight: 500;
    --bs-btn-font-size: 0.82rem;
    --bs-btn-border-radius: 0.6rem;
    border-width: 1.5px;
    box-shadow: none !important;
    transition: all 250ms ease;
}
.btn-primary {
    background: linear-gradient(135deg, #D87CFF, #8B5CF6);
    border-color: #A34F9B;
    color: #fff;
}
.btn-primary:hover {
    background: linear-gradient(135deg, #F59DFF, #A78BFA);
    border-color: #D87CFF;
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(216, 124, 255, 0.3) !important;
}
.btn-secondary {
    background: rgba(139, 92, 246, 0.15);
    color: #6D28D9;
    border-color: #8B5CF6;
}
.btn-secondary:hover {
    background: rgba(139, 92, 246, 0.3);
    color: #4C1D95;
}
.btn-success {
    background: linear-gradient(135deg, #10B981, #059669);
    border-color: #047857;
}
.btn-danger {
    background: linear-gradient(135deg, #EF4444, #DC2626);
    border-color: #B91C1C;
}
.btn-warning {
    background: linear-gradient(135deg, #FBBF24, #F59E0B);
    border-color: #D97706;
    color: #fff;
}
.btn-outline-primary {
    color: #D87CFF;
    border-color: #D87CFF;
    background: transparent;
}
.btn-outline-primary:hover {
    background: #D87CFF;
    border-color: #D87CFF;
    color: #fff;
}

/* ========== 6. LoliMeow 式卡片 / 表单 / 表格 ========== */
.card, .neko-card, .welcome-card, .query-section, .stat-item {
    border: 1px solid rgba(216, 124, 255, 0.2);
    border-radius: 1rem;
    background: #fff;
    box-shadow: 0 2px 10px rgba(216, 124, 255, 0.08);
    transition: box-shadow 250ms ease, transform 250ms ease;
}
.card:hover, .neko-card:hover, .domain-item:hover {
    box-shadow: 0 6px 24px rgba(172, 155, 215, 0.25);
    transform: translateY(-1px);
}
.form-control, .form-select {
    font-size: 0.85rem;
    border-radius: 0.55rem;
    border: 1px solid rgba(139, 92, 246, 0.3);
    transition: border-color 200ms ease, box-shadow 200ms ease;
}
.form-control:focus, .form-select:focus {
    border-color: #D87CFF;
    box-shadow: 0 0 0 0.2rem rgba(216, 124, 255, 0.25);
}
/* 修复重影：white-theme 用 !important 强制显示了 placeholder 颜色，
   而 form-floating 的浮动 label 依赖 placeholder 透明（空框状态下两者会叠加成双影）。
   这里恢复 Bootstrap 的透明规则，仅作用于 form-floating 内的控件，不影响普通输入框的 placeholder。 */
.form-floating > .form-control::placeholder,
.form-floating > .form-control-plaintext::placeholder,
.form-floating > .form-select::placeholder {
    color: transparent !important;
}
.table {
    --bs-table-border-color: rgba(172, 155, 215, 0.25);
}
.table thead th {
    border-bottom-width: 2px;
    border-bottom-color: rgba(216, 124, 255, 0.5);
    color: #4C1D95;
    font-weight: 700;
    letter-spacing: 0.05em;
}
.badge-neko, .badge {
    font-weight: 600;
    border-radius: 1rem;
    padding: 0.25rem 0.75rem;
    letter-spacing: 0.03em;
}

/* ========== 7. 提示横幅（LoliMeow 风格）========== */
.alert {
    border-radius: 0.85rem;
    border: none;
    border-left: 6px solid;
    background: #fff;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
}
.alert-success { border-left-color: #10B981; background: rgba(16, 185, 129, 0.06); }
.alert-danger  { border-left-color: #EF4444; background: rgba(239, 68, 68, 0.06); }
.alert-warning { border-left-color: #F59E0B; background: rgba(245, 158, 11, 0.06); }
.alert-info    { border-left-color: #8B5CF6; background: rgba(139, 92, 246, 0.08); }

/* ========== 8. 模态框（与紫色系统一）========== */
.modal-content {
    border-radius: 1rem;
    border: 1px solid rgba(216, 124, 255, 0.3);
    box-shadow: 0 10px 40px rgba(172, 155, 215, 0.3);
}
.modal-header {
    border-bottom: 1px solid rgba(216, 124, 255, 0.2);
    background: linear-gradient(135deg, rgba(216, 124, 255, 0.08), rgba(139, 92, 246, 0.05));
    border-radius: 1rem 1rem 0 0;
}
.modal-title { color: #4C1D95; font-weight: 700; }
.modal-footer {
    border-top: 1px solid rgba(216, 124, 255, 0.15);
}

/* ========== 9. 导航栏容器默认宽度（LoliMeow 标准 1320px）========== */
.boxmoe-container,
.container, .container-lg, .container-md, .container-sm {
    max-width: 1320px;
}

/* ========== 10. 登录 / 注册页背景渐变 ========== */
.lm-auth-bg {
    width: 100%;
    min-height: 100vh;
    /* 纵向 flex 居中（white-auth.css 的 body 也是 flex，嵌套行向 flex 会把子容器压缩变形） */
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    padding: 2rem 1rem;
    background:
        radial-gradient(ellipse at top, rgba(216, 124, 255, 0.2), transparent 60%),
        radial-gradient(ellipse at bottom, rgba(139, 92, 246, 0.18), transparent 60%),
        linear-gradient(180deg, #faf5ff 0%, #ffffff 100%);
}
/* 修复变形关键：flex-column 下直接子元素默认 shrink-to-fit，
   必须显式撑满宽度，否则 .container/.row 被压缩成内容宽度（登录卡变形根因）。
   4 个 user 认证页没有 .container 包裹 .row，用 max-width 代替容器限宽。 */
.lm-auth-bg > .container,
.lm-auth-bg > .row {
    width: 100%;
}
.lm-auth-bg > .row {
    max-width: 860px;
}

/* ========== 11. 禁用 white-theme 中与新变量冲突的粒子背景占位 ========== */
.particle { display: none !important; }

/* ========== 12. 面包屑标题区 ========== */
.breadcrumb-head {
    padding: 0.6rem 1.2rem;
    margin-bottom: 1.5rem;
    border-left: 5px solid #D87CFF;
    background: linear-gradient(90deg, rgba(216, 124, 255, 0.12), transparent);
    color: #4C1D95;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-size: 0.8rem;
    border-radius: 0 0.4rem 0.4rem 0;
}

/* ========== 13. blockquote（留言/描述时的 LoliMeow 样式）========== */
blockquote {
    background: rgba(172, 155, 215, 0.25);
    border-left: 10px solid #ac9bd7;
    margin: 1.5em 10px;
    padding: 0.5em 10px;
    quotes: "\201C" "\201D" "\2018" "\2019";
    border-radius: 0.5rem;
}

/* ========== 14. 后台页面额外适配 ========== */

/* ---- 14.1 覆盖 white-theme.css 的 body 奶油黄渐变 ----
   white-theme.css 给 body 设了 linear-gradient(lavender, cream) !important，
   用户没配置背景图时整个页面底色就是奶油黄。这里覆盖为白→淡紫渐变，
   紫色主题下干净协调；有背景图时 header.php 会用紫色蒙版进一步覆盖。 */
body.admin-theme-wrapper,
body.user-theme-wrapper {
    background: linear-gradient(180deg, #FFFFFF 0%, #F5F3FF 100%) !important;
    background-color: #F5F3FF !important;
}

.admin-theme-wrapper .sidebar,
.admin-theme-wrapper #sidebarMenu {
    background: linear-gradient(180deg, #4C1D95 0%, #6D28D9 100%) !important;
    border-right: none !important;
    border-radius: 0 !important;   /* 覆盖 white-theme 的 border-radius: 0 20px 20px 0 */
    box-shadow: none !important;    /* 覆盖 white-theme 的 box-shadow: 4px 0 20px */
}
.admin-theme-wrapper .sidebar .nav-link,
.admin-theme-wrapper #sidebarMenu .nav-link {
    color: #ffffff !important;
    border-radius: 0.6rem !important;
    margin: 0.2rem 0.6rem !important;
    padding: 0.6rem 0.85rem !important;
    transition: all 200ms ease;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    width: calc(100% - 1.2rem);
    font-size: 1rem !important;
    font-weight: 500 !important;
    letter-spacing: 0.02em;
}
/* 图标与文字同色（white-theme 的 body .nav-link 会把图标染成深灰，紫底上看不见） */
.admin-theme-wrapper .sidebar .nav-link i,
.admin-theme-wrapper #sidebarMenu .nav-link i {
    color: #ffffff !important;
    font-size: 1.05rem !important;
    width: 1.4em;
    text-align: center;
}
.admin-theme-wrapper .sidebar .nav-link:hover,
.admin-theme-wrapper .sidebar .nav-link.active,
.admin-theme-wrapper #sidebarMenu .nav-link:hover,
.admin-theme-wrapper #sidebarMenu .nav-link.active {
    background: rgba(255, 255, 255, 0.18) !important;
    color: #fff !important;
    transform: translateX(2px);
}

/* ===== admin + 用户中心布局关键修正 =====
   white-theme.css 会把 .sidebar 设为 fixed;top:0;bottom:0;left:0，在「col-md-3 + col-md-9」
   Bootstrap 网格下与正文完全重叠 —— 这里接管布局。
   设计升级（整列 sticky 方案）：桌面端侧栏整体吸在顶栏下方、高度撑满一屏，
   菜单超长时在侧栏内部滚动；紫色背景随整列走，不再出现「外层背景滚走、
   内层菜单贴在页面背景上」的中途截断割裂感。 */
.admin-theme-wrapper .sidebar {
    position: relative !important;
    top: auto !important;
    bottom: auto !important;
    left: auto !important;
    right: auto !important;
    z-index: auto !important;
    padding: 0 !important;
    border-right: none !important;
    box-shadow: 2px 0 14px rgba(76, 29, 149, 0.12) !important;
    border-radius: 0 !important;
}
/* 桌面端：fixed 定位侧栏，彻底摆脱 sticky 对父容器的依赖
   sticky 在以下情况会失效：
   - 祖先元素有 overflow: hidden/auto/scroll
   - flex 子元素的 height / align-self 冲突
   - 父容器高度不足
   fixed 方案：sidebar 直接锁定视口左侧，从顶栏底部到视口底部，绝对不会被截断。
   main 内容区用 margin-left 补偿 sidebar 宽度。 */
@media (min-width: 768px) {
    .admin-theme-wrapper .sidebar,
    .admin-theme-wrapper #sidebarMenu {
        position: fixed !important;
        top: 3.5rem !important;
        left: 0 !important;
        bottom: 0 !important;
        width: 15% !important;
        /* 不要设 height —— top + bottom:0 会自动计算出正确高度（从顶栏到底部）
           之前写 height: auto !important 反而让浏览器优先用 auto（由内容决定高度），
           导致 sidebar 只铺到菜单底部，下面露出 body 背景 */
        padding: 0 !important;
        margin: 0 !important;
        overflow-y: auto !important;
        overflow-x: hidden !important;
        z-index: 1020 !important;
    }

    /* main 内容区：补偿 sidebar 宽度 */
    .admin-theme-wrapper main.col-md-9,
    .admin-theme-wrapper main.col-lg-10 {
        margin-left: 15% !important;
        width: 85% !important;
    }
}
/* 窄屏（<768px）：侧栏是 collapse 堆叠/展开模式，保持自然高度随页面滚动 */
@media (max-width: 767.98px) {
    .admin-theme-wrapper .sidebar,
    .admin-theme-wrapper #sidebarMenu {
        position: static !important;
        height: auto !important;
        max-height: none !important;
        overflow: visible !important;
    }
}
/* 旧模板的内层 sticky 容器废弃：整列滚动接管后，双层 sticky 会错位裁切菜单 */
.admin-theme-wrapper .sidebar .sidebar-sticky,
.admin-theme-wrapper #sidebarMenu .sidebar-sticky {
    position: static !important;
    height: auto !important;       /* 覆盖 white-theme 的 height: calc(100vh - 48px) */
    max-height: none !important;
    overflow: visible !important;
    padding: 0 !important;        /* 覆盖 pt-3 pb-4，让 nav-link 的 margin 自己管间距 */
}
/* 紫底细白滚动条（不抢视觉） */
.admin-theme-wrapper .sidebar,
.admin-theme-wrapper #sidebarMenu {
    scrollbar-width: thin;
    scrollbar-color: rgba(255, 255, 255, 0.30) transparent;
}
.admin-theme-wrapper .sidebar::-webkit-scrollbar,
.admin-theme-wrapper #sidebarMenu::-webkit-scrollbar { width: 6px; }
.admin-theme-wrapper .sidebar::-webkit-scrollbar-track,
.admin-theme-wrapper #sidebarMenu::-webkit-scrollbar-track { background: transparent; }
.admin-theme-wrapper .sidebar::-webkit-scrollbar-thumb,
.admin-theme-wrapper #sidebarMenu::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.30);
    border-radius: 3px;
}
.admin-theme-wrapper .sidebar::-webkit-scrollbar-thumb:hover,
.admin-theme-wrapper #sidebarMenu::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.45); }

/* 移动端展开侧栏时要叠在正文上方（.show 是 collapse 展开态）。特异性要盖过 d-none d-md-block。 */
.admin-theme-wrapper #sidebarMenu.show {
    z-index: 1031 !important;
}

/* ===== 移动端导航开关按钮：保证热区 ≥ 44x44（WCAG AA），同时把深紫底上的 toggler-icon 反色。 ===== */
.admin-theme-wrapper .navbar-toggler {
    width: 44px !important;
    height: 44px !important;
    padding: 6px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 50% !important;
}
.admin-theme-wrapper .navbar-toggler:focus,
.admin-theme-wrapper .navbar-toggler:active {
    outline: none !important;
    box-shadow: 0 0 0 2px rgba(240, 171, 252, 0.6) !important;
}
.admin-theme-wrapper .navbar-toggler .navbar-toggler-icon {
    filter: invert(1) grayscale(100%) brightness(160%);
    background-size: 70% 70%;
    width: 28px;
    height: 28px;
}

.admin-theme-wrapper .navbar {
    background: linear-gradient(90deg, #6D28D9 0%, #8B5CF6 100%) !important;
    border-bottom: none !important;
}
/* LoliMeow 原生层把 .boxmoe_header .navbar 定为 position:absolute（脱离文档流），
   会盖住下方侧栏首项「仪表板」；这里恢复为 sticky 吸顶并留在文档流内。
   header 本身也提层，双保险防止任何形式的遮挡。 */
/* 顶栏整体 fixed：navbar 脱离文档流锁定视口顶部
   注意：fixed 元素不占文档流空间，body 需要 padding-top 防止内容被遮挡 */
.admin-theme-wrapper .boxmoe_header {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    z-index: 1030;
}
.admin-theme-wrapper .boxmoe_header .navbar {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    z-index: 1030 !important;
    transform: none !important;
    height: 3.5rem !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}
/* body 留出顶栏空间，防止 main 内容被 fixed navbar 遮挡 */
.admin-theme-wrapper {
    padding-top: 3.5rem !important;
}
.admin-theme-wrapper .navbar-brand {
    color: #fff !important;
    font-size: 1.05rem !important;
}

/* LoliMeow 原生 body{font-size:0.8rem} 导致全站菜单/正文字过小——后台与用户中心整体放大 */
.admin-theme-wrapper {
    font-size: 0.95rem;
}

/* 后台 sidebar 分组标题（深色背景上）：白字高对比 + 点击热区 ≥44px。
   特异性 (0,3,0)+important 三重写（heading 本体 / 内部 span / 箭头 icon），
   确保任何底层主题都无法把标题染回深色。 */
.admin-theme-wrapper .sidebar h6.sidebar-heading,
.admin-theme-wrapper #sidebarMenu h6.sidebar-heading {
    color: #ffffff !important;
    letter-spacing: 0.06em;
    font-size: 0.9rem !important;
    font-weight: 600 !important;
    text-transform: none;
    background: rgba(255, 255, 255, 0.07);
    border: 1px solid rgba(255, 255, 255, 0.14);
    padding: 0.65rem 0.7rem !important;
    margin-top: 0.9rem;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 44px;
    border-radius: 0.5rem;
    user-select: none;
    -webkit-tap-highlight-color: transparent;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
    transition: background 200ms ease, color 200ms ease;
}
.admin-theme-wrapper .sidebar h6.sidebar-heading span,
.admin-theme-wrapper #sidebarMenu h6.sidebar-heading span {
    color: #ffffff !important;
}
.admin-theme-wrapper .sidebar h6.sidebar-heading .collapse-icon,
.admin-theme-wrapper #sidebarMenu h6.sidebar-heading .collapse-icon {
    color: #ffffff !important;
}
.admin-theme-wrapper .sidebar h6.sidebar-heading:hover,
.admin-theme-wrapper .sidebar h6.sidebar-heading:active,
.admin-theme-wrapper #sidebarMenu h6.sidebar-heading:hover,
.admin-theme-wrapper #sidebarMenu h6.sidebar-heading:active {
    background: rgba(255, 255, 255, 0.16);
    color: #ffffff !important;
}
.admin-theme-wrapper .sidebar h6.sidebar-heading.text-warning,
.admin-theme-wrapper #sidebarMenu h6.sidebar-heading.text-warning {
    color: #FDE68A !important;
    border-color: rgba(253, 230, 138, 0.35);
}
.admin-theme-wrapper .sidebar-heading span {
    flex: 1 1 auto;
}
.admin-theme-wrapper .sidebar-heading .collapse-icon {
    transition: transform 200ms ease;
    flex: 0 0 auto;
}
.admin-theme-wrapper .sidebar-heading.collapsed .collapse-icon {
    transform: rotate(-90deg);
}

/* ===== 首帧前折叠状态预应用：由 <head> 内同步 inline script 把 localStorage 写入 <html data-menu-xxx="collapsed">，
   页面初次绘制就直接是折叠态，避免 DOMContentLoaded 之后再加 .collapsed 导致「先展开再收起」的闪烁。 */
.admin-theme-wrapper [data-menu-channel-menu="collapsed"]    + * #channel-menu,
html[data-menu-channel-menu="collapsed"]    .admin-theme-wrapper #channel-menu,
html[data-menu-domain-menu="collapsed"]     .admin-theme-wrapper #domain-menu,
html[data-menu-user-menu="collapsed"]       .admin-theme-wrapper #user-menu,
html[data-menu-content-menu="collapsed"]    .admin-theme-wrapper #content-menu,
html[data-menu-system-menu="collapsed"]     .admin-theme-wrapper #system-menu,
html[data-menu-maintenance-menu="collapsed"].admin-theme-wrapper #maintenance-menu {
    /* 注意：与 JS 加的 .collapsed 效果保持一致（只影响首帧）。 */
    max-height: 0 !important;
    opacity: 0;
    pointer-events: none;
}
/* 对应 heading 箭头首帧前折叠态就显示为 ← */
html[data-menu-channel-menu="collapsed"]    .admin-theme-wrapper h6[onclick*="channel-menu"]    .collapse-icon,
html[data-menu-domain-menu="collapsed"]     .admin-theme-wrapper h6[onclick*="domain-menu"]     .collapse-icon,
html[data-menu-user-menu="collapsed"]       .admin-theme-wrapper h6[onclick*="user-menu"]       .collapse-icon,
html[data-menu-content-menu="collapsed"]    .admin-theme-wrapper h6[onclick*="content-menu"]    .collapse-icon,
html[data-menu-system-menu="collapsed"]     .admin-theme-wrapper h6[onclick*="system-menu"]     .collapse-icon,
html[data-menu-maintenance-menu="collapsed"].admin-theme-wrapper h6[onclick*="maintenance-menu"].collapse-icon {
    transform: rotate(-90deg) !important;
}

/* 后台 sidebar 菜单组折叠动画：放弃 display:none!important，交给 max-height/opacity 过渡
   （white-theme.css + dashboard-custom.css 均已提供 max-height 过渡实现） */
.admin-theme-wrapper .menu-group {
    overflow: hidden;
    transition: max-height 280ms ease, opacity 280ms ease, margin 280ms ease;
    max-height: 2000px;
    opacity: 1;
}
.admin-theme-wrapper .menu-group.collapsed {
    max-height: 0 !important;
    opacity: 0;
    margin-top: 0;
    margin-bottom: 0;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    /* 动画结束后再彻底隐藏内容避免 focus 可达；交给 max-height=0 + opacity=0 即可 */
    pointer-events: none;
}
.admin-theme-wrapper .menu-group:not(.collapsed) {
    pointer-events: auto;
}

/* 后台 mobile 侧栏展开时去除圆角背景 */
#sidebarMenu.show,
.admin-theme-wrapper #sidebarMenu.show {
    display: block !important;
    background: linear-gradient(180deg, #4C1D95 0%, #6D28D9 100%);
    border-radius: 0 0 1rem 1rem;
    box-shadow: 0 6px 16px rgba(76, 29, 149, 0.3);
}
