/* 布局公共样式 */
*{margin:0;padding:0;box-sizing:border-box}
.page-container{background:var(--theme-gradient);padding:10px;padding-left:280px;padding-top:76px;min-height:100vh;transition:padding-left .25s ease}
.header-bar{position:fixed;top:10px;left:280px;right:10px;height:56px;background:rgba(255,255,255,.95);border-radius:12px;padding:0 24px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 4px 20px rgba(0,0,0,.1);z-index:2001;transition:left .25s ease}
.header-bar .back-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;background:var(--theme-gradient);color:#fff;text-decoration:none;transition:all .3s}
.header-bar .back-btn:hover{transform:translateX(-3px);box-shadow:0 4px 12px rgba(var(--theme-primary-rgb),.4)}
.header-bar .back-btn i{font-size:18px}
.header-bar .nav-actions{display:flex;gap:12px;align-items:center}
.header-bar .nav-actions a{display:flex;align-items:center;gap:6px;padding:8px 16px;border-radius:8px;font-size:14px;color:#666;transition:all .2s;text-decoration:none}
.header-bar .nav-actions a:hover{background:#f5f5f5;color:#333}
.header-bar .nav-actions a.logout{color:#e53935}
.header-bar .nav-actions a.logout:hover{background:#ffebee}
.header-bar .user-dropdown{position:relative}
.header-bar .user-dropdown .dropdown-menu{position:absolute;top:100%;right:0;margin-top:8px;background:#fff;border-radius:10px;box-shadow:0 8px 32px rgba(0,0,0,.15);min-width:180px;display:none;z-index:101}
.header-bar .user-dropdown .dropdown-menu.show{display:block}
.header-bar .user-dropdown .dropdown-menu a{display:flex;align-items:center;gap:10px;padding:10px 16px;color:#4b5563;text-decoration:none;transition:all .2s}
.header-bar .user-dropdown .dropdown-menu a:hover{background:#f9fafb;color:var(--theme-primary)}
.header-bar .user-dropdown .dropdown-menu a:first-child{border-radius:10px 10px 0 0}
.header-bar .user-dropdown .dropdown-menu a:last-child{border-radius:0 0 10px 10px}
.menu-area{position:fixed;top:10px;left:10px;bottom:10px;width:260px;background:#fff;border-radius:16px;box-shadow:0 8px 32px rgba(0,0,0,.1);overflow:hidden;display:flex;flex-direction:column;z-index:2000;transition:width .25s ease}
/* 简洁模式下的布局联动 */
body.menu-compact .page-container{padding-left:240px;transition:padding-left .25s ease}
body.menu-compact .header-bar{left:240px;transition:left .25s ease}
.menu-area .menu-header{
    background:var(--theme-gradient);
    padding:12px 14px;
    color:#fff;
    flex-shrink:0;
    display:flex;
    align-items:center;
    gap:10px;
    text-align:left;
}
.menu-area .menu-header .app-icon{
    width:36px;height:36px;border-radius:10px;
    background:rgba(255,255,255,.25);
    display:inline-flex;align-items:center;justify-content:center;
    font-size:18px;margin-bottom:0;flex-shrink:0;
    box-shadow:0 2px 8px rgba(0,0,0,.08);
}
.menu-area .menu-header .app-icon img{width:100%;height:100%;border-radius:10px;object-fit:cover}
.menu-area .menu-header .app-name{
    font-size:14px;font-weight:700;margin-bottom:0;
    flex:1;min-width:0;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
/* 描述/角标改横排顶栏后隐藏，把高度留给菜单列表 */
.menu-area .menu-header .app-desc,
.menu-area .menu-header .app-badge{display:none}
.menu-area .menu-nav{flex:1;min-height:0;overflow-y:auto;padding:8px 0}
.menu-area .menu-nav .menu-group{margin-bottom:2px}
.menu-area .menu-nav .menu-item{display:flex;align-items:center;gap:10px;padding:11px 16px;margin:2px 10px;border-radius:8px;color:#4b5563;font-size:14px;cursor:pointer;transition:all .2s;text-decoration:none}
.menu-area .menu-nav .menu-item:hover{background:#f3f4f6;color:var(--theme-primary)}
.menu-area .menu-nav .menu-item.active{background:var(--theme-gradient);color:#fff}
.menu-area .menu-nav .menu-item i{font-size:16px;width:20px;text-align:center}
.menu-area .menu-nav .menu-item img,
.menu-area .menu-nav .menu-item .menu-icon-img{width:16px!important;height:16px!important;max-width:16px!important;max-height:16px!important;border-radius:3px;object-fit:contain;flex-shrink:0;display:inline-block;vertical-align:middle}
.menu-area .menu-nav .menu-item .arrow{margin-left:auto;font-size:12px;opacity:.6;transition:transform .2s}
.menu-area .menu-nav .menu-group.open .menu-item .arrow{transform:rotate(90deg)}
.menu-area .menu-nav .sub-menu{padding-left:0;display:none}
.menu-area .menu-nav .menu-group.open>.sub-menu{
    display:block;
    /* 头栏压矮后上调上限：侧栏可视高 − 头栏 − 分组标题 − 边距 */
    max-height:min(72vh,calc(100vh - 145px));
    overflow-y:auto;
    overflow-x:hidden;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:thin;
}
.menu-area .menu-nav .sub-menu .menu-item{padding-left:46px;margin:2px 10px}
.menu-area .menu-nav .sub-menu .sub-menu .menu-item{padding-left:72px}
/* 三级嵌套仍跟在二级下，不单独再套一层高度，避免双重滚动条 */
.menu-area .menu-nav .sub-menu .sub-menu{
    max-height:none;
    overflow:visible;
}
.menu-area.compact .menu-nav .menu-group.open>.sub-menu{
    max-height:min(74vh,calc(100vh - 125px));
}
.main-area{position:relative;background:#fff;border-radius:16px;box-shadow:0 8px 32px rgba(0,0,0,.1);overflow-y:auto;overflow-x:hidden;height:calc(100vh - 86px)}
.main-area .think-page-body{padding:24px}
/* DIY 编辑器铺满内容区，去掉外层滚动条；预览超出只在画布内滚动 */
html.ed-embedded,html.ed-embedded body,
html.mh-diy-embedded,html.mh-diy-embedded body{overflow:hidden!important;height:100%;max-height:100%}
.page-container:has(.ed),
.page-container:has(.mh-diy),
.page-container.is-mall-diy{overflow:hidden;height:100vh;max-height:100vh}
.main-area:has(.ed),
.main-area:has(.mh-diy),
.main-area.is-diy-editor,
.main-area.is-mall-diy{overflow:hidden!important;height:calc(100vh - 86px);max-height:calc(100vh - 86px);overscroll-behavior:none}
.main-area:has(.ed)>.think-page-body,
.main-area:has(.mh-diy)>.think-page-body,
.main-area.is-diy-editor>.think-page-body,
.main-area.is-mall-diy>.think-page-body{padding:0!important;height:100%;max-height:100%;overflow:hidden;display:flex;flex-direction:column;min-height:0}
.main-area:has(.ed) .ed,
.main-area.is-diy-editor .ed{flex:1;min-height:0;height:100%;max-height:100%;overflow:hidden}
.main-area:has(.mh-diy) .layui-card,
.main-area.is-mall-diy .layui-card{flex:1 1 auto;min-height:0;height:100%;max-height:100%;margin:0;overflow:hidden;display:flex;flex-direction:column}
.main-area:has(.mh-diy) .layui-card-header,
.main-area.is-mall-diy .layui-card-header,
.main-area:has(.mh-diy) .layui-card-line,
.main-area.is-mall-diy .layui-card-line{flex-shrink:0}
.main-area:has(.mh-diy) .layui-card-body,
.main-area.is-mall-diy .layui-card-body{flex:1 1 auto;min-height:0;height:0;overflow:hidden;padding:0!important;display:flex;flex-direction:column}
.main-area:has(.mh-diy) .layui-card-html,
.main-area.is-mall-diy .layui-card-html{flex:1 1 auto;min-height:0;height:0;overflow:hidden;display:flex;flex-direction:column}
.main-area:has(.mh-diy) .mh-diy,
.main-area.is-mall-diy .mh-diy{flex:1 1 auto;min-height:0;height:0;max-height:100%;overflow:hidden;display:flex;flex-direction:column;margin:0}
.main-area .think-page-loader{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(255,255,255,.9);display:flex;align-items:center;justify-content:center;z-index:100}
.main-area .think-page-loader .loader{width:40px;height:40px;border:3px solid #e5e7eb;border-top-color:var(--theme-primary);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.layui-btn-primary:hover{background:var(--theme-primary)!important;border-color:var(--theme-primary)!important;color:#fff!important}
.layui-btn-normal{background:var(--theme-gradient)!important;border-color:var(--theme-primary)!important}
.layui-btn-normal:hover{opacity:.9!important}
.layui-btn:not(.layui-btn-primary):not(.layui-btn-danger):not(.layui-btn-warm):not(.layui-btn-disabled){background:var(--theme-gradient)!important;border-color:var(--theme-primary)!important;color:#fff!important}
.layui-btn:not(.layui-btn-primary):not(.layui-btn-danger):not(.layui-btn-warm):not(.layui-btn-disabled):hover{opacity:.9!important}
.layui-tab-brief>.layui-tab-title .layui-this,.layui-tab-title .layui-this{color:var(--theme-primary)!important}
.layui-tab-brief>.layui-tab-title .layui-this:after,.layui-tab-title .layui-this:after{border-bottom-color:var(--theme-primary)!important}
.layui-form-onswitch{border-color:var(--theme-primary)!important;background-color:var(--theme-primary)!important}
.main-area .think-box-notify a{color:var(--theme-primary)}
.main-area .think-box-notify a:hover{color:var(--theme-primary-dark)}

/* ===== 全局弹窗滚动修复 ===== */
/* 弹窗内容区超出视口时自动滚动 */
.layui-layer-page .layui-layer-content{max-height:calc(100vh - 110px);overflow-y:auto;overflow-x:hidden}
/* 弹窗内表单底部留白，避免保存按钮被遮挡 */
.layui-layer-page .layui-layer-content>form,.layui-layer-page .layui-layer-content>.layui-card,.layui-layer-page .layui-layer-content>.think-box-shadow{padding-bottom:20px}