/* ================================================================
   tenant.css — 租户端样式表（纯净底层框架）
   ================================================================
   [1]  CSS变量与主题色
   [2]  全局重置与字体
   [3]  主框架布局（Header/Side/Body/Footer/Tabs）
   [4]  页面内容区（page-container/content-card）
   [5]  弹窗公共骨架（in-modal-iframe基础重置）
   [6]  弹窗-普通表单（data-layout="form"）
   [8]  弹窗-复合表单（data-layout="complex"）
   [9]  输入框尺寸系统（input-sm/md/lg/xl/full）
   [10] 列表页样式（搜索栏/表格/分页）
   [11] 组件样式（按钮/标签/树/上传/多选）
   [12] 页面专属样式（登录/工作台/仪表盘）
   注：[7] 单据式布局（data-layout="bill"）为 ERP 业务样式，纯净版不迁入
   ================================================================ */

/* ================================================================
   [1] CSS变量与主题色
   ================================================================ */
:root {
    /* 主色 - 青瓷色（teal，沉稳高级的青绿色调） */
    --primary-color: #0d9488;
    --primary-light: #14b8a6;
    --primary-dark: #0f766e;
    --primary-softer: rgba(13, 148, 136, 0.08);

    /* 侧栏 - 深石板蓝（恢复底层框架参考配色：深色侧栏 + 松石绿激活 + 白色文字） */
    --bg-side: linear-gradient(180deg, #1e293b 0%, #0f172a 100%);
    --bg-side-hover: #2a2e38;
    --bg-side-active: #14917C;
    --bg-side-active-soft: #0f766e;   /* 菜单选中/展开底色：深松石绿实底，明显且不刺眼 */
    --text-side: #FFFFFF;
    --text-side-secondary: #CBD5E1;
    --side-border: #2a3444;
    --side-shadow: rgba(15, 20, 28, 0.25);

    /* 多彩点缀（8色装饰，用于 stat-icon、标签、徽章等） */
    --accent-red:    #EF4444;
    --accent-orange: #F59E0B;
    --accent-green:  #10B981;
    --accent-blue:   #3B82F6;
    --accent-amber:  #EAB308;
    --accent-purple: #A855F7;
    --accent-cyan:   #06B6D4;
    --accent-pink:   #EC4899;

    /* 背景与边框 - 浅灰白系 */
    --border-light: #e2e8f0;
    --border-color: #d1d5db;
    --bg-content: #f5f7fa;
    --bg-card: #FFFFFF;
    --bg-soft: #F7F8FA;

    /* 文字 */
    --text-primary: #2d3748;
    --text-secondary: #718096;
    --text-muted: #a0aec0;

    /* 危险色 */
    --danger: #EF4444;

    /* 尺寸 */
    --header-height: 60px;
    --side-width: 200px;
    --side-collapsed-width: 52px;
    --footer-height: 44px;

    /* celadon 历史变量继承自 common.css（值已统一映射为松石绿，与 --primary-color 一致） */
}

* { margin: 0; padding: 0; box-sizing: border-box; }

html, body {
    height: 100%;
    overflow: auto;
    background: var(--bg-content);
    /* 字体对齐底层框架参考项目：WorkSans（拉丁）+ 阿里巴巴普惠体（中文） */
    font-family: 'WorkSans', 'AlibabaPuHuiTi', -apple-system, BlinkMacSystemFont, "Microsoft YaHei", "PingFang SC", sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body.layui-layout-body { overflow: hidden; }

.layui-layout-admin { width: 100%; height: 100%; }

.layui-layout-admin .layui-header {
    position: fixed;
    top: 0; left: 0; right: 0;
    height: var(--header-height);
    line-height: var(--header-height);
    background: #fff;
    border-bottom: 1px solid var(--border-light);
    box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
    z-index: 1000;
}

.layui-layout-admin .layui-logo {
    position: fixed;
    top: 0; left: 0;
    width: var(--side-width);
    height: var(--header-height);
    line-height: var(--header-height);
    background: var(--bg-side);
    background-size: 100% 100vh;
    background-position: top center;
    background-repeat: no-repeat;
    color: #FFFFFF;
    font-size: 17px;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    z-index: 1001;
    letter-spacing: 1px;
    border-bottom: none;
    border-right: none;
    transition: all 0.3s ease;
    overflow: hidden;
    white-space: nowrap;
    box-shadow: none;
    cursor: pointer;
}

.layui-layout-admin .layui-logo .layui-icon {
    font-size: 22px;
    color: #FFFFFF;
    flex-shrink: 0;
    filter: drop-shadow(0 0 6px rgba(255, 255, 255, 0.35));
}

.layui-layout-admin .layui-logo span {
    transition: opacity 0.2s ease;
}

body.side-spread .layui-layout-admin .layui-logo {
    width: 52px;
    justify-content: center;
}

body.side-spread .layui-layout-admin .layui-logo span {
    opacity: 0;
    width: 0;
    overflow: hidden;
}

.layui-layout-admin .layui-header .layui-nav:not(.layui-layout-right) {
    position: absolute;
    left: var(--side-width);
    right: 0; top: 0;
    height: var(--header-height);
    line-height: var(--header-height);
    background: transparent;
    padding: 0;
    transition: left 0.3s ease;
}

body.side-spread .layui-layout-admin .layui-header .layui-nav:not(.layui-layout-right) {
    left: 52px;
}

.layui-layout-admin .layui-header .layui-nav.layui-layout-right {
    position: absolute;
    right: 0; left: auto; top: 0;
    height: var(--header-height);
    line-height: var(--header-height);
    background: transparent;
    padding: 0;
}

.layui-layout-admin .layui-header .layui-nav .layui-nav-item {
    line-height: var(--header-height);
    height: var(--header-height);
}

.layui-layout-admin .layui-header .layui-nav .layui-nav-item a {
    height: var(--header-height);
    line-height: var(--header-height);
    color: #4a5568;
    padding: 0 16px;
    transition: all 0.2s ease;
}

.layui-layout-admin .layui-header .layui-nav .layui-nav-item a:hover {
    color: var(--primary-color);
    background: var(--primary-softer);
}

.layui-layout-admin .layui-header .layui-nav .layui-nav-child {
    top: var(--header-height);
    border: 1px solid var(--border-light);
    box-shadow: 0 4px 12px rgba(0, 21, 41, 0.08);
    background: #fff;
    padding: 4px 0;
    border-radius: 4px;
}

.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd { margin: 0; }

.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd a {
    height: 38px;
    line-height: 38px;
    color: #4a5568;
    padding: 0 16px;
}

.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd a:hover {
    background: var(--primary-softer);
    color: var(--primary-color);
}

.ls-user-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #fff;
    border: 1px solid var(--border-light, #E4E9ED);
    color: #9CA8B5;
    margin-right: 8px;
    vertical-align: middle;
    position: relative;
    overflow: hidden;
    flex-shrink: 0;
}

.ls-tenant-info .layui-nav-item a {
    display: inline-flex;
    align-items: center;
    gap: 16px;
    padding: 0 18px !important;
}

.ls-info-item {
    display: inline-flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    line-height: 1.3;
    font-size: 13px;
    color: #4a5568;
    vertical-align: middle;
}

.ls-info-item i {
    display: none;
}

.ls-info-item em {
    font-style: normal;
    font-size: 11px;
    color: #a0aec0;
    margin-bottom: 2px;
    font-weight: 400;
}

.ls-info-item:not(:last-child) {
    border-right: 1px solid var(--border-light);
    padding-right: 16px;
}

.ls-user-avatar img {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
}

.layui-layout-admin .layui-side {
    position: fixed;
    top: var(--header-height);
    left: 0; bottom: 0;
    width: var(--side-width);
    background: var(--bg-side) !important;
    background-size: 100% 100vh !important;
    background-position: top center !important;
    background-repeat: no-repeat !important;
    overflow: hidden;
    z-index: 999;
    border-right: 1px solid var(--side-border);
    box-shadow: 2px 0 10px var(--side-shadow);
    transition: width 0.3s ease;
}

.layui-layout-admin .layui-side.layui-bg-black,
.layui-layout-admin .layui-side.layui-side-menu {
    background: var(--bg-side) !important;
    background-size: 100% 100vh !important;
    background-position: top center !important;
    background-repeat: no-repeat !important;
}

body.side-spread .layui-layout-admin .layui-side {
    width: 52px;
}

.layui-side-scroll {
    width: calc(var(--side-width) + 20px);
    height: 100%;
    overflow-x: hidden;
    overflow-y: auto;
    /* 隐藏侧栏滚动条（Firefox + IE/Edge） */
    scrollbar-width: none;
    -ms-overflow-style: none;
    transition: width 0.3s ease;
}

body.side-spread .layui-side-scroll {
    width: 72px;
}

.layui-side-scroll::-webkit-scrollbar { width: 4px; }
.layui-side-scroll::-webkit-scrollbar-track { background: transparent; }
.layui-side-scroll::-webkit-scrollbar-thumb {
    background: rgba(100, 116, 139, 0.25);
    border-radius: 2px;
}
.layui-side-scroll::-webkit-scrollbar-thumb:hover {
    background: rgba(100, 116, 139, 0.45);
}

.layui-nav-tree {
    width: var(--side-width);
    background: transparent !important;
    padding: 8px 0;
    transition: width 0.3s ease;
}

body.side-spread .layui-nav-tree {
    width: 52px;
}

.layui-nav-tree .layui-nav-item {
    background: transparent;
    margin: 2px 8px;
    position: relative;
    border-radius: 4px;
}

.layui-nav-tree .layui-nav-item a {
    height: 42px;
    line-height: 42px;
    padding: 0 16px;
    color: var(--text-side) !important;
    background: transparent !important;
    border-left: 3px solid transparent;
    transition: all 0.2s ease;
    font-size: 14px;
    position: relative;
    overflow: hidden;
    white-space: nowrap;
    border-radius: 0;
    margin: 0;
    /* flex 布局：让图标、文字、箭头水平并排垂直居中 */
    display: flex;
    align-items: center;
}
/* 箭头在"文字"和"菜单右边缘"之间的中间位置 */
.layui-nav-tree .layui-nav-item .layui-nav-more {
    position: static;
    top: auto;
    right: auto;
    margin-left: auto;
    margin-right: auto;
}

.layui-nav-tree .layui-nav-item a i {
    width: 18px;
    text-align: center;
    margin-right: 10px;
    flex-shrink: 0;
    font-size: 16px;
}

.layui-nav-tree .layui-nav-item a span {
    transition: opacity 0.2s ease;
}

body.side-spread .layui-nav-tree .layui-nav-item {
    margin: 2px 0;
}

body.side-spread .layui-nav-tree .layui-nav-item a {
    padding: 0;
    text-align: center;
    border-left: 3px solid transparent;
    display: flex;
    align-items: center;
    justify-content: center;
}

body.side-spread .layui-nav-tree .layui-nav-item a i {
    margin-right: 0;
    font-size: 18px;
}

body.side-spread .layui-nav-tree .layui-nav-item a span {
    opacity: 0;
    width: 0;
    display: none;
}

body.side-spread .layui-nav-tree .layui-nav-item.layui-nav-itemed > a,
body.side-spread .layui-nav-tree .layui-nav-item.layui-this > a {
    background: var(--bg-side-active) !important;
    color: #fff !important;
    border-radius: 8px;
}

body.side-spread .layui-nav-tree .layui-nav-item .layui-nav-more {
    display: none !important;
}

body.side-spread .layui-nav-tree .layui-nav-item .layui-nav-child {
    display: none !important;
}

.side-float-menu {
    position: fixed;
    left: 52px;
    width: 180px;
    background: #fff;
    border: 1px solid #e5e7eb;
    box-shadow: 2px 2px 12px rgba(0, 0, 0, .15);
    padding: 8px 0;
    z-index: 1001;
    border-radius: 0 6px 6px 0;
    max-height: calc(100vh - 80px);
    overflow-y: auto;
}

.side-float-menu dd {
    margin: 0;
    display: block;
    width: 100%;
}

.side-float-menu dd a {
    display: block;
    padding: 10px 16px;
    color: #374151;
    font-size: 14px;
    line-height: 1.5;
    text-align: left;
    height: auto;
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: all 0.15s ease;
}

.side-float-menu dd a:hover {
    color: var(--primary-color);
    background: var(--primary-softer, rgba(74,155,126,0.08));
}

.side-float-menu dd a.layui-this {
    background: var(--primary-softer, rgba(74,155,126,0.08));
    color: var(--primary-color);
    font-weight: 500;
}

/* ===== 到期/宽限期提示横幅 ===== */
.ls-expire-banner{
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:8px 16px;
    font-size:13px;
    line-height:1.5;
    border-bottom:1px solid rgba(0,0,0,.06);
}
.ls-expire-banner .ls-expire-content{
    display:flex;
    align-items:center;
    gap:8px;
    flex:1;
    min-width:0;
}
.ls-expire-banner .ls-expire-content .layui-icon{
    font-size:18px;
    flex-shrink:0;
}
.ls-expire-banner .ls-expire-text{
    flex:1;
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.ls-expire-banner .ls-expire-actions{
    display:flex;
    align-items:center;
    gap:8px;
    flex-shrink:0;
    margin-left:12px;
}
.ls-expire-banner .ls-expire-btn{
    padding:3px 12px;
    border-radius:3px;
    background:#fff;
    color:#374151;
    font-weight:500;
    text-decoration:none;
    border:1px solid rgba(0,0,0,.15);
    transition:all .2s;
}
.ls-expire-banner .ls-expire-btn:hover{
    background:rgba(255,255,255,.85);
    border-color:rgba(0,0,0,.25);
}
.ls-expire-banner .ls-expire-close{
    color:rgba(255,255,255,.85);
    font-size:14px;
    padding:2px 4px;
    cursor:pointer;
    text-decoration:none;
}
.ls-expire-banner .ls-expire-close:hover{ color:#fff; }

/* 将到期（黄色提示） */
.ls-expire-expiring{
    background:#fff7e6;
    color:#92400e;
}
.ls-expire-expiring .ls-expire-btn{ background:#92400e; color:#fff; border-color:#92400e; }
.ls-expire-expiring .ls-expire-btn:hover{ background:#78350f; border-color:#78350f; }
.ls-expire-expiring .ls-expire-close{ color:#92400e; }
.ls-expire-expiring .ls-expire-close:hover{ color:#78350f; }

/* 宽限期中（橙色，更紧急） */
.ls-expire-grace{
    background:#fef3c7;
    color:#7c2d12;
}
.ls-expire-grace .ls-expire-btn{ background:#7c2d12; color:#fff; border-color:#7c2d12; }
.ls-expire-grace .ls-expire-btn:hover{ background:#581c0e; border-color:#581c0e; }
.ls-expire-grace .ls-expire-close{ color:#7c2d12; }
.ls-expire-grace .ls-expire-close:hover{ color:#581c0e; }

/* 已过期（红色警告） */
.ls-expire-expired{
    background:#fee2e2;
    color:#991b1b;
}
.ls-expire-expired .ls-expire-btn{ background:#991b1b; color:#fff; border-color:#991b1b; }
.ls-expire-expired .ls-expire-btn:hover{ background:#7f1d1d; border-color:#7f1d1d; }
.ls-expire-expired .ls-expire-close{ color:#991b1b; }

/* 已停用 / 待清理 / 已清理（灰色） */
.ls-expire-disabled,
.ls-expire-pending_clean,
.ls-expire-cleaned{
    background:#f3f4f6;
    color:#4b5563;
}
.ls-expire-disabled .ls-expire-btn,
.ls-expire-pending_clean .ls-expire-btn,
.ls-expire-cleaned .ls-expire-btn{ background:#4b5563; color:#fff; border-color:#4b5563; }
.ls-expire-disabled .ls-expire-close,
.ls-expire-pending_clean .ls-expire-close,
.ls-expire-cleaned .ls-expire-close{ color:#4b5563; }

.layui-nav-tree .layui-nav-item a:hover {
    color: var(--bg-side-active) !important;
    background: var(--bg-side-hover) !important;
    border-left-color: var(--bg-side-active);
}

.layui-nav-tree .layui-nav-item.layui-nav-itemed > a,
.layui-nav-tree .layui-nav-item.layui-this > a,
.layui-nav-tree .layui-nav-item.ls-menu-active > a {
    background: var(--bg-side-active-soft) !important;
    color: var(--text-side-secondary) !important;

    font-weight: 400;
    border-radius: 0;
    margin: 0;
    box-shadow: none;
}

.layui-nav-tree .layui-nav-child {
    background: transparent !important;
    padding: 4px 0;
}

.layui-nav-tree .layui-nav-child dd { margin: 1px 0; }

.layui-nav-tree .layui-nav-child dd a {
    height: 38px;
    line-height: 38px;
    padding-left: 46px;
    color: var(--text-side-secondary);
    background: transparent !important;
    font-size: 13px;
    border-left: 3px solid transparent;
    transition: all 0.2s ease;
    border-radius: 0;
    margin: 0;
    display: flex;
    align-items: center;
}
.layui-nav-tree .layui-nav-child dd a:hover {
    color: var(--bg-side-active) !important;
    background: var(--bg-side-hover) !important;
    border-left-color: var(--bg-side-active);
}

/* 子菜单图标样式 */
.layui-nav-tree .layui-nav-child dd a > .layui-icon {
    font-size: 14px;
    width: 18px;
    margin-right: 6px;
    margin-left: -20px;
    text-align: center;
    opacity: 0.85;
}
.layui-nav-tree .layui-nav-child dd a:hover > .layui-icon,
.layui-nav-tree .layui-nav-child dd.layui-this a > .layui-icon {
    opacity: 1;
}

.layui-nav-tree .layui-nav-child dd.layui-this a,
.layui-nav-tree .layui-nav-child dd.ls-menu-active > a {
    background: var(--bg-side-active-soft) !important;
    color: var(--text-side-secondary) !important;

    font-weight: 400;
    border-radius: 0;
    margin: 0;
    box-shadow: none;
}

.layui-nav-tree .layui-nav-bar { display: none; }

/* ===== 三级菜单样式 ===== */
/* has-sub 是分类标题（如"库存报表"），layui element 会误加 layui-this，
   这里强制 neutralize，不让分类标题被高亮，避免"下面所有菜单底色都变了" */
.layui-nav-tree .layui-nav-child dd.has-sub.layui-this > a,
.layui-nav-tree .layui-nav-child dd.has-sub > a {
    background: transparent !important;
    color: var(--text-side) !important;
    border-left-color: transparent !important;
    font-weight: 500;
    transition: none !important;
    /* flex 布局：让图标、文字、箭头水平并排垂直居中 */
    display: flex;
    align-items: center;
}
/* 二级菜单 has-sub 的子箭头：在文字和右边缘中间 */
.layui-nav-tree .layui-nav-child dd.has-sub > a .sub-arrow {
    font-size: 12px;
    opacity: 0.7;
    margin-left: auto;
    margin-right: auto;
    transition: transform 0.2s ease, opacity 0.2s ease;
}
/* 关键覆盖：layui.css 用后代选择器 dd.layui-this a 会导致 has-sub 下的
   三级菜单 a 全部被高亮，这里强制还原三级菜单项的样式 */
.layui-nav-tree .layui-nav-child dd.has-sub.layui-this .sub-nav dd a,
.layui-nav-tree .layui-nav-child dd.has-sub.layui-this .sub-nav dd a > .layui-icon {
    background: transparent !important;
    color: var(--text-side-secondary) !important;
    border-left-color: transparent !important;
}
.layui-nav-tree .layui-nav-child dd.has-sub.layui-this .sub-nav dd a:hover {
    color: var(--bg-side-active) !important;
    background: var(--bg-side-hover) !important;
}
/* has-sub 分类标题展开时箭头旋转 */
.layui-nav-tree .layui-nav-child dd.has-sub.sub-open > a .sub-arrow {
    transform: rotate(90deg);
    opacity: 1;
}
/* 三级子菜单 dl（默认隐藏，sub-open 时显示） */
.layui-nav-tree .layui-nav-child dd.has-sub > .sub-nav {
    display: none;
    padding: 2px 0 2px 0;
}
.layui-nav-tree .layui-nav-child dd.has-sub.sub-open > .sub-nav {
    display: block;
}
/* 三级菜单项缩进 */
.layui-nav-tree .layui-nav-child dd.has-sub .sub-nav dd a {
    padding-left: 66px;
    font-size: 12.5px;
    height: 34px;
    line-height: 34px;
    opacity: 0.85;
    transition: color 0.2s ease, border-color 0.2s ease;
}
.layui-nav-tree .layui-nav-child dd.has-sub .sub-nav dd a > .layui-icon {
    margin-left: -18px;
    font-size: 12px;
}
.layui-nav-tree .layui-nav-child dd.has-sub .sub-nav dd a:hover {
    color: var(--bg-side-active) !important;
    background: var(--bg-side-hover) !important;
}
.layui-nav-tree .layui-nav-child dd.has-sub .sub-nav dd.layui-this a,
.layui-nav-tree .layui-nav-child dd.has-sub .sub-nav dd.ls-menu-active > a {
    background: var(--bg-side-active-soft) !important;
    color: var(--text-side-secondary) !important;
    font-weight: 600;

    border-radius: 0;
    margin: 0;
    box-shadow: none;
}
/* 浮动菜单中的三级展开（始终显示） */
.side-float-menu .has-sub > a {
    font-weight: 500;
    color: #1f2937;
    cursor: default;
}
.side-float-menu .has-sub > a .sub-arrow {
    display: none;
}
.side-float-menu .sub-nav {
    display: block !important;
    padding-left: 12px;
}
.side-float-menu .sub-nav dd a {
    padding-left: 28px;
    font-size: 13px;
    color: #6b7280;
}

.layui-layout-admin .layui-body {
    position: fixed;
    top: var(--header-height);
    left: var(--side-width);
    right: 0; bottom: var(--footer-height);
    padding-bottom: 0 !important;
    background: var(--bg-content);
    overflow: hidden;
    z-index: 998;
    transition: left 0.3s ease;
}

body.side-spread .layui-layout-admin .layui-body {
    left: 52px;
}

.layui-layout-admin .layui-footer {
    position: fixed;
    bottom: 0;
    left: var(--side-width);
    right: 0;
    height: var(--footer-height);
    line-height: var(--footer-height);
    background: #fff;
    border-top: 1px solid var(--border-light);
    text-align: center;
    color: #a0aec0;
    font-size: 12px;
    z-index: 1002;
    transition: left 0.3s ease;
}

body.side-spread .layui-layout-admin .layui-footer {
    left: 52px;
}

.admin-iframe {
    width: 100%;
    height: 100%;
    border: none;
    display: block;
}

.ls-tabs-container {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    background: var(--bg-content);
}

.ls-tabs-header {
    display: flex;
    align-items: center;
    background: #fff;
    border-bottom: 1px solid var(--border-light);
    height: 40px;
    padding: 0;
    flex-shrink: 0;
}

.ls-tabs-scroll {
    flex: 1;
    overflow: hidden;
    overflow-x: auto;
    padding-left: 8px;
}

.ls-tabs-scroll::-webkit-scrollbar { height: 0; display: none; }

.ls-tabs-list {
    display: inline-flex;
    align-items: center;
    white-space: nowrap;
    height: 40px;
}

.ls-tab {
    height: 40px;
    line-height: 40px;
    font-size: 13px;
    padding: 0 14px;
    margin: 0 2px 0 0;
    border-radius: 0;
    color: #718096;
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    cursor: pointer;
    transition: all 0.2s ease;
    user-select: none;
    border-bottom: 2px solid transparent;
}

.ls-tab:hover {
    color: var(--primary-color);
    background: rgba(74, 155, 126, 0.04);
}

.ls-tab.active {
    background: var(--bg-content);
    border-bottom-color: var(--primary-color);
    color: var(--primary-color);
}

.ls-tab-icon {
    font-size: 13px;
    margin-right: 6px;
}

.ls-tab-title {
    display: inline-block;
    max-width: 140px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ls-tab-close {
    margin-left: 8px;
    font-size: 12px;
    border-radius: 50%;
    width: 16px;
    height: 16px;
    line-height: 16px;
    text-align: center;
    transition: all 0.2s ease;
}

.ls-tab-close:hover {
    background: rgba(0, 0, 0, 0.08);
    color: var(--text-primary);
}

.ls-tabs-tools {
    display: flex;
    align-items: center;
    gap: 2px;
    padding: 0 8px 0 4px;
    border-left: 1px solid var(--border-light);
    flex-shrink: 0;
    height: 100%;
}

.ls-tab-btn {
    width: 28px;
    height: 28px;
    line-height: 28px;
    text-align: center;
    cursor: pointer;
    color: #718096;
    border-radius: 2px;
    transition: all 0.2s ease;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    position: relative;
    flex-shrink: 0;
}

.ls-tab-btn:hover {
    background: var(--primary-softer);
    color: var(--primary-color);
}

.ls-tab-btn .layui-icon { font-size: 14px; }

.ls-tab-dropdown .ls-tab-menu {
    position: absolute;
    top: calc(100% + 4px);
    right: 0;
    background: #fff;
    border: 1px solid var(--border-light);
    border-radius: 2px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
    padding: 4px 0;
    z-index: 1001;
    min-width: 120px;
    display: none;
    margin-top: 0;
}

.ls-tab-dropdown:hover .ls-tab-menu { display: block; }

.ls-tab-dropdown::after {
    content: '';
    position: absolute;
    top: 100%; left: 0; right: 0;
    height: 8px;
    background: transparent;
}

.ls-tab-menu dd { padding: 0; margin: 0; }

.ls-tab-menu dd a {
    display: block;
    padding: 8px 16px;
    color: #4a5568;
    font-size: 13px;
    line-height: 1.5;
    transition: all 0.2s ease;
    text-decoration: none;
}

.ls-tab-menu dd a:hover {
    background: var(--primary-softer);
    color: var(--primary-color);
}

.ls-tabs-content {
    flex: 1;
    padding: 0;
    background: var(--bg-content);
    overflow: hidden;
    position: relative;
}

.ls-tab-iframe {
    width: 100%;
    height: 100%;
    border: none;
    display: none;
    position: absolute;
    top: 0; left: 0;
}

.ls-tab-iframe.active {
    display: block;
}

/* ============================================================
   页面内容区：铺满 iframe 宽度，支持滚动
   ============================================================ */
.page-container {
    width: 100%;
    margin: 0;
    padding: 16px;
    min-height: 100%;
    overflow-y: auto;
}
/* 标题栏已废弃 — 菜单名在左侧已显示，无需重复 */
.page-header { display: none; }
.page-title { display: none; }

/* ============================================================
   弹窗 iframe 内 — 租户端独有扩展
   （基础重置已迁移到 common.css，这里保留兼容旧版 layui-form-item 表单）
   ============================================================ */
/* 兼容租户端旧版 layui-form-item 弹窗表单 */
.in-modal-iframe .layui-form-item, .in-modal-inline .layui-form-item {
    display: flex;
    align-items: flex-start;
    margin-bottom: 16px;
}
.in-modal-iframe .layui-form-label, .in-modal-inline .layui-form-label {
    flex: 0 0 auto;
    width: 100px;
    padding-right: 12px;
    text-align: right;
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 32px;
    height: 32px;
    background: transparent;
    display: flex;
    align-items: center;
    justify-content: flex-end;
}
.in-modal-iframe .layui-input-block, .in-modal-inline .layui-input-block {
    flex: 0 0 240px;
    width: 240px;
    margin-left: 0;
    min-height: auto;
}
.in-modal-iframe .layui-input-block .layui-input,
.in-modal-inline .layui-input-block .layui-input,
.in-modal-iframe .layui-input-block select,
.in-modal-inline .layui-input-block select,
.in-modal-iframe .layui-input-block .layui-form-select,
.in-modal-inline .layui-input-block .layui-form-select,
.in-modal-iframe .layui-input-block .layui-form-select .layui-input, .in-modal-inline .layui-input-block .layui-form-select .layui-input {
    width: 100%;
}
.in-modal-iframe .layui-form-item .layui-input,
.in-modal-inline .layui-form-item .layui-input,
.in-modal-iframe .layui-form-item select, .in-modal-inline .layui-form-item select {
    height: 32px;
    padding: 0 11px;
    border: 1px solid var(--border-color);
    border-radius: 6px;
    font-size: 13px;
}
.in-modal-iframe .layui-form-item .layui-input:focus,
.in-modal-inline .layui-form-item .layui-input:focus,
.in-modal-iframe .layui-form-item select:focus, .in-modal-inline .layui-form-item select:focus {
    border-color: var(--primary-color);
    box-shadow: 0 0 0 3px var(--primary-softer);
    outline: none;
}
.in-modal-iframe .layui-form-item .layui-form-mid, .in-modal-inline .layui-form-item .layui-form-mid {
    line-height: 32px;
    padding: 0 0 0 10px;
}
.in-modal-iframe .layui-form-item .layui-btn + .layui-btn, .in-modal-inline .layui-form-item .layui-btn + .layui-btn {
    margin-left: 8px;
}
.in-modal-iframe .layui-form-item:last-child, .in-modal-inline .layui-form-item:last-child {
    margin-bottom: 0;
    margin-top: 8px;
}

/* ============================================================
   业务色系 — 玫红（原业务主操作色，保留对比度）
   多彩点缀通过 stat-icon 的 8 色装饰体现，主操作元素统一用玫红
   ============================================================ */
:root {
    --business-color: #C53030;
    --business-hover: #A91F1F;
    --business-light: #FDECEC;
    --business-softer: rgba(197, 48, 48, 0.12);
}

/* 等宽字体 */
code, pre, .ls-mono {
    font-family: 'JetBrainsMono', "Courier New", monospace;
}

/* 按钮体系 — 玫红业务色（白字保证对比度） */
.layui-layout-admin .layui-btn:not(.layui-btn-primary):not(.layui-btn-danger):not(.layui-btn-warm):not(.btn-gray):not(.btn-blue):not(.btn-orange) {
    background-color: var(--business-color);
    border-color: var(--business-color);
    color: #FFFFFF;
}
.layui-layout-admin .layui-btn:not(.layui-btn-primary):not(.layui-btn-danger):not(.layui-btn-warm):not(.btn-gray):not(.btn-blue):not(.btn-orange):hover {
    background-color: var(--business-hover);
    border-color: var(--business-hover);
    color: #FFFFFF;
    opacity: 0.95;
}
.layui-layout-admin .layui-btn-primary {
    background-color: #fff;
    border-color: var(--border-light);
    color: var(--text-secondary);
}
.layui-layout-admin .layui-btn-primary:hover {
    background-color: #F3F4F6;
    border-color: var(--business-color);
    color: var(--business-color);
}

/* 表单聚焦 — 玫红色 */
.layui-layout-admin .layui-input:focus,
.layui-layout-admin .layui-textarea:focus,
.layui-layout-admin input:focus,
.layui-layout-admin select:focus {
    border-color: var(--business-color) !important;
    box-shadow: 0 0 0 3px var(--business-softer) !important;
    outline: none;
}

/* 分页当前页 — 玫红色 */
.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em {
    background-color: var(--business-color) !important;
    border-radius: 6px;
}

/* 表格内按钮 — 玫红色 */
.layui-table .layui-btn:not(.btn-gray):not(.btn-blue):not(.btn-orange):not(.layui-btn-danger):not(.layui-btn-warm):not(.layui-btn-primary) {
    background-color: var(--business-color);
    border-color: var(--business-color);
}
.layui-table .layui-btn:not(.btn-gray):not(.btn-blue):not(.btn-orange):not(.layui-btn-danger):not(.layui-btn-warm):not(.layui-btn-primary):hover {
    background-color: var(--business-hover);
    border-color: var(--business-hover);
}

/* 卡片标题 — 玫红色 */
.content-card .card-title,
.ls-table-header h3 {
    color: var(--business-hover) !important;
}

/* 链接色 */
.layui-layout-admin a {
    color: var(--business-color);
}
.layui-layout-admin a:hover {
    color: var(--business-hover);
}

/* ============================================================
   以下 UI 组件样式由 common.css 拆分迁入（租户端独立维护）
   ============================================================ */

/* === 模态对话框 === */
.saas-modal.layui-layer {
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 12px 32px rgba(0,0,0,0.10);
    background: #fff;
    /* 用 flex 纵向布局，确保 content 自动占满剩余空间 */
    display: flex;
    flex-direction: column;
}
/* 弹窗尺寸变化时的平滑过渡（高度自适应时不会生硬跳变） */
.saas-modal-auto.layui-layer {
    transition: height 0.25s ease, top 0.25s ease !important;
}
.saas-modal-auto.layui-layer .layui-layer-content {
    transition: height 0.25s ease !important;
}
.saas-modal-auto.layui-layer .layui-layer-content iframe {
    transition: height 0.25s ease !important;
}
.saas-modal.layui-layer .layui-layer-title {
    flex: 0 0 auto;
}
.saas-modal.layui-layer .layui-layer-content {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    padding: 0;
    background: #fff;
}
/* layer 弹窗全局约束：防止低分辨率下弹窗超出可视区域、内容被遮挡 */
.layui-layer {
    max-width: 100vw !important;
    max-height: 100vh !important;
    border-radius: 10px !important;
    overflow: hidden;
    box-shadow: 0 12px 32px rgba(0,0,0,0.10) !important;
}
.layui-layer .layui-layer-title {
    border-radius: 10px 10px 0 0;
    background: var(--bg-soft, #F7F8FA);
}
.layui-layer .layui-layer-content {
    border-radius: 0;
}
.layui-layer .layui-layer-btn {
    text-align: right;
    padding: 10px 16px;
    background: var(--bg-soft, #f7fafc);
    border-top: 1px solid var(--border-light, #e2e8f0);
}
.layui-layer .layui-layer-btn .layui-layer-btn0,
.layui-layer .layui-layer-btn .layui-layer-btn1 {
    border-radius: 6px;
    height: 32px;
    line-height: 32px;
    padding: 0 16px;
    font-size: 13px;
}
.layui-layer-input {
    border-radius: 6px;
}
/* type:1 内容层：内容超出时内部滚动，不撑破弹窗 */
.layui-layer-type1 .layui-layer-content {
    overflow: auto;
}
/* type:2 iframe 层：content 用 flex 占满，iframe 自适应 */
.layui-layer-type2 .layui-layer-content {
    overflow: hidden;
}
.layui-layer-iframe iframe {
    width: 100% !important;
    height: 100% !important;
    display: block;
}
.saas-modal .layui-layer-iframe {
    border-radius: 0 0 12px 12px;
}

/* === 登录页 === */
.login-page {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, #0f766e 0%, #0b5d55 100%);
    position: relative;
    overflow: hidden;
}
.login-page::before {
    content: '';
    position: absolute;
    top: -50%;
    left: -50%;
    width: 200%;
    height: 200%;
    background: radial-gradient(ellipse at 30% 50%, rgba(var(--celadon-rgb), 0.12) 0%, transparent 60%),
                radial-gradient(ellipse at 70% 50%, rgba(var(--celadon-rgb), 0.08) 0%, transparent 60%);
    pointer-events: none;
}
.login-card {
    width: 400px;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 8px 32px rgba(0,0,0,0.15);
    padding: 40px 36px;
    position: relative;
    z-index: 1;
}
.login-logo {
    text-align: center;
    margin-bottom: 28px;
}
.login-logo .logo-icon {
    width: 56px;
    height: 56px;
    background: linear-gradient(135deg, var(--celadon-500), var(--celadon-700));
    border-radius: 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: 28px;
    font-weight: 700;
    margin-bottom: 12px;
}
.login-logo h1 {
    font-size: 22px;
    color: var(--celadon-800);
    font-weight: 700;
}
.login-logo p {
    font-size: 14px;
    color: var(--text-muted);
    margin-top: 6px;
}
.login-form .layui-input {
    height: 44px;
    border: 1px solid var(--border-color);
    border-radius: 6px;
    font-size: 14px;
}
.login-form .layui-input:focus {
    border-color: var(--celadon-400);
    box-shadow: 0 0 0 3px rgba(var(--celadon-rgb), 0.1);
}
.login-btn {
    height: 44px;
    background: linear-gradient(135deg, var(--celadon-500), var(--celadon-700));
    border: none;
    border-radius: 6px;
    font-size: 15px;
    font-weight: 600;
    color: #fff;
    cursor: pointer;
    transition: opacity 0.2s;
}
.login-btn:hover {
    opacity: 0.92;
}
.login-footer {
    text-align: center;
    margin-top: 24px;
    font-size: 13px;
    color: var(--text-muted);
}
.login-link {
    text-align: center;
    margin-top: 16px;
    font-size: 14px;
}
.login-link a {
    color: var(--celadon-600);
}

/* === 工作台卡片 === */
.dashboard-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 16px;
    margin-bottom: 20px;
}
.dashboard-grid.lg {
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}
@media (max-width: 1200px) {
    .dashboard-grid.lg {
        grid-template-columns: repeat(2, 1fr);
    }
}
@media (max-width: 768px) {
    .dashboard-grid.lg {
        grid-template-columns: 1fr;
    }
}
.stat-card {
    background: var(--bg-card);
    border-radius: 12px;
    padding: 24px;
    box-shadow: var(--shadow-sm);
    display: flex;
    align-items: center;
    gap: 18px;
    transition: box-shadow 0.2s, transform 0.2s;
}
.stat-card:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-2px);
}
.stat-icon {
    width: 56px;
    height: 56px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 26px;
    flex-shrink: 0;
}
.dashboard-grid.lg .stat-icon {
    width: 64px;
    height: 64px;
    font-size: 28px;
    border-radius: 14px;
}
/* stat-icon 多彩色装饰（8 色点缀，清爽办公风） */
.stat-icon.red     { background: #FEE2E2; color: var(--accent-red); }
.stat-icon.green   { background: #D1FAE5; color: var(--accent-green); }
.stat-icon.blue    { background: #DBEAFE; color: var(--accent-blue); }
.stat-icon.orange  { background: #FEF3C7; color: var(--accent-orange); }
.stat-icon.amber   { background: #FED7AA; color: var(--accent-amber); }
.stat-icon.purple  { background: #EDE9FE; color: var(--accent-purple); }
.stat-icon.cyan    { background: #CFFAFE; color: var(--accent-cyan); }
.stat-icon.pink    { background: #FCE7F3; color: var(--accent-pink); }
.stat-info .stat-value {
    font-size: 28px;
    font-weight: 700;
    color: var(--text-primary);
    line-height: 1.2;
}
.dashboard-grid.lg .stat-info .stat-value {
    font-size: 34px;
}
.stat-info .stat-label {
    font-size: 14px;
    color: var(--text-secondary);
    margin-top: 6px;
}

/* 工作台欢迎横幅 */
.workbench-welcome {
    background: linear-gradient(135deg, var(--celadon-500), var(--celadon-700));
    color: #fff;
    border-radius: 12px;
    padding: 28px 32px;
    margin-bottom: 24px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    box-shadow: var(--shadow-md);
}
.workbench-welcome h2 {
    font-size: 24px;
    font-weight: 600;
    margin-bottom: 8px;
}
.workbench-welcome p {
    font-size: 14px;
    opacity: 0.9;
}
.welcome-extra {
    text-align: right;
}
.welcome-extra .ws-value {
    font-size: 36px;
    font-weight: 700;
    line-height: 1;
}
.welcome-extra .ws-label {
    font-size: 14px;
    opacity: 0.85;
    margin-top: 6px;
}

/* === 内容卡片 === */
.content-card {
    background: var(--bg-card);
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 1px 2px rgba(0,0,0,0.03);
    margin-bottom: 16px;
    border: 1px solid #EEF0F3;
}
.content-card .card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
    padding-bottom: 12px;
    border-bottom: 1px solid #EEF0F3;
}
.content-card .card-title {
    font-size: 15px;
    font-weight: 600;
    color: var(--text-primary);
}
.content-card .card-more {
    font-size: 14px;
    color: var(--celadon-600);
    cursor: pointer;
}
.quick-action-item {
    text-align: center;
    padding: 18px 12px;
    background: var(--celadon-50);
    border-radius: 8px;
    cursor: pointer;
    transition: background 0.2s, transform 0.2s;
}
.quick-action-item:hover {
    background: var(--celadon-100);
    transform: translateY(-2px);
}
.quick-action-item i {
    font-size: 26px;
    color: var(--celadon-500);
}
.quick-action-item div {
    font-size: 14px;
    margin-top: 8px;
    color: var(--text-primary);
}

/* 空状态 */
.empty-state {
    text-align: center;
    padding: 40px 20px;
    color: var(--text-muted);
    font-size: 15px;
}

/* === 表单全局样式 === */
/* 覆盖 Layui 默认 label 宽度（默认80px太窄，4个中文字会换行） */
.layui-form-label {
    width: 110px;
    padding: 9px 12px 9px 0;
    text-align: right;
    white-space: nowrap;
}
.layui-input-block {
    margin-left: 120px;
}
/* 短标签表单（2-3字）使用 .label-sm 缩窄 */
.layui-form-label.label-sm {
    width: 80px;
}
.layui-form-label.label-sm + .layui-input-block {
    margin-left: 90px;
}

/* === 模态对话框表单 === */
.saas-modal-form {
    padding: 22px 24px;
    background: #fff;
}

/* === 配置页 form-inline 布局 === */
.form-inline .layui-form-item {
    margin-bottom: 16px;
    display: flex;
    align-items: center;
}
.form-inline .form-label {
    width: 130px;
    text-align: right;
    padding-right: 12px;
    font-size: 15px;
    color: #606266;
    flex-shrink: 0;
    white-space: nowrap;
}
.form-inline .form-input {
    flex: 1;
    max-width: 320px;
}
.form-inline .form-unit {
    margin-left: 8px;
    font-size: 14px;
    color: #909399;
    white-space: nowrap;
}
.form-inline .form-row {
    display: flex;
    align-items: center;
}

/* Layui 覆盖 - 按钮青瓷色 */
.layui-btn.primary {
    background-color: var(--primary-color, var(--celadon-500));
    border-color: var(--primary-color, var(--celadon-500));
    color: #fff;
}
.layui-btn.primary:hover {
    background-color: var(--primary-dark, var(--celadon-600));
    border-color: var(--primary-dark, var(--celadon-600));
}
.layui-btn-normal {
    background-color: var(--primary-color, var(--celadon-500));
    border-color: var(--primary-color, var(--celadon-500));
    color: #fff;
}
.layui-btn.btn-gray {
    background-color: #fff;
    border-color: var(--border-color, #d9d9d9);
    color: var(--text-secondary, #595959);
}
.layui-btn.btn-gray:hover {
    background-color: var(--bg-soft, #f5f5f5);
    border-color: #d9d9d9;
    color: #595959;
}
.layui-btn.btn-orange {
    background-color: #f59e0b;
    border-color: #f59e0b;
    color: #fff;
}
.layui-btn.btn-orange:hover {
    background-color: #d97706;
    border-color: #d97706;
}
.layui-nav .layui-this::after {
    background-color: var(--primary-color);
}
.layui-tab-title .layui-this {
    color: var(--primary-dark);
}

/* === 镇压 layui 原生菜单激活青绿（#16baaa），强制 H 方案石板青灰 === */
.layui-nav-tree .layui-this,
.layui-nav-tree .layui-this > a,
.layui-nav-tree .layui-this > a:hover,
.layui-nav-tree .layui-nav-item.layui-nav-itemed > a,
.layui-nav-tree .layui-nav-item.ls-menu-active > a,
.layui-nav-tree .layui-nav-item.layui-this > a,
.layui-nav-tree .layui-nav-child dd.layui-this > a,
.layui-nav-tree .layui-nav-child dd.ls-menu-active > a,
.layui-nav-tree .layui-nav-child dd.has-sub .sub-nav dd.layui-this > a,
.layui-nav-tree .layui-nav-child dd.has-sub .sub-nav dd.ls-menu-active > a {
    background-color: var(--bg-side-active-soft) !important;
    background: var(--bg-side-active-soft) !important;
    color: #FFFFFF !important;
    font-weight: 400;
    border-radius: 0;
    margin: 0;
    box-shadow: none;
}
/* 左侧导航条（点击滑动的小竖条）也改为石板色 */
.layui-nav-tree .layui-nav-bar {
    background-color: var(--bg-side-active) !important;
}

/* === 共享表单组件 === */
.form-section {
    display: block;
    margin-bottom: 20px;
}
.form-section:last-child { margin-bottom: 0; }
.form-section-title {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 14px;
    padding-left: 8px;
    border-left: 3px solid var(--primary-color);
    line-height: 1;
}

.form-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(440px, 1fr));
    column-gap: 32px;
    align-items: start;
}
.form-grid .form-item.full { grid-column: 1 / -1; }

.form-item {
    display: flex;
    align-items: flex-start;
    margin-bottom: 16px;
}
.form-item:last-child { margin-bottom: 0; }
.form-item-label {
    flex: 0 0 auto;
    width: 100px;
    padding-right: 12px;
    text-align: right;
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 2px;
}
.form-item-label.label-sm { width: 72px; }
.form-item-label.label-lg { width: 120px; }
.form-item-label .req {
    color: var(--danger);
    font-size: 14px;
    margin-right: 2px;
}
.form-item-control {
    flex: 0 0 240px;
    width: 240px;
}
.form-item-control.control-sm { flex: 0 0 160px; width: 160px; }
.form-item-control.control-lg { flex: 0 0 320px; width: 320px; }
.form-item-control.control-full { flex: 0 0 480px; width: 480px; }
.form-item-control.control-fluid { flex: 1 1 100%; width: 100%; min-width: 0; }

.form-item .layui-input,
.form-item .layui-textarea,
.form-item input[type="text"],
.form-item input[type="password"],
.form-item input[type="number"] {
    width: 100%;
    height: 32px;
    padding: 0 11px;
    border: 1px solid var(--border-color);
    border-radius: 6px;
    font-size: 13px;
    color: var(--text-primary);
    background: #fff;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
    box-sizing: border-box;
    display: block;
}
.form-item .layui-form-select {
    width: 100%;
}
.form-item .layui-form-select .layui-input {
    height: 32px;
    padding: 0 11px;
    border: 1px solid var(--border-color);
    border-radius: 6px;
    font-size: 13px;
    color: var(--text-primary);
    background: #fff;
    box-sizing: border-box;
}
.form-item .layui-textarea {
    height: auto;
    min-height: 72px;
    padding: 8px 11px;
    resize: vertical;
    line-height: 1.5;
}
.form-item .layui-input:focus,
.form-item .layui-textarea:focus,
.form-item input:focus,
.form-item select:focus {
    border-color: var(--primary-color);
    box-shadow: 0 0 0 3px var(--primary-softer);
    outline: none;
}
.form-item .layui-form-select { width: 100%; }
.form-item .layui-form-select .layui-input { width: 100%; }

.form-item-hint {
    margin-left: 10px;
    font-size: 12px;
    color: var(--text-muted);
    line-height: 32px;
}

/* --- 模态底部按钮：统一靠右下角 --- */
.modal-footer {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    padding: 12px 24px;
    border-top: 1px solid var(--border-light);
    background: var(--bg-soft);
    flex-shrink: 0;
}
/* 弹窗内不需要负 margin（content-card padding 为 0） */
.in-modal-iframe .modal-footer, .in-modal-inline .modal-footer {
    margin: 0;
    border-radius: 0;
}

/* 三段式布局：content-card 为 flex 列容器，footer 钉底（对齐平台端） */
.content-card:has(.modal-footer) {
    display: flex;
    flex-direction: column;
}
.content-card:has(.modal-footer) > form {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}
/* 含多 form-section 的表单：整体表单区滚动，footer 钉底 */
.in-modal-iframe .content-card:has(.modal-footer) > form, .in-modal-inline .content-card:has(.modal-footer) > form {
    overflow-y: auto;
}
.modal-footer .layui-btn {
    height: 32px;
    line-height: 32px;
    padding: 0 16px;
    font-size: 13px;
    border-radius: 6px;
}
.modal-footer .layui-btn-primary {
    background: #fff;
    color: var(--text-secondary);
    border: 1px solid var(--border-color);
}
.modal-footer .layui-btn-primary:hover {
    color: var(--primary-color);
    border-color: var(--primary-color);
}

/* --- 内容卡片（共享组件版） --- */
.content-card {
    background: #fff;
    border: 1px solid var(--border-light);
    border-radius: 12px;
    box-shadow: var(--shadow-xs, 0 1px 2px rgba(0,0,0,0.03));
    overflow: hidden;
}
.td-label {
    background: #F5F7F6;
    font-weight: 500;
    color: var(--text-muted);
    width: 140px;
}
.content-card .card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 20px;
    border-bottom: 1px solid var(--border-light);
}
.content-card .card-title {
    font-size: 15px;
    font-weight: 600;
    color: var(--text-primary);
}
.content-card .card-body { padding: 18px 20px; }

/* --- 弹窗 iframe 内（基础重置，对齐平台端） --- */
.in-modal-iframe,
.in-modal-inline,
.in-modal-iframe body, .in-modal-inline body {
    background: #fff;
}
.in-modal-iframe html,
.in-modal-inline html,
.in-modal-iframe body, .in-modal-inline body {
    height: 100%;
    margin: 0;
    overflow: hidden;
    width: 100%;
}
/* 对齐参考项目：block 布局 + content-card 固定高度撑满 iframe，form 内滚动 */
body.in-modal-iframe, body.in-modal-inline {
    display: block;
    min-width: auto !important;
    overflow-x: hidden;
}
.in-modal-iframe .page-container, .in-modal-inline .page-container {
    padding: 0;
    margin: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
}
.in-modal-iframe .content-card, .in-modal-inline .content-card {
    background: #fff;
    box-shadow: none;
    border-radius: 0;
    padding: 0;
    margin: 0;
    border: none;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.in-modal-iframe .content-card .card-header { display: none; }
.in-modal-iframe .saas-modal-form, .in-modal-inline .saas-modal-form {
    padding: 20px 24px;
    background: #fff;
    border: none;
    border-radius: 0;
    box-shadow: none;
    max-width: none;
    margin: 0;
    flex: 1 1 auto;
    overflow-y: auto;
    overflow-x: hidden;
}
/* 弹窗内 form 滚动：当 content-card 含 modal-footer 时，form 占满剩余高度并滚动 */
.in-modal-iframe .content-card:has(.modal-footer) > .saas-modal-form,
.in-modal-inline .content-card:has(.modal-footer) > .saas-modal-form,
.in-modal-iframe .content-card:has(.modal-footer) > .layui-form,
.in-modal-inline .content-card:has(.modal-footer) > .layui-form,
.in-modal-iframe .content-card:has(.modal-footer) > form, .in-modal-inline .content-card:has(.modal-footer) > form {
    flex: 1 1 auto;
    overflow-y: auto;
    overflow-x: hidden;
    min-height: 0;
}

/* --- 弹窗内 form 自定义滚动条（细条+浅灰，与平台端一致） --- */
.in-modal-iframe .content-card > form, .in-modal-inline .content-card > form {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: auto;
    scrollbar-width: thin;
    scrollbar-color: #d1d5db transparent;
}
.in-modal-iframe .content-card > form::-webkit-scrollbar, .in-modal-inline .content-card > form::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}
.in-modal-iframe .content-card > form::-webkit-scrollbar-track, .in-modal-inline .content-card > form::-webkit-scrollbar-track {
    background: transparent;
}
.in-modal-iframe .content-card > form::-webkit-scrollbar-thumb, .in-modal-inline .content-card > form::-webkit-scrollbar-thumb {
    background: #d1d5db;
    border-radius: 4px;
}
.in-modal-iframe .content-card > form::-webkit-scrollbar-thumb:hover, .in-modal-inline .content-card > form::-webkit-scrollbar-thumb:hover {
    background: #9ca3af;
}
.in-modal-iframe .content-card > form > *, .in-modal-inline .content-card > form > * {
    flex-shrink: 0;
}
/* footer 始终贴底：form 用 flex:1 1 auto 撑满剩余空间，把 footer 顶到底边 */
.in-modal-iframe .content-card > .modal-footer,
.in-modal-inline .content-card > .modal-footer,
.content-card.has-footer > .modal-footer {
    flex: 0 0 auto;
}

/* ================================================================
   [6] 弹窗-普通表单（data-layout="form"）
   弹窗表单默认单列布局（整齐有序）；由 common.js 动态判断：
   字段≥6个时切换多列，充分利用弹窗宽度
   ================================================================ */
.in-modal-iframe form[data-layout="form"], .in-modal-inline form[data-layout="form"] {
    display: block;
    padding: 20px 24px;
    background: #fff;
    border: none;
    border-radius: 0;
}
/* JS 切换多列布局时添加 .form-multi-cols，列数按弹窗宽度自适应 */
.in-modal-iframe form[data-layout="form"].form-multi-cols, .in-modal-inline form[data-layout="form"].form-multi-cols {
    display: grid;
    /* 每列最小360px（label100+输入240+间距），自动排列2/3/4列 */
    grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));
    gap: 0 32px;       /* 列间距 32px，行间距 0（由 form-item margin 控制） */
    align-items: start;
}
/* 整行字段（textarea、选项区、说明文字等）占满整行 */
.in-modal-iframe form[data-layout="form"] .layui-form-item.full-row,
.in-modal-inline form[data-layout="form"] .layui-form-item.full-row,
.in-modal-iframe form[data-layout="form"] .layui-form-item[style*="display:none"], .in-modal-inline form[data-layout="form"] .layui-form-item[style*="display:none"] {
    grid-column: 1 / -1;
}
/* 兼容租户端旧版 layui-form-item 弹窗表单 */
.in-modal-iframe form[data-layout="form"] .layui-form-item, .in-modal-inline form[data-layout="form"] .layui-form-item {
    display: flex;
    align-items: flex-start;
    margin-bottom: 16px;   /* 行间距 16px */
}
.in-modal-iframe form[data-layout="form"] .layui-form-label, .in-modal-inline form[data-layout="form"] .layui-form-label {
    flex: 0 0 auto;
    width: 100px;
    padding-right: 12px;
    text-align: right;
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 32px;
    height: 32px;
    background: transparent;
    display: flex;
    align-items: center;
    justify-content: flex-end;
}
.in-modal-iframe form[data-layout="form"] .layui-input-block, .in-modal-inline form[data-layout="form"] .layui-input-block {
    flex: 0 0 auto;
    margin-left: 0;
    min-height: auto;
}
/* 整行字段（full-row：表格/文本域/选项区等）的 input-block 撑满整行，
   覆盖上方 240px 固定宽（否则组合明细表格/长文本被压缩在 240px 内） */
.in-modal-iframe form[data-layout="form"] .layui-form-item.full-row .layui-input-block,
.in-modal-inline form[data-layout="form"] .layui-form-item.full-row .layui-input-block {
    flex: 1 1 auto;
    width: 100%;
}
/* 输入框按类型设置合理固定宽度（内联 style 优先级更高，可覆盖） */
.in-modal-iframe form[data-layout="form"] .layui-input-block .layui-input,
.in-modal-inline form[data-layout="form"] .layui-input-block .layui-input,
.in-modal-iframe form[data-layout="form"] .layui-input-block select, .in-modal-inline form[data-layout="form"] .layui-input-block select {
    width: 100%;
    max-width: 240px;       /* 普通文本 240px */
}
.in-modal-iframe form[data-layout="form"] .layui-input-block input[type="number"], .in-modal-inline form[data-layout="form"] .layui-input-block input[type="number"] {
    width: 100%;
    max-width: 160px;       /* 短数字 160px */
}
.in-modal-iframe form[data-layout="form"] .layui-input-block textarea, .in-modal-inline form[data-layout="form"] .layui-input-block textarea {
    width: 100%;
    max-width: 480px;       /* 长文本 textarea 480px */
    min-height: 80px;
    padding: 8px 11px;
    line-height: 1.5;
}
.in-modal-iframe form[data-layout="form"] .layui-input-block .layui-form-select, .in-modal-inline form[data-layout="form"] .layui-input-block .layui-form-select {
    width: 100%;
    max-width: 240px;
}
.in-modal-iframe form[data-layout="form"] .layui-form-item .layui-input,
.in-modal-inline form[data-layout="form"] .layui-form-item .layui-input,
.in-modal-iframe form[data-layout="form"] .layui-form-item select, .in-modal-inline form[data-layout="form"] .layui-form-item select {
    height: 32px;
    padding: 0 11px;
    border: 1px solid var(--border-color);
    border-radius: 6px;
    font-size: 13px;
}
.in-modal-iframe form[data-layout="form"] .layui-form-item .layui-input:focus,
.in-modal-inline form[data-layout="form"] .layui-form-item .layui-input:focus,
.in-modal-iframe form[data-layout="form"] .layui-form-item select:focus, .in-modal-inline form[data-layout="form"] .layui-form-item select:focus {
    border-color: var(--primary-color);
    box-shadow: 0 0 0 3px var(--primary-softer);
    outline: none;
}
.in-modal-iframe form[data-layout="form"] .layui-form-item .layui-form-mid, .in-modal-inline form[data-layout="form"] .layui-form-item .layui-form-mid {
    line-height: 32px;
    padding: 0 0 0 10px;
}
.in-modal-iframe form[data-layout="form"] .layui-form-item .layui-btn + .layui-btn, .in-modal-inline form[data-layout="form"] .layui-form-item .layui-btn + .layui-btn {
    margin-left: 8px;
}
.in-modal-iframe form[data-layout="form"] .layui-form-item:last-child, .in-modal-inline form[data-layout="form"] .layui-form-item:last-child {
    margin-bottom: 0;
    margin-top: 8px;
}

/* === 双列表单布局（字段较多的基础资料弹窗） ===
   用法：在 form 上加 class="form-2col"，字段自动两列排列
   需要跨整行的 item（地址/备注）加 class="full-row" */
.in-modal-iframe form[data-layout="form"].form-2col, .in-modal-inline form[data-layout="form"].form-2col {
    display: grid;
    /* 容器自适应列数：内容宽 ≥632px 时 2 列，窄弹窗（如 480px）自动降为 1 列，
       避免固定 2 列在窄容器下 label+input 被挤压导致布局混乱（UI 独立性） */
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    column-gap: 32px;       /* 列间距 32px */
    row-gap: 16px;          /* 行间距 16px */
    padding: 20px 24px;
}
.in-modal-iframe form[data-layout="form"].form-2col .layui-form-item, .in-modal-inline form[data-layout="form"].form-2col .layui-form-item {
    display: flex;
    align-items: flex-start;
    margin-bottom: 0;  /* grid 的 row-gap 已控制行距 */
}
.in-modal-iframe form[data-layout="form"].form-2col .layui-form-item.full-row, .in-modal-inline form[data-layout="form"].form-2col .layui-form-item.full-row {
    grid-column: 1 / -1;  /* 跨整行 */
}
.in-modal-iframe form[data-layout="form"].form-2col .layui-form-item .layui-input-block,
.in-modal-inline form[data-layout="form"].form-2col .layui-form-item .layui-input-block,
.in-modal-iframe form[data-layout="form"].form-2col .layui-form-item .layui-input-inline,
.in-modal-inline form[data-layout="form"].form-2col .layui-form-item .layui-input-inline {
    flex: 1 1 auto;       /* 输入框占满剩余宽度 */
    margin-left: 0;
    min-height: auto;
}
.in-modal-iframe form[data-layout="form"].form-2col .layui-form-item .layui-input-block .layui-input,
.in-modal-inline form[data-layout="form"].form-2col .layui-form-item .layui-input-block .layui-input,
.in-modal-iframe form[data-layout="form"].form-2col .layui-form-item .layui-input-inline .layui-input,
.in-modal-inline form[data-layout="form"].form-2col .layui-form-item .layui-input-inline .layui-input,
.in-modal-iframe form[data-layout="form"].form-2col .layui-form-item .layui-input-block select,
.in-modal-inline form[data-layout="form"].form-2col .layui-form-item .layui-input-block select,
.in-modal-iframe form[data-layout="form"].form-2col .layui-form-item .layui-input-inline select,
.in-modal-inline form[data-layout="form"].form-2col .layui-form-item .layui-input-inline select {
    width: 100%;
    max-width: 100%;     /* 双列下输入框占满 cell，不再固定 240px */
}
.in-modal-iframe form[data-layout="form"].form-2col .layui-form-item .layui-input-block textarea,
.in-modal-inline form[data-layout="form"].form-2col .layui-form-item .layui-input-block textarea {
    width: 100%;
    max-width: 100%;
    min-height: 60px;
}

/* ================================================================
   [7] 弹窗-单据式（data-layout="bill"）
   结构：.bill-sheet > .bill-head(单据头三栏) + .bill-grid(明细表格) + .bill-foot(备注+金额横排+制单人)
   在 saas-modal-form 内嵌套使用，不破坏外层卡片
   ================================================================ */
.bill-sheet { background:#fff; }
/* 单据头：弹性单行横排（参考暮豆 con-header），格子按内容分配并平均拉伸填满单行，
   编号格优先吸收剩余宽度让长单号完整显示；格子≥8 个时自动退化为等宽网格多行排布 */
.bill-head {
    display: flex;
    flex-wrap: nowrap;          /* 单行不换行，杜绝单据头被拆成两行 */
    align-items: center;
    gap: 8px 16px;              /* 列间距统一 16px，行间距 8px，各区域间隔协调 */
    padding: 6px 0 10px 0;
    margin: 0 0 12px 0;         /* 取消 common.css 的负外边距，单据头与下方明细表左对齐 */
    background: transparent;    /* 取消 common.css 的灰底色，单据头不再有底色 */
    border-bottom: 1px solid #EEF0F2;
}
.bill-head .bh-cell {
    flex: 1 1 auto;             /* 内容宽度优先，空间富余时按比例拉伸填满单行 */
    min-width: 0;
    display: flex; align-items: center;
    padding: 4px 0;
}
/* 含按钮的格子（BOM 选择等）：保底宽度，保证输入框 + 按钮不被压缩 */
.bill-head .bh-cell:has(.layui-btn) { flex: 1.5 1 auto; min-width: 145px; }
/* 日期格子：保底宽度，日期尽量完整显示 */
.bill-head .bh-cell:has(input[name*="date"]) { flex: 1.2 1 auto; min-width: 148px; }
/* 单据编号格：优先吸收剩余宽度，长单号完整显示不再省略 */
.bill-head .bh-cell:has(.bill-no-text) { flex: 2.2 1 auto; min-width: 230px; }
/* 格子过多（≥8 个：报工/合同/促销等单据头）：退化为等宽网格自动换行，避免格子被压扁 */
.bill-head:has(> .bh-cell:nth-child(8)) {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
    gap: 8px 16px;
}
/* 网格布局下取消单格保底宽度（flex 专用），避免长单号格撑破网格列 */
.bill-head:has(> .bh-cell:nth-child(8)) .bh-cell { min-width: 0; }
.bill-head .bh-cell .bh-label {
    flex: 0 0 72px;
    min-width: 72px;
    padding-right: 8px;
    color: #6B7280; font-size: 14px;
    text-align: right;
    white-space: nowrap;
    box-sizing: border-box;
}
.bill-head .bh-cell .bh-ctn { flex: 1 1 auto; min-width: 0; }
/* 按钮固定不收缩，保证 BOM 选择等按钮始终可见（下拉/日历面板依赖未裁剪的祖先） */
.bill-head .bh-cell .bh-ctn .layui-btn { flex: 0 0 auto; }
/* 单据头控件统一暮豆横线风格：去掉四边框盒，只保留底部 1px 细线，紧凑贴合内容，focus 变青瓷绿 */
.bill-head .bh-cell .bh-ctn .layui-input {
    height: 28px; line-height: 28px;
    border: none; border-bottom: 1px solid #cbd5e1; border-radius: 0;
    background: transparent;
    font-size: 13px; color: #111827;
    padding: 0 2px;
    width: 160px; max-width: 100%;
    min-width: 0;   /* 允许 flex 收缩，防止撑出格子边界 */
}
.bill-head .bh-cell .bh-ctn .layui-input:focus {
    border-bottom-color: #0d9488; box-shadow: none;
}
/* 下拉选择：横线风格（箭头灰色，面板保持默认） */
.bill-head .bh-cell .bh-ctn .layui-form-select {
    width: 150px; max-width: 100%;
    border: none; border-bottom: 1px solid #cbd5e1;
    background: transparent; border-radius: 0;
}
.bill-head .bh-cell .bh-ctn .layui-form-select .layui-select-title {
    height: 28px; line-height: 28px;
    position: relative;
}
.bill-head .bh-cell .bh-ctn .layui-form-select .layui-select-title input {
    height: 28px; line-height: 28px;
    border: none; background: transparent;
    font-size: 13px; color: #111827; padding: 0 18px 0 2px;
}
/* 下拉指示：三角形改为三个小点（省略号），更轻盈 */
.bill-head .bh-cell .bh-ctn .layui-form-select .layui-edge {
    display: none;
}
.bill-head .bh-cell .bh-ctn .layui-form-select .layui-select-title::after {
    content: '⋯';
    position: absolute;
    right: 2px; top: 50%;
    transform: translateY(-50%);
    font-size: 13px; line-height: 1;
    color: #94a3b8;
    letter-spacing: 1px;
    pointer-events: none;
}
.bill-head .bh-cell .bh-ctn .layui-form-select dl {
    z-index: 20;
}
/* 单据编号：纯文本显示，不用输入框（不换行，超长省略兜底） */
/* 长单号完整显示：编号格 min-width 230px + flex 2.2 优先吸收剩余宽度；
   ellipsis 仅作为极端窄屏兜底 */
.bill-head .bh-cell .bh-ctn .bill-no-text {
    color: #111827; font-weight: 500; line-height: 28px;
    font-size: 13px;   /* 与单据头其他控件同字号 */
    padding: 0 2px;
    display: inline-block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: middle;
}
/* 单据头日期字段：横线，宽度贴合日期文本（"2026-08-05"约78px），不留大片空白 */
.bill-head .bh-cell .bh-ctn input[name*="date"] {
    width: 92px;
    max-width: 92px;
    height: 28px; line-height: 28px;
    border: none;
    border-bottom: 1px solid #cbd5e1;
    border-radius: 0;
    background: transparent;
    padding: 0 2px;
    color: #111827;
    font-size: 13px;
}
.bill-head .bh-cell .bh-ctn input[name*="date"]:focus {
    border-bottom-color: #0d9488;
    box-shadow: none;
}
.bill-head .bh-cell .bh-ctn .bill-no-text .no-placeholder { color: #9CA3AF; font-weight: 400; }
/* 关联单据选择行：文本 + 按钮组横排，单号超长自动省略，按钮固定不收缩 */
.bill-head .bh-cell.bh-cell-ref { flex: 0 1 auto; min-width: 260px; }
.bill-head .bh-cell .bh-ctn.bh-ctn-ref {
    display: flex; align-items: center; gap: 6px;
}
.bill-head .bh-cell .bh-ctn.bh-ctn-ref .bill-no-text {
    flex: 1 1 auto; min-width: 0;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    padding: 0;
}
.bill-head .bh-cell .bh-ctn.bh-ctn-ref .layui-btn {
    flex: 0 0 auto;
    margin-left: 0 !important;
    height: 28px; line-height: 28px;
    padding: 0 9px;
    font-size: 12px;
}
.bill-head .bh-cell .bh-ctn.bh-ctn-ref .layui-btn .layui-icon { font-size: 13px; margin-right: 2px; }


/* 单据明细表格：紧凑可编辑，窄屏自动横向滚动避免内容被遮挡 */
.bill-grid { width:100%; border:1px solid #E5E7EB; overflow-x:auto; -webkit-overflow-scrolling:touch; }
.bill-grid .layui-table { margin:0; table-layout: fixed; min-width: 1200px; width: 100%; }
.bill-grid .layui-table thead th { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bill-grid .layui-table tbody td { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bill-grid .layui-table colgroup col.col-goods { width: 200px; }
.bill-grid .layui-table thead tr { background:#F8FAFB; }
.bill-grid .layui-table thead th {
    height: 34px; padding: 0 6px;
    font-size: 12px; color:#4B5563; font-weight: 600;
    border-bottom: 1px solid #E5E7EB;
    background: #F8FAFB;
    text-align: center !important;
    vertical-align: middle !important;
}
.bill-grid .layui-table tbody td {
    padding: 4px 6px;
    border-bottom: 1px solid #F1F2F4;
    height: 36px;
    text-align: center !important;
    vertical-align: middle !important;
}
.bill-grid .layui-table tbody tr:hover { background:#FAFBFC; }
.bill-grid .layui-input {
    height: 28px; padding: 0 6px;
    border: 1px solid transparent; border-radius: 4px;
    background: transparent; font-size: 13px;
    text-align: center;
}
.bill-grid .layui-input:focus {
    border-color: var(--primary-color);
    background: #fff;
    box-shadow: 0 0 0 2px var(--primary-softer);
}
.bill-grid .layui-input[readonly] {
    color: #6B7280; background: transparent;
}
.bill-grid .pick-btn {
    display: inline-block; width: 24px; height: 24px;
    line-height: 24px; text-align: center;
    border: 1px solid #D1D5DB; border-radius: 4px;
    color: #6B7280; cursor: pointer; margin-right: 4px;
    background: #fff;
}
.bill-grid .pick-btn:hover { color: var(--primary-color); border-color: var(--primary-color); }
.bill-grid .del-btn {
    color: #EF4444; cursor: pointer;
}
.bill-grid .mat-name { color:#111827; font-size:13px; }

/* 表格底部工具栏 */
.bill-grid-bar {
    display: flex; justify-content: space-between; align-items: center;
    padding: 8px 0;
}

/* 扫码枪开关：表头小标签，激活后商品列变为扫码输入状态 */
.bar-code-insert {
    display: inline-block;
    margin-left: 8px;
    padding: 1px 8px;
    font-size: 12px; font-weight: 100;
    color: #fff; background-color: #B1B1B1;
    border-radius: 2px; line-height: 18px; height: 20px;
    cursor: pointer;
    vertical-align: middle;
    user-select: none;
}
.bar-code-insert.active {
    background-color: var(--primary-color);
}

/* 单行备注：紧贴金额区上方 */
.bill-note-line {
    display: flex; align-items: center;
    padding: 6px 0;
    margin-bottom: 8px;
}
.bill-note-line .bn-label {
    flex: 0 0 60px;
    color: #6B7280; font-size: 13px;
}
.bill-note-line .bn-input {
    flex: 1 1 auto;
    height: 30px; padding: 0 9px;
    border: 1px solid #E5E7EB; border-radius: 4px;
    font-size: 13px;
    background: #fff;
    outline: none;
}
.bill-note-line .bn-input:focus {
    border-color: var(--primary-color);
    box-shadow: 0 0 0 2px var(--primary-softer);
}

/* 扫码成功/失败提示动画 */
@keyframes scanFlash {
    0% { background-color: #D1FAE5; }
    100% { background-color: transparent; }
}
.scan-flash { animation: scanFlash 0.6s ease-out; }
@keyframes scanShake {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-4px); }
    75% { transform: translateX(4px); }
}
.scan-shake { animation: scanShake 0.3s ease-in-out; }

/* 操作列：行号 + 图标按钮组（参考暮豆 billsOper_goods） */
.bill-grid .col-row-num {
    width: 40px; text-align: center;
    color: #9CA3AF; font-size: 12px;
    background: #FAFBFC;
    border-right: 1px solid #F1F2F4;
    position: sticky; left: 0; z-index: 2;
}
.bill-grid .col-oper {
    width: 96px; text-align: center;
    background: #FAFBFC;
    border-right: 1px solid #F1F2F4;
    position: sticky; left: 40px; z-index: 2;
    box-shadow: 2px 0 4px -2px rgba(0,0,0,0.06);
}
.bill-grid .col-oper .oper-group {
    display: inline-flex; align-items: center; gap: 6px;
}
.bill-grid .col-oper .oper-icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 20px; height: 20px;
    color: #6B7280; cursor: pointer;
    border-radius: 3px;
    transition: all 0.15s;
}
.bill-grid .col-oper .oper-icon:hover {
    color: var(--primary-color);
    background: var(--primary-softer);
}
.bill-grid .col-oper .oper-icon.del:hover {
    color: #EF4444;
    background: #FEE2E2;
}
.bill-grid .col-oper .oper-icon .layui-icon {
    font-size: 14px;
}

/* 商品列：单元格即输入框（参考暮豆 goods 列） */
.bill-grid td.col-goods {
    position: relative;
    padding: 4px 24px 4px 6px;
}
.bill-grid td.col-goods .goods-input {
    width: 100%;
    height: 28px;
    padding: 0 6px;
    border: 1px solid transparent;
    border-radius: 4px;
    background: transparent;
    font-size: 13px;
    outline: none;
    text-align: left;
}
.bill-grid td.col-goods .goods-input:focus {
    border-color: var(--primary-color);
    background: #fff;
    box-shadow: 0 0 0 2px var(--primary-softer);
}
.bill-grid td.col-goods .goods-input::placeholder {
    color: #C9CDD4;
}
/* 商品列右侧的"三个小点"选择按钮：默认隐藏，输入框focus/hover时显示 */
.bill-grid td.col-goods .goods-pick {
    position: absolute;
    right: 4px; top: 50%;
    transform: translateY(-50%);
    width: 20px; height: 20px;
    display: inline-flex; align-items: center; justify-content: center;
    color: #9CA3AF; cursor: pointer;
    border-radius: 3px;
    opacity: 0; /* 默认隐藏 */
    transition: opacity 0.15s, color 0.15s, background 0.15s;
}
.bill-grid td.col-goods:hover .goods-pick,
.bill-grid td.col-goods .goods-input:focus ~ .goods-pick {
    opacity: 1; /* hover或focus时显示 */
}
.bill-grid td.col-goods .goods-pick:hover {
    color: var(--primary-color);
    background: var(--primary-softer);
}
.bill-grid td.col-goods .goods-pick .layui-icon {
    font-size: 14px;
}
/* 扫码枪激活时商品输入框的样式提示 */
.bill-grid.scan-mode td.col-goods .goods-input {
    background: #F0FDFA;
    border-color: #A7F3D0;
}
.bill-grid.scan-mode td.col-goods .goods-input::placeholder {
    color: #065F46;
}
/* 商品名称过长时省略号显示（已选商品只读状态） */
.bill-grid td.col-goods .goods-text {
    display: inline-block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: middle;
    color: #111827;
    font-size: 13px;
    line-height: 28px;
    padding: 0 6px;
}

/* 仓库列：每行可单独选择仓库
   浅色白底（明确 background-color:#fff 排除系统深灰原生渲染）+ 浅灰细边框 + 三点图标 */
.bill-grid td.col-location {
    padding: 4px 6px;
}
.bill-grid td.col-location .loc-select {
    width: 100%;
    height: 28px;
    border: 1px solid #d9dee3;
    border-radius: 4px;
    background-color: #ffffff;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='8' viewBox='0 0 14 8'%3E%3Ccircle cx='2.5' cy='4' r='1.3' fill='%239CA3AF'/%3E%3Ccircle cx='7' cy='4' r='1.3' fill='%239CA3AF'/%3E%3Ccircle cx='11.5' cy='4' r='1.3' fill='%239CA3AF'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 6px center;
    font-size: 13px;
    color: #111827;
    padding: 0 20px 0 6px;
    outline: none;
    cursor: pointer;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
}
.bill-grid td.col-location .loc-select:focus,
.bill-grid td.col-location .loc-select:hover {
    border-color: var(--primary-color);
    background-color: #ffffff;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='8' viewBox='0 0 14 8'%3E%3Ccircle cx='2.5' cy='4' r='1.3' fill='%230d9488'/%3E%3Ccircle cx='7' cy='4' r='1.3' fill='%230d9488'/%3E%3Ccircle cx='11.5' cy='4' r='1.3' fill='%230d9488'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 6px center;
}
/* 未选择仓库时（value="" + required → :invalid）：显示浅灰"请选择"占位（与单据头一致） */
.bill-grid td.col-location .loc-select:invalid {
    color: #9ca3af;
}

/* 单据底部：备注 + 金额横排 + 制单人 */
.bill-foot { margin-top: 12px; border-top: 1px solid #EEF0F2; padding-top: 12px; }
.bill-foot .bf-note { margin-bottom: 10px; }
.bill-foot .bf-note textarea {
    width: 100%; height: 50px;
    border: 1px solid #E5E7EB; border-radius: 4px;
    padding: 6px 10px; font-size: 13px;
    resize: vertical;
}
/* 金额横排区：参考暮豆 con-footer ul li */
.bill-amount-area {
    list-style: none; padding: 0; margin: 0 0 12px 0;
    display: flex; flex-wrap: wrap; gap: 0;
}
.bill-amount-area li {
    display: flex; align-items: center;
    margin: 0 28px 8px 0;
    min-width: 180px;
}
.bill-amount-area li label {
    flex: 0 0 84px;
    font-size: 13px; color:#6B7280;
}
.bill-amount-area li .layui-input {
    flex: 1 1 auto; max-width: 140px;
    height: 28px; padding: 0 8px;
    border: 1px solid #E5E7EB; border-radius: 4px;
    font-size: 13px;
}
.bill-amount-area li .layui-input[readonly] {
    background: #F9FAFB; color: #374151;
}
.bill-amount-area li.highlight .layui-input {
    color: #C76E8A; font-weight: 600;
}
/* 制单人/审核人灰色区 */
.bill-meta {
    list-style: none; padding: 8px 0 0 0; margin: 0;
    border-top: 1px dashed #E5E7EB;
    display: flex; flex-wrap: wrap; align-items: center; gap: 0;
    color: #9CA3AF; font-size: 12px;
}
.bill-meta li {
    margin: 4px 24px 4px 0;
    display: flex; align-items: center;
    line-height: 28px;
}
.bill-meta li label { color: #9CA3AF; margin-right: 4px; }
.bill-meta li span { color: #6B7280; }
.bill-meta li .layui-input-inline { margin: 0; }
.bill-meta li .layui-input-inline .layui-input,
.bill-meta li .layui-input-inline .layui-form-select { height: 28px; line-height: 28px; }
.bill-meta li .layui-input-inline .layui-form-select dl { top: 30px; }
/* 制单人区业务员简洁下拉（管理员可见）— 与 span 文本视觉一致 */
.bill-meta li .meta-select {
    height: 28px; line-height: 28px;
    padding: 0 24px 0 8px;
    border: 1px solid #E5E7EB; border-radius: 4px;
    background: #fff; color: #6B7280; font-size: 12px;
    appearance: none; -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%239CA3AF' d='M5 6L0 0h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 8px center;
    cursor: pointer; outline: none;
}
.bill-meta li .meta-select:hover { border-color: #C76E8A; }


/* ================================================================
   [8] 弹窗-复合表单（data-layout="complex"）
   与 [6] 普通表单共享相同的表单布局规则，仅命名空间不同
   ================================================================ */
.in-modal-iframe form[data-layout="complex"], .in-modal-inline form[data-layout="complex"] {
    display: block;
    padding: 20px 24px;
    background: #fff;
    border: none;
    border-radius: 0;
}
.in-modal-iframe form[data-layout="complex"] .layui-form-item.full-row,
.in-modal-inline form[data-layout="complex"] .layui-form-item.full-row,
.in-modal-iframe form[data-layout="complex"] .layui-form-item[style*="display:none"], .in-modal-inline form[data-layout="complex"] .layui-form-item[style*="display:none"] {
    grid-column: 1 / -1;
}
.in-modal-iframe form[data-layout="complex"] .layui-form-item, .in-modal-inline form[data-layout="complex"] .layui-form-item {
    display: flex;
    align-items: flex-start;
    margin-bottom: 16px;
}
.in-modal-iframe form[data-layout="complex"] .layui-form-label, .in-modal-inline form[data-layout="complex"] .layui-form-label {
    flex: 0 0 auto;
    width: 100px;
    padding-right: 12px;
    text-align: right;
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 32px;
    height: 32px;
}
.in-modal-iframe form[data-layout="complex"] .layui-input-block, .in-modal-inline form[data-layout="complex"] .layui-input-block {
    flex: 0 0 auto;
    margin-left: 0;
    min-height: auto;
}
.in-modal-iframe form[data-layout="complex"] .layui-input-block .layui-input,
.in-modal-inline form[data-layout="complex"] .layui-input-block .layui-input,
.in-modal-iframe form[data-layout="complex"] .layui-input-block select, .in-modal-inline form[data-layout="complex"] .layui-input-block select {
    width: 100%;
    max-width: 240px;
}
.in-modal-iframe form[data-layout="complex"] .layui-input-block input[type="number"], .in-modal-inline form[data-layout="complex"] .layui-input-block input[type="number"] {
    width: 100%;
    max-width: 160px;
}
.in-modal-iframe form[data-layout="complex"] .layui-input-block textarea, .in-modal-inline form[data-layout="complex"] .layui-input-block textarea {
    width: 100%;
    max-width: 480px;
    min-height: 80px;
}

/* ================================================================
   [9] 输入框尺寸系统 — 替代内联 style="width:xxxpx"
   用法：在 input/select/textarea 上加 class="input-sm/md/lg/xl/full"
   尺寸：sm=160px 短数字、md=240px 普通文本、lg=320px 长文本、xl=480px textarea、full=100%
   ================================================================ */
.in-modal-iframe .input-sm   { width: 160px !important; max-width: 160px !important; }
.in-modal-iframe .input-md   { width: 240px !important; max-width: 240px !important; }
.in-modal-iframe .input-lg   { width: 320px !important; max-width: 320px !important; }
.in-modal-iframe .input-xl   { width: 480px !important; max-width: 480px !important; }
.in-modal-iframe .input-full { width: 100% !important; max-width: none !important; }
/* textarea 尺寸 */
.in-modal-iframe textarea.input-sm  { width: 160px !important; max-width: 160px !important; min-height: 60px; }
.in-modal-iframe textarea.input-md  { width: 240px !important; max-width: 240px !important; min-height: 60px; }
.in-modal-iframe textarea.input-lg  { width: 320px !important; max-width: 320px !important; min-height: 80px; }
.in-modal-iframe textarea.input-xl  { width: 480px !important; max-width: 480px !important; min-height: 80px; }

/* Layui select 尺寸（原生select加class，模拟层继承宽度）
   使用高优先级选择器 + 默认宽度，防止form.render()时闪烁 */
.in-modal-iframe .layui-form-item .layui-input-block .layui-form-select,
.in-modal-inline .layui-form-item .layui-input-block .layui-form-select,
.in-modal-iframe .layui-form-item .layui-input-block .layui-form-select .layui-input, .in-modal-inline .layui-form-item .layui-input-block .layui-form-select .layui-input {
    width: 160px !important;
    max-width: 160px !important;
}
.in-modal-iframe .layui-form-item .layui-input-block select.input-sm + .layui-form-select,
.in-modal-inline .layui-form-item .layui-input-block select.input-sm + .layui-form-select,
.in-modal-iframe .layui-form-item .layui-input-block select.input-sm + .layui-form-select .layui-input, .in-modal-inline .layui-form-item .layui-input-block select.input-sm + .layui-form-select .layui-input {
    width: 160px !important;
    max-width: 160px !important;
}
.in-modal-iframe .layui-form-item .layui-input-block select.input-md + .layui-form-select,
.in-modal-inline .layui-form-item .layui-input-block select.input-md + .layui-form-select,
.in-modal-iframe .layui-form-item .layui-input-block select.input-md + .layui-form-select .layui-input, .in-modal-inline .layui-form-item .layui-input-block select.input-md + .layui-form-select .layui-input {
    width: 240px !important;
    max-width: 240px !important;
}
.in-modal-iframe .layui-form-item .layui-input-block select.input-lg + .layui-form-select,
.in-modal-inline .layui-form-item .layui-input-block select.input-lg + .layui-form-select,
.in-modal-iframe .layui-form-item .layui-input-block select.input-lg + .layui-form-select .layui-input, .in-modal-inline .layui-form-item .layui-input-block select.input-lg + .layui-form-select .layui-input {
    width: 320px !important;
    max-width: 320px !important;
}
.in-modal-iframe .layui-form-item .layui-input-block select.input-xl + .layui-form-select,
.in-modal-inline .layui-form-item .layui-input-block select.input-xl + .layui-form-select,
.in-modal-iframe .layui-form-item .layui-input-block select.input-xl + .layui-form-select .layui-input, .in-modal-inline .layui-form-item .layui-input-block select.input-xl + .layui-form-select .layui-input {
    width: 480px !important;
    max-width: 480px !important;
}
/* 下拉面板宽度跟随 */
.in-modal-iframe .layui-form-item .layui-input-block select.input-sm + .layui-form-select dl { min-width: 160px; }
.in-modal-iframe .layui-form-item .layui-input-block select.input-md + .layui-form-select dl { min-width: 240px; }
.in-modal-iframe .layui-form-item .layui-input-block select.input-lg + .layui-form-select dl { min-width: 320px; }
.in-modal-iframe .layui-form-item .layui-input-block select.input-xl + .layui-form-select dl { min-width: 480px; }

/* --- 列表页搜索区 --- */
.plat-search-bar {
    background: #fff;
    border: 1px solid var(--border-light);
    border-radius: 12px;
    padding: 12px 16px;
    margin-bottom: 12px;
    box-shadow: var(--shadow-xs, 0 1px 2px rgba(0,0,0,0.03));
}
/* 搜索栏内的 form 才是真正的 flex 容器，确保 input/select/button 横向排列 */
/* nowrap：所有控件保持一行；超宽时横向滚动（隐藏滚动条），避免控件被挤换行 */
.plat-search-bar .layui-form {
    display: flex;
    flex-wrap: nowrap;
    overflow-x: auto;
    gap: 10px;
    align-items: center;
    scrollbar-width: none;
}
.plat-search-bar .layui-form::-webkit-scrollbar { display: none; }
.plat-search-bar .layui-input,
.plat-search-bar .layui-form-select,
.plat-search-bar .layui-btn,
.plat-search-bar .layui-btn-group {
    flex-shrink: 0;
}
.plat-search-bar .layui-input {
    height: 32px;
    line-height: 32px;
    border: 1px solid var(--border-color);
    border-radius: 6px;
    font-size: 13px;
    width: auto;
    min-width: 0;
    max-width: 260px;
}
.plat-search-bar .layui-input:focus { border-color: var(--primary-color); }
.plat-search-bar .layui-form-select .layui-input { min-width: 100px; }
.plat-search-bar .layui-btn {
    height: 32px;
    line-height: 32px;
    padding: 0 10px;
    font-size: 13px;
    border-radius: 6px;
}

/* 按钮组内按钮恢复 layui 组内边框/圆角（避免被上方 border-radius:6px 覆盖导致边框异常） */
/* layui 默认第一个按钮 border-left:none，这里补回左边框并让组内分隔线可见，形成连贯按钮组 */
.plat-search-bar .layui-btn-group {
    align-self: center;
    height: 32px;
    line-height: 32px;
    margin-top: 0;
}
.plat-search-bar .layui-btn-group .layui-btn {
    border-radius: 0;
    margin-left: 0;
    margin-right: 0;
    margin-top: 0 !important;
}
.plat-search-bar .layui-btn-group .layui-btn:first-child {
    border-top-left-radius: 6px;
    border-bottom-left-radius: 6px;
    border-left: 1px solid var(--border-color, #d9d9d9);
}
.plat-search-bar .layui-btn-group .layui-btn:last-child {
    border-top-right-radius: 6px;
    border-bottom-right-radius: 6px;
}
.plat-search-bar .layui-btn-group .layui-btn + .layui-btn {
    border-left: 1px solid var(--border-color, #d9d9d9);
    margin-left: -1px;
}

/* --- Layui 表格覆盖 — 白底浅灰表头 --- */
.layui-table { margin: 0; }
.layui-table thead tr,
.layui-table-header,
.layui-table-tool {
    background-color: #F7F8FA !important;
}
.layui-table thead th,
.layui-table-header th {
    background-color: #F7F8FA !important;
    color: #4B5563 !important;
    font-weight: 500 !important;
    font-size: 13px !important;
    border-bottom: 1px solid #EEF0F3 !important;
}
.layui-table td {
    border-bottom: 1px solid #EEF0F3 !important;
    color: #1F2937 !important;
    font-size: 13px !important;
    text-align: center !important;
    vertical-align: middle !important;
}
.layui-table th {
    text-align: center !important;
    vertical-align: middle !important;
}
.layui-table-hover,
.layui-table-click,
.layui-table[lay-even] tr:nth-child(even) {
    background-color: #FAFBFC !important;
}
.layui-table-hover {
    background-color: #F0FAF5 !important;
}
.layui-table-page {
    border-top: 1px solid #EEF0F3;
    padding: 12px 16px;
}
.layui-table-page .layui-laypage a,
.layui-table-page .layui-laypage span {
    border-radius: 6px;
    border-color: #E5E7EB;
    color: #4B5563;
    font-size: 13px;
}

/* ============================================================
   响应式适配 — 不同电脑分辨率自适应
   关键断点：
   - 1440×900  大屏笔记本（侧栏稍窄，padding 稍紧）
   - 1366×768  常见笔记本（最常见低分辨率，必须可读可用）
   - 1280×720  入门级笔记本
   - 1024×768  平板/老电脑（侧栏自动折叠，单列布局）
   - 800px     极小窗口（保证不溢出）
   设计原则：保持核心功能可用，不强制缩小到无法点击；
            弹窗、表单、表格优先滚动而非压缩；
            侧栏在窄屏自动折叠为图标模式。
   注意：纯净版默认 --side-width: 200px，以下断点仅在窄屏时收窄
   ============================================================ */

/* 1440px 及以下：紧凑布局 */
@media (max-width: 1440px) {
    :root {
        --side-width: 180px;       /* 侧栏收窄，腾出主内容空间 */
        --header-height: 52px;     /* header 稍微压低 */
        --footer-height: 40px;
    }
    .page-container { padding: 10px 12px; }
    .content-card .card-header { padding: 10px 14px; }
    .content-card .card-body { padding: 12px 14px; }
    /* 菜单项：压缩 margin 和 padding，给文字和箭头更多空间 */
    .layui-nav-tree .layui-nav-item { margin: 2px 4px; }
    .layui-nav-tree .layui-nav-item a { padding: 0 24px 0 12px; font-size: 13px; }
    .layui-nav-tree .layui-nav-child dd a { padding-left: 38px; }
    .layui-nav-tree .layui-nav-child dd.has-sub .sub-nav dd a { padding-left: 56px; }
}

/* 1366px 专属断点：最常见低分辨率笔记本，进一步压缩 */
@media (max-width: 1366px) {
    :root {
        --side-width: 170px;
        --header-height: 48px;
        --footer-height: 36px;
    }
    .page-container { padding: 6px 10px; }
    .content-card .card-header { padding: 8px 12px; }
    .content-card .card-title { font-size: 13px; }
    .content-card .card-body { padding: 10px 12px; }
    /* Tab 栏压缩（弥补未变量化的缺陷） */
    .ls-tabs-header { height: 36px; }
    .ls-tabs-list { height: 36px; }
    .ls-tab { height: 36px; line-height: 36px; font-size: 12.5px; padding: 0 12px; }
    /* 菜单进一步紧凑 */
    .layui-nav-tree .layui-nav-item { margin: 1px 2px; }
    .layui-nav-tree .layui-nav-item a { padding: 0 22px 0 10px; font-size: 12.5px; height: 38px; line-height: 38px; }
    .layui-nav-tree .layui-nav-item a i { margin-right: 6px; font-size: 15px; }
    /* 弹窗内表单控件缩窄 */
    .in-modal-iframe .content-card > form,
    .in-modal-inline .content-card > form,
    .in-modal-iframe .content-card > .saas-modal-form { padding: 14px 18px; }
    .in-modal-iframe .content-card .card-header { padding: 10px 16px; }
    .in-modal-iframe form[data-layout="form"] .layui-form-label,
    .in-modal-inline form[data-layout="form"] .layui-form-label,
    .in-modal-iframe form[data-layout="complex"] .layui-form-label { width: 88px; padding-right: 8px; }
    .in-modal-iframe form[data-layout="form"] .layui-input-block .layui-input,
    .in-modal-inline form[data-layout="form"] .layui-input-block .layui-input,
    .in-modal-iframe form[data-layout="form"] .layui-input-block select,
    .in-modal-inline form[data-layout="form"] .layui-input-block select,
    .in-modal-iframe form[data-layout="complex"] .layui-input-block .layui-input,
    .in-modal-inline form[data-layout="complex"] .layui-input-block .layui-input,
    .in-modal-iframe form[data-layout="complex"] .layui-input-block select { max-width: 200px; }
    .in-modal-iframe form[data-layout="form"] .layui-input-block input[type="number"],
    .in-modal-inline form[data-layout="form"] .layui-input-block input[type="number"],
    .in-modal-iframe form[data-layout="complex"] .layui-input-block input[type="number"] { max-width: 130px; }
    .in-modal-iframe form[data-layout="form"] .layui-input-block textarea,
    .in-modal-inline form[data-layout="form"] .layui-input-block textarea,
    .in-modal-iframe form[data-layout="complex"] .layui-input-block textarea { max-width: 400px; }
    .in-modal-iframe .modal-footer { height: 44px; padding: 6px 16px; }
    /* 表格分页栏压缩 */
    .layui-table-page { padding: 6px 10px; }
    .layui-table-page .layui-laypage a, .layui-table-page .layui-laypage span { padding: 0 8px; height: 24px; line-height: 24px; }
    /* modal-footer 压缩 */
    .modal-footer { height: 44px; padding: 6px 16px; }
}

/* 1280px 及以下：进一步紧凑 + 三级菜单缩进收窄 */
@media (max-width: 1280px) {
    :root { --side-width: 160px; }
    /* 菜单进一步压缩 */
    .layui-nav-tree .layui-nav-item { margin: 1px 2px; }
    .layui-nav-tree .layui-nav-item a { padding: 0 22px 0 10px; font-size: 12.5px; }
    .layui-nav-tree .layui-nav-item a i { margin-right: 6px; font-size: 15px; }
    .layui-nav-tree .layui-nav-child dd a { padding-left: 34px; font-size: 12.5px; }
    .layui-nav-tree .layui-nav-child dd.has-sub .sub-nav dd a { padding-left: 50px; }
}

/* 1024px 以下：侧栏自动折叠为图标模式（视觉收起，但保留 hover 浮层） */
@media (max-width: 1024px) {
    :root { --side-width: 52px !important; }  /* !important 压过后面的重复 1440 断点，保证窄屏折叠对齐 */
    .layui-side-scroll { width: 72px; }
    .layui-nav-tree { width: 52px; padding: 8px 0; }
    /* 顶级菜单文字隐藏，仅显示图标居中，箭头隐藏 */
    .layui-nav-tree .layui-nav-item { margin: 2px 4px; }
    .layui-nav-tree .layui-nav-item > a {
        text-align: center;
        padding: 0;
        height: 44px; line-height: 44px;
    }
    .layui-nav-tree .layui-nav-item > a span { display: none; }
    .layui-nav-tree .layui-nav-item > a i { width: auto; margin-right: 0; font-size: 18px; }
    .layui-nav-tree .layui-nav-item .layui-nav-more { display: none; }
    .layui-nav-tree .layui-nav-child { display: none; }
    body { min-width: 768px; }
    body:not(.side-spread) .layui-layout-admin .layui-side { width: 52px; }
}

/* 800px 以下：极小窗口（很少见，但保证不溢出） */
@media (max-width: 800px) {
    :root { --side-width: 52px; --header-height: 48px; --footer-height: 36px; }
    .page-container { padding: 6px 8px; }
    .content-card .card-header { padding: 8px 10px; }
    .content-card .card-title { font-size: 13px; }
}

/* 低高度屏幕（800px 高度以下）：压缩 header/tab/footer，给主内容更多空间 */
@media (max-height: 800px) {
    :root { --header-height: 50px; --footer-height: 38px; }
    .page-container { padding: 8px 12px; }
}

@media (max-width: 1440px) {
    :root {
        --side-width: 180px;       /* 侧栏收窄，腾出主内容空间 */
        --header-height: 52px;     /* header 稍微压低 */
        --footer-height: 40px;
    }
    .page-container { padding: 10px 12px; }
    .content-card .card-header { padding: 10px 14px; }
    .content-card .card-body { padding: 12px 14px; }
    /* 菜单项：压缩 margin 和 padding，给文字和箭头更多空间 */
    .layui-nav-tree .layui-nav-item { margin: 2px 4px; }
    .layui-nav-tree .layui-nav-item a { padding: 0 24px 0 12px; font-size: 13px; }
    .layui-nav-tree .layui-nav-child dd a { padding-left: 38px; }
    .layui-nav-tree .layui-nav-child dd.has-sub .sub-nav dd a { padding-left: 56px; }
    /* 单据头：grid 布局下仅微调内边距与标签宽度 */
    .bill-head .bh-cell { padding: 3px 0; }
    .bill-head .bh-cell .bh-label { flex: 0 0 72px; min-width: 72px; font-size: 13px; text-align: right; }
    .bill-grid .layui-table thead th { height: 30px; font-size: 11px; padding: 0 4px; }
    .bill-grid .layui-table tbody td { padding: 3px 4px; height: 32px; }
    .bill-grid .layui-input { height: 26px; font-size: 12px; }
    .bill-amount-area li { min-width: 150px; margin-right: 16px; }
    .bill-amount-area li label { flex: 0 0 70px; }
    .bill-meta li { margin-right: 16px; }
}

@media (max-height: 700px) {
    :root { --header-height: 46px; --footer-height: 34px; }
    .page-container { padding: 6px 10px; }
    .content-card .card-header { padding: 8px 12px; }
}
