/* ============================================================
 * AdminLTE3 桥接层（在 app.css 之后加载）
 * 目的：实体 Bootstrap4 / AdminLTE3 已引入，本层把现有自研组件
 * 的视觉向 AL3 靠拢（卡片、按钮、表格、徽章、提示、输入框），
 * 不改变现有 DOM 结构、类名与 app.js 交互（自研模态/分页保留）。
 * 阶段2逐页迁移时，再逐步把结构替换为原生 BS/AL 组件。
 * ============================================================ */

/* 内容区背景与间距（AL3 content-wrapper 已在壳内设置） */
.content { padding: 0; }

/* 卡片：AL3 白色浮起卡片 */
.card {
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: .25rem;
    box-shadow: 0 0 1px rgba(0,0,0,.08);
    margin-bottom: 1rem;
}
.card-header {
    background: transparent;
    border-bottom: 1px solid #e9ecef;
    padding: .9rem 1.1rem;
}
.card-header h3 { font-size: 1rem; font-weight: 600; color: #343a40; }
.card-body { padding: 1.1rem; }
.card-footer { background: transparent; padding: .9rem 1.1rem; }

/* 按钮：实体 BS4 观感，保留主题色变量 */
.btn {
    border-radius: .25rem;
    font-weight: 500;
    box-shadow: none;
    transition: background-color .15s, border-color .15s, box-shadow .15s;
}
.btn:focus, .btn.focus { box-shadow: 0 0 0 .2rem rgba(37,99,235,.25); outline: none; }
.btn-primary { background: var(--primary, #2563eb); border: 1px solid var(--primary, #2563eb); }
.btn-primary:hover { background: var(--primary-dark, #1d4ed8); border-color: var(--primary-dark, #1d4ed8); color: #fff; }
.btn-success { background: #28a745; border: 1px solid #28a745; }
.btn-success:hover { background: #218838; color: #fff; }
.btn-danger { background: #dc354c; border: 1px solid #dc354c; }
.btn-danger:hover { background: #c82333; color: #fff; }
.btn-warning { background: #ffc107; border: 1px solid #ffc107; color: #212529; }
.btn-warning:hover { background: #e0a800; color: #212529; }
.btn-outline { background: #fff; border: 1px solid #ced4da; color: #495057; }
.btn-outline:hover { border-color: var(--primary, #2563eb); color: var(--primary, #2563eb); background: #fff; }

/* 表格：AL3 紧凑表头 + 边框感 */
.table { color: #495057; font-size: .875rem; }
.table th {
    background: #f4f6f9;
    color: #6c757d;
    font-weight: 600;
    border-bottom: 2px solid #dee2e6;
}
.table td { border-bottom: 1px solid #e9ecef; }
.table tbody tr:hover { background: #f8f9fa; }

/* 输入框：BS4 高度与聚焦环 */
.form-control {
    border: 1px solid #ced4da;
    border-radius: .25rem;
    height: 38px;
    color: #495057;
}
textarea.form-control { height: auto; min-height: 84px; }
.form-control:focus {
    border-color: #80bdff;
    box-shadow: 0 0 0 .2rem rgba(0,123,255,.15);
}
select.form-control { height: 38px; }

/* 徽章：AL3 pill */
.badge { border-radius: 999px; font-weight: 600; font-size: .75rem; padding: .25em .6em; }

/* 提示条：AL3 左色条观感（结构不变） */
.alert { border-radius: .25rem; border: 1px solid transparent; }
.alert-success { background: #d4edda; color: #155724; border-color: #c3e6cb; }
.alert-danger  { background: #f8d7da; color: #721c24; border-color: #f5c6cb; }
.alert-warning{ background: #fff3cd; color: #856404; border-color: #ffeeba; }
.alert-info    { background: #d1ecf1; color: #0c5460; border-color: #bee5eb; }

/* 分页：BS4 原生 page-item/page-link（函数已输出原生结构），兼容旧 li a */
.pagination-wrap { display: flex; justify-content: center; padding: 16px 0 6px; }
.pagination { margin: 0; gap: 0; }
.pagination .page-link,
.pagination li a {
    border-radius: .25rem;
    border: 1px solid #dee2e6;
    color: #495057;
    background: #fff;
}
.pagination .page-link { margin-left: -1px; }
.pagination .page-item.active .page-link,
.pagination li.active a { background: var(--primary, #2563eb); border-color: var(--primary, #2563eb); color: #fff; z-index: 3; }
.pagination .page-item.disabled .page-link,
.pagination li.disabled span { color: #6c757d; background: #fff; border-color: #dee2e6; }
.pagination .page-link:hover,
.pagination li a:hover { color: var(--primary, #2563eb); border-color: #c7d7fe; background: #fff; }

/* 空状态 */
.empty-state { color: #6c757d; text-align: center; padding: 32px 16px; font-size: .9rem; }

/* ============================================================
 * 侧栏布局确定性兜底
 * 背景：app.css 旧壳的 .sidebar 与 AL3 内层 div.sidebar 重名，旧规则
 * (position:fixed;width:230px;窄屏 translateX(-100%))会污染 AL3 侧栏，
 * 造成桌面菜单被固定/移出、出现空黑条。这里先把内层复位回 AL3 正常流，
 * 再用媒体查询钉死外层宽度与位移。不改任何 JS 类判断。
 * ============================================================ */
/* 全局：复位 AL3 内层 .sidebar，脱离旧壳 fixed/宽度/位移/异色背景 */
.main-sidebar {
    box-shadow: none !important;
    border-right: 0 !important;
}
/* 侧栏滚动条视觉完全隐藏（overflow 仍为 auto，滚轮/触控照常可滚，不占视觉宽度）：
   内容未超出时绝不出现任何条/槽，超出时也保持无条的干净观感（飞书/钉钉） */
.main-sidebar { scrollbar-width: none; -ms-overflow-style: none; }
.main-sidebar::-webkit-scrollbar { width: 0 !important; height: 0 !important; display: none; }
.main-sidebar .sidebar {
    position: static !important;
    width: auto !important;
    left: auto !important;
    margin-left: 0 !important;
    transform: none !important;
    z-index: auto !important;
    display: block !important;
    flex-direction: initial !important;
    background: transparent !important;
    overflow: visible;
}
/* 抵消旧壳 body.sidebar-collapsed .sidebar{width:64px} 对 AL3 内层的压窄 */
body.sidebar-collapsed .main-sidebar .sidebar { width: auto !important; }
/* 旧壳记忆类在新壳不参与折叠（折叠一律走 AL3 的 body.sidebar-collapse） */
body.sidebar-collapsed { }
body.sidebar-collapsed .main-sidebar { width: 250px !important; }
@media (min-width: 992px) {
    .main-sidebar {
        position: fixed !important;
        top: 0;
        bottom: 0;
        left: 0;
        width: 250px !important;
        margin-left: 0 !important;
        transform: none !important;
        transition: width .2s ease-in-out;
        overflow-y: auto;
    }
    .main-sidebar nav,
    .main-sidebar .nav-sidebar {
        margin-left: 0 !important;
        transform: none !important;
        left: auto !important;
    }
    .main-sidebar .nav-sidebar .nav-link p { display: inline !important; }
    .content-wrapper { margin-left: 250px !important; transition: margin-left .2s ease-in-out; }
    .main-footer { margin-left: 250px !important; }

    /* pushmenu 折叠态（body.sidebar-collapse）：收窄为图标轨，对齐图2 */
    body.sidebar-collapse .main-sidebar { width: 64px !important; }
    body.sidebar-collapse .content-wrapper { margin-left: 64px !important; }
    body.sidebar-collapse .main-footer { margin-left: 64px !important; }
    body.sidebar-collapse .brand-link {
        padding: 0 !important;
        height: 48px;
        display: flex !important;
        align-items: center;
        justify-content: center;
        text-align: center;
    }
    body.sidebar-collapse .brand-home { padding: 0; height: 48px; }
    body.sidebar-collapse .brand-text { display: none !important; }
    body.sidebar-collapse .nav-sidebar .nav-link {
        padding-left: 0 !important;
        padding-right: 0 !important;
        display: flex;
        align-items: center;
        justify-content: center;
        min-height: 44px;
    }
    /* 折叠态：仅隐藏一级菜单文字（父级/直达项），浮层内子项文字保留 */
    body.sidebar-collapse .nav-sidebar > .nav-item > .nav-link > p,
    body.sidebar-collapse .nav-sidebar > .nav-item > .nav-link > p > i.right,
    body.sidebar-collapse .nav-sidebar > .nav-item.has-treeview > .nav-link > p::after { display: none !important; }
    body.sidebar-collapse .nav-sidebar .nav-icon { margin-right: 0 !important; }

    /* 折叠态：侧栏各层取消裁剪，让悬停浮层/子菜单探出到图标轨右侧 */
    body.sidebar-collapse .main-sidebar,
    body.sidebar-collapse .main-sidebar .sidebar,
    body.sidebar-collapse .nav-sidebar { overflow: visible !important; }
    body.sidebar-collapse .nav-sidebar > .nav-item { position: relative; }

    /* 直达项（无分组）：悬停图标右侧浮出名称 tooltip */
    body.sidebar-collapse .nav-sidebar > .nav-item:not(.has-treeview) > .nav-link::after {
        content: attr(data-label);
        position: absolute;
        left: calc(100% + 12px);
        top: 50%;
        transform: translateY(-50%);
        background: #1f2937;
        color: #fff;
        font-size: 12.5px;
        line-height: 1.4;
        padding: 7px 11px;
        border-radius: 8px;
        white-space: nowrap;
        opacity: 0;
        pointer-events: none;
        transition: opacity .15s ease;
        z-index: 9999;
        box-shadow: 0 6px 16px rgba(15, 23, 42, .22);
    }
    body.sidebar-collapse .nav-sidebar > .nav-item:not(.has-treeview) > .nav-link:hover::after { opacity: 1; }

    /* 分组图标：未展开时悬停显示组名小标签；已展开(.lv-open)由白卡标题承担，不重复 */
    body.sidebar-collapse .nav-sidebar > .nav-item.has-treeview:not(.lv-open) > .nav-link::after {
        content: attr(data-label);
        position: absolute;
        left: calc(100% + 12px);
        top: 50%;
        transform: translateY(-50%);
        background: #1f2937;
        color: #fff;
        font-size: 12.5px;
        line-height: 1.4;
        padding: 7px 11px;
        border-radius: 8px;
        white-space: nowrap;
        opacity: 0;
        pointer-events: none;
        transition: opacity .15s ease;
        z-index: 9999;
        box-shadow: 0 6px 16px rgba(15, 23, 42, .22);
    }
    body.sidebar-collapse .nav-sidebar > .nav-item.has-treeview:not(.lv-open) > .nav-link:hover::after { opacity: 1; }

    /* 分组：悬停图标，右侧浮出该组子菜单白卡（hover 父 li 保持，可移入选择） */
    body.sidebar-collapse .nav-treeview {
        display: none !important;
        position: absolute;
        left: 64px;
        top: 0;
        z-index: 9999;
        min-width: 184px;
        max-height: 70vh;
        overflow-y: auto;
        margin: 0;
        padding: 6px;
        list-style: none;
        background: #fff;
        border: 1px solid #ebedf0;
        border-radius: 10px;
        box-shadow: 0 8px 24px rgba(15, 23, 42, .16);
    }
    /* 分组：点击图标固定展开(.lv-open)，白卡常驻可自由移入选择；不再用 hover 自动弹出，避免跨越空隙断连 */
    body.sidebar-collapse .nav-sidebar > .nav-item.has-treeview.lv-open > .nav-treeview { display: block !important; }
    body.sidebar-collapse .nav-treeview > .nav-item > .nav-link {
        display: block;
        padding: 9px 10px;
        margin: 1px 0;
        border-radius: 8px;
        color: #374151;
        font-size: 13.5px;
        white-space: nowrap;
    }
    body.sidebar-collapse .nav-treeview > .nav-item > .nav-link:hover { background: #f5f7fa; color: var(--primary); }
    body.sidebar-collapse .nav-treeview > .nav-item > .nav-link.active { background: var(--primary-soft); color: var(--primary); font-weight: 600; }
    /* 白卡顶部分组标题 */
    body.sidebar-collapse .nav-treeview::before {
        content: attr(data-group);
        display: block;
        font-size: 11.5px;
        font-weight: 600;
        color: #9aa0a6;
        letter-spacing: .02em;
        padding: 4px 12px 6px;
    }
    /* 折叠浮层内：子项小图标 + 文字横向对齐，常态灰、悬停/选中主色 */
    body.sidebar-collapse .nav-treeview > .nav-item > .nav-link { display: flex; align-items: center; gap: 8px; }
    body.sidebar-collapse .nav-treeview > .nav-item > .nav-link > i.nav-icon {
        display: inline-block;
        width: 1.25em;
        min-width: 1.25em;
        text-align: center;
        font-size: 12.5px;
        color: #9aa0a6;
        margin: 0;
    }
    body.sidebar-collapse .nav-treeview > .nav-item > .nav-link:hover > i.nav-icon,
    body.sidebar-collapse .nav-treeview > .nav-item > .nav-link.active > i.nav-icon { color: var(--primary); }
}
/* 顶栏汉堡按钮：桌面端隐藏，仅小窗显示（移动端打开抽屉菜单） */
.main-header .mobile-menu-btn,
button.mobile-menu-btn {
    display: none !important;
    background: none;
    border: none;
    width: 38px; height: 38px;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    font-size: 19px;
    color: #334155;
    cursor: pointer;
    flex: 0 0 auto;
}
.mobile-menu-btn:hover { background: #f1f5f9; }
/* 移动端抽屉遮罩：默认隐藏，body.sidebar-open 时显示 */
.sidebar-backdrop {
    display: none;
    position: fixed; inset: 0;
    z-index: 1030;
    background: rgba(15,23,42,.45);
}

@media (max-width: 991.98px) {
    .main-header .mobile-menu-btn,
    button.mobile-menu-btn { display: inline-flex !important; }
    .main-sidebar {
        position: fixed !important;
        top: 0;
        bottom: 0;
        left: 0;
        margin-left: -250px !important;
        transform: none !important;
        transition: margin-left .3s ease-in-out;
        overflow-y: auto;
        z-index: 1040;
        box-shadow: 2px 0 14px rgba(15,23,42,.2);
    }
    body.sidebar-open .main-sidebar { margin-left: 0 !important; }
    body.sidebar-open .sidebar-backdrop { display: block; }
    body.sidebar-open { overflow: hidden; }
    .content-wrapper, .main-footer { margin-left: 0 !important; }
}

/* ============================================================
 * 侧栏图标补全
 * 本地 fa.css 为子集，未收录 coins/users-gear/file-signature/
 * diagram-project/circle；分组图标已在 main.php 换成收录项，
 * 子菜单圆点不依赖字体，用 CSS 绘制，避免空白位。
 * ============================================================ */
.main-sidebar .nav-treeview .nav-link > i.nav-icon {
    width: 1.25em !important;
    min-width: 1.25em !important;
    height: auto !important;
    border-radius: 0 !important;
    background: transparent !important;
    font-size: 13px !important;
    line-height: 1 !important;
    margin-right: .5em !important;
    color: #9aa0a6;
    display: inline-block;
    flex: none;
    align-self: center;
    text-align: center;
}

/* 顶部品牌：SaaS 常规 logo 方块 + 系统名（文字单行省略号，不换行不挤压） */
.brand-home { display: flex; align-items: center; gap: 10px; min-height: 48px; height: auto; padding: 8px 16px; color: inherit; text-decoration: none; overflow: hidden; }
.brand-image {
    width: 36px !important;
    height: 36px !important;
    min-width: 36px !important;
    min-height: 36px !important;
    flex: 0 0 36px !important;
    border-radius: 50% !important;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 17px;
    line-height: 1;
    color: #fff;
    background: linear-gradient(135deg, #2563eb, #4f7df9);
    box-shadow: 0 2px 6px rgba(37, 99, 235, .25);
}
.brand-text { margin-left: 0 !important; font-weight: 600 !important; font-size: 14px !important; white-space: normal; text-align: center; line-height: 1.4; word-break: break-word; min-width: 0; flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; }
/* 折叠态轨顶“展开菜单”按钮：默认隐藏，body.sidebar-collapse 时绝对定位钉在轨顶（复用 pushmenu） */
.collapse-show-btn { display: none; }
/* 折叠态侧栏必须保持 fixed（沿用 AL3 定位），切勿改成 relative：
   否则侧栏参与文档流，其菜单自然高度会把 content-wrapper 整体顶到视口外，
   表现为“折叠后右侧内容整片空白、上下无间距”。fixed 元素本身即是绝对子级的包含块，
   故 .collapse-show-btn 的 absolute 定位无需父级 position:relative。 */
body.sidebar-collapse .main-sidebar { position: fixed !important; top: 0; bottom: 0; left: 0; }
body.sidebar-collapse .collapse-show-btn {
    display: flex !important;
    position: absolute;
    top: 0;
    left: 0;
    width: 64px;
    height: 44px;
    z-index: 30;
    align-items: center;
    justify-content: center;
    color: #fff;
    cursor: pointer;
    font-size: 1.1rem;
    background: rgba(255, 255, 255, .06);
    border-bottom: 1px solid rgba(255, 255, 255, .08);
}
body.sidebar-collapse .collapse-show-btn:hover { color: rgba(255, 255, 255, .8); background: rgba(255, 255, 255, .12); }

/* 分组展开箭头：字体子集缺 chevron/angle 字形，改用 CSS 三角，不依赖字体 */
.nav-sidebar > .nav-item.has-treeview > .nav-link p { position: relative; padding-right: 1.4em; }
.nav-sidebar > .nav-item.has-treeview > .nav-link p > i.right { display: none; }
.nav-sidebar > .nav-item.has-treeview > .nav-link > p::after {
    content: '';
    position: absolute;
    right: .2em;
    top: 50%;
    width: .45em;
    height: .45em;
    border-right: 1.5px solid rgba(255, 255, 255, .7);
    border-bottom: 1.5px solid rgba(255, 255, 255, .7);
    transform: translateY(-65%) rotate(45deg);
    transition: transform .2s ease;
}
.nav-sidebar > .nav-item.menu-open > .nav-link > p::after {
    transform: translateY(-35%) rotate(225deg);
}

/* ============================================================
 * 阶段3：模态 BS4 原生级行为补丁（不改视图DOM/调用签名）
 * ============================================================ */
/* 打开模态时锁定背景滚动（对齐 BS4 body.modal-open） */
body.modal-open { overflow: hidden; }
/* 遮罩淡入 + 卡片轻微上浮，对齐 BS4 fade/scale */
.modal-mask { transition: opacity .2s ease; opacity: 0; }
.modal-mask.show { opacity: 1; }
.modal-mask.show > .modal { animation: modal-in .18s ease; }
/* 卡片统一 BS4 圆角/阴影/最大宽，header 标题加粗、关闭按钮可点区域 */
.modal { border-radius: .5rem; }
.modal-header { align-items: center; }
.modal-header h3 { font-weight: 600; margin: 0; }
.modal-close { min-width: 32px; min-height: 32px; display: inline-flex; align-items: center; justify-content: center; border-radius: .375rem; }
.modal-close:hover { color: #495057; background: #f1f3f5; }
/* 确认框 sm 卡片居中观感（复用现有 confirm-body） */
.modal.sm { max-width: 400px; }
.modal.sm .modal-footer { justify-content: center; gap: 10px; }

/* ============================================================
 * 阶段2收尾：搜索栏 / 表单栅格 BS4 观感对齐（不改结构/name/action/JS）
 * ============================================================ */
.search-bar {
    align-items: flex-end;
    gap: 10px 12px;
    padding: 14px 18px;
    border-radius: .5rem .5rem 0 0;
    background: #f8f9fa;
    border-bottom: 1px solid #e9ecef;
}
.search-bar .form-group { display: flex; flex-direction: column; margin-bottom: 0; min-width: 150px; }
.search-bar .form-group > label { font-size: .82rem; color: #6c757d; margin-bottom: 4px; }
.search-bar .form-control,
.search-bar select.form-control { height: 34px; font-size: .875rem; }
.search-bar .btn { height: 34px; align-self: flex-end; }

/* 表单栅格：对齐 BS4 row/col 间距与控件等高 */
.form-row { gap: 14px 18px; }
.form-row .form-group { margin-bottom: 0; }
.form-row .form-group > label { font-size: .875rem; color: #495057; margin-bottom: 6px; }
.form-row .form-control,
.form-row select.form-control { height: 38px; font-size: .875rem; }

/* ============================================================
 * 顶部右侧：消息铃铛 + 用户胶囊（SVG 图标，不依赖字体子集）
 * ============================================================ */
.main-header .navbar-nav.ml-auto { align-items: center; }
.navbar-icon-btn {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px; height: 38px;
    border-radius: .5rem;
    color: #495057;
}
.navbar-icon-btn:hover { background: #f1f3f5; color: #212529; }
.navbar-icon-btn .nav-svg { width: 19px !important; height: 19px !important; flex: none; color: #495057; }
.navbar-icon-btn .navbar-badge {
    position: absolute;
    top: 5px; right: 4px;
    min-width: 17px; height: 17px;
    padding: 0 4px;
    font-size: 11px;
    line-height: 17px;
    border-radius: 9px;
    border: 2px solid #fff;
}
.user-chip {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 4px 10px 4px 5px;
    border-radius: 999px;
    color: #343a40;
}
.user-chip:hover { background: #f1f3f5; }
.user-avatar {
    width: 32px; height: 32px;
    border-radius: 50%;
    background: var(--primary, #2563eb);
    color: #fff;
    font-size: 14px;
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: none;
}
.user-name { font-size: 14px; font-weight: 500; color: #343a40; }
.user-chip .caret { width: 13px !important; height: 13px !important; flex: none; color: #adb5bd; }
.user-menu .dropdown-menu { margin-top: 8px; min-width: 180px; border-radius: .5rem; padding: 6px; }
.user-menu .dropdown-item { border-radius: .375rem; padding: 8px 12px; font-size: 14px; }

/* ============================================================
 * 全局视觉精修 v1.4.18：标题层级 / 卡片 / 提示条 / 表格 / 留白
 * 纯 CSS 覆盖，不改任何视图、接口、表单与交互
 * ============================================================ */

/* 1) 隐藏壳层重复的空大标题（卡片头 / 视图自带标题已足够），消除两层大标题堆叠 */
.content-header { display: none !important; }

/* 2) 卡片：轻阴影 + 细边；卡片头去掉生硬左边框，标题精致化，图标主色点缀 */
.card { box-shadow: 0 1px 3px rgba(16, 24, 40, .06); border: 1px solid #eef0f3; }
.card-header {
    background: #fff;
    padding: 14px 20px;
    border-bottom: 1px solid #eef0f3;
    border-radius: .5rem .5rem 0 0;
}
.card-header h3 {
    font-size: 15px;
    font-weight: 600;
    color: #1f2937;
    border-left: none !important;
    padding-left: 0 !important;
}
.card-header h3 .fa-solid,
.card-header .fa-solid { color: var(--primary, #2563eb); }

/* 3) 提示条：长文本自然换行、图标靠上、占位符/代码做成等宽 chip、配色柔和不刺眼 */
.alert {
    align-items: flex-start;
    padding: 12px 16px;
    line-height: 1.7;
    border-radius: .5rem;
    margin-bottom: 16px;
    font-size: 13px;
}
.alert > i:first-child,
.alert > .fa-solid:first-child { margin-top: 3px; flex: none; }
.alert code {
    background: rgba(0, 0, 0, .06);
    padding: 1px 6px;
    border-radius: 4px;
    font-size: 12px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
.alert-info    { background: #eff6ff; color: #1e40af; border-color: #dbeafe; }
.alert-success { background: #f0fdf4; color: #166534; border-color: #dcfce7; }
.alert-danger  { background: #fef2f2; color: #991b1b; border-color: #fee2e2; }
.alert-warning { background: #fffbeb; color: #92400e; border-color: #fef3c7; }

/* 4) 内容区留白统一、底色柔和 */
.content { padding: 20px 22px; background: #f4f6f9; }

/* 5) 表格：表头浅灰、行细分隔、行 hover 淡色，更干净易读 */
.table thead th {
    background: #f8f9fa;
    color: #495057;
    font-weight: 600;
    font-size: 13px;
    border-bottom: 1px solid #e9ecef;
}
.table tbody td { border-top: 1px solid #f1f3f5; vertical-align: middle; }
.table tbody tr:hover { background: #f8fafc; }

/* 6) 页面标题块（.page-head）：白色卡片承托的 flex 工具条，宽屏标题居左、操作按钮居右同行；
   标题带左侧主题色竖条（对齐 card-header h3 风格），副标题描述跟在标题右侧。 */
.page-head {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px 12px;
    margin: 6px 0 18px;
    background: #f8f9fa;
    border: 1px solid #e9ecef;
    border-radius: 8px;
    padding: 12px 16px;
}
.page-head h2 {
    font-size: 19px;
    font-weight: 600;
    color: #1f2937;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 8px;
    line-height: 1.4;
    border-left: 3px solid var(--primary, #2563eb);
    padding-left: 10px;
}
.page-head h2 .fa-solid { color: var(--primary, #2563eb); font-size: 17px; }
.page-head .spacer { flex: 1; }
.page-head .text-muted {
    font-size: 13px;
    color: #6b7280;
    margin-left: 6px;
    font-weight: 400;
}

/* ============================================================
 * 菜单重设计 v1.4.24：方案A 浅色白灰侧栏（.menu-light）
 * 仅改视觉配色与圆角/选中态，不动结构、权限、链接、active 类。
 * ============================================================ */
.main-sidebar.menu-light {
    background: #fff !important;
    border-right: 1px solid #e8eaed;
    box-shadow: 2px 0 8px rgba(15, 23, 42, .04);
}
.main-sidebar.menu-light .sidebar { background: transparent; }
.main-sidebar.menu-light .brand-link { background: #fff; }
.main-sidebar.menu-light .brand-home { color: #1f2937; }
.main-sidebar.menu-light .brand-text { color: #1f2937 !important; font-size: 15px; }

/* 一级直达 + 分组父项 */
.main-sidebar.menu-light .nav-sidebar > .nav-item > .nav-link {
    color: #475569;
    border-radius: 8px;
    margin: 2px 10px;
    padding: 10px 12px;
}
.main-sidebar.menu-light .nav-sidebar > .nav-item > .nav-link .nav-icon {
    color: #64748b;
    font-size: 15px;
}
.main-sidebar.menu-light .nav-sidebar > .nav-item > .nav-link:hover { background: #f1f5f9; color: #1f2937; }

/* 分组父项（has-treeview）：menu-open/active 一律透明底，不给实心填充，
   文字近黑加粗、图标染主题色，避免“实心蓝底 + 深主题色字”撞色发灰 */
.main-sidebar.menu-light .nav-sidebar > .nav-item.has-treeview.menu-open > .nav-link,
.main-sidebar.menu-light .nav-sidebar > .nav-item.has-treeview > .nav-link.active {
    background: transparent !important;
    color: #1f2937 !important;
    font-weight: 600;
}
.main-sidebar.menu-light .nav-sidebar > .nav-item.has-treeview.menu-open > .nav-link .nav-icon,
.main-sidebar.menu-light .nav-sidebar > .nav-item.has-treeview > .nav-link.active .nav-icon { color: var(--primary) !important; }

/* 直达项（仪表盘等非分组）active：浅底 + 主题色字，不用实心蓝 */
.main-sidebar.menu-light .nav-sidebar > .nav-item:not(.has-treeview) > .nav-link.active {
    background: var(--primary-soft) !important;
    color: var(--primary) !important;
    font-weight: 600;
}
.main-sidebar.menu-light .nav-sidebar > .nav-item:not(.has-treeview) > .nav-link.active .nav-icon { color: var(--primary); }

/* 子菜单 */
.main-sidebar.menu-light .nav-treeview { padding: 2px 0 6px; }
.main-sidebar.menu-light .nav-treeview > .nav-item > .nav-link {
    color: #4b5563;
    border-radius: 8px;
    margin: 1px 10px 1px 34px;
    padding: 8px 12px;
    font-size: 13.5px;
}
.main-sidebar.menu-light .nav-treeview .nav-link > i.nav-icon { background: #cbd5e1 !important; }
.main-sidebar.menu-light .nav-treeview > .nav-item > .nav-link:hover { background: #f1f5f9; color: #1f2937; }
.main-sidebar.menu-light .nav-treeview > .nav-item > .nav-link.active {
    background: var(--primary-soft) !important;
    color: var(--primary) !important;
    box-shadow: inset 3px 0 0 var(--primary);
    font-weight: 600;
}
.main-sidebar.menu-light .nav-treeview > .nav-item > .nav-link.active > i.nav-icon { background: var(--primary) !important; }

/* 分组展开三角改灰（覆盖深色白三角） */
.main-sidebar.menu-light .nav-sidebar > .nav-item.has-treeview > .nav-link > p::after { border-color: #94a3b8; }

/* 折叠轨顶展开按钮改深（覆盖深色白字） */
body.sidebar-collapse .main-sidebar.menu-light .collapse-show-btn {
    color: #475569;
    background: #f1f5f9;
    border-bottom: 1px solid #e8eaed;
}
body.sidebar-collapse .main-sidebar.menu-light .collapse-show-btn:hover { background: #e2e8f0; color: #1f2937; }
/* 折叠轨内一级项 hover/选中浅底 */
body.sidebar-collapse .main-sidebar.menu-light .nav-sidebar > .nav-item > .nav-link:hover { background: #f1f5f9; }
body.sidebar-collapse .main-sidebar.menu-light .nav-sidebar > .nav-item > .nav-link.active { background: var(--primary-soft); color: var(--primary); }

/* ============================================================
 * 菜单重设计：方案B 墨蓝底 + A式浅蓝高亮选中（.menu-navy）
 * 深墨蓝 #1e293b，选中项=浅蓝半透明块(primary-soft)+左蓝条，
 * 不用实心白字块；文字/圆点提亮保证深底可读，主色跟随 theme_primary。
 * 仅改视觉配色，不动结构、权限、链接、active 类。
 * ============================================================ */
.main-sidebar.menu-navy {
    background: #1e293b !important;
    border-right: 1px solid rgba(255, 255, 255, .06);
    box-shadow: 2px 0 10px rgba(15, 23, 42, .25);
}
.main-sidebar.menu-navy .sidebar { background: transparent; }
.main-sidebar.menu-navy .brand-link {
    background: #0f172a;
    border-bottom: 1px solid rgba(255, 255, 255, .08);
}
.main-sidebar.menu-navy .brand-home { color: #f1f5f9; }
.main-sidebar.menu-navy .brand-text { color: #f1f5f9 !important; font-size: 15px; }

/* 一级直达 + 分组父项 */
.main-sidebar.menu-navy .nav-sidebar > .nav-item > .nav-link {
    color: #cbd5e1;
    border-radius: 8px;
    margin: 2px 10px;
    padding: 10px 12px;
}
.main-sidebar.menu-navy .nav-sidebar > .nav-item > .nav-link .nav-icon { color: #94a3b8; font-size: 15px; }
.main-sidebar.menu-navy .nav-sidebar > .nav-item > .nav-link:hover { background: rgba(255, 255, 255, .06); color: #f1f5f9; }

/* 分组父项（has-treeview）：menu-open/active 透明底、亮字、图标染主题色，不给实心填充 */
.main-sidebar.menu-navy .nav-sidebar > .nav-item.has-treeview.menu-open > .nav-link,
.main-sidebar.menu-navy .nav-sidebar > .nav-item.has-treeview > .nav-link.active {
    background: transparent !important;
    color: #f1f5f9 !important;
    font-weight: 600;
}
.main-sidebar.menu-navy .nav-sidebar > .nav-item.has-treeview.menu-open > .nav-link .nav-icon,
.main-sidebar.menu-navy .nav-sidebar > .nav-item.has-treeview > .nav-link.active .nav-icon { color: var(--primary) !important; }

/* 直达项 active（仪表盘等非分组）：浅蓝半透明块 + 左蓝条，文字提亮 */
.main-sidebar.menu-navy .nav-sidebar > .nav-item:not(.has-treeview) > .nav-link.active {
    background: var(--primary-soft) !important;
    color: #dbeafe !important;
    font-weight: 600;
    box-shadow: inset 3px 0 0 var(--primary);
}
.main-sidebar.menu-navy .nav-sidebar > .nav-item:not(.has-treeview) > .nav-link.active .nav-icon { color: var(--primary); }

/* 子菜单 */
.main-sidebar.menu-navy .nav-treeview { padding: 2px 0 6px; }
.main-sidebar.menu-navy .nav-treeview > .nav-item > .nav-link {
    color: #94a3b8;
    border-radius: 8px;
    margin: 1px 10px 1px 34px;
    padding: 8px 12px;
    font-size: 13.5px;
}
.main-sidebar.menu-navy .nav-treeview .nav-link > i.nav-icon { background: #64748b !important; }
.main-sidebar.menu-navy .nav-treeview > .nav-item > .nav-link:hover { background: rgba(255, 255, 255, .06); color: #e2e8f0; }
.main-sidebar.menu-navy .nav-treeview > .nav-item > .nav-link.active {
    background: var(--primary-soft) !important;
    color: #dbeafe !important;
    box-shadow: inset 3px 0 0 var(--primary);
    font-weight: 600;
}
.main-sidebar.menu-navy .nav-treeview > .nav-item > .nav-link.active > i.nav-icon { background: var(--primary) !important; }

/* 分组展开三角改灰蓝（覆盖深色白三角） */
.main-sidebar.menu-navy .nav-sidebar > .nav-item.has-treeview > .nav-link > p::after { border-color: #94a3b8; }

/* 折叠轨顶展开按钮 / 折叠态 */
body.sidebar-collapse .main-sidebar.menu-navy .collapse-show-btn {
    color: #cbd5e1;
    background: rgba(255, 255, 255, .06);
    border-bottom: 1px solid rgba(255, 255, 255, .08);
}
body.sidebar-collapse .main-sidebar.menu-navy .collapse-show-btn:hover { background: rgba(255, 255, 255, .12); color: #fff; }
body.sidebar-collapse .main-sidebar.menu-navy .nav-sidebar > .nav-item > .nav-link:hover { background: rgba(255, 255, 255, .06); }
body.sidebar-collapse .main-sidebar.menu-navy .nav-sidebar > .nav-item > .nav-link.active { background: var(--primary-soft); color: #dbeafe; }

/* ============================================================
 * 飞书浅色现代化 v1.4.28：.menu-feishu 纯白侧栏 + 全局组件浅色统一
 * 骨架（左侧导航+顶栏）不变，仅视觉；不改后端/URL/权限/DOM/事件。
 * 主色跟随 theme_primary，选中=浅蓝圆角块（飞书式，无左竖条）。
 * ============================================================ */
.main-sidebar.menu-feishu {
    background: #fff !important;
    border-right: 0 !important;
    box-shadow: none !important;
}
.main-sidebar.menu-feishu .sidebar { background: transparent; }
.main-sidebar.menu-feishu .brand-link {
    background: #fff;
    border-bottom: 1px solid #f0f1f3;
}
.main-sidebar.menu-feishu .brand-home { color: #1f2937; }
.main-sidebar.menu-feishu .brand-text { color: #1f2937 !important; font-size: 15px; font-weight: 600; }

/* 一级直达 + 分组父项 */
.main-sidebar.menu-feishu .nav-sidebar > .nav-item > .nav-link {
    color: #374151;
    border-radius: 8px;
    margin: 2px 10px;
    padding: 10px 12px;
}
.main-sidebar.menu-feishu .nav-sidebar > .nav-item > .nav-link .nav-icon { color: #6b7280; font-size: 15px; }
.main-sidebar.menu-feishu .nav-sidebar > .nav-item > .nav-link:hover { background: #f5f7fa; color: #1f2937; }

/* 分组父项 menu-open/active：透明底、近黑加粗、图标染主色，不给实心填充 */
.main-sidebar.menu-feishu .nav-sidebar > .nav-item.has-treeview.menu-open > .nav-link,
.main-sidebar.menu-feishu .nav-sidebar > .nav-item.has-treeview > .nav-link.active {
    background: transparent !important;
    color: #1f2937 !important;
    font-weight: 600;
}
.main-sidebar.menu-feishu .nav-sidebar > .nav-item.has-treeview.menu-open > .nav-link .nav-icon,
.main-sidebar.menu-feishu .nav-sidebar > .nav-item.has-treeview > .nav-link.active .nav-icon { color: var(--primary) !important; }

/* 直达项 active：浅蓝圆角块 + 主色字（飞书式，无左竖条） */
.main-sidebar.menu-feishu .nav-sidebar > .nav-item:not(.has-treeview) > .nav-link.active {
    background: var(--primary-soft) !important;
    color: var(--primary) !important;
    font-weight: 600;
}
.main-sidebar.menu-feishu .nav-sidebar > .nav-item:not(.has-treeview) > .nav-link.active .nav-icon { color: var(--primary); }

/* 子菜单 */
.main-sidebar.menu-feishu .nav-treeview { padding: 2px 0 6px; }
.main-sidebar.menu-feishu .nav-treeview > .nav-item > .nav-link {
    color: #4b5563;
    border-radius: 8px;
    margin: 1px 10px 1px 34px;
    padding: 8px 12px;
    font-size: 13.5px;
}
.main-sidebar.menu-feishu .nav-treeview .nav-link > i.nav-icon { background: transparent !important; color: #9aa0a6; }
.main-sidebar.menu-feishu .nav-treeview > .nav-item > .nav-link:hover { background: #f5f7fa; color: #1f2937; }
.main-sidebar.menu-feishu .nav-treeview > .nav-item > .nav-link.active {
    background: var(--primary-soft) !important;
    color: var(--primary) !important;
    font-weight: 600;
}
.main-sidebar.menu-feishu .nav-treeview > .nav-item > .nav-link.active > i.nav-icon { background: transparent !important; color: var(--primary) !important; }

/* 分组展开三角改中性灰 */
.main-sidebar.menu-feishu .nav-sidebar > .nav-item.has-treeview > .nav-link > p::after { border-color: #9aa0a6; }

/* 折叠态 */
body.sidebar-collapse .main-sidebar.menu-feishu .collapse-show-btn { color: #374151; background: #f5f7fa; border-bottom: 1px solid #eef0f3; }
body.sidebar-collapse .main-sidebar.menu-feishu .collapse-show-btn:hover { background: #e9edf2; color: #1f2937; }
body.sidebar-collapse .main-sidebar.menu-feishu .nav-sidebar > .nav-item > .nav-link:hover { background: #f5f7fa; }
body.sidebar-collapse .main-sidebar.menu-feishu .nav-sidebar > .nav-item > .nav-link.active { background: var(--primary-soft); color: var(--primary); }

/* ---- 全局飞书浅色组件统一（纯覆盖，不改结构） ---- */
.content-wrapper, body { background: #f5f6f7 !important; }
.main-header.navbar { background: #fff; border-bottom: 1px solid #eef0f3; box-shadow: none; }
.card { background: #fff; border: 1px solid #ebedf0; border-radius: 10px; box-shadow: 0 1px 2px rgba(16, 24, 40, .04); }
.card:hover { box-shadow: 0 1px 2px rgba(16, 24, 40, .04); }
.card-header { background: #fff; border-bottom: 1px solid #f0f1f3; }
.table thead th { background: #f7f8fa; color: #646a73; }
.table tbody tr:nth-child(even) { background: transparent; }
.table tbody tr:hover { background: #f5f7fa; }
.btn { border-radius: 8px; }
.btn-primary { box-shadow: none; }
.form-control { border-radius: 8px; border-color: #dcdfe6; }
.form-control:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-soft); }

/* 按钮：飞书圆角8；次按钮浅灰底、主/成功/危险按钮去重投影 */
.btn { font-weight: 500; }
.btn-outline { background: #f2f3f5; border-color: transparent; color: #374151; }
.btn-outline:hover { background: #e9edf2; color: #1f2937; border-color: transparent; }
.btn-success, .btn-danger, .btn-warning { box-shadow: none; }
/* 分页（自研与 BS4 两套）统一圆角 */
.pagination li a, .page-link { border-radius: 8px; }
/* 顶栏页面标题 */
.main-header .page-title { font-size: 15px; font-weight: 600; color: #1f2937; }

/* 统计卡：图标块去厚重投影，与飞书浅底协调（不改内联图标底色） */
.stat-card { box-shadow: 0 1px 2px rgba(16, 24, 40, .04); }
.stat-card .icon, .stat-card .icon-lg { box-shadow: none; }

/* ===== 首页看板大卡（图1风格：实心主色卡 + 浅色主题卡，可点击） ===== */
.kb-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 16px; }
@media (max-width: 992px) { .kb-row { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 576px) {
  .kb-row { grid-template-columns: 1fr; gap: 10px; }
  .kb-card { padding: 14px 16px; gap: 12px; border-radius: 14px; }
  .kb-ico { width: 44px; height: 44px; font-size: 20px; border-radius: 12px; }
  .kb-num { font-size: 24px; }
  .kb-amount { font-size: 19px; }
  /* 手机极窄屏：标签条紧凑、可横滑，关闭其他不抢占自动位 */
  .tags-view-bar { padding: 0 10px; }
  .tv-tag { padding: 0 10px; font-size: 13px; height: 38px; }
  .tv-clear { margin-left: 0; height: 28px; padding: 0 10px; font-size: 12px; }
}
.kb-card { position: relative; display: flex; align-items: center; gap: 16px; padding: 20px 22px; border-radius: 16px; text-decoration: none; overflow: hidden; transition: transform .15s, box-shadow .15s; }
.kb-card:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(16, 24, 40, .10); }
.kb-ico { width: 52px; height: 52px; border-radius: 14px; display: flex; align-items: center; justify-content: center; font-size: 24px; flex-shrink: 0; }
.kb-body { min-width: 0; }
.kb-label { font-size: 13px; margin-bottom: 4px; }
.kb-num { font-size: 30px; font-weight: 700; line-height: 1.1; letter-spacing: -.5px; }
.kb-amount { font-size: 24px; }
.kb-unit { font-size: 13px; font-weight: 400; margin-left: 4px; opacity: .8; }
.kb-primary { background: linear-gradient(135deg, #2563eb, #4f7df9); color: #fff; }
.kb-primary .kb-ico { background: rgba(255, 255, 255, .18); color: #fff; }
.kb-primary .kb-label { opacity: .85; }
.kb-blue { background: #eef4ff; color: #1f2937; }
.kb-blue .kb-ico { background: #2563eb; color: #fff; }
.kb-blue .kb-label { color: #6b7280; }
.kb-green { background: #ecf8f0; color: #1f2937; }
.kb-green .kb-ico { background: #16a34a; color: #fff; }
.kb-green .kb-label { color: #6b7280; }
.kb-amber { background: #fdf3e7; color: #1f2937; }
.kb-amber .kb-ico { background: #d97706; color: #fff; }
.kb-amber .kb-label { color: #6b7280; }

/* ===== 轻量标签条 TagsView（路线A：整页跳转，localStorage 记忆已访问标签） ===== */
.tags-view-bar { display: flex; align-items: stretch; gap: 2px; padding: 0 16px; background: #fff; border-bottom: 1px solid #ebedf0; overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none; }
.tags-view-bar::-webkit-scrollbar { display: none; }
/* 下划线式页签（对标参考图2：纯文字 + 当前项主色下划线，无胶囊底色） */
.tv-tag { position: relative; display: inline-flex; align-items: center; gap: 7px; flex: none; padding: 0 14px; height: 42px; font-size: 13.5px; color: #4b5563; cursor: pointer; white-space: nowrap; border-bottom: 2px solid transparent; transition: color .15s; user-select: none; }
.tv-tag:hover { color: var(--primary); }
.tv-tag.active { color: var(--primary); font-weight: 600; border-bottom-color: var(--primary); }
.tv-ico { font-size: 13px; }
.tv-dot { width: 6px; height: 6px; border-radius: 50%; background: #c2c9d2; flex: none; }
.tv-tag.active .tv-dot { background: var(--primary); }
.tv-close { font-size: 11px; color: #9aa0a6; width: 15px; height: 15px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; margin-left: 2px; }
.tv-close:hover { color: #dc2626; background: rgba(220, 38, 38, .1); }
.tv-clear { margin-left: auto; align-self: center; height: 30px; padding: 0 12px; font-size: 12.5px; color: #9aa0a6; background: transparent; border: 1px dashed #d8dde3; border-bottom: 1px dashed #d8dde3; border-radius: 6px; }
.tv-clear:hover { color: var(--primary); border-color: var(--primary); }

/* ============================================================
 * 阶段3收尾：空状态统一 / Toast 动效 / 全局加载遮罩
 * 纯视觉覆盖与可选 helper，不改视图 DOM、表单 name/action、调用签名与后端
 * ============================================================ */
/* 空状态：表格内 colspan 空行统一居中、柔和配色与呼吸内距（不改文案与结构） */
.table td[colspan].text-muted,
table td[colspan].text-muted {
    text-align: center;
    padding: 32px 16px !important;
    color: #9aa3af !important;
    font-size: .9rem;
    line-height: 1.7;
}
/* 通用空状态块：补图标居中区，后续新视图可直接选用 .empty-state */
.empty-state {
    color: #9aa3af;
    text-align: center;
    padding: 36px 16px;
    font-size: .9rem;
    line-height: 1.7;
}
.empty-state .empty-icon {
    display: block;
    font-size: 30px;
    color: #c2c9d2;
    margin-bottom: 10px;
}

/* Toast：保留现有白卡/左侧色条/类型图标/手动关闭，仅补入场下滑淡入与 hover 微抬 */
#toast-wrap { position: fixed; top: 18px; right: 18px; z-index: 9999; display: flex; flex-direction: column; gap: 10px; }
.toast {
    animation: crm-toast-in .28s ease;
    border-radius: 10px;
    transition: box-shadow .18s, transform .18s;
}
.toast:hover { box-shadow: 0 12px 30px rgba(15, 23, 42, .18); transform: translateY(-1px); }
@keyframes crm-toast-in {
    from { opacity: 0; transform: translateY(-10px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* 全局加载遮罩（showLoading/hideLoading 可选调用，默认不自动接管任何页面） */
.crm-loading-overlay {
    position: fixed; inset: 0; z-index: 1080;
    background: rgba(245, 246, 247, .6);
    display: flex; align-items: center; justify-content: center;
}
.crm-loading-card {
    background: #fff; border-radius: 12px; padding: 16px 22px;
    display: flex; align-items: center; gap: 12px;
    box-shadow: 0 10px 30px rgba(15, 23, 42, .15);
    font-size: 14px; color: #374151;
}
.crm-loading-card .fa-spinner { font-size: 18px; color: var(--primary, #2563eb); }

/* ============================================================
 * v1.4.58 DeepSeek/豆包式侧栏：顶部品牌+折叠+菜单搜索，底部账户块
 * 纯视觉与布局，不改链接/权限/后端；仅作用于当前 menu-feishu 白侧栏
 * ============================================================ */
.main-sidebar.menu-feishu { display: flex; flex-direction: column; overflow-x: hidden; }
.main-sidebar.menu-feishu .sidebar { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; position: relative; z-index: 1; }
.sidebar-footer { position: relative; z-index: 30; }

/* 品牌行：左品牌，右折叠按钮 */
.main-sidebar.menu-feishu .brand-link { display: flex; align-items: center; padding: 0 12px; }
.main-sidebar.menu-feishu .brand-home { flex: 1 1 auto; min-width: 0; }
.brand-collapse-btn {
    margin-left: auto; flex: none; width: 32px; height: 32px; border: 0; background: transparent;
    color: #6b7280; border-radius: 8px; display: flex; align-items: center; justify-content: center; cursor: pointer;
}
.brand-collapse-btn:hover { background: #f5f7fa; color: #1f2937; }

/* 菜单过滤搜索框 */
.menu-search { position: relative; margin: 8px 12px 4px; }
.menu-search > i { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); color: #9aa0a6; font-size: 13px; pointer-events: none; }
.menu-search input {
    width: 100%; height: 36px; border: 1px solid #eef0f3; background: #f5f7fa; border-radius: 8px;
    padding: 0 12px 0 32px; font-size: 13.5px; color: #1f2937; outline: none; transition: background .15s, border-color .15s, box-shadow .15s;
}
.menu-search input::placeholder { color: #9aa0a6; }
.menu-search input:focus { background: #fff; border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-soft); }

/* 底部账户块（固定在侧栏最底） */
.sidebar-footer { flex: 0 0 auto; border-top: 1px solid #f0f1f3; padding: 10px 12px; background: #fff; position: relative; z-index: 30; }
.sidebar-footer .dropdown { position: relative; }
/* 账户向上弹出菜单：统一小号字号、紧凑圆角卡片，去掉默认描边/焦点框 */
.sidebar-footer .account-menu {
    display: none;
    position: absolute !important;
    bottom: 100% !important; left: 0 !important; top: auto !important; right: auto !important;
    margin: 0 0 8px 0 !important;
    width: 226px !important;
    padding: 6px; border: 1px solid #eef0f3; border-radius: 10px;
    background: #ffffff !important; box-shadow: 0 8px 24px rgba(15,23,42,.12); font-size: 13.5px;
    z-index: 2000 !important; float: none; opacity: 1 !important;
}
.sidebar-footer .dropdown.open .account-menu { display: block; }
.sidebar-footer .account-menu .dropdown-item {
    display: flex; align-items: center; gap: 10px; padding: 8px 12px; margin: 0;
    border-radius: 8px; color: #374151; font-size: 13.5px; line-height: 1.4; font-weight: 400;
}
.sidebar-footer .account-menu .dropdown-item i { width: 16px; font-size: 14px; color: #9aa0a6; text-align: center; flex: none; }
.sidebar-footer .account-menu .dropdown-item:hover,
.sidebar-footer .account-menu .dropdown-item:focus { background: #f5f7fa; color: #1f2937; outline: none; }
.sidebar-footer .account-menu .dropdown-item[style*="dc2626"] { color: #dc2626 !important; }
.sidebar-footer .account-menu .dropdown-item[style*="dc2626"] i { color: #dc2626; }
.sidebar-footer .account-menu .dropdown-divider { margin: 5px 8px; border-top: 1px solid #eef0f3; }
.sidebar-user { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 10px; color: #374151; text-decoration: none; }
.sidebar-user:hover { background: #f5f7fa; text-decoration: none; color: #1f2937; }
.sidebar-user .user-avatar {
    width: 32px; height: 32px; border-radius: 50%; background: var(--primary); color: #fff;
    display: flex; align-items: center; justify-content: center; font-size: 14px; flex: none;
}
.sidebar-user-name { flex: 1 1 auto; font-size: 13.5px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sidebar-user-more { color: #9aa0a6; font-size: 15px; flex: none; }

/* 折叠 64px 态：隐藏搜索/姓名/更多，居中折叠钮与头像 */
body.sidebar-collapse .menu-search,
body.sidebar-collapse .sidebar-user-name,
body.sidebar-collapse .sidebar-user-more { display: none; }
body.sidebar-collapse .brand-link { justify-content: center; padding: 0; }
body.sidebar-collapse .brand-collapse-btn { margin: 0; }
body.sidebar-collapse .sidebar-footer { padding: 8px 0; border-top: 0; }
body.sidebar-collapse .sidebar-user { justify-content: center; padding: 6px 0; }

/* ============================================================
 * 响应式补强（纯视觉，不改 DOM/链接/表单/后端）
 * 断点：手机 ≤575.98px 单列堆叠；平板 576–991px 维持现有并排；
 * 桌面 ≥992px 完全不变。
 * ============================================================ */

/* 手机：所有栅格列降为整行单列，避免并排挤压、文字裁切（覆盖看板待办四列、
   详情页 col-4/col-8 等场景） */
@media (max-width: 575.98px) {
    .row > [class*="col-"] {
        flex: 1 1 100% !important;
        width: 100% !important;
        max-width: 100%;
        margin-left: 0;
    }
    /* 通用弹窗：小屏近全屏，保留 12px 安全边距，内部可滚动 */
    #__ov { padding: 12px !important; }
    #__ov > .modal {
        max-width: 100% !important;
        width: 100% !important;
        max-height: 92vh;
        overflow-y: auto;
    }
    /* 弹窗/卡片底部按钮组小屏可换行，不溢出 */
    .modal-footer,
    .card-footer,
    .btn-group { flex-wrap: wrap; row-gap: 8px; }
    /* 紧凑化小屏水平间距，减少不必要留白 */
    .card-body { padding: .9rem; }
}

/* 576–991px（小平板/窄笔记本）：详情类双栏仍允许并排，但收紧间距，
   避免侧栏抽屉滑出时内容区被挤压 */
@media (min-width: 576px) and (max-width: 991.98px) {
    .content-wrapper { margin-left: 0 !important; }
}
