/* ============================================================
   ERP 共享侧边栏样式
   - 主 ERP (index.html) 与所有 ops 独立页 (templates/ops_*.html) 共用
   - 颜色变量带 fallback：宿主页面定义了同名变量则用宿主的，否则用默认值
   - 修改请同步 static/js/erp_sidebar.js

   命名空间：sidebar 内所有子元素的 class 都用 `erp-sb-` 前缀，避免被宿主页面
   通用类名（.label / .icon / .text / .username 等）污染。
   仅 .sidebar / .app / .mobile-hamburger / .mobile-overlay / .sb-initial-collapsed
   保留旧名（宿主已依赖或语义清晰、不易冲突）。
   ============================================================ */

/* 布局根容器（ops 页面需要新加，主 ERP 已有相同样式） */
.app {
    display: flex;
    height: 100vh;
}

/* ====== 侧边栏主体 ====== */
.sidebar {
    width: 160px;
    min-width: 160px;
    background: var(--card, #ffffff);
    border-right: 1px solid var(--border, #eaedf3);
    display: flex;
    flex-direction: column;
    transition: width .25s ease, min-width .25s ease;
    /* 钉死字号 / 行高 / 字体族 / 字体平滑，避免不同宿主页面 body 设置不同导致跳转抖动 */
    font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Helvetica Neue", "Microsoft YaHei", "Segoe UI", sans-serif;
    font-size: 12px;
    line-height: 1.5;
    color: var(--text-secondary, #6b7280);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
/* 所有子元素强制继承同样的字体族 + 平滑，防止浏览器对 inherit 处理不一致 */
.sidebar, .sidebar * {
    font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Helvetica Neue", "Microsoft YaHei", "Segoe UI", sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    box-sizing: border-box;
}
/* 防御宿主页面对 button 元素的全局样式污染 sidebar 内的按钮（HLS 等页面常见
   button { padding:10px 18px; background:var(--accent); color:#fff; transition... }，
   会让 sidebar 的折叠/退出按钮被错误样式覆盖、并因 transition 出现"动一下"） */
.sidebar button {
    margin: 0;
    padding: 0;
    background: transparent;
    color: inherit;
    border: 0;
    font: inherit;
    line-height: inherit;
    outline: 0;
    box-shadow: none;
    transition: none;
}
.sidebar.collapsed { width: 44px; min-width: 44px; }

/* 防抖动：erp_sidebar.js 在 head 阶段把 .sb-initial-collapsed 打到 <html>，
   让 mount 之前的 sidebar 占位就已经是折叠态尺寸，避免跳转抖动 */
html.sb-initial-collapsed .sidebar {
    width: 44px;
    min-width: 44px;
}

/* Logo 区 */
.erp-sb-logo {
    padding: 14px 10px;
    display: flex;
    align-items: center;
    gap: 8px;
    border-bottom: 1px solid var(--border-light, #f1f3f8);
}
.erp-sb-logo-icon {
    width: 28px; height: 28px;
    border-radius: 8px;
    background: linear-gradient(135deg, #4f6ef7, #8b5cf6);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-weight: 700;
    font-size: 13px;
    flex-shrink: 0;
    box-shadow: 0 2px 8px rgba(79,110,247,.3);
}
.erp-sb-logo-text {
    font-weight: 700;
    font-size: 12px;
    white-space: nowrap;
    overflow: hidden;
}
.sidebar.collapsed .erp-sb-logo-text { display: none; }
.sidebar.collapsed .erp-sb-logo { padding: 14px 8px; justify-content: center; }

/* 导航区 */
.erp-sb-nav {
    flex: 1;
    overflow-y: auto;
    padding: 8px 0;
    /* 始终保留滚动条占位，避免内容填充瞬间出现滚动条挤压 nav-item 文字位置 */
    scrollbar-gutter: stable;
}
.erp-sb-group-title {
    padding: 12px 10px 4px;
    font-size: 9px;
    color: var(--text-muted, #9ca3af);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
}
.sidebar.collapsed .erp-sb-group-title { display: none; }

.erp-sb-item {
    padding: 7px 10px;
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    color: var(--text-secondary, #6b7280);
    font-size: 12px;
    border-left: 3px solid transparent;
    transition: all .15s;
    margin: 1px 0;
}
.erp-sb-item:hover {
    background: var(--blue-bg, #eef1fe);
    color: var(--blue, #4f6ef7);
}
.erp-sb-item.erp-sb-active {
    background: var(--blue-bg, #eef1fe);
    color: var(--blue, #4f6ef7);
    font-weight: 600;
    border-left-color: var(--blue, #4f6ef7);
}
.erp-sb-item .erp-sb-emoji {
    font-size: 14px;
    flex-shrink: 0;
    width: 18px;
    text-align: center;
    display: inline-block;
    line-height: inherit;
    margin: 0;
    padding: 0;
    color: inherit;
    font-weight: inherit;
}
.erp-sb-item .erp-sb-label {
    font-size: inherit;
    line-height: inherit;
    color: inherit;
    display: inline;
    margin: 0;
    padding: 0;
    font-weight: inherit;
}
.sidebar.collapsed .erp-sb-item { padding: 9px 0; justify-content: center; }
.sidebar.collapsed .erp-sb-item .erp-sb-label { display: none; }

/* 用户区 */
.erp-sb-user {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 10px;
    border-top: 1px solid var(--border, #eaedf3);
    font-size: 12px;
    color: var(--text-secondary, #6b7280);
    overflow: hidden;
}
.erp-sb-username {
    font-weight: 600;
    color: var(--text-primary, #1a1d26);
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* 管理员标签 */
.erp-sb-admin-tag {
    background: var(--orange-bg, #fef3c7);
    color: var(--orange-hover, #92400e);
    padding: 0 4px;
    border-radius: 3px;
    font-size: 9px;
    font-weight: 500;
    margin-left: 4px;
}
.sidebar .erp-sb-logout {
    cursor: pointer;
    color: var(--text-muted, #9ca3af);
    font-size: 11px;
    padding: 2px 8px;
    border: 1px solid var(--border, #eaedf3);
    border-radius: 4px;
    background: none;
    font-family: inherit;
}
.sidebar .erp-sb-logout:hover {
    background: var(--bg-hover, #f5f5f5);
    color: var(--red, #e74c3c);
    border-color: var(--red, #e74c3c);
}
.sidebar.collapsed .erp-sb-username { display: none; }
.sidebar.collapsed .erp-sb-logout { display: none; }
.sidebar.collapsed .erp-sb-user { padding: 8px; justify-content: center; }

/* 底部按钮区（折叠 + 主题切换） */
.erp-sb-toggle {
    padding: 8px;
    border-top: 1px solid var(--border-light, #f1f3f8);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
}
.sidebar.collapsed .erp-sb-toggle {
    flex-direction: column;
    gap: 6px;
}
.sidebar .erp-sb-toggle button {
    background: none;
    border: none;
    color: var(--text-muted, #9ca3af);
    font-size: 16px;
    width: 28px;
    height: 28px;
    border-radius: 6px;
    transition: background .15s, color .15s;
    cursor: pointer;
    font-family: inherit;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
}
.sidebar .erp-sb-toggle button:hover {
    background: var(--bg-hover, #f1f3f8);
    color: var(--text, #1a1d26);
}
.sidebar .erp-sb-theme {
    position: relative;
}
.sidebar .erp-sb-theme svg {
    width: 16px;
    height: 16px;
}
/* 主题模式角标（auto 时显示 A，dark/light 不显示） */
.sidebar .erp-sb-theme[data-mode="auto"]::after {
    content: 'A';
    position: absolute;
    bottom: 1px;
    right: 1px;
    font-size: 8px;
    font-weight: 700;
    line-height: 1;
    color: var(--blue, #4f6ef7);
    background: var(--bg-elevated, #fff);
    padding: 1px 2px;
    border-radius: 3px;
    pointer-events: none;
}

/* ====== 移动端抽屉（≤ 768px） ====== */
.mobile-hamburger { display: none; }
.mobile-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: var(--overlay, rgba(0,0,0,.4));
    z-index: 9997;
}
.mobile-overlay.show { display: block; }

@media (max-width: 768px) {
    .sidebar {
        position: fixed !important;
        top: 0; left: 0; bottom: 0;
        width: 240px !important;
        min-width: 240px !important;
        transform: translateX(-100%);
        transition: transform .25s ease;
        z-index: 9999;
        box-shadow: var(--shadow-lg, 4px 0 20px rgba(0,0,0,.15));
    }
    .sidebar.mobile-open { transform: translateX(0); }
    /* 手机上忽略 collapsed 折叠态 */
    .sidebar.collapsed {
        width: 240px !important;
        min-width: 240px !important;
    }
    .sidebar.collapsed .erp-sb-item .erp-sb-label,
    .sidebar.collapsed .erp-sb-group-title,
    .sidebar.collapsed .erp-sb-logo-text { display: inline !important; }
    .sidebar.collapsed .erp-sb-item {
        padding: 7px 10px !important;
        justify-content: flex-start !important;
    }
    .erp-sb-toggle { display: none !important; }

    .mobile-hamburger {
        display: flex;
        align-items: center;
        justify-content: center;
        position: fixed;
        top: 8px;
        left: 8px;
        width: 40px;
        height: 40px;
        border: 1px solid var(--border, #eaedf3);
        background: var(--card, #ffffff);
        border-radius: 8px;
        font-size: 20px;
        line-height: 1;
        z-index: 9998;
        box-shadow: var(--shadow-md, 0 2px 8px rgba(0,0,0,.08));
        cursor: pointer;
    }
}
