* { margin: 0; padding: 0; box-sizing: border-box; }

/* ===== CSS 变量体系（现代商务风） ===== */
:root {
    /* 主色 */
    --primary: #2563EB;
    --primary-hover: #1D4ED8;
    --primary-light: #EFF6FF;
    --primary-border: #BFDBFE;
    /* 语义色 */
    --success: #10B981;
    --success-bg: #ECFDF5;
    --success-border: #A7F3D0;
    --warning: #F59E0B;
    --warning-bg: #FFFBEB;
    --warning-border: #FDE68A;
    --danger: #EF4444;
    --danger-bg: #FEF2F2;
    --danger-border: #FECACA;
    --info: #0EA5E9;
    /* 中性色 */
    --bg: #F1F5F9;
    --card-bg: #FFFFFF;
    --border: #E2E8F0;
    --border-light: #F1F5F9;
    --text: #0F172A;
    --text-secondary: #475569;
    --text-muted: #94A3B8;
    --text-placeholder: #909399;
    /* 圆角 */
    --radius-sm: 4px;
    --radius: 6px;
    --radius-lg: 8px;
    --radius-xl: 12px;
    /* 阴影 */
    --shadow-sm: 0 1px 2px rgba(15,23,42,0.05);
    --shadow: 0 1px 3px rgba(15,23,42,0.08), 0 1px 2px rgba(15,23,42,0.04);
    --shadow-md: 0 4px 6px -1px rgba(15,23,42,0.08), 0 2px 4px -2px rgba(15,23,42,0.05);
    --shadow-lg: 0 10px 15px -3px rgba(15,23,42,0.08), 0 4px 6px -4px rgba(15,23,42,0.05);
    /* 字号 */
    --text-xs: 12px;
    --text-sm: 13px;
    --text-base: 14px;
    --text-lg: 16px;
    --text-xl: 18px;
    --text-2xl: 22px;
    /* 间距 */
    --space-1: 4px;
    --space-2: 8px;
    --space-3: 12px;
    --space-4: 16px;
    --space-5: 20px;
    --space-6: 24px;
}

body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
    background: var(--bg);
    color: var(--text);
    min-height: 100vh;
    font-size: var(--text-base);
    -webkit-font-smoothing: antialiased;
}

/* 顶部导航样式见下方"导航栏 v3.1"段 */

/* 主内容 */
.container { max-width: 95vw; margin: 20px auto; padding: 0 16px; }
.page-title { font-size: var(--text-xl); font-weight: 700; margin-bottom: 20px; color: var(--text); }

/* 卡片 */
.card {
    background: var(--card-bg);
    border-radius: var(--radius-lg);
    padding: 20px;
    margin-bottom: 16px;
    box-shadow: var(--shadow-sm);
    border: 1px solid var(--border);
}
.card h3 { font-size: var(--text-lg); margin-bottom: 16px; color: var(--text); font-weight: 600; }

/* 统计卡片 */
.stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 16px;
    margin-bottom: 24px;
}
.stat-card {
    background: white;
    border-radius: 10px;
    padding: 20px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);
    border-left: 4px solid #1a73e8;
}
.stat-card .label { font-size: 13px; color: #888; margin-bottom: 6px; }
.stat-card .value { font-size: 28px; font-weight: 700; color: #1a1a1a; }
.stat-card.green { border-left-color: #34a853; }
.stat-card.orange { border-left-color: #fbbc04; }
.stat-card.red { border-left-color: #ea4335; }

/* 表单 */
.form-group { margin-bottom: 16px; }
.form-group label { display: block; font-size: var(--text-base); font-weight: 500; margin-bottom: 6px; color: var(--text-secondary); }
.form-group input[type="text"], .form-group input[type="password"],
.form-group input[type="number"], .form-group input[type="email"],
.form-group select, .form-group textarea {
    width: 100%;
    padding: 8px 12px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    font-size: var(--text-base);
    color: var(--text);
    background: #fff;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.form-group input:focus, .form-group select:focus, .form-group textarea:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(37,99,235,0.1);
}
.form-group textarea { min-height: 100px; resize: vertical; font-family: monospace; font-size: var(--text-sm); }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }

/* 按钮 */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 8px 16px;
    border: 1px solid transparent;
    border-radius: var(--radius);
    font-size: var(--text-base);
    font-weight: 500;
    line-height: 1.4;
    cursor: pointer;
    text-decoration: none;
    transition: all 0.15s;
    white-space: nowrap;
}
.btn-primary { background: var(--primary); color: white; }
.btn-primary:hover { background: var(--primary-hover); }
.btn-success { background: var(--success); color: white; }
.btn-success:hover { background: #059669; }
.btn-danger { background: var(--danger); color: white; }
.btn-danger:hover { background: #DC2626; }
.btn-warning { background: var(--warning); color: white; }
.btn-warning:hover { background: #D97706; }
.btn-secondary { background: var(--border-light); color: var(--text-secondary); }
.btn-secondary:hover { background: var(--border); color: var(--text); }
.btn-default { background: #fff; color: var(--text-secondary); border-color: var(--border); }
.btn-default:hover { background: var(--border-light); color: var(--text); border-color: #CBD5E1; }
.btn-sm { padding: 5px 12px; font-size: var(--text-sm); }
.btn-xs { padding: 3px 8px; font-size: var(--text-xs); border-radius: var(--radius-sm); }
.btn-lg { padding: 10px 24px; font-size: var(--text-lg); }
.btn:disabled, .btn[disabled] { opacity: 0.5; cursor: not-allowed; pointer-events: none; }

/* 提示消息 */
.flash {
    padding: 10px 16px;
    border-radius: var(--radius);
    margin-bottom: 16px;
    font-size: var(--text-base);
}
.flash.success { background: var(--success-bg); color: #065F46; border: 1px solid var(--success-border); }
.flash.error { background: var(--danger-bg); color: #991B1B; border: 1px solid var(--danger-border); }

/* 表格 */
table { width: 100%; border-collapse: collapse; }
table th, table td { padding: 10px 14px; text-align: left; border-bottom: 1px solid var(--border-light); font-size: var(--text-base); }
table th { background: var(--border-light); font-weight: 600; color: var(--text-secondary); font-size: var(--text-sm); white-space: nowrap; }
table tr:hover { background: #F8FAFC; }
.data-table tbody tr:last-child td { border-bottom: none; }

/* 文件列表 */
.file-list { list-style: none; }
.file-list li {
    padding: 10px 14px;
    border: 1px solid #e8eaed;
    border-radius: 6px;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 14px;
}
.file-list li .file-name { color: #333; }
.file-list li .file-size { color: #999; font-size: 12px; }

/* 上传区域 */
.upload-area {
    border: 2px dashed #ddd;
    border-radius: 8px;
    padding: 30px;
    text-align: center;
    color: #999;
    cursor: pointer;
    transition: all 0.2s;
    margin-bottom: 16px;
}
.upload-area:hover { border-color: #1a73e8; background: #f8faff; }
.upload-area.dragover { border-color: #1a73e8; background: #eef4ff; }

/* 结果页 */
.result-summary {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 12px;
    margin: 20px 0;
}
.result-item {
    background: #f8f9fa;
    border-radius: 8px;
    padding: 16px;
    text-align: center;
}
.result-item .num { font-size: 24px; font-weight: 700; color: #1a73e8; }
.result-item .lbl { font-size: 12px; color: #888; margin-top: 4px; }

.warning-list { list-style: none; margin-top: 12px; }
.warning-list li {
    padding: 8px 12px;
    background: #fef7e0;
    border-radius: 4px;
    margin-bottom: 6px;
    font-size: 13px;
    color: #b06000;
}

/* 登录/激活页 */
.auth-page {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}
.auth-box {
    background: white;
    border-radius: 12px;
    padding: 36px;
    width: 400px;
    box-shadow: 0 10px 40px rgba(0,0,0,0.2);
}
.auth-box h2 { text-align: center; margin-bottom: 24px; color: #1a1a1a; }
.auth-box .btn { width: 100%; padding: 12px; font-size: 15px; }
.auth-box .hint { text-align: center; font-size: 13px; color: #999; margin-top: 16px; }
.auth-box .fingerprint {
    background: #f8f9fa;
    padding: 12px;
    border-radius: 6px;
    font-family: monospace;
    font-size: 13px;
    text-align: center;
    margin: 12px 0;
    word-break: break-all;
}

/* 品牌标签 */
.brand-tags { display: flex; flex-wrap: wrap; gap: 8px; }
.brand-tag {
    background: #e8f0fe;
    color: #1a73e8;
    padding: 4px 10px;
    border-radius: 12px;
    font-size: 13px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.brand-tag .del {
    cursor: pointer;
    color: #ea4335;
    font-weight: bold;
}

/* 复选框行 */
.checkbox-row { display: flex; align-items: center; gap: 8px; margin: 12px 0; }
.checkbox-row input[type="checkbox"] { width: 16px; height: 16px; }
.checkbox-row label { font-size: 14px; color: #555; margin: 0; }

/* 登录页链接 */
.auth-links {
    text-align: center;
    margin-top: 16px;
    font-size: 13px;
}
.auth-links a { color: #1a73e8; text-decoration: none; }
.auth-links a:hover { text-decoration: underline; }
.auth-links .sep { color: #ccc; margin: 0 8px; }
.auth-desc {
    font-size: 13px;
    color: #666;
    text-align: center;
    margin-bottom: 16px;
}
.copy-hint {
    font-size: 12px;
    color: #999;
    text-align: center;
    margin-top: -8px;
    margin-bottom: 12px;
}

/* 超管徽章 */
.badge {
    background: #fbbc04;
    color: #5d4037;
    font-size: 11px;
    padding: 2px 6px;
    border-radius: 4px;
    font-weight: 600;
}

/* 大按钮 */
.btn-lg { padding: 14px 32px; font-size: 16px; }

/* 标签页 */
.tabs {
    display: flex;
    gap: 0;
    margin-bottom: 20px;
    border-bottom: 2px solid #e8eaed;
}
.tab-btn {
    padding: 10px 24px;
    border: none;
    background: none;
    font-size: 15px;
    color: #666;
    cursor: pointer;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    transition: all 0.15s;
}
.tab-btn:hover { color: #1a73e8; }
.tab-btn.active {
    color: #1a73e8;
    border-bottom-color: #1a73e8;
    font-weight: 600;
}
.tab-content { display: none; }
.tab-content.active { display: block; }

/* 行内表单 */
.inline-form {
    display: flex;
    gap: 10px;
    align-items: center;
}
.inline-form input[type="text"] { flex: 1; padding: 10px 12px; border: 1px solid #ddd; border-radius: 6px; font-size: 14px; }
.inline-form input:focus { outline: none; border-color: #1a73e8; box-shadow: 0 0 0 3px rgba(26,115,232,0.1); }

/* 空状态 */
.empty-state {
    text-align: center;
    padding: 30px;
    color: #999;
}
.empty-text {
    text-align: center;
    padding: 20px;
    color: #999;
    font-size: 14px;
}

/* 结果页品牌区 */
.brand-section { margin: 16px 0; }
.brand-section strong { font-size: 14px; }
.warn-title {
    margin-top: 20px;
    color: #e37400;
    font-size: 15px;
}
.action-buttons {
    margin-top: 24px;
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    align-items: center;
}
.tip-box {
    margin-top: 20px;
    padding: 12px 16px;
    background: #f8f9fa;
    border-radius: 6px;
    font-size: 13px;
    color: #666;
    border: 1px solid #e8eaed;
}
.tip-box code {
    background: #e8f0fe;
    padding: 2px 6px;
    border-radius: 3px;
    font-family: monospace;
}


/* ===== 登录页 v3.0 分栏布局 ===== */
.login-page {
    display: flex;
    min-height: 100vh;
    background: #f0f2f5;
}
.login-brand {
    flex: 1;
    background: linear-gradient(135deg, #1a73e8 0%, #0d47a1 100%);
    color: #fff;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 60px;
    position: relative;
    overflow: hidden;
}
.login-brand::before {
    content: '';
    position: absolute;
    top: -50%;
    right: -30%;
    width: 600px;
    height: 600px;
    background: rgba(255,255,255,0.05);
    border-radius: 50%;
}
.login-brand::after {
    content: '';
    position: absolute;
    bottom: -30%;
    left: -20%;
    width: 400px;
    height: 400px;
    background: rgba(255,255,255,0.03);
    border-radius: 50%;
}
.brand-content {
    position: relative;
    z-index: 1;
    max-width: 420px;
}
.brand-logo {
    margin-bottom: 24px;
}
.brand-logo img {
    display: block;
    max-width: 220px;
    height: auto;
}
.brand-title {
    font-size: 36px;
    font-weight: 700;
    margin: 0 0 12px 0;
    letter-spacing: 1px;
}
.brand-subtitle {
    font-size: 16px;
    opacity: 0.85;
    margin: 0 0 40px 0;
    line-height: 1.6;
}
.brand-features {
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.feature-item {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    opacity: 0.9;
}
.feature-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    background: rgba(255,255,255,0.2);
    border-radius: 50%;
    font-size: 12px;
    font-weight: bold;
}
.brand-footer {
    position: absolute;
    bottom: 30px;
    left: 60px;
    right: 60px;
    display: flex;
    justify-content: space-between;
    font-size: 12px;
    opacity: 0.6;
    z-index: 1;
}

/* 右侧表单区 */
.login-form-wrap {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px;
}
.login-form-box {
    width: 100%;
    max-width: 400px;
}
.form-title {
    font-size: 28px;
    font-weight: 700;
    color: #1a1a2e;
    margin: 0 0 8px 0;
}
.form-desc {
    font-size: 14px;
    color: #888;
    margin: 0 0 32px 0;
}

/* 表单字段 */
.field-group {
    margin-bottom: 20px;
}
.field-label {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: #444;
    margin-bottom: 8px;
}
.field-input-wrap {
    position: relative;
}
.field-input {
    width: 100%;
    padding: 12px 16px;
    border: 1.5px solid #ddd;
    border-radius: 8px;
    font-size: 14px;
    transition: all 0.2s;
    box-sizing: border-box;
    background: #fff;
}
.field-input:focus {
    outline: none;
    border-color: #1a73e8;
    box-shadow: 0 0 0 3px rgba(26,115,232,0.1);
}
.field-input.input-error {
    border-color: #ea4335;
    box-shadow: 0 0 0 3px rgba(234,67,53,0.1);
}
.field-error {
    font-size: 12px;
    color: #ea4335;
    margin-top: 5px;
    min-height: 16px;
}
.pwd-toggle {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    cursor: pointer;
    font-size: 16px;
    padding: 4px;
    opacity: 0.6;
    transition: opacity 0.2s;
}
.pwd-toggle:hover { opacity: 1; }

/* 表单选项 */
.form-options {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 24px;
}
.checkbox-label {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: #666;
    cursor: pointer;
}
.checkbox-label input { cursor: pointer; }
.link-right {
    font-size: 13px;
    color: #1a73e8;
    text-decoration: none;
}
.link-right:hover { text-decoration: underline; }

/* 登录按钮 */
.btn-login {
    width: 100%;
    padding: 14px;
    background: linear-gradient(135deg, #1a73e8, #0d47a1);
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
    letter-spacing: 2px;
}
.btn-login:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(26,115,232,0.3);
}
.btn-login:disabled {
    opacity: 0.7;
    cursor: not-allowed;
}
.btn-loading { display: inline-flex; align-items: center; gap: 8px; }
.spinner {
    display: inline-block;
    width: 16px;
    height: 16px;
    border: 2px solid rgba(255,255,255,0.3);
    border-top-color: #fff;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* 底部链接 */
.form-bottom-link {
    text-align: center;
    margin-top: 24px;
    font-size: 13px;
    color: #888;
}
.form-bottom-link a {
    color: #1a73e8;
    text-decoration: none;
    font-weight: 500;
}
.form-bottom-link a:hover { text-decoration: underline; }
.form-support {
    text-align: center;
    margin-top: 16px;
    font-size: 12px;
    color: #bbb;
}

/* 登录告警条 */
.login-alert {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 16px;
    border-radius: 8px;
    margin-bottom: 20px;
    font-size: 13px;
    flex-wrap: wrap;
}
.login-alert.error {
    background: #fef2f2;
    border: 1px solid #fecaca;
    color: #dc2626;
}
.login-alert.success {
    background: #f0fdf4;
    border: 1px solid #bbf7d0;
    color: #16a34a;
}
.alert-icon { font-weight: bold; }
.alert-text { flex: 1; }
.alert-btn {
    background: #dc2626;
    color: #fff;
    border: none;
    padding: 4px 12px;
    border-radius: 4px;
    font-size: 12px;
    cursor: pointer;
}
.alert-btn:hover { background: #b91c1c; }

/* 弹窗 */
.modal-overlay {
    display: none;
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0,0,0,0.5);
    z-index: 1000;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(2px);
}
.modal-overlay.show { display: flex; }
.modal-box {
    background: #fff;
    border-radius: 12px;
    width: 90%;
    max-width: 440px;
    max-height: 90vh;
    overflow-y: auto;
    animation: modalIn 0.25s ease;
}
.modal-sm { max-width: 380px; padding: 28px 24px; }
@keyframes modalIn {
    from { opacity: 0; transform: scale(0.95) translateY(10px); }
    to { opacity: 1; transform: scale(1) translateY(0); }
}
.modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px 24px;
    border-bottom: 1px solid #eee;
}
.modal-header h3 { margin: 0; font-size: 18px; color: #1a1a2e; }
.modal-close {
    background: none;
    border: none;
    font-size: 24px;
    cursor: pointer;
    color: #999;
    line-height: 1;
    padding: 0;
}
.modal-close:hover { color: #333; }
.modal-body { padding: 24px; }
.modal-desc {
    font-size: 13px;
    color: #666;
    margin: 0 0 20px 0;
    line-height: 1.6;
}
.fingerprint-box {
    padding: 12px;
    background: #f5f5f5;
    border: 1px dashed #ccc;
    border-radius: 6px;
    text-align: center;
    font-family: monospace;
    font-size: 14px;
    letter-spacing: 2px;
    cursor: pointer;
    transition: all 0.2s;
}
.fingerprint-box:hover {
    background: #e8f0fe;
    border-color: #1a73e8;
}
.copy-hint {
    font-size: 12px;
    color: #999;
    text-align: center;
    margin: 6px 0 0 0;
}
.modal-result { margin: 16px 0; min-height: 20px; }
.modal-msg {
    padding: 10px 14px;
    border-radius: 6px;
    font-size: 13px;
}
.modal-msg.error { background: #fef2f2; color: #dc2626; }
.modal-msg.success { background: #f0fdf4; color: #16a34a; }

/* 响应式 */
@media (max-width: 768px) {
    .login-page { flex-direction: column; }
    .login-brand { padding: 40px 24px; min-height: auto; }
    .brand-title { font-size: 28px; }
    .brand-features { display: none; }
    .brand-footer { position: static; margin-top: 20px; left: 0; right: 0; }
    .login-form-wrap { padding: 24px; }
}

/* ===== 导航栏 v3.1（现代商务风：白底） ===== */
.navbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 24px;
    height: 52px;
    background: #fff;
    border-bottom: 1px solid var(--border);
    box-shadow: none;
    position: sticky;
    top: 0;
    z-index: 100;
}
.nav-logo a {
    display: flex;
    align-items: center;
    text-decoration: none;
}
.nav-logo-img {
    height: 32px;
    width: auto;
}
.nav-brand-name {
    color: var(--text);
    font-size: var(--text-lg);
    font-weight: 700;
    margin-left: 8px;
    letter-spacing: 0.5px;
}
.nav-links {
    display: flex;
    gap: 2px;
    flex: 1;
    justify-content: center;
}
.nav-links a {
    color: var(--text-secondary);
    text-decoration: none;
    padding: 6px 16px;
    border-radius: var(--radius);
    font-size: var(--text-base);
    font-weight: 500;
    white-space: nowrap;
    transition: all 0.15s;
    position: relative;
}
.nav-links a:hover {
    color: var(--primary);
    background: var(--primary-light);
}
.nav-links a.active {
    color: var(--primary);
    background: var(--primary-light);
    font-weight: 600;
}

/* 用户下拉菜单 */
.user-menu {
    position: relative;
}
.user-trigger {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    border-radius: var(--radius);
    cursor: pointer;
    color: var(--text);
    font-size: var(--text-base);
    font-weight: 500;
    transition: background 0.15s;
}
.user-trigger:hover {
    background: var(--border-light);
}
.user-avatar {
    font-size: 18px;
}
.user-name {
    font-weight: 500;
}
.user-arrow {
    font-size: 10px;
    color: var(--text-muted);
}
.user-dropdown {
    display: none;
    position: absolute;
    top: 100%;
    right: 0;
    margin-top: 6px;
    background: #fff;
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    border: 1px solid var(--border);
    min-width: 180px;
    overflow: hidden;
    z-index: 200;
}
.user-dropdown.show {
    display: block;
}
.user-dropdown a {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 16px;
    color: var(--text);
    text-decoration: none;
    font-size: var(--text-base);
    transition: background 0.15s;
}
.user-dropdown a:hover {
    background: var(--border-light);
}
.user-dropdown a.active {
    background: var(--primary-light);
    color: var(--primary);
}
.dropdown-divider {
    height: 1px;
    background: var(--border);
    margin: 4px 0;
}
.logout-link {
    color: var(--danger) !important;
}
.logout-link:hover {
    background: var(--danger-bg) !important;
}

/* ===== 个人中心 ===== */
.profile-layout {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 20px;
}
.profile-card {
    background: #fff;
    border-radius: 10px;
    padding: 24px;
    box-shadow: 0 1px 4px rgba(0,0,0,0.06);
}
.profile-card h3 {
    margin: 0 0 20px 0;
    font-size: 16px;
    color: #1a1a2e;
}
.info-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 0;
    border-bottom: 1px solid #f0f0f0;
}
.info-row:last-child {
    border-bottom: none;
}
.info-label {
    color: #888;
    font-size: 13px;
}
.info-value {
    color: #333;
    font-size: 14px;
    font-weight: 500;
}
.info-mono {
    font-family: monospace;
    letter-spacing: 1px;
    cursor: pointer;
}
.badge-normal {
    background: #e8f0fe;
    color: #1a73e8;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 12px;
}
.record-entry {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.record-item {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 16px;
    background: #fafafa;
    border-radius: 8px;
}
.record-icon {
    font-size: 28px;
}
.record-info {
    flex: 1;
}
.record-title {
    font-size: 15px;
    font-weight: 600;
    color: #333;
}
.record-desc {
    font-size: 12px;
    color: #999;
    margin-top: 2px;
}

/* ===== 插件下载 ===== */
.plugins-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 20px;
}
.plugin-card {
    background: #fff;
    border-radius: 10px;
    padding: 24px;
    box-shadow: 0 1px 4px rgba(0,0,0,0.06);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    transition: transform 0.2s, box-shadow 0.2s;
}
.plugin-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 16px rgba(0,0,0,0.1);
}
.plugin-icon {
    font-size: 40px;
    margin-bottom: 12px;
}
.plugin-info {
    flex: 1;
    margin-bottom: 16px;
}
.plugin-name {
    margin: 0 0 4px 0;
    font-size: 16px;
    color: #1a1a2e;
}
.plugin-version {
    display: inline-block;
    background: #e8f0fe;
    color: #1a73e8;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 11px;
    margin-bottom: 8px;
}
.plugin-desc {
    font-size: 13px;
    color: #888;
    margin: 0;
    line-height: 1.5;
}

/* ===== 采集工具占位页 ===== */
.coming-soon {
    text-align: center;
    padding: 60px 20px;
}
.cs-icon {
    font-size: 64px;
    margin-bottom: 20px;
}
.coming-soon h2 {
    font-size: 24px;
    color: #1a1a2e;
    margin: 0 0 8px 0;
}
.coming-soon > p {
    color: #888;
    font-size: 14px;
    margin: 0 0 32px 0;
}
.cs-features {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 16px;
    margin-bottom: 32px;
}
.cs-feature {
    display: flex;
    align-items: center;
    gap: 6px;
    background: #f5f5f5;
    padding: 8px 16px;
    border-radius: 20px;
    font-size: 13px;
    color: #555;
}
.cs-feature span {
    color: #34a853;
    font-weight: bold;
}
.cs-notice {
    display: inline-block;
    background: #fff3e0;
    color: #e65100;
    padding: 10px 24px;
    border-radius: 20px;
    font-size: 14px;
}

@media (max-width: 768px) {
    .profile-layout { grid-template-columns: 1fr; }
    .nav-links { display: none; }
}

/* ===== 数据管理标签页 ===== */
.data-mgmt-tabs {
    display: flex;
    gap: 8px;
    margin-bottom: 20px;
    border-bottom: 2px solid #eee;
}
.tab-btn {
    padding: 10px 24px;
    background: none;
    border: none;
    font-size: 15px;
    font-weight: 600;
    color: #888;
    cursor: pointer;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    transition: all 0.2s;
}
.tab-btn:hover {
    color: #1a73e8;
}
.tab-btn.active {
    color: #1a73e8;
    border-bottom-color: #1a73e8;
}
.tab-content {
    animation: fadeIn 0.3s;
}
@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

/* ===== 数据管理表格 ===== */
.data-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}
.data-table th {
    background: #f5f5f5;
    padding: 12px 16px;
    text-align: left;
    font-weight: 600;
    color: #444;
    border-bottom: 2px solid #e0e0e0;
}
.data-table td {
    padding: 10px 16px;
    border-bottom: 1px solid #f0f0f0;
    color: #333;
}
.data-table tr:hover td {
    background: #fafafa;
}
.empty-state {
    text-align: center;
    padding: 40px 20px;
    color: #999;
}

/* ===== 数据管理 - 统计看板 ===== */
.stats-dashboard {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
    margin-bottom: 20px;
}
.stat-card {
    background: #fff;
    border-radius: 10px;
    padding: 20px;
    text-align: center;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    border: 1px solid #eee;
}
.stat-num {
    font-size: 28px;
    font-weight: 700;
    color: #1a73e8;
    margin-bottom: 4px;
}
.stat-label {
    font-size: 13px;
    color: #888;
}

/* ===== 警告横幅 ===== */
.warning-banner {
    background: #fff3cd;
    border: 1px solid #ffeaa7;
    color: #856404;
    padding: 12px 20px;
    border-radius: 8px;
    margin-bottom: 16px;
    font-size: 14px;
}

/* ===== 工具栏 ===== */
.dm-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
    flex-wrap: wrap;
    gap: 12px;
}
.dm-tabs {
    display: flex;
    gap: 4px;
}
.dm-tab {
    padding: 10px 20px;
    border: none;
    background: #f5f5f5;
    border-radius: 8px 8px 0 0;
    cursor: pointer;
    font-size: 14px;
    color: #666;
    transition: all 0.2s;
}
.dm-tab:hover { background: #e8e8e8; }
.dm-tab.active {
    background: #fff;
    color: #1a73e8;
    font-weight: 600;
    border-bottom: 2px solid #1a73e8;
}
.dm-tools {
    display: flex;
    gap: 8px;
    align-items: center;
}
.search-input {
    padding: 8px 14px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 14px;
    width: 220px;
    outline: none;
}
.search-input:focus { border-color: #1a73e8; }

/* ===== 批量操作栏 ===== */
.batch-bar {
    display: flex;
    align-items: center;
    gap: 12px;
    background: #e8f0fe;
    padding: 10px 20px;
    border-radius: 8px;
    margin-bottom: 16px;
    font-size: 14px;
}

/* ===== 记录行 ===== */
.record-row.pinned { background: #fffbe6 !important; }
.pin-icon { margin-right: 4px; }
.filename-cell {
    cursor: pointer;
    font-weight: 500;
    color: #333;
}
.filename-cell:hover { color: #1a73e8; }
.note-text {
    font-size: 12px;
    color: #999;
    margin-top: 4px;
}
.expand-content {
    margin-top: 10px;
    padding: 12px;
    background: #f9f9f9;
    border-radius: 6px;
    border-left: 3px solid #1a73e8;
}
.expand-actions {
    display: flex;
    gap: 8px;
    margin-top: 8px;
    flex-wrap: wrap;
}
.export-stats {
    display: flex;
    gap: 16px;
    font-size: 12px;
    color: #666;
    margin-bottom: 8px;
    flex-wrap: wrap;
}
.export-files {
    font-size: 13px;
    margin-bottom: 8px;
}
.file-link {
    display: inline-block;
    margin-right: 12px;
    color: #1a73e8;
    text-decoration: none;
}
.file-link:hover { text-decoration: underline; }

/* ===== 状态标签 ===== */
.status-ok {
    background: #e6f4ea;
    color: #1e7e34;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 12px;
}
.status-expired {
    background: #fce8e6;
    color: #c5221f;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 12px;
}
.log-action {
    background: #e8f0fe;
    color: #1a73e8;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 12px;
}

/* ===== 按钮尺寸 ===== */
.btn-xs {
    padding: 4px 10px;
    font-size: 12px;
    border-radius: 4px;
}
.btn-sm {
    padding: 6px 14px;
    font-size: 13px;
    border-radius: 6px;
}

/* ===== 弹窗 ===== */
.modal-overlay {
    display: none;
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0,0,0,0.5);
    z-index: 1000;
    justify-content: center;
    align-items: center;
}
.modal-overlay.show { display: flex; }
/* 强制所有弹窗居中：即使JS设了display:block也覆盖为flex */
.modal-overlay[style*="display:block"],
.modal-overlay[style*="display: block"] {
    display: flex !important;
}
.modal-box {
    background: #fff;
    border-radius: 12px;
    width: 90%;
    max-width: 500px;
    max-height: 80vh;
    overflow: hidden;
    box-shadow: 0 10px 40px rgba(0,0,0,0.2);
}
.modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 20px;
    border-bottom: 1px solid #eee;
}
.modal-header h3 { margin: 0; font-size: 16px; }
.modal-close {
    background: none;
    border: none;
    font-size: 24px;
    cursor: pointer;
    color: #999;
    line-height: 1;
}
.modal-close:hover { color: #333; }
.modal-body {
    padding: 20px;
    max-height: 60vh;
    overflow-y: auto;
}
.loading {
    text-align: center;
    padding: 30px;
    color: #999;
}
.note-textarea {
    width: 100%;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 14px;
    resize: vertical;
    outline: none;
}
.note-textarea:focus { border-color: #1a73e8; }
.help-list {
    list-style: none;
    padding: 0;
    margin: 0;
}
.help-list li {
    padding: 8px 0;
    border-bottom: 1px solid #f0f0f0;
    font-size: 14px;
    line-height: 1.6;
}
.help-list li:last-child { border-bottom: none; }

/* ===== 采集工具页面 ===== */
.collector-form {
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.form-row {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
}
.form-group {
    flex: 1;
    min-width: 150px;
    display: flex;
    flex-direction: column;
}
.form-group label {
    font-size: 13px;
    color: #555;
    margin-bottom: 6px;
    font-weight: 500;
}
.form-input {
    padding: 10px 14px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 14px;
    outline: none;
    transition: border-color 0.2s;
}
.form-input:focus { border-color: #1a73e8; }

.search-url-box {
    background: #f8f9fa;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    padding: 12px 16px;
    display: flex;
    align-items: center;
    gap: 12px;
}
.url-label {
    font-size: 13px;
    color: #666;
    white-space: nowrap;
}
.url-text {
    flex: 1;
    font-size: 12px;
    color: #1a73e8;
    word-break: break-all;
    font-family: monospace;
}

.upload-area {
    border: 2px dashed #ddd;
    border-radius: 10px;
    padding: 40px 20px;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s;
    background: #fafafa;
}
.upload-area:hover {
    border-color: #1a73e8;
    background: #f0f7ff;
}
.upload-icon {
    font-size: 40px;
    margin-bottom: 12px;
}
.upload-text {
    font-size: 16px;
    color: #333;
    margin-bottom: 6px;
}
.upload-hint {
    font-size: 12px;
    color: #999;
}

.result-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
    flex-wrap: wrap;
    gap: 12px;
}
.result-count {
    background: #1a73e8;
    color: #fff;
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 14px;
}
.result-actions {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
}

/* ===== 采集工具 - 左右布局 ===== */
.collector-layout {
    display: flex;
    gap: 20px;
    align-items: flex-start;
}
.filter-panel {
    width: 240px;
    flex-shrink: 0;
    background: #fff;
    border-radius: 10px;
    padding: 16px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    position: sticky;
    top: 70px;
}
.filter-section {
    margin-bottom: 18px;
}
.filter-title {
    font-size: 13px;
    font-weight: 600;
    color: #555;
    margin-bottom: 8px;
}
.filter-input {
    width: 100%;
    padding: 8px 10px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 13px;
    outline: none;
    box-sizing: border-box;
}
.filter-input:focus { border-color: #1a73e8; }
.price-range {
    display: flex;
    align-items: center;
    gap: 6px;
}
.price-input { width: 50%; }
.price-sep { color: #999; font-size: 12px; }
.radio-group { display: flex; flex-direction: column; gap: 6px; }
.radio-label {
    font-size: 13px;
    color: #444;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 6px;
}
.main-content {
    flex: 1;
    min-width: 0;
}

/* 快捷标签 */
.quick-tags {
    display: flex;
    gap: 8px;
    margin-bottom: 14px;
    flex-wrap: wrap;
}
.quick-tag {
    padding: 6px 14px;
    background: #f0f7ff;
    color: #1a73e8;
    border-radius: 20px;
    font-size: 13px;
    cursor: pointer;
    transition: all 0.2s;
    border: 1px solid #d0e3ff;
}
.quick-tag:hover {
    background: #1a73e8;
    color: #fff;
}

/* 表格工具栏 */
.table-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
    flex-wrap: wrap;
    gap: 8px;
}
.toolbar-left { font-size: 14px; color: #555; }
.toolbar-right { display: flex; gap: 8px; }
.table-container {
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
/* QW4: 统一响应式表格包裹，小屏幕横向滚动而不撑破页面 */
.table-responsive {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
.table-responsive table { min-width: 100%; }

/* QW5: 必填字段红星标记 */
.required-star { color: var(--danger); margin-left: 3px; font-weight: 700; }
.form-required-hint { font-size: 12px; color: var(--text-muted, #94a3b8); margin: 0 0 12px; }
.inline-form .required-star { align-self: center; font-size: 15px; }

/* 库存状态标签 */
.stock-badge {
    padding: 3px 8px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 500;
}
.stock-in { background: #e6f4ea; color: #1e7e34; }
.stock-low { background: #fff3cd; color: #856404; }
.stock-out { background: #fce8e6; color: #c5221f; }

.product-link {
    color: #333;
    text-decoration: none;
    font-size: 13px;
}
.product-link:hover { color: #1a73e8; text-decoration: underline; }

/* 分页 */
.pagination {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 12px;
    margin-top: 16px;
}
.page-btn {
    padding: 6px 16px;
    border: 1px solid #ddd;
    background: #fff;
    border-radius: 6px;
    cursor: pointer;
    font-size: 13px;
}
.page-btn:hover { border-color: #1a73e8; color: #1a73e8; }
.page-btn:disabled { opacity: 0.5; cursor: not-allowed; }

/* ===== 采集工具 - 面板分区 ===== */
.panel-section {
    margin-bottom: 4px;
}
.panel-section-title {
    font-size: 14px;
    font-weight: 700;
    color: #333;
    margin-bottom: 12px;
    padding-bottom: 8px;
    border-bottom: 2px solid #1a73e8;
}
.panel-divider {
    height: 1px;
    background: #eee;
    margin: 16px 0;
}
.filter-label {
    display: block;
    font-size: 12px;
    color: #777;
    margin-bottom: 4px;
    font-weight: 500;
}
.checkbox-label {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: #444;
    cursor: pointer;
    margin-bottom: 6px;
}
.checkbox-label input[type="checkbox"] {
    cursor: pointer;
}

/* ===== 采集工具 - Tab布局 ===== */
.collector-tabs {
    display: flex;
    gap: 4px;
    margin-bottom: 20px;
    border-bottom: 2px solid #e0e0e0;
}
.ctab {
    padding: 12px 28px;
    border: none;
    background: none;
    font-size: 15px;
    color: #888;
    cursor: pointer;
    border-bottom: 3px solid transparent;
    margin-bottom: -2px;
    transition: all 0.2s;
    font-weight: 500;
}
.ctab:hover { color: #1a73e8; }
.ctab.active {
    color: #1a73e8;
    border-bottom-color: #1a73e8;
    font-weight: 600;
}
.ctab-panel { width: 100%; }

/* 筛选条件栏 */
.filter-bar {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    background: #fff;
    padding: 16px;
    border-radius: 10px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    margin-bottom: 14px;
    align-items: flex-end;
}
.filter-item {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.filter-item label {
    font-size: 12px;
    color: #777;
    font-weight: 500;
}
.finput {
    padding: 7px 10px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 13px;
    outline: none;
    min-width: 100px;
}
.finput:focus { border-color: #1a73e8; }
.price-range-sm {
    display: flex;
    align-items: center;
    gap: 4px;
}
.price-sm { width: 60px; min-width: 60px; }
.price-range-sm span { color: #999; font-size: 12px; }

/* 搜索采集页 */
.search-center {
    max-width: 560px;
    margin: 0 auto;
}
.search-card {
    background: #fff;
    padding: 28px;
    border-radius: 12px;
    box-shadow: 0 4px 16px rgba(0,0,0,0.08);
    margin-bottom: 24px;
}
.search-tip {
    margin-top: 16px;
    padding: 12px;
    background: #f0f7ff;
    border-radius: 8px;
    font-size: 13px;
    color: #555;
    line-height: 1.6;
}
.recent-batches {
    background: #fff;
    padding: 20px;
    border-radius: 12px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}
.recent-batches h4 {
    margin: 0 0 14px 0;
    font-size: 15px;
    color: #333;
}
.batch-list { display: flex; flex-direction: column; gap: 8px; }
.batch-item {
    display: flex;
    align-items: center;
    padding: 10px 14px;
    background: #f9f9f9;
    border-radius: 8px;
    cursor: pointer;
    transition: background 0.2s;
}
.batch-item:hover { background: #f0f7ff; }
.batch-keyword {
    flex: 1;
    font-size: 14px;
    color: #333;
    font-weight: 500;
}
.batch-meta {
    font-size: 12px;
    color: #999;
    margin-right: 12px;
}
.batch-arrow { color: #1a73e8; font-weight: bold; }

/* ===== 采集工具 - 搜索页新布局 ===== */
.search-page {
    max-width: 800px;
    margin: 0 auto;
}
.search-hero {
    background: linear-gradient(135deg, #1a73e8 0%, #4285f4 100%);
    border-radius: 16px;
    padding: 32px;
    margin-bottom: 20px;
    color: #fff;
}
.search-hero-title {
    font-size: 22px;
    font-weight: 700;
    margin-bottom: 16px;
    text-align: center;
}
.search-hero-input {
    display: flex;
    gap: 8px;
}
.hero-input {
    flex: 1;
    padding: 14px 18px;
    border: none;
    border-radius: 10px;
    font-size: 15px;
    outline: none;
}
.hero-btn {
    padding: 14px 28px;
    background: #fff;
    color: #1a73e8;
    border: none;
    border-radius: 10px;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
}
.hero-btn:hover { background: #f0f0f0; }

.search-options {
    display: flex;
    gap: 16px;
    margin-bottom: 20px;
}
.option-card {
    flex: 1;
    background: #fff;
    border-radius: 12px;
    padding: 18px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}
.option-card-title {
    font-size: 14px;
    font-weight: 600;
    color: #333;
    margin-bottom: 12px;
}
.option-row {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
}
.option-item {
    flex: 1;
    min-width: 100px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.option-item label {
    font-size: 12px;
    color: #777;
}
.option-select, .option-input {
    padding: 8px 10px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 13px;
    outline: none;
}
.option-select:focus, .option-input:focus { border-color: #1a73e8; }
.option-checks {
    flex-direction: row;
    align-items: flex-end;
    gap: 16px;
}
.check-label {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: #444;
    cursor: pointer;
}

.plugin-guide {
    background: #fff;
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    margin-bottom: 20px;
}
.guide-title {
    font-size: 15px;
    font-weight: 600;
    color: #333;
    margin-bottom: 14px;
}
.guide-steps {
    display: flex;
    gap: 16px;
    margin-bottom: 16px;
}
.guide-step {
    flex: 1;
    display: flex;
    align-items: flex-start;
    gap: 10px;
}
.step-num {
    width: 24px;
    height: 24px;
    background: #1a73e8;
    color: #fff;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 600;
    flex-shrink: 0;
}
.step-text {
    font-size: 13px;
    color: #555;
    line-height: 1.5;
}
.server-url-box {
    display: flex;
    align-items: center;
    gap: 10px;
    background: #f5f5f5;
    padding: 10px 14px;
    border-radius: 8px;
}
.url-label {
    font-size: 13px;
    color: #666;
}
.server-url-box code {
    flex: 1;
    font-size: 13px;
    color: #1a73e8;
    word-break: break-all;
}

.recent-section {
    background: #fff;
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}
.recent-title {
    font-size: 15px;
    font-weight: 600;
    color: #333;
    margin-bottom: 14px;
}
.recent-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
}
.recent-card {
    background: #f9f9f9;
    border-radius: 8px;
    padding: 14px;
    cursor: pointer;
    transition: all 0.2s;
}
.recent-card:hover {
    background: #f0f7ff;
    transform: translateY(-2px);
}
.recent-keyword {
    font-size: 14px;
    font-weight: 500;
    color: #333;
    margin-bottom: 4px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.recent-meta {
    font-size: 12px;
    color: #999;
}
.empty-mini {
    text-align: center;
    color: #999;
    padding: 20px;
    font-size: 13px;
}

/* checkbox行对齐 */
.check-row {
    display: flex;
    gap: 14px;
    padding: 8px 0;
    align-items: center;
}
.guide-notice {
    margin-top: 12px;
    padding: 10px 14px;
    background: #fff8e1;
    border-radius: 8px;
    font-size: 12px;
    color: #e65100;
    line-height: 1.5;
}

/* 标签切换按钮 */
.tag-row {
    display: flex;
    gap: 10px;
    padding: 4px 0;
}
.tag-btn {
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 7px 14px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 13px;
    color: #555;
    cursor: pointer;
    transition: all 0.2s;
    background: #fff;
    user-select: none;
}
.tag-btn:hover {
    border-color: #1a73e8;
    color: #1a73e8;
}
.tag-btn.active {
    background: #1a73e8;
    border-color: #1a73e8;
    color: #fff;
}
.tag-check {
    display: none;
    font-weight: bold;
}
.tag-btn.active .tag-check {
    display: inline;
}

/* 手动上传CSV独立卡片 */
.upload-card {
    background: #fff;
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    margin-bottom: 20px;
}
.upload-card-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 14px;
}
.upload-card-icon {
    font-size: 28px;
}
.upload-card-title {
    font-size: 15px;
    font-weight: 600;
    color: #333;
}
.upload-card-desc {
    font-size: 12px;
    color: #888;
    margin-top: 2px;
}
.upload-drop-area {
    border: 2px dashed #ddd;
    border-radius: 10px;
    padding: 28px;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s;
    background: #fafafa;
}
.upload-drop-area:hover {
    border-color: #1a73e8;
    background: #f0f7ff;
}
.upload-drop-icon {
    font-size: 32px;
    margin-bottom: 8px;
}
.upload-drop-text {
    font-size: 14px;
    color: #333;
    font-weight: 500;
    margin-bottom: 4px;
}
.upload-drop-hint {
    font-size: 12px;
    color: #999;
}

/* 插件下载页 - 详细卡片 */
.plugin-card-detail {
    display: flex;
    flex-direction: column;
}
.plugin-card-top {
    display: flex;
    gap: 14px;
    margin-bottom: 14px;
}
.plugin-name-row {
    display: flex;
    align-items: center;
    gap: 8px;
}
.plugin-badge {
    background: #1e7e34;
    color: #fff;
    font-size: 10px;
    padding: 2px 6px;
    border-radius: 4px;
    font-weight: 600;
}
.plugin-meta {
    display: flex;
    gap: 12px;
    margin: 4px 0;
}
.plugin-date {
    font-size: 12px;
    color: #888;
}
.plugin-changelog {
    background: #f9f9f9;
    border-radius: 8px;
    padding: 12px 16px;
    margin-bottom: 14px;
    text-align: left;
}
.changelog-title {
    font-size: 13px;
    font-weight: 600;
    color: #333;
    margin-bottom: 8px;
    text-align: left;
}
.changelog-list {
    margin: 0;
    padding-left: 18px;
    text-align: left;
}
.changelog-list li {
    font-size: 12px;
    color: #555;
    line-height: 1.8;
    text-align: left;
}
.plugin-card-bottom {
    display: flex;
}

/* 安装说明 */
.install-guide {
    background: #fff;
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    margin-top: 20px;
}
.guide-steps-inline {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
    margin: 14px 0;
}
.guide-step-inline {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: #444;
}
.step-circle {
    width: 22px;
    height: 22px;
    background: #1a73e8;
    color: #fff;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 600;
    flex-shrink: 0;
}
.guide-warning {
    margin-top: 12px;
    padding: 10px 14px;
    background: #fff8e1;
    border-radius: 8px;
    font-size: 12px;
    color: #e65100;
}

/* 搜索条件合并卡片 */
.search-conditions-card {
    background: #fff;
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    margin-bottom: 16px;
}
.conditions-title {
    font-size: 15px;
    font-weight: 600;
    color: #333;
    margin-bottom: 16px;
}
.conditions-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}
.conditions-col {
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.condition-item {
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.condition-item label {
    font-size: 12px;
    color: #777;
    font-weight: 500;
}
.condition-input {
    padding: 8px 10px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 13px;
    outline: none;
}
.condition-input:focus { border-color: #1a73e8; }
.price-inline {
    display: flex;
    align-items: center;
    gap: 6px;
}
.price-sm { width: 100%; }
.price-dash { color: #999; font-size: 13px; }

/* 简洁插件说明 */
.plugin-guide-simple {
    background: #fff;
    border-radius: 10px;
    padding: 14px 18px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    margin-bottom: 16px;
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}
.guide-icon { font-size: 20px; }
.guide-text {
    font-size: 13px;
    color: #444;
    flex: 1;
}
.guide-warn {
    font-size: 11px;
    color: #e65100;
    background: #fff8e1;
    padding: 4px 10px;
    border-radius: 4px;
}
.trouble-box {
    margin-top: 14px;
    background: #f5f5f5;
    border-radius: 8px;
    padding: 14px 16px;
}
.trouble-title {
    font-size: 13px;
    font-weight: 600;
    color: #333;
    margin-bottom: 10px;
}
.trouble-item {
    font-size: 12px;
    color: #555;
    line-height: 1.8;
    margin-bottom: 6px;
}
.trouble-item strong { color: #333; }

/* ===== 采集工具 方案E 极简单页 ===== */
.collector-simple { max-width: 720px; margin: 0 auto; padding: 20px 0; }

.cs-search-box { display: flex; gap: 10px; margin-bottom: 16px; }
.cs-input { flex: 1; padding: 14px 18px; font-size: 16px; border: 2px solid #e0e0e0; border-radius: 10px; outline: none; transition: border-color 0.2s; }
.cs-input:focus { border-color: #1a73e8; }
.cs-btn { padding: 14px 28px; background: #1a73e8; color: #fff; border: none; border-radius: 10px; font-size: 16px; font-weight: 600; cursor: pointer; white-space: nowrap; }
.cs-btn:hover { background: #1557b0; }

.cs-mode-switch { display: flex; gap: 8px; margin-bottom: 16px; justify-content: center; }
.cs-mode-btn { padding: 8px 20px; background: #f0f0f0; color: #666; border: 2px solid transparent; border-radius: 8px; font-size: 14px; cursor: pointer; transition: all 0.2s; }
.cs-mode-btn.active { background: #1a73e8; color: #fff; border-color: #1a73e8; font-weight: 600; }

.cs-auto-settings { background: #f8f9fa; border-radius: 10px; padding: 14px 18px; margin-bottom: 16px; }
.cs-auto-row { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; flex-wrap: wrap; }
.cs-auto-row:last-child { margin-bottom: 0; }
.cs-auto-row label { font-size: 14px; color: #555; min-width: 70px; }
.cs-num-input { width: 80px; padding: 6px 10px; border: 1px solid #ddd; border-radius: 6px; font-size: 14px; }
.cs-hint { font-size: 12px; color: #999; }
.cs-radio { display: flex; align-items: center; gap: 4px; font-size: 13px; cursor: pointer; }

.cs-conditions { border: 1px solid #e8e8e8; border-radius: 10px; margin-bottom: 16px; overflow: hidden; }
.cs-conditions-header { padding: 12px 16px; background: #fafafa; cursor: pointer; display: flex; justify-content: space-between; align-items: center; font-size: 14px; font-weight: 600; color: #444; }
.cs-conditions-header:hover { background: #f0f0f0; }
.cs-arrow { font-size: 10px; color: #999; }
.cs-conditions-body { padding: 16px; }
.cs-cond-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.cs-cond-item { display: flex; flex-direction: column; gap: 4px; }
.cs-cond-item label { font-size: 12px; color: #888; }
.cs-select, .cs-input-sm { padding: 8px 10px; border: 1px solid #ddd; border-radius: 6px; font-size: 13px; }
.cs-price-row { display: flex; align-items: center; gap: 6px; }
.cs-price-row .cs-input-sm { width: 70px; }
.cs-cond-tags { grid-column: 1 / -1; }
.cs-tag-group { display: flex; gap: 8px; flex-wrap: wrap; }
.cs-tag { display: flex; align-items: center; gap: 4px; padding: 6px 12px; background: #f5f5f5; border-radius: 6px; font-size: 13px; cursor: pointer; transition: all 0.2s; }
.cs-tag:hover { background: #e8f0fe; }
.cs-tag input[type="checkbox"]:checked + * { /* noop */ }
.cs-tag:has(input:checked) { background: #1a73e8; color: #fff; }

.cs-actions { text-align: center; margin-bottom: 20px; }
.cs-main-btn { padding: 14px 40px; background: linear-gradient(135deg, #1a73e8, #4285f4); color: #fff; border: none; border-radius: 10px; font-size: 16px; font-weight: 600; cursor: pointer; box-shadow: 0 4px 12px rgba(26,115,232,0.3); }
.cs-main-btn:hover { transform: translateY(-1px); box-shadow: 0 6px 16px rgba(26,115,232,0.4); }

.cs-progress { background: #f0f7ff; border-radius: 10px; padding: 16px; margin-bottom: 16px; text-align: center; }
.cs-progress-bar { height: 8px; background: #e0e0e0; border-radius: 4px; overflow: hidden; margin-bottom: 8px; }
.cs-progress-fill { height: 100%; background: linear-gradient(90deg, #1a73e8, #4285f4); border-radius: 4px; transition: width 0.3s; }
.cs-progress-text { font-size: 14px; color: #444; margin-bottom: 10px; }
.cs-stop-btn { padding: 8px 24px; background: #c5221f; color: #fff; border: none; border-radius: 6px; font-size: 13px; cursor: pointer; }

.cs-upload-card { background: #fff; border: 2px dashed #ddd; border-radius: 10px; padding: 16px; margin-bottom: 16px; text-align: center; }
.cs-upload-title { font-size: 14px; font-weight: 600; color: #444; margin-bottom: 10px; }
.cs-upload-btn { padding: 8px 16px; background: #f5f5f5; color: #444; border: 1px solid #ddd; border-radius: 6px; font-size: 13px; cursor: pointer; margin: 0 4px; }
.cs-upload-btn:hover { background: #e8f0fe; border-color: #1a73e8; color: #1a73e8; }
.cs-upload-submit { background: #1a73e8; color: #fff; border-color: #1a73e8; }
.cs-upload-submit:hover { background: #1557b0; color: #fff; }
.cs-file-name { font-size: 12px; color: #888; }

.cs-plugin-tip { background: #e8f0fe; border-left: 4px solid #1a73e8; padding: 12px 16px; border-radius: 0 8px 8px 0; font-size: 13px; color: #444; line-height: 1.6; }
.cs-plugin-link { color: #1a73e8; text-decoration: none; font-weight: 600; margin-left: 8px; }

/* 采集结果 */
.results-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 16px; }
.stat-card { background: #fff; border-radius: 10px; padding: 16px; text-align: center; box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
.stat-num { font-size: 28px; font-weight: 700; color: #1a73e8; }
.stat-label { font-size: 12px; color: #888; margin-top: 4px; }
.results-filters { display: flex; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; align-items: center; }
.rf-input, .rf-select { padding: 8px 12px; border: 1px solid #ddd; border-radius: 6px; font-size: 13px; }
.rf-input { flex: 1; min-width: 200px; }
.rf-btn { padding: 8px 16px; background: #1a73e8; color: #fff; border: none; border-radius: 6px; font-size: 13px; cursor: pointer; }
.rf-btn-danger { background: #c5221f; }
.results-table-wrap { overflow-x: auto; background: #fff; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
.results-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.results-table th { background: #f8f9fa; padding: 10px 12px; text-align: left; font-weight: 600; color: #555; border-bottom: 2px solid #eee; }
.results-table td { padding: 10px 12px; border-bottom: 1px solid #f0f0f0; }
.results-table tr:hover { background: #f8f9fa; }
.rt-title { max-width: 300px; }
.rt-title a { color: #1a73e8; text-decoration: none; }
.rt-title a:hover { text-decoration: underline; }
.stock-low { color: #c5221f; font-weight: 600; }
.rt-del { padding: 4px 10px; background: #fef0f0; color: #c5221f; border: none; border-radius: 4px; font-size: 12px; cursor: pointer; }
.results-empty, .results-loading { text-align: center; padding: 40px; color: #999; font-size: 14px; }

/* ===== 导航角标 ===== */
.nav-badge {
    display: inline-block;
    background: #dc3545;
    color: #fff;
    font-size: 11px;
    padding: 1px 6px;
    border-radius: 10px;
    margin-left: 4px;
    font-weight: 600;
    vertical-align: middle;
}

.plugin-update-banner {
    display: flex;
    align-items: center;
    gap: 12px;
    background: linear-gradient(135deg, #fff8e1, #fff3e0);
    border: 1px solid #ffcc80;
    border-radius: 8px;
    padding: 10px 16px;
    margin-bottom: 16px;
    font-size: 13px;
    color: #e65100;
}
.plugin-update-banner strong { color: #bf360c; }
.pub-download-btn {
    padding: 4px 14px;
    background: #ff9800;
    color: #fff;
    border-radius: 4px;
    text-decoration: none;
    font-weight: 600;
    font-size: 12px;
}
.pub-download-btn:hover { background: #f57c00; }
.pub-close-btn {
    margin-left: auto;
    background: none;
    border: none;
    font-size: 18px;
    color: #999;
    cursor: pointer;
    padding: 0 4px;
}
.pub-close-btn:hover { color: #666; }

.member-expired-banner {
    background: linear-gradient(135deg, #fff3e0, #ffe0b2);
    border: 1px solid #ffb74d;
    border-radius: 8px;
    padding: 10px 16px;
    margin-bottom: 16px;
    font-size: 13px;
    color: #e65100;
    font-weight: 500;
}

/* ===== 产品采集页 ===== */
.pc-hero {
    background: linear-gradient(135deg, #1a73e8 0%, #4285f4 100%);
    border-radius: 16px;
    padding: 36px 32px;
    margin-bottom: 20px;
    color: #fff;
    text-align: center;
}
.pc-hero-title { font-size: 26px; font-weight: 700; margin: 0 0 8px 0; }
.pc-hero-subtitle { font-size: 14px; opacity: 0.9; margin: 0 0 24px 0; }
.pc-search-row {
    display: flex;
    gap: 10px;
    max-width: 100%;
    margin: 0 auto 12px;
}
.pc-search-input {
    flex: 1;
    padding: 0 18px;
    border: none;
    border-radius: 10px;
    font-size: 15px;
    outline: none;
    height: 48px;
    box-sizing: border-box;
}
.pc-search-btn {
    padding: 0 32px;
    background: #fff;
    color: #1a73e8;
    border: none;
    border-radius: 10px;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
    white-space: nowrap;
    height: 48px;
    box-sizing: border-box;
}
.pc-search-btn:hover { background: #f0f0f0; transform: translateY(-1px); }
.pc-hero-hint {
    font-size: 13px;
    opacity: 0.85;
    margin: 0;
    text-align: center;
}

.pc-card {
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    margin-bottom: 16px;
    overflow: hidden;
}
.pc-card-header {
    padding: 14px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-bottom: 1px solid #f0f0f0;
}
.pc-card-title { font-size: 15px; font-weight: 600; color: #333; }
.pc-card-body { padding: 20px; }
.pc-bottom-grid {
    display: grid;
    grid-template-columns: 3fr 2fr;
    gap: 16px;
    margin-bottom: 16px;
}
.pc-cond-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    align-items: end;
}
.pc-cond-item { display: flex; flex-direction: column; gap: 6px; }
.pc-cond-item label { font-size: 12px; color: #777; font-weight: 500; }
.pc-cond-full { grid-column: 1 / -1; }
.pc-cond-input {
    padding: 8px 10px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 13px;
    outline: none;
    height: 36px;
    box-sizing: border-box;
    width: 100%;
}
.pc-cond-input:focus { border-color: #1a73e8; }
.pc-price-row { display: flex; align-items: center; gap: 6px; }
.pc-price-input { width: 100%; }
.pc-price-sep { color: #999; font-size: 12px; flex-shrink: 0; }
.pc-tag-group { display: flex; gap: 12px; flex-wrap: wrap; }
.pc-tag {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 6px 12px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 13px;
    cursor: pointer;
    transition: all 0.2s;
}
.pc-tag:hover { border-color: #1a73e8; background: #f0f7ff; }
.pc-tag input { margin: 0; }

.pc-upload-form { display: flex; align-items: center; gap: 12px; }
.pc-upload-btn {
    padding: 8px 16px;
    border: 1px solid #ddd;
    background: #fff;
    border-radius: 6px;
    font-size: 13px;
    cursor: pointer;
    transition: all 0.2s;
}
.pc-upload-btn:hover { border-color: #1a73e8; color: #1a73e8; }
.pc-upload-submit { background: #1a73e8; color: #fff; border-color: #1a73e8; }
.pc-upload-submit:hover { background: #1557b0; }
.pc-file-name { font-size: 13px; color: #666; flex: 1; }

.pc-dropzone {
    border: 2px dashed #ccc;
    border-radius: 10px;
    padding: 36px 20px;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s;
    background: #fafafa;
}
.pc-dropzone:hover, .pc-dropzone.dragover {
    border-color: #1a73e8;
    background: #f0f7ff;
}
.pc-dropzone-icon { font-size: 32px; margin-bottom: 8px; }
.pc-dropzone-text { font-size: 15px; font-weight: 600; color: #333; margin-bottom: 4px; }
.pc-dropzone-hint { font-size: 12px; color: #999; }

.pc-textarea {
    width: 100%;
    min-height: 140px;
    padding: 12px;
    border: 1px solid #ddd;
    border-radius: 8px;
    font-size: 13px;
    font-family: monospace;
    outline: none;
    resize: vertical;
    box-sizing: border-box;
}
.pc-textarea:focus { border-color: #1a73e8; }
.pc-batch-actions {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 10px;
}
.pc-batch-count { font-size: 13px; color: #666; }
.pc-batch-btn {
    padding: 8px 20px;
    background: #1a73e8;
    color: #fff;
    border: none;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
}
.pc-batch-btn:hover { background: #1557b0; }
.pc-batch-btn:disabled { background: #ccc; cursor: not-allowed; }

.pc-plugin-tip {
    display: flex;
    align-items: center;
    gap: 12px;
    background: #f0f7ff;
    border-radius: 10px;
    padding: 16px 20px;
    margin-bottom: 20px;
}
.pc-plugin-icon { font-size: 24px; }
.pc-plugin-text { flex: 1; font-size: 13px; color: #555; line-height: 1.6; }
.pc-plugin-link { color: #1a73e8; text-decoration: none; font-size: 13px; font-weight: 600; white-space: nowrap; }
.pc-plugin-link:hover { text-decoration: underline; }

.pc-actions { text-align: center; margin: 24px 0; }
.pc-main-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 14px 36px;
    background: #1a73e8;
    color: #fff;
    border: none;
    border-radius: 10px;
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    text-decoration: none;
    transition: all 0.2s;
}
.pc-main-btn:hover { background: #1557b0; transform: translateY(-1px); }
.pc-badge {
    background: rgba(255,255,255,0.25);
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 13px;
}

/* 全局拖拽上传遮罩 */
.pc-drag-overlay {
    display: none;
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(26,115,232,0.15);
    z-index: 9999;
    pointer-events: none;
}
.pc-drag-overlay.show { display: flex; align-items: center; justify-content: center; }
.pc-drag-overlay-inner {
    background: #1a73e8;
    color: #fff;
    font-size: 20px;
    font-weight: 600;
    padding: 30px 60px;
    border-radius: 16px;
    border: 3px dashed #fff;
}

/* 产品采集页响应式 */
@media (max-width: 900px) {
    .pc-cond-grid { grid-template-columns: repeat(2, 1fr); }
    .pc-bottom-grid { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
    .pc-cond-grid { grid-template-columns: 1fr; }
    .pc-hero { padding: 24px 16px; }
    .pc-search-row { flex-direction: column; }
    .pc-search-btn { width: 100%; }
}

/* ===== 采集箱页 ===== */
.cb-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: #f0f7ff;
    border-radius: 12px;
    padding: 16px 24px;
    margin-bottom: 16px;
}
.cb-header-left { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.cb-title { font-size: 20px; font-weight: 700; color: #333; margin: 0; }
.cb-header-stats { display: flex; align-items: center; gap: 8px; font-size: 13px; color: #666; }
.cb-header-stats strong { color: #1a73e8; font-weight: 700; }
.cb-stat-sep { color: #ccc; }
.cb-header-right { display: flex; align-items: center; gap: 8px; }
.cb-subtitle { font-size: 14px; color: #666; }
.cb-subtitle strong { color: #1a73e8; font-size: 18px; }
.cb-goto-btn {
    padding: 8px 18px;
    background: #1a73e8;
    color: #fff;
    border-radius: 8px;
    text-decoration: none;
    font-size: 13px;
    font-weight: 600;
    transition: all 0.2s;
}
.cb-goto-btn:hover { background: #1557b0; }

.cb-stats {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
    margin-bottom: 16px;
}
.cb-stat-card {
    background: #fff;
    border-radius: 10px;
    padding: 18px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    border-top: 3px solid #ccc;
    text-align: center;
    transition: transform 0.2s;
}
.cb-stat-card:hover { transform: translateY(-2px); }
.cb-stat-blue { border-top-color: #1a73e8; }
.cb-stat-green { border-top-color: #28a745; }
.cb-stat-orange { border-top-color: #fd7e14; }
.cb-stat-red { border-top-color: #dc3545; }
.cb-stat-icon { font-size: 20px; margin-bottom: 6px; }
.cb-stat-num { font-size: 28px; font-weight: 700; color: #333; }
.cb-stat-blue .cb-stat-num { color: #1a73e8; }
.cb-stat-green .cb-stat-num { color: #28a745; }
.cb-stat-orange .cb-stat-num { color: #fd7e14; }
.cb-stat-red .cb-stat-num { color: #dc3545; }
.cb-stat-label { font-size: 12px; color: #999; margin-top: 4px; }

/* 采集箱筛选条件区 */
.cb-filter-card {
    background: #fff;
    border-radius: 10px;
    padding: 14px 18px;
    box-shadow: 0 1px 4px rgba(0,0,0,0.05);
    margin-bottom: 12px;
    border: 1px solid #eef0f3;
}
.cb-filter-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px 16px;
    align-items: end;
}
.cb-filter-item { display: flex; flex-direction: column; gap: 3px; }
.cb-filter-item label { font-size: 12px; color: #888; font-weight: 500; }
.cb-filter-wide { grid-column: span 2; }
.cb-filter-input, .cb-filter-select {
    padding: 7px 10px;
    border: 1px solid #dce0e5;
    border-radius: 6px;
    font-size: 13px;
    outline: none;
    transition: border-color 0.2s;
    background: #fff;
}
.cb-filter-input:focus, .cb-filter-select:focus { border-color: #1a73e8; box-shadow: 0 0 0 2px rgba(26,115,232,0.1); }
.cb-filter-input-sm {
    padding: 6px 8px;
    border: 1px solid #dce0e5;
    border-radius: 6px;
    font-size: 13px;
    outline: none;
    width: 72px;
    transition: border-color 0.2s;
}
.cb-filter-input-sm:focus { border-color: #1a73e8; box-shadow: 0 0 0 2px rgba(26,115,232,0.1); }
.cb-price-row { display: flex; align-items: center; gap: 4px; }
.cb-price-row span { color: #999; font-size: 12px; }
.cb-filter-tags { grid-column: span 2; }
.cb-tag-group { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.cb-tag {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 5px 10px;
    border: 1px solid #dce0e5;
    border-radius: 6px;
    font-size: 12px;
    cursor: pointer;
    transition: all 0.2s;
    color: #555;
}
.cb-tag:hover { border-color: #1a73e8; background: #f0f7ff; color: #1a73e8; }
.cb-tag input { margin: 0; }
.cb-filter-reset { margin-left: auto; }
.cb-active-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px dashed #e8eaed;
}
.cb-active-tag {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 8px;
    background: #e8f0fe;
    color: #1a73e8;
    border-radius: 4px;
    font-size: 12px;
}
.cb-active-tag button {
    background: none;
    border: none;
    color: #1a73e8;
    cursor: pointer;
    font-size: 14px;
    line-height: 1;
    padding: 0;
    opacity: 0.7;
}
.cb-active-tag button:hover { opacity: 1; }

.cb-tabs {
    display: flex;
    gap: 0;
    margin-bottom: 12px;
    border-bottom: 2px solid #e8eaed;
    align-items: center;
}
.cb-tab {
    padding: 10px 16px;
    border: none;
    background: none;
    font-size: 14px;
    color: #666;
    cursor: pointer;
    border-bottom: 3px solid transparent;
    margin-bottom: -2px;
    transition: all 0.2s;
    font-weight: 500;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.cb-tab:hover { color: #1a73e8; }
.cb-tab.active { color: #1a73e8; border-bottom-color: #1a73e8; font-weight: 600; }
.cb-tab-pending.active { color: #e67e22; border-bottom-color: #e67e22; }
.cb-tab-exported.active { color: #27ae60; border-bottom-color: #27ae60; }
.cb-tab-deleted.active { color: #95a5a6; border-bottom-color: #95a5a6; }
.cb-tabs-actions { margin-left: auto; display: flex; align-items: center; gap: 8px; }

/* Tab 徽章 */
.cb-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 20px;
    height: 18px;
    padding: 0 6px;
    border-radius: 9px;
    font-size: 11px;
    font-weight: 600;
    background: #e8eaed;
    color: #666;
}
.cb-badge-blue { background: #e8f0fe; color: #1a73e8; }
.cb-badge-orange { background: #fef3e2; color: #e67e22; }
.cb-badge-green { background: #e6f4ea; color: #27ae60; }
.cb-tab.active .cb-badge { background: currentColor; color: #fff; }
.cb-tab-pending.active .cb-badge { background: #e67e22; }
.cb-tab-exported.active .cb-badge { background: #27ae60; }

.cb-filter-bar {
    display: flex;
    align-items: center;
    gap: 10px;
    background: #fff;
    border-radius: 10px;
    padding: 14px 16px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    margin-bottom: 12px;
    flex-wrap: wrap;
}
.cb-search-input {
    flex: 1;
    min-width: 200px;
    padding: 8px 12px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 13px;
    outline: none;
}
.cb-search-input:focus { border-color: #1a73e8; }
.cb-filter-select {
    padding: 8px 10px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 13px;
    outline: none;
}
.cb-filter-actions { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.cb-selected-info { font-size: 13px; color: #666; }
.cb-selected-info strong { color: #1a73e8; }
.cb-btn {
    padding: 8px 16px;
    border: none;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    white-space: nowrap;
}
.cb-btn-primary { background: #1a73e8; color: #fff; }
.cb-btn-primary:hover { background: #1557b0; }
.cb-btn-primary:disabled { background: #ccc; cursor: not-allowed; }
.cb-btn-danger { background: #ea4335; color: #fff; }
.cb-btn-danger:hover { background: #c5221f; }
.cb-btn-url { background: #f39c12; color: #fff; }
.cb-btn-url:hover { background: #d68910; }
.cb-btn-excel { background: #0d9488; color: #fff; }
.cb-btn-excel:hover { background: #0f766e; }
.cb-btn-success { background: #27ae60; color: #fff; }
.cb-btn-success:hover { background: #219a52; }
/* 新增按钮样式 */
.cb-btn-outline {
    background: #fff;
    color: #555;
    border: 1px solid #d0d5dd;
}
.cb-btn-outline:hover { border-color: #1a73e8; color: #1a73e8; background: #f0f7ff; }
.cb-btn-ghost {
    background: transparent;
    color: #666;
    border: 1px solid transparent;
}
.cb-btn-ghost:hover { background: #f0f0f0; color: #333; }
.cb-btn-ghost-danger {
    background: transparent;
    color: #999;
    border: 1px solid #e0e0e0;
}
.cb-btn-ghost-danger:hover { color: #ea4335; border-color: #ea4335; background: #fef0f0; }
.cb-btn-sm { padding: 6px 12px; font-size: 12px; }
.cb-btn-xs { padding: 4px 10px; font-size: 12px; border-radius: 4px; }
.cb-icon-refresh { font-size: 15px; display: inline-block; transition: transform 0.3s; }
.cb-btn:hover .cb-icon-refresh { transform: rotate(180deg); }

.cb-table-wrap {
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 1px 4px rgba(0,0,0,0.05);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    border: 1px solid #eef0f3;
}
.cb-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.cb-table-fixed { table-layout: fixed; }
.cb-table thead { background: #f8f9fb; }
.cb-table th {
    padding: 10px 8px;
    text-align: left;
    font-weight: 600;
    color: #666;
    border-bottom: 1px solid #e8eaed;
    white-space: nowrap;
    position: relative;
    overflow: hidden;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}
.cb-table th.sortable { cursor: pointer; user-select: none; }
.cb-table th.sortable:hover { color: #1a73e8; }
.cb-table th.resizable-col { position: relative; }
.col-resizer {
    position: absolute;
    right: 0;
    top: 0;
    width: 5px;
    height: 100%;
    cursor: col-resize;
    user-select: none;
}
.col-resizer:hover { background: #1a73e8; }
.cb-table td { padding: 0 8px; border-bottom: 1px solid #f2f3f5; vertical-align: middle; height: 52px; overflow: hidden; }
.cb-table tbody tr.cb-row-fixed { height: 52px; transition: background 0.15s; }
.cb-table tbody tr:hover { background: #f5f8ff !important; }
.cb-table tbody tr.cb-row-exported { background: #f8fafd; }
.cb-table tbody tr.cb-row-exported td:first-child { border-left: 3px solid #1a73e8; }
.cb-table tbody tr.cb-row-lowstock { background: #fffbf5; }
.cb-table tbody tr.cb-row-exported.cb-row-lowstock { background: #faf8ff; }

/* 状态标签 */
.cb-status-cell { text-align: center; }
.cb-tag-status {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 500;
    white-space: nowrap;
}
.cb-tag-green { background: #e6f4ea; color: #1e7e34; }
.cb-tag-blue { background: #e8f0fe; color: #1a73e8; }
.cb-tag-gray { background: #f0f1f3; color: #888; }
.cb-tag-red { background: #fde8e8; color: #c62828; }

/* 已采集详情行 */
.cb-table tbody tr.cb-row-detail-done { background: #f6faf7; }
.cb-table tbody tr.cb-row-detail-done td:first-child { border-left: 3px solid #27ae60; }
.cb-table tbody tr.cb-row-detail-done.cb-row-lowstock { background: #faf8f5; }

/* 关联链接图标 */
.cb-link-icon {
    display: inline-block;
    margin-left: 4px;
    font-size: 12px;
    cursor: pointer;
    opacity: 0.6;
    transition: opacity 0.15s;
}
.cb-link-icon:hover { opacity: 1; }

/* 商品图片 */
.cb-img-cell { text-align: center; padding: 4px !important; }
.cb-thumb {
    width: 40px;
    height: 40px;
    object-fit: contain;
    border-radius: 6px;
    border: 1px solid #f0f0f0;
    background: #fafafa;
}
.cb-thumb-placeholder {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    background: #f5f6f8;
    border-radius: 6px;
    font-size: 18px;
    opacity: 0.5;
}

.cb-title-cell { overflow: hidden; }
.cb-title-cell a { color: #333; text-decoration: none; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cb-title-cell a:hover { color: #1a73e8; text-decoration: underline; }
.cb-price { color: #1a73e8; font-weight: 700; font-size: 13px; }
.cb-rating { color: #f39c12; font-weight: 600; }
.cb-stock-low { color: #e67e22; font-weight: 600; }
.cb-stock-ok { color: #27ae60; font-weight: 500; }
.cb-stock-out { color: #999; }
.cb-time { font-size: 12px; color: #aaa; white-space: nowrap; }

/* 平台标签 */
.cb-platform-tag {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 500;
    background: #f0f1f3;
    color: #555;
    white-space: nowrap;
}
.cb-platform-amazon { background: #FF8C00; color: #FFFFFF; }
.cb-platform-target { background: #DC143C; color: #FFFFFF; }
.cb-platform-shein { background: #000000; color: #FFFFFF; }

/* TCIN 可复制 */
.cb-tcin {
    font-family: 'SF Mono', Consolas, monospace;
    font-size: 12px;
    color: #1a73e8;
    cursor: pointer;
}
.cb-tcin:hover { text-decoration: underline; }
.cb-tcin.cb-copied { color: #27ae60; font-weight: 600; }

/* 产品采集箱行内编辑 */
.prod-editable { cursor: pointer; padding: 2px 4px; border-radius: 3px; transition: background 0.15s; }
.prod-editable:hover { background: #eff6ff; }
.prod-edit-icon { cursor: pointer; opacity: 0.4; font-size: 12px; margin-left: 4px; transition: opacity 0.15s; }
.prod-edit-icon:hover { opacity: 1; }
.prod-edit-input { border: 1px solid #3b82f6; border-radius: 3px; padding: 2px 6px; font-size: 13px; outline: none; min-width: 60px; }

/* 产品采集箱行高和图片 */
.prod-row td { padding: 10px 8px !important; vertical-align: middle; }
.prod-img-cell { text-align: center; }
.prod-thumb { width: 70px; height: 70px; object-fit: cover; border-radius: 6px; cursor: pointer; transition: transform 0.15s; }
.prod-thumb:hover { transform: scale(1.05); }
.prod-placeholder { font-size: 28px; display: inline-block; width: 70px; height: 70px; line-height: 70px; text-align: center; }
.btn-xs { padding: 2px 8px; font-size: 11px; }

/* 行内操作按钮 */
.cb-action-cell { text-align: center; }
.cb-del-btn {
    width: 26px;
    height: 26px;
    padding: 0;
    background: transparent;
    color: #ccc;
    border: none;
    border-radius: 4px;
    font-size: 16px;
    cursor: pointer;
    opacity: 0;
    transition: all 0.2s;
    line-height: 1;
}
.cb-table tbody tr:hover .cb-del-btn { opacity: 1; }
.cb-del-btn:hover { background: #fef0f0; color: #ea4335; }

.cb-loading { text-align: center; padding: 40px; color: #999; }


/* 选中信息栏 */
.cb-select-bar {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding: 8px 4px;
    margin-bottom: 4px;
}
.cb-select-info {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 13px;
    color: #555;
    background: #e8f0fe;
    padding: 6px 14px;
    border-radius: 6px;
}
.cb-select-info strong { color: #1a73e8; font-size: 14px; }

.cb-pagination {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    margin: 14px 4px;
    flex-wrap: wrap;
    padding: 10px 0;
}
.cb-page-info { font-size: 13px; color: #666; }
.cb-page-info strong { color: #1a73e8; }
.cb-page-controls { display: flex; align-items: center; gap: 4px; }
.cb-page-btn {
    padding: 6px 12px;
    border: 1px solid #ddd;
    background: #fff;
    border-radius: 4px;
    font-size: 13px;
    cursor: pointer;
    transition: all 0.2s;
}
.cb-page-btn:hover:not(:disabled) { border-color: #1a73e8; color: #1a73e8; }
.cb-page-btn:disabled { opacity: 0.4; cursor: not-allowed; }
.cb-page-numbers { display: flex; gap: 2px; }
.cb-page-num {
    padding: 6px 10px;
    border: 1px solid #ddd;
    background: #fff;
    border-radius: 4px;
    font-size: 13px;
    cursor: pointer;
    transition: all 0.2s;
    min-width: 32px;
}
.cb-page-num:hover { border-color: #1a73e8; color: #1a73e8; }
.cb-page-num.active { background: #1a73e8; color: #fff; border-color: #1a73e8; }
.cb-page-dots { padding: 6px 4px; color: #999; }
.cb-page-size { display: flex; align-items: center; gap: 6px; font-size: 13px; color: #666; }
.cb-page-size select {
    padding: 5px 8px;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 13px;
    outline: none;
}

/* 下拉菜单 */
.cb-dropdown { position: relative; display: inline-block; }
.cb-dropdown-menu {
    display: none;
    position: absolute;
    top: 100%;
    right: 0;
    background: #fff;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    min-width: 200px;
    z-index: 100;
    margin-top: 4px;
    overflow: hidden;
}
.cb-dropdown-menu a {
    display: block;
    padding: 10px 16px;
    color: #333;
    text-decoration: none;
    font-size: 13px;
    transition: background 0.15s;
}
.cb-dropdown-menu a:hover { background: #f0f7ff; color: #1a73e8; }

.cb-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 60px 20px;
    background: linear-gradient(180deg, #f0f7ff 0%, #e8f0fe 100%);
    border-radius: 12px;
}
.cb-empty-icon { font-size: 64px; margin-bottom: 16px; opacity: 0.6; }
.cb-empty-title { font-size: 18px; font-weight: 600; color: #333; margin-bottom: 8px; }
.cb-empty-desc { font-size: 14px; color: #888; margin-bottom: 20px; }
.cb-empty-btn {
    padding: 12px 28px;
    background: #1a73e8;
    color: #fff;
    border-radius: 8px;
    text-decoration: none;
    font-size: 14px;
    font-weight: 600;
}
.cb-empty-btn:hover { background: #1557b0; }

@media (max-width: 768px) {
    .pc-cond-grid { grid-template-columns: 1fr; }
    .cb-stats { grid-template-columns: repeat(2, 1fr); }
    .cb-filter-grid { grid-template-columns: 1fr; }
    .cb-filter-wide, .cb-filter-tags { grid-column: span 1; }
    .cb-filter-bar { flex-direction: column; align-items: stretch; }
    .cb-filter-actions { margin-left: 0; justify-content: flex-end; }
    .cb-tabs { flex-wrap: wrap; }
    .cb-tabs-actions { width: 100%; margin-top: 8px; }
}

/* ========== 第六批全局样式 ========== */

/* 左侧Tab栏（页面级） */
.sidebar-layout { display: flex; gap: 20px; align-items: flex-start; }
.sidebar-tabs {
    width: 160px; flex-shrink: 0; background: #f5f6f8; border-radius: 10px;
    padding: 8px; position: sticky; top: 76px;
}
.sidebar-tab {
    display: block; width: 100%; padding: 10px 14px; border: none; background: none;
    text-align: left; font-size: 14px; color: #555; cursor: pointer; border-radius: 6px;
    margin-bottom: 2px; transition: all .15s;
}
.sidebar-tab:hover { background: #e8eaed; }
.sidebar-tab.active { background: #fff; color: #1a73e8; font-weight: 600; box-shadow: 0 1px 3px rgba(0,0,0,0.08); border-left: 3px solid #1a73e8; }

/* 横向Tab栏（页面内） */
.h-tabs { display: flex; gap: 0; border-bottom: 2px solid #e8eaed; margin-bottom: 20px; }
.h-tab {
    padding: 10px 24px; border: none; background: none; font-size: 15px; color: #666;
    cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -2px;
    transition: all .15s;
}
.h-tab:hover { color: #1a73e8; }
.h-tab.active { color: #1a73e8; font-weight: 600; border-bottom-color: #1a73e8; }

/* 表格横向滚动 */
.table-wrap { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.table-wrap table { min-width: 100%; }

/* 表格列宽拖拽 */
.data-table th { position: relative; }
.data-table th .col-resizer {
    position: absolute; right: 0; top: 0; width: 6px; height: 100%;
    cursor: col-resize; user-select: none; z-index: 1;
}
.data-table th .col-resizer:hover { background: rgba(26,115,232,0.3); }
.data-table.resizing { cursor: col-resize; user-select: none; }
.data-table.resizing th, .data-table.resizing td { user-select: none; }

/* 隐藏number input spinner */
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
input[type=number] { -moz-appearance: textfield; }

/* 工具栏 */
.file-toolbar { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; border-bottom: 1px solid #f0f0f0; flex-wrap: wrap; gap: 8px; }
.file-toolbar-left, .file-toolbar-right { display: flex; gap: 8px; align-items: center; }

/* 响应式 */
@media (max-width: 1200px) {
    .sidebar-layout { flex-direction: column; }
    .sidebar-tabs { width: 100%; position: static; display: flex; overflow-x: auto; padding: 4px; }
    .sidebar-tab { white-space: nowrap; width: auto; margin-bottom: 0; margin-right: 2px; }
    .sidebar-tab.active { border-left: none; border-bottom: 3px solid #1a73e8; }
}
@media (max-width: 900px) {
    .navbar { padding: 0 12px; }
    .navbar .nav-links a { font-size: 16px; padding: 6px 10px; }
    .container { padding: 0 10px; margin: 16px auto; }
}
@media (max-width: 600px) {
    .navbar .nav-links a { font-size: 14px; padding: 6px 8px; }
    .file-toolbar { flex-direction: column; align-items: stretch; }
    .file-toolbar-left, .file-toolbar-right { justify-content: center; }
}

/* ======================================== */
/* ===== 阶段二：现代商务风组件体系 ====== */
/* ======================================== */

/* 状态标签（圆点+文字） */
.status-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: var(--text-sm);
    font-weight: 500;
    white-space: nowrap;
}
.status-badge .dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}
.status-badge.pending { color: var(--text-muted); }
.status-badge.pending .dot { background: var(--text-muted); }
.status-badge.running { color: var(--primary); }
.status-badge.running .dot {
    background: var(--primary);
    animation: pulse-dot 1.2s ease-in-out infinite;
}
.status-badge.completed { color: #047857; }
.status-badge.completed .dot { background: var(--success); }
.status-badge.partial { color: #B45309; }
.status-badge.partial .dot { background: var(--warning); }
.status-badge.failed { color: #B91C1C; }
.status-badge.failed .dot { background: var(--danger); }
.status-badge.cancelled { color: var(--text-muted); }
.status-badge.cancelled .dot { background: var(--text-muted); opacity: 0.5; }
@keyframes pulse-dot {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.5; transform: scale(0.85); }
}
.spin-icon { animation: spin 1.2s linear infinite; transform-origin: center; }

/* 进度条 */
.progress-bar {
    width: 100%;
    height: 6px;
    background: var(--border-light);
    border-radius: 3px;
    overflow: hidden;
}
.progress-bar .progress-fill {
    height: 100%;
    background: var(--primary);
    border-radius: 3px;
    transition: width 0.3s ease;
}

/* 统计卡片新版 */
.stats-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 20px;
}
.stat-card-v2 {
    background: var(--card-bg);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    padding: 16px;
    cursor: pointer;
    transition: all 0.15s;
}
.stat-card-v2:hover {
    border-color: var(--primary-border);
    box-shadow: var(--shadow);
}
.stat-card-v2 .stat-label {
    font-size: var(--text-sm);
    color: var(--text-muted);
    margin-bottom: 6px;
}
.stat-card-v2 .stat-value {
    font-size: 26px;
    font-weight: 700;
    color: var(--text);
    font-variant-numeric: tabular-nums;
    line-height: 1.2;
}
.stat-card-v2.active .stat-value { color: var(--primary); }
.stat-card-v2.success .stat-value { color: var(--success); }
.stat-card-v2.warning .stat-value { color: var(--warning); }
.stat-card-v2.danger .stat-value { color: var(--danger); }

/* Toast 轻提示 */
#toast-container {
    position: fixed;
    top: 70px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 9999;
    display: flex;
    flex-direction: column;
    gap: 8px;
    pointer-events: none;
}
.toast-item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 20px;
    border-radius: var(--radius);
    font-size: var(--text-base);
    box-shadow: var(--shadow-lg);
    background: #1E293B;
    color: #fff;
    animation: toastIn 0.25s ease;
    pointer-events: auto;
    max-width: 480px;
}
.toast-item.success { background: #065F46; }
.toast-item.error { background: #991B1B; }
.toast-item.warning { background: #92400E; }
.toast-item .toast-icon { font-size: 16px; flex-shrink: 0; }
.toast-item .toast-msg { flex: 1; }
@keyframes toastIn {
    from { opacity: 0; transform: translateY(-12px); }
    to { opacity: 1; transform: translateY(0); }
}
@keyframes toastOut {
    from { opacity: 1; transform: translateY(0); }
    to { opacity: 0; transform: translateY(-12px); }
}

/* Popconfirm 气泡确认 */
.popconfirm-wrap { position: relative; display: inline-block; }
.popconfirm-pop {
    display: none;
    position: absolute;
    bottom: calc(100% + 8px);
    left: 50%;
    transform: translateX(-50%);
    background: #fff;
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    padding: 12px 16px;
    z-index: 500;
    white-space: nowrap;
}
.popconfirm-pop.show { display: block; animation: popIn 0.15s ease; }
.popconfirm-pop::after {
    content: '';
    position: absolute;
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    border: 6px solid transparent;
    border-top-color: #fff;
}
.popconfirm-pop .pc-msg {
    font-size: var(--text-base);
    color: var(--text);
    margin-bottom: 10px;
}
.popconfirm-pop .pc-btns {
    display: flex;
    gap: 8px;
    justify-content: flex-end;
}
.popconfirm-pop .pc-btns .btn { padding: 4px 14px; font-size: var(--text-sm); }
@keyframes popIn {
    from { opacity: 0; transform: translateX(-50%) scale(0.95); }
    to { opacity: 1; transform: translateX(-50%) scale(1); }
}

/* Drawer 右侧抽屉 */
.drawer-overlay {
    display: none;
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(15,23,42,0.4);
    z-index: 900;
    animation: fadeIn 0.2s ease;
}
.drawer-overlay.show { display: block; }
.drawer-panel {
    position: fixed;
    top: 0; right: 0; bottom: 0;
    width: 560px;
    max-width: 90vw;
    background: #fff;
    z-index: 901;
    box-shadow: var(--shadow-lg);
    display: flex;
    flex-direction: column;
    transform: translateX(100%);
    transition: transform 0.25s ease;
}
.drawer-panel.show { transform: translateX(0); }
.drawer-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    border-bottom: 1px solid var(--border);
    flex-shrink: 0;
}
.drawer-header h3 { margin: 0; font-size: var(--text-lg); font-weight: 600; }
.drawer-close {
    background: none; border: none; font-size: 22px; cursor: pointer;
    color: var(--text-muted); padding: 0 4px; line-height: 1;
}
.drawer-close:hover { color: var(--text); }
.drawer-body { flex: 1; overflow-y: auto; padding: 20px; }
.drawer-footer {
    padding: 12px 20px;
    border-top: 1px solid var(--border);
    display: flex;
    gap: 8px;
    justify-content: flex-end;
    flex-shrink: 0;
}
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

/* Modal 增强 */

/* ===== V5 视觉精致化补充 ===== */

/* spinner-dark 变体（白底按钮用） */
.spinner-dark {
    display: inline-block;
    width: 14px; height: 14px;
    border: 2px solid rgba(15,23,42,0.15);
    border-top-color: var(--text-secondary);
    border-radius: 50%;
    animation: spin 0.6s linear infinite;
    vertical-align: middle;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* page-header 统一页面标题区 */
.page-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 20px;
    gap: 16px;
}
.page-header h1 {
    font-size: var(--text-2xl);
    font-weight: 700;
    color: var(--text);
    margin: 0;
    letter-spacing: -0.01em;
}
.page-header .page-subtitle {
    font-size: var(--text-sm);
    color: var(--text-muted);
    margin-top: 4px;
}
.page-header .page-actions {
    display: flex;
    gap: 8px;
    flex-shrink: 0;
}

/* 统计卡片去左侧色条，改用顶部细条 + 柔和背景 */
.stat-card {
    border-left: none !important;
    border-top: 3px solid var(--primary);
    transition: box-shadow 0.2s, transform 0.2s;
}
.stat-card:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-1px);
}
.stat-card.green { border-top-color: var(--success); }
.stat-card.orange { border-top-color: var(--warning); }
.stat-card.red { border-top-color: var(--danger); }
.stat-card .label { color: var(--text-muted) !important; font-weight: 500; }
.stat-card .value { color: var(--text) !important; letter-spacing: -0.02em; }

/* 表格精致化 */
table.data-table {
    border-collapse: separate;
    border-spacing: 0;
}
table.data-table th {
    background: #F8FAFC;
    border-bottom: 2px solid var(--border);
    font-weight: 600;
    color: var(--text-secondary);
    font-size: var(--text-xs);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    padding: 10px 14px;
}
table.data-table td {
    border-bottom: 1px solid var(--border-light);
    padding: 12px 14px;
    vertical-align: middle;
}
table.data-table tbody tr {
    transition: background 0.12s;
}
table.data-table tbody tr:hover {
    background: #F8FAFC;
}
table.data-table tbody tr:last-child td { border-bottom: none; }

/* 空状态统一 */
.empty-state {
    text-align: center;
    padding: 48px 20px;
    color: var(--text-muted);
}
.empty-state .empty-icon {
    font-size: 40px;
    margin-bottom: 12px;
    opacity: 0.5;
}
.empty-state .empty-text {
    font-size: var(--text-base);
    color: var(--text-secondary);
    margin-bottom: 4px;
}
.empty-state .empty-hint {
    font-size: var(--text-sm);
    color: var(--text-muted);
}

/* 按钮 active 状态 */
.btn:active { transform: translateY(1px); }
.btn-primary:active { background: var(--primary-hover); }
.btn-success:active { background: #047857; }
.btn-danger:active { background: #B91C1C; }
.btn-warning:active { background: #B45309; }

/* 卡片内标题与内容间距优化 */
.card > .card-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--border-light);
}
.card > .card-header h3 { margin: 0; }

/* 输入框统一（非 form-group 内的） */
input[type="text"]:not(.form-group input),
input[type="password"]:not(.form-group input),
input[type="number"]:not(.form-group input),
select:not(.form-group select),
textarea:not(.form-group textarea) {
    padding: 7px 10px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    font-size: var(--text-sm);
    color: var(--text);
    background: #fff;
    transition: border-color 0.15s, box-shadow 0.15s;
}
input:focus, select:focus, textarea:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(37,99,235,0.1);
}

/* 导航栏精致化补充 */
.navbar {
    backdrop-filter: blur(8px);
    background: rgba(255,255,255,0.92) !important;
}

/* 状态标签统一 */
.status-badge {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: var(--text-xs);
    font-weight: 600;
    line-height: 1.6;
}
.status-badge.pending { background: var(--border-light); color: var(--text-secondary); }
.status-badge.running { background: var(--primary-light); color: var(--primary); }
.status-badge.completed { background: var(--success-bg); color: #059669; }
.status-badge.partial { background: var(--warning-bg); color: #D97706; }
.status-badge.failed { background: var(--danger-bg); color: var(--danger); }
.status-badge.cancelled { background: var(--border-light); color: var(--text-muted); }
.modal-overlay {
    background: rgba(15,23,42,0.5);
}
.modal-box {
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-lg);
}
.modal-header {
    padding: 16px 20px;
    border-bottom: 1px solid var(--border);
}
.modal-header h3 { font-size: var(--text-lg); font-weight: 600; color: var(--text); }
.modal-body { padding: 20px; }

/* 左侧二级导航统一 */
.sidebar-tabs {
    width: 160px;
    flex-shrink: 0;
    background: var(--card-bg);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    padding: 6px;
    position: sticky;
    top: 72px;
}
.sidebar-tab {
    display: flex;
    align-items: center;
    width: 100%;
    padding: 9px 14px;
    border: none;
    background: none;
    text-align: left;
    font-size: var(--text-base);
    color: var(--text-secondary);
    cursor: pointer;
    border-radius: var(--radius);
    margin-bottom: 2px;
    transition: all 0.12s;
    text-decoration: none;
}
.sidebar-tab:hover { background: var(--border-light); color: var(--text); }
.sidebar-tab.active {
    background: var(--primary-light);
    color: var(--primary);
    font-weight: 600;
}

/* 搜索框 */
.search-input {
    padding: 7px 12px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    font-size: var(--text-base);
    width: 220px;
    outline: none;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.search-input:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(37,99,235,0.1);
}

/* 分页 */
.file-pagination {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 16px;
    border-top: 1px solid var(--border-light);
}
.pagination-info { font-size: var(--text-sm); color: var(--text-muted); }
.pagination-controls { display: flex; align-items: center; gap: 8px; }
.page-num { font-size: var(--text-sm); color: var(--text-secondary); padding: 0 8px; }

/* 批量操作栏 */
.batch-bar {
    display: flex;
    align-items: center;
    gap: 12px;
    background: var(--primary-light);
    border: 1px solid var(--primary-border);
    padding: 10px 16px;
    border-radius: var(--radius);
    margin-bottom: 12px;
    font-size: var(--text-base);
}

/* 工具栏 */
.file-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 16px;
    border-bottom: 1px solid var(--border-light);
    flex-wrap: wrap;
    gap: 8px;
}
.file-toolbar-left, .file-toolbar-right { display: flex; gap: 8px; align-items: center; }

/* 空状态 */
.empty-state {
    text-align: center;
    padding: 48px 20px;
    color: var(--text-muted);
}
.empty-state .empty-icon { font-size: 40px; margin-bottom: 12px; opacity: 0.4; }
.empty-state .empty-text { font-size: var(--text-base); }

/* 链接按钮 */
.link-btn {
    color: var(--primary);
    text-decoration: none;
    cursor: pointer;
    font-size: var(--text-base);
    background: none;
    border: none;
    padding: 0;
}
.link-btn:hover { text-decoration: underline; }
.link-btn.danger { color: var(--danger); }
.link-btn:disabled, .link-btn[disabled] { color: var(--text-muted); cursor: not-allowed; text-decoration: none; }

/* 标签页 */
.tabs { border-bottom: 2px solid var(--border); }
.tab-btn { color: var(--text-secondary); }
.tab-btn:hover { color: var(--primary); }
.tab-btn.active { color: var(--primary); border-bottom-color: var(--primary); }

/* 超管徽章 */
.badge {
    background: var(--warning-bg);
    color: #92400E;
    border: 1px solid var(--warning-border);
    font-size: 11px;
    padding: 1px 6px;
    border-radius: var(--radius-sm);
    font-weight: 600;
}

/* 上传区域 */
.upload-area { border: 2px dashed var(--border); border-radius: var(--radius-lg); }
.upload-area:hover { border-color: var(--primary); background: var(--primary-light); }
.upload-area.dragover { border-color: var(--primary); background: var(--primary-light); }

/* ================================================
   ===== P0 UI 优化覆盖层 (v6 方案) =====
   只追加不删除，所有样式写在末尾覆盖旧代码
   ================================================ */

/* ---------- 1. CSS 变量调整 ---------- */
:root {
    --text-secondary: #334155;   /* slate-700，从 #475569 调深，拉开灰阶 */
    --text-muted: #64748B;       /* slate-500，从 #94A3B8 调深 */
    --border-light: #E8EDF2;     /* 从 #F1F5F9 调深，表格分隔线可见 */
    --danger: #DC2626;           /* 从 #EF4444 降饱和 */
    --warning: #D97706;          /* 从 #F59E0B 降饱和 */
    --radius-sm: 6px;
    --radius: 8px;
    --radius-lg: 10px;
    --radius-xl: 14px;
    --shadow-sm: 0 1px 2px rgba(15,23,42,0.04);
    --shadow: 0 1px 3px rgba(15,23,42,0.06), 0 1px 2px rgba(15,23,42,0.04);
    --shadow-md: 0 4px 12px -2px rgba(15,23,42,0.10), 0 2px 4px -2px rgba(15,23,42,0.06);
    --shadow-lg: 0 12px 24px -4px rgba(15,23,42,0.12), 0 4px 8px -4px rgba(15,23,42,0.06);
    --z-dropdown: 1030;
    --z-sticky: 1020;
    --z-modal: 1040;
    --z-popover: 1050;
    --z-toast: 1080;
    --z-tooltip: 1100;
}

/* ---------- 2. 导航栏优化 ---------- */
.navbar {
    border-bottom: 1px solid var(--border) !important;
    height: 56px;
    z-index: var(--z-sticky);
    position: sticky;
    top: 0;
}
.navbar .nav-links a {
    height: 56px;
    display: inline-flex;
    align-items: center;
    position: relative;
}
.navbar .nav-links a.active {
    background: transparent !important;
    color: var(--primary) !important;
    font-weight: 600;
}
.navbar .nav-links a.active::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 12px;
    right: 12px;
    height: 2px;
    background: var(--primary);
    border-radius: 2px 2px 0 0;
}
/* 超管 badge 降饱和，保留琥珀色相 */
.badge {
    background: #FEF3C7 !important;
    color: #92400E !important;
    border: 1px solid #FDE68A !important;
}

/* ---------- 3. 卡片统一 ---------- */
.card, .pc-card, .stat-card-v2, .sidebar-tabs {
    border-radius: var(--radius-lg) !important;
    border: 1px solid var(--border) !important;
    box-shadow: var(--shadow-sm) !important;
    transition: box-shadow 0.2s, border-color 0.2s;
}
.card:hover, .pc-card:hover {
    box-shadow: var(--shadow-md) !important;
    border-color: var(--primary-border) !important;
}
.card { padding: 20px 24px; }

/* ---------- 4. 按钮优化 ---------- */
.btn {
    border-radius: var(--radius) !important;
    font-weight: 500;
    transition: background 0.15s, box-shadow 0.15s, border-color 0.15s, color 0.15s;
}
.btn-primary:hover {
    background: var(--primary-hover);
    box-shadow: var(--shadow-md);
}
.btn-default:hover {
    border-color: var(--primary) !important;
    color: var(--primary) !important;
    background: var(--primary-light) !important;
}
.btn-danger { background: var(--danger) !important; }
.btn-danger:hover { background: #B91C1C !important; box-shadow: var(--shadow-md); }
.btn-success:hover { box-shadow: var(--shadow-md); }

/* 按钮 loading 样式（预定义，JS 接入在 P2） */
.btn { --btn-spinner: var(--text-secondary); }
.btn-primary { --btn-spinner: #fff; }
.btn-danger { --btn-spinner: #fff; }
.btn-success { --btn-spinner: #fff; }
.btn-warning { --btn-spinner: #fff; }
.btn.loading {
    position: relative;
    color: transparent !important;
    pointer-events: none;
}
.btn.loading::after {
    content: '';
    position: absolute;
    width: 14px; height: 14px;
    border: 2px solid var(--btn-spinner);
    border-top-color: transparent;
    border-radius: 50%;
    opacity: .7;
    animation: synchro-spin .6s linear infinite;
    left: 50%; top: 50%;
    margin: -7px 0 0 -7px;
}

/* ---------- 5. 表格基础统一 ---------- */
table, .data-table, .cb-table {
    border-collapse: separate;
    border-spacing: 0;
}
table th, .data-table th, .cb-table th {
    background: #F8FAFC !important;
    border-bottom: 1px solid var(--border) !important;
    font-weight: 600 !important;
    color: var(--text-secondary) !important;
    font-size: 13px !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    padding: 10px 14px !important;
}
table td, .data-table td, .cb-table td {
    border-bottom: 1px solid var(--border-light) !important;
    padding: 12px 14px !important;
    vertical-align: middle;
}
table tbody tr:hover, .data-table tbody tr:hover, .cb-table tbody tr:hover {
    background: #F8FAFC !important;
}

/* ---------- 6. 表单控件美化（零 HTML 改动） ---------- */
input[type="checkbox"] {
    appearance: none;
    -webkit-appearance: none;
    width: 18px; height: 18px;
    border: 1.5px solid var(--border);
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    position: relative;
    vertical-align: middle;
    transition: border-color .15s, background .15s;
}
input[type="checkbox"]:checked {
    background: var(--primary);
    border-color: var(--primary);
}
input[type="checkbox"]:checked::after {
    content: '';
    position: absolute;
    left: 5px; top: 1px;
    width: 5px; height: 9px;
    border: solid #fff;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}
input[type="checkbox"]:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(37,99,235,0.2);
    border-color: var(--primary);
}
input[type="checkbox"]:disabled { opacity: .4; cursor: not-allowed; }

input[type="radio"] {
    appearance: none;
    -webkit-appearance: none;
    width: 18px; height: 18px;
    border: 1.5px solid var(--border);
    border-radius: 50%;
    background: #fff;
    cursor: pointer;
    position: relative;
    vertical-align: middle;
}
input[type="radio"]:checked { border-color: var(--primary); }
input[type="radio"]:checked::after {
    content: '';
    position: absolute;
    left: 4px; top: 4px;
    width: 10px; height: 10px;
    border-radius: 50%;
    background: var(--primary);
}
input[type="radio"]:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(37,99,235,0.2);
}

select {
    appearance: none !important;
    -webkit-appearance: none !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748B' d='M6 8L1 3h10z'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right 8px center !important;
    padding-right: 28px !important;
}

/* 所有输入框 focus 统一光晕 */
input:focus, select:focus, textarea:focus {
    outline: none !important;
    border-color: var(--primary) !important;
    box-shadow: 0 0 0 3px rgba(37,99,235,0.1) !important;
}

/* ---------- 7. 侧边栏 sticky top 同步 ---------- */
.sidebar-tabs {
    top: calc(56px + 12px) !important;
    position: sticky;
}
.sidebar-tab.active {
    background: var(--primary-light) !important;
    color: var(--primary) !important;
    font-weight: 600 !important;
    border-left: 3px solid var(--primary) !important;
    padding-left: 11px !important;
}

/* ---------- 8. 交互组件样式对齐 ---------- */
/* Toast */
.toast-item {
    border-radius: var(--radius) !important;
    box-shadow: var(--shadow-lg) !important;
    font-size: var(--text-base);
}
/* Modal */
.modal-overlay {
    background: rgba(15,23,42,0.5) !important;
    z-index: var(--z-modal) !important;
    animation: synchro-fadeIn .2s ease;
}
.modal-box {
    border-radius: var(--radius-xl) !important;
    box-shadow: var(--shadow-lg) !important;
    animation: synchro-modalIn .2s ease;
    transform-origin: center center;
}
.modal-header {
    padding: 16px 20px !important;
    border-bottom: 1px solid var(--border) !important;
}
.modal-header h3 { font-size: var(--text-lg); font-weight: 600; color: var(--text); }
.modal-body { padding: 20px !important; }
/* Drawer */
.drawer-overlay { background: rgba(15,23,42,0.4) !important; z-index: calc(var(--z-modal) - 1) !important; }
.drawer-panel { box-shadow: var(--shadow-lg) !important; z-index: var(--z-modal) !important; }
.drawer-header { padding: 16px 20px !important; border-bottom: 1px solid var(--border) !important; }
.drawer-header h3 { font-size: var(--text-lg); font-weight: 600; }
.drawer-body { padding: 20px !important; }
.drawer-footer { padding: 12px 20px !important; border-top: 1px solid var(--border) !important; }
/* Popconfirm */
.popconfirm-pop {
    border-radius: var(--radius-lg) !important;
    box-shadow: var(--shadow-lg) !important;
    border: 1px solid var(--border) !important;
    z-index: var(--z-popover) !important;
}

/* ---------- 9. 状态标签差异化图标 ---------- */
.status-badge {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    padding: 3px 10px !important;
    border-radius: 20px !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    line-height: 1.6 !important;
    vertical-align: middle !important;
}
.status-badge::before { font-size: 10px; line-height: 1; }
.status-badge.pending   { background: var(--border-light) !important; color: var(--text-secondary) !important; }
.status-badge.pending::before   { content: '○'; }
.status-badge.running   { background: var(--primary-light) !important; color: var(--primary) !important; }
.status-badge.running::before   { content: '●'; animation: synchro-pulse 1.2s ease-in-out infinite; }
.status-badge.completed { background: var(--success-bg) !important; color: #059669 !important; }
.status-badge.completed::before { content: '✓'; }
.status-badge.partial   { background: var(--warning-bg) !important; color: #D97706 !important; }
.status-badge.partial::before   { content: '▲'; }
.status-badge.failed    { background: var(--danger-bg) !important; color: var(--danger) !important; }
.status-badge.failed::before    { content: '✕'; }
.status-badge.cancelled { background: var(--border-light) !important; color: var(--text-muted) !important; }
.status-badge.cancelled::before { content: '○'; opacity: .5; }

/* ---------- 10. 最小宽度 ---------- */
body { min-width: 1280px; overflow-x: auto; }

/* ---------- 11. 减少动效降级 ---------- */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}

/* ---------- 12. @keyframes 定义（synchro- 前缀，不覆盖现有动画） ---------- */
@keyframes synchro-spin { to { transform: rotate(360deg); } }
@keyframes synchro-pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: .4; }
}
@keyframes synchro-fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes synchro-modalIn {
    from { opacity: 0; transform: scale(0.96); }
    to   { opacity: 1; transform: scale(1); }
}

/* ===== P0 覆盖层结束 ===== */

/* ===== P1 补充样式 ===== */

/* 统计卡片选中态优化（保留点击筛选功能） */
.stat-card-v2.active,
.stat-card.active {
    border-color: var(--primary) !important;
    background: var(--primary-light) !important;
    box-shadow: var(--shadow-sm) !important;
}
.stat-card-v2:hover,
.stat-card:hover {
    border-color: var(--primary-border) !important;
    box-shadow: var(--shadow-md) !important;
}

/* 页面标题区 */
.page-header h1 {
    font-size: var(--text-2xl);
    font-weight: 700;
    color: var(--text);
    margin: 0 0 4px 0;
}
.page-header .page-subtitle {
    font-size: var(--text-sm);
    color: var(--text-muted);
    margin: 0;
}

/* 产品采集页搜索框 focus */
.pc-search-input:focus {
    border-color: var(--primary) !important;
    box-shadow: 0 0 0 3px rgba(37,99,235,0.1) !important;
}

/* 统计卡片图标对齐 */
.stat-card-icon, .stat-icon {
    line-height: 1;
}

/* ===== P1 补充样式结束 ===== */

/* ===== P2 补充样式 ===== */

/* 登录页配色统一为蓝色系 */
.login-brand {
    background: linear-gradient(135deg, #1E40AF 0%, #2563EB 100%) !important;
}
.login-page { background: #F1F5F9 !important; }

/* 右下角浮动元素（如果是项目代码的话）统一处理 */
/* 注：截图中右下角卡通头像可能是浏览器插件，非项目代码 */

/* 空状态统一 */
.empty-state {
    text-align: center;
    padding: 48px 20px;
    color: var(--text-muted);
}
.empty-state .empty-icon { font-size: 40px; margin-bottom: 12px; opacity: 0.4; }
.empty-state .empty-text { font-size: var(--text-base); color: var(--text-secondary); margin-bottom: 4px; }
.empty-state .empty-hint { font-size: var(--text-sm); color: var(--text-muted); }

/* 面包屑 */
.breadcrumb {
    font-size: 13px;
    color: var(--text-muted);
    margin-bottom: 12px;
}
.breadcrumb a { color: var(--text-muted); text-decoration: none; }
.breadcrumb a:hover { color: var(--primary); }
.breadcrumb .current { color: var(--text); }
.breadcrumb .sep { margin: 0 6px; }

/* ===== P2 补充样式结束 ===== */

/* ===== 采集箱状态标签统一 ===== */
.cb-tag-status {
    display: inline-flex !important;
    align-items: center !important;
    gap: 4px !important;
    padding: 3px 10px !important;
    border-radius: 20px !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    line-height: 1.6 !important;
    vertical-align: middle !important;
}
.cb-tag-green { background: var(--success-bg) !important; color: #059669 !important; }
.cb-tag-blue  { background: var(--primary-light) !important; color: var(--primary) !important; }
.cb-tag-red   { background: var(--danger-bg) !important; color: var(--danger) !important; }
.cb-tag-gray  { background: var(--border-light) !important; color: var(--text-secondary) !important; }

/* ===== 采集箱状态标签统一结束 ===== */

/* ===== 三页面布局优化 ===== */

/* --- 产品采集页筛选区统一 --- */
.pc-cond-grid { gap: 14px 16px !important; }
.pc-cond-item label { color: var(--text-muted) !important; font-size: 12px !important; font-weight: 500 !important; }
.pc-cond-input {
    height: 38px !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius) !important;
    font-size: 13px !important;
    padding: 0 10px !important;
    transition: border-color .15s, box-shadow .15s !important;
}
.pc-cond-input:focus {
    border-color: var(--primary) !important;
    box-shadow: 0 0 0 3px rgba(37,99,235,0.1) !important;
    outline: none !important;
}
.pc-tag {
    display: inline-flex !important;
    align-items: center !important;
    gap: 4px !important;
    white-space: nowrap !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius) !important;
    padding: 6px 12px !important;
    transition: all .15s !important;
}
.pc-tag:hover { border-color: var(--primary) !important; background: var(--primary-light) !important; color: var(--primary) !important; }
/* 底部两栏等高 */
.pc-bottom-grid { align-items: stretch !important; }
.pc-bottom-grid .pc-card { height: 100%; display: flex; flex-direction: column; }
.pc-bottom-grid .pc-card-body { flex: 1; }

/* --- 采集箱页筛选区统一 --- */
.cb-filter-card {
    border-radius: var(--radius-lg) !important;
    border: 1px solid var(--border) !important;
    box-shadow: var(--shadow-sm) !important;
    padding: 16px 20px !important;
}
.cb-filter-grid {
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 14px 16px !important;
    align-items: end !important;
}
.cb-filter-wide { grid-column: span 1 !important; }
.cb-filter-item label { color: var(--text-muted) !important; font-size: 12px !important; font-weight: 500 !important; }
.cb-filter-input, .cb-filter-select {
    height: 38px !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius) !important;
    font-size: 13px !important;
    padding: 0 10px !important;
    box-sizing: border-box !important;
}
.cb-filter-input-sm {
    height: 38px !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius) !important;
    width: 100% !important;
    padding: 0 8px !important;
    box-sizing: border-box !important;
}
.cb-filter-tags { grid-column: span 2 !important; }
.cb-tag {
    border: 1px solid var(--border) !important;
    border-radius: var(--radius) !important;
    padding: 6px 12px !important;
    transition: all .15s !important;
}
.cb-tag:hover { border-color: var(--primary) !important; background: var(--primary-light) !important; }
/* 采集箱页头去掉浅蓝底，改为简洁样式 */
.cb-header {
    background: transparent !important;
    padding: 0 !important;
    margin-bottom: 16px !important;
}
.cb-title { font-size: var(--text-2xl) !important; font-weight: 700 !important; color: var(--text) !important; }

/* --- 插件下载页布局优化 --- */
.plugins-page-wrap {
    display: flex;
    gap: 20px;
    align-items: stretch;
    margin-bottom: 20px;
}
.plugins-card-col { width: 400px; flex-shrink: 0; }
.plugins-info-col { width: 400px; flex-shrink: 0; }
.plugins-info-col .card { height: 100%; display: flex; flex-direction: column; justify-content: center; }
/* 插件卡片优化 */
.plugin-card-detail {
    border-radius: var(--radius-lg) !important;
    border: 1px solid var(--border) !important;
    box-shadow: var(--shadow-sm) !important;
    padding: 24px !important;
    transition: box-shadow .2s !important;
}
.plugin-card-detail:hover { box-shadow: var(--shadow-md) !important; }
.plugin-badge {
    background: var(--success) !important;
    border-radius: 4px !important;
    padding: 2px 8px !important;
}
.plugin-changelog {
    background: var(--bg) !important;
    border-radius: var(--radius) !important;
    border: 1px solid var(--border-light) !important;
}
/* 安装说明优化 */
.install-guide {
    border-radius: var(--radius-lg) !important;
    border: 1px solid var(--border) !important;
    box-shadow: var(--shadow-sm) !important;
    padding: 20px 24px !important;
}
.guide-title { font-size: var(--text-base); font-weight: 600; color: var(--text); margin-bottom: 14px; }
.guide-steps-inline {
    display: flex !important;
    gap: 12px !important;
    flex-wrap: wrap !important;
    margin-bottom: 14px !important;
}
.guide-step-inline {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    font-size: 13px !important;
    color: var(--text-secondary) !important;
    background: var(--bg) !important;
    padding: 8px 14px !important;
    border-radius: var(--radius) !important;
    border: 1px solid var(--border-light) !important;
}
.step-circle {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 22px !important;
    height: 22px !important;
    background: var(--primary) !important;
    color: #fff !important;
    border-radius: 50% !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    flex-shrink: 0 !important;
}
.guide-warning {
    background: #FFFBEB !important;
    border: 1px solid #FDE68A !important;
    border-radius: var(--radius) !important;
    padding: 10px 14px !important;
    font-size: 12px !important;
    color: #92400E !important;
    line-height: 1.6 !important;
}

/* --- 底部提示条统一 --- */
.plugin-flow-bar {
    background: var(--bg) !important;
    border: 1px solid var(--border-light) !important;
    border-radius: var(--radius) !important;
    padding: 10px 16px !important;
    font-size: 13px !important;
    color: var(--text-secondary) !important;
}

/* ===== 三页面布局优化结束 ===== */

/* ============================================================
   UI v8：妙手式双层导航布局（顶部一级 + 模块内左侧二级）
   ============================================================ */
body.has-layout { background: var(--bg); }
body.has-layout .ms-layout-body { display:flex; min-height: calc(100vh - 52px); }

/* ===== 顶部一级导航 ===== */
.ms-header {
    height: 52px; background: #fff; border-bottom: 1px solid var(--border);
    display: flex; align-items: center; padding: 0 16px;
    position: sticky; top: 0; z-index: 100; box-shadow: var(--shadow-sm);
}
.ms-logo-box a { display:flex; align-items:center; gap:8px; text-decoration:none; margin-right: 24px; }
.ms-logo-img { width: 28px; height: 28px; border-radius: 6px; }
.ms-brand { font-size: 17px; font-weight: 700; color: var(--primary); white-space: nowrap; }
.ms-nav-list { display:flex; list-style:none; gap:2px; position:absolute; left:50%; transform:translateX(-50%); margin:0; padding:0; z-index:1; }
.ms-nav-item a {
    display:block; padding: 0 14px; height:52px; line-height:52px;
    font-size: var(--text-base); color: var(--text-secondary); text-decoration:none;
    border-bottom: 2px solid transparent; transition: all .15s; white-space:nowrap;
}
.ms-nav-item a:hover { color: var(--primary); background: var(--primary-light); }
.ms-nav-item.active a { color: var(--primary); font-weight:600; border-bottom-color: var(--primary); }
.ms-nav-item.nav-disabled a { color: var(--text-muted); opacity:.55; cursor:not-allowed; }
.ms-nav-item.nav-disabled a:hover { color: var(--text-muted); background:transparent; }
.ms-header-side { display:flex; align-items:center; gap:12px; margin-left:auto; }
.ms-global-search { position:relative; }
.ms-global-search input {
    width: 200px; height:32px; padding:0 12px; border:1px solid var(--border);
    border-radius: var(--radius); font-size: var(--text-sm); background: var(--bg);
}
.ms-global-search input:focus { outline:none; border-color:var(--primary); background:#fff; width:240px; transition:width .2s; }
.ms-search-dropdown {
    position:absolute; top:38px; left:0; width:260px; background:#fff; border:1px solid var(--border);
    border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); max-height:320px; overflow:auto; z-index:200;
}
.ms-search-item { display:block; padding:9px 14px; font-size:var(--text-sm); color:var(--text); text-decoration:none; border-bottom:1px solid var(--border-light); }
.ms-search-item:hover { background:var(--primary-light); color:var(--primary); }
.ms-search-item.disabled { color:var(--text-muted); cursor:not-allowed; }
.ms-search-empty { padding:14px; text-align:center; color:var(--text-muted); font-size:var(--text-sm); }
.ms-icon-btn { position:relative; width:34px; height:34px; border:none; background:transparent; border-radius:var(--radius); cursor:pointer; color:var(--text-secondary); display:flex; align-items:center; justify-content:center; }
.ms-icon-btn:hover { background:var(--bg); color:var(--primary); }
.ms-notif-dot { position:absolute; top:6px; right:7px; width:8px; height:8px; background:var(--danger); border-radius:50%; border:1.5px solid #fff; }

/* ===== 左侧二级菜单 ===== */
.ms-side { width: 200px; flex:0 0 200px; background:#fff; border-right:1px solid var(--border); overflow-y:auto; position:sticky; top:52px; align-self:flex-start; height:calc(100vh - 52px); max-height:calc(100vh - 52px); }
.ms-side-inner { padding: 12px 0; }
.ms-sub-menu { margin-bottom: 6px; }
.ms-sub-menu + .ms-sub-menu { border-top: 1px solid #eef1f4; margin-top: 8px; padding-top: 8px; }
.ms-sub-menu__title { padding: 6px 18px 6px; font-size: 11px; color: #8a94a6; font-weight:700; letter-spacing:1.5px; text-transform:uppercase; user-select:none; }
.ms-sub-menu__items { display:flex; flex-direction:column; }
.ms-side-link {
    display:block; padding: 9px 18px; font-size: var(--text-base); color: var(--text-secondary);
    text-decoration:none; border-left: 3px solid transparent; transition:all .12s;
}
.ms-side-link:hover { background:var(--primary-light); color:var(--primary); }
.ms-side-link.active { background:var(--primary-light); color:var(--primary); font-weight:600; border-left-color:var(--primary); }
.ms-side-link.disabled { color: var(--text-muted); cursor:not-allowed; opacity:.65; display:flex; justify-content:space-between; align-items:center; }
.ms-side-link.disabled:hover { background:transparent; color:var(--text-muted); }
.ms-lock-icon { font-size:11px; }

/* ===== 主内容区 ===== */
.ms-app-main { flex:1; min-width:0; overflow-x:hidden; }
.ms-app-container { padding: 18px 22px; max-width: none; width:100%; margin:0; box-sizing:border-box; }

/* ===== 筛选栏 / 操作栏（横排布局，修复竖排堆叠） ===== */
.ms-filter-bar { display:flex; flex-wrap:wrap; gap:12px; align-items:flex-end; background:#fff; padding:14px 16px; border-radius:10px; box-shadow:0 2px 8px rgba(0,0,0,.06); margin-bottom:12px; }
.ms-filter-item { display:flex; flex-direction:column; gap:4px; }
.ms-filter-item label { font-size:12px; color:#777; font-weight:500; }
.ms-filter-item input, .ms-filter-item select { height:34px; padding:0 10px; border:1px solid var(--border); border-radius:6px; font-size:13px; background:#fff; color:var(--text); }
.ms-filter-actions { display:flex; gap:8px; align-items:center; }
.ms-action-bar { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:12px; }
.ms-spacer { flex:1; }

/* 页面标题栏 */
.ms-page-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; }
.ms-page-title { font-size: var(--text-xl); font-weight:700; color:var(--text); display:flex; align-items:center; gap:10px; }
.ms-page-head-side { display:flex; gap:8px; align-items:center; }

/* ===== 通用按钮 ===== */
.ms-btn {
    display:inline-flex; align-items:center; gap:5px; height:34px; padding:0 15px; font-size:var(--text-base);
    border:1px solid var(--border); background:#fff; color:var(--text-secondary); border-radius:var(--radius);
    cursor:pointer; transition:all .12s; white-space:nowrap; text-decoration:none; line-height:1;
}
.ms-btn:hover { border-color:var(--primary); color:var(--primary); }
.ms-btn-primary { background:var(--primary); border-color:var(--primary); color:#fff; }
.ms-btn-primary:hover { background:var(--primary-hover); border-color:var(--primary-hover); color:#fff; }
.ms-btn-danger { background:var(--danger); border-color:var(--danger); color:#fff; }
.ms-btn-danger:hover { background:#dc2626; color:#fff; }
.ms-btn-success { background:var(--success); border-color:var(--success); color:#fff; }
.ms-btn-success:hover { background:#059669; color:#fff; }
.ms-btn-sm { height:28px; padding:0 10px; font-size:var(--text-sm); }
.ms-btn:disabled { opacity:.55; cursor:not-allowed; }
.ms-btn-text { border:none; background:transparent; color:var(--primary); padding:0 6px; }
.ms-btn-text:hover { background:transparent; text-decoration:underline; }

/* ===== 状态 Tab ===== */
.status-tab-box { display:flex; gap:4px; border-bottom:1px solid var(--border); margin-bottom:14px; flex-wrap:wrap; }
.status-tab {
    padding:9px 16px; font-size:var(--text-base); color:var(--text-secondary); cursor:pointer;
    border:none; background:transparent; border-bottom:2px solid transparent; margin-bottom:-1px;
}
.status-tab:hover { color:var(--primary); }
.status-tab.active { color:var(--primary); font-weight:600; border-bottom-color:var(--primary); }
.status-tab .tab-count { color:var(--text-muted); font-size:var(--text-sm); margin-left:3px; }
.status-tab.active .tab-count { color:var(--primary); }
.status-tab.danger .tab-count { color:var(--danger); }

/* ===== 筛选表单 ===== */
.query-form {
    background:#fff; border:1px solid var(--border); border-radius:var(--radius-lg);
    padding:14px 16px; margin-bottom:14px; display:flex; flex-wrap:wrap; gap:10px 14px; align-items:flex-end;
}
.query-field { display:flex; flex-direction:column; gap:4px; }
.query-field label { font-size:12px; color:var(--text-muted); }
.query-field input, .query-field select {
    height:32px; min-width:150px; padding:0 10px; border:1px solid var(--border);
    border-radius:var(--radius); font-size:var(--text-sm); background:#fff;
}
.query-field input:focus, .query-field select:focus { outline:none; border-color:var(--primary); }
.query-actions { display:flex; gap:8px; margin-left:auto; }

/* ===== 批量操作栏 ===== */
.batch-bar { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:12px; }
.batch-bar .batch-spacer { flex:1; }

/* ===== 面板 ===== */
.ms-panel { background:#fff; border:1px solid var(--border); border-radius:var(--radius-lg); overflow:hidden; }
.ms-panel-head { padding:12px 16px; border-bottom:1px solid var(--border-light); display:flex; align-items:center; justify-content:space-between; }
.ms-panel-body { padding:0; }
.ms-table-wrap { overflow:auto; max-height: calc(100vh - 320px); }
table.data-table thead th { position:sticky; top:0; background:#f8fafc; z-index:2; }
.data-table .col-product { min-width:340px; text-align:left; position:sticky; left:0; background:#fff; z-index:1; box-shadow:2px 0 4px -2px rgba(0,0,0,.06); }
.data-table thead th.col-product { background:#f8fafc; z-index:3; }
.data-table .col-check { width:46px; position:sticky; left:0; background:#fff; z-index:1; text-align:center; }
.data-table thead th.col-check { background:#f8fafc; z-index:3; }

/* 状态标签 */
.ms-tag { display:inline-block; padding:2px 8px; border-radius:10px; font-size:12px; line-height:1.6; }
.ms-tag.success { background:var(--success-bg); color:var(--success); }
.ms-tag.warning { background:var(--warning-bg); color:#b45309; }
.ms-tag.danger { background:var(--danger-bg); color:var(--danger); }
.ms-tag.info { background:#f0f9ff; color:var(--info); }
.ms-tag.default { background:#f1f5f9; color:var(--text-secondary); }
/* 连字符别名，兼容 ms-tag-success / ms-tag-warn 等写法（订单/采集箱等页面） */
.ms-tag-success { background:var(--success-bg); color:var(--success); }
.ms-tag-warning,.ms-tag-warn { background:var(--warning-bg); color:#b45309; }
.ms-tag-danger { background:var(--danger-bg); color:var(--danger); }
.ms-tag-info { background:#f0f9ff; color:var(--info); }
.ms-tag-default { background:#f1f5f9; color:var(--text-secondary); }
.platform-badge { display:inline-flex; align-items:center; gap:4px; font-size:12px; padding:2px 8px; border-radius:4px; background:#f1f5f9; color:var(--text-secondary); }

/* ===== 空状态 ===== */
.ms-empty { text-align:center; padding:56px 20px; color:var(--text-muted); }
.ms-empty .ms-empty-icon { font-size:46px; opacity:.35; margin-bottom:12px; }
.ms-empty .ms-empty-text { font-size:var(--text-base); color:var(--text-secondary); margin-bottom:6px; }
.ms-empty .ms-empty-hint { font-size:var(--text-sm); margin-bottom:14px; }

/* ===== 模态框 ===== */
.ms-modal-mask {
    position:fixed; inset:0; background:rgba(15,23,42,.45); z-index:1000;
    display:flex; align-items:center; justify-content:center; animation:synchroToastIn .15s ease;
}
.ms-modal { background:#fff; border-radius:var(--radius-xl); width:560px; max-width:92vw; max-height:88vh; overflow:auto; box-shadow:var(--shadow-lg); }
.ms-modal__head { padding:16px 20px; border-bottom:1px solid var(--border-light); display:flex; align-items:center; justify-content:space-between; }
.ms-modal__title { font-size:var(--text-lg); font-weight:600; }
.ms-modal__close { border:none; background:transparent; font-size:22px; color:var(--text-muted); cursor:pointer; line-height:1; }
.ms-modal__body { padding:20px; }
.ms-modal__footer { padding:14px 20px; border-top:1px solid var(--border-light); display:flex; justify-content:flex-end; gap:10px; }
.ms-confirm-modal { width:400px; }
.ms-confirm-modal .ms-modal__title { padding:20px 20px 0; }
.ms-confirm-modal .ms-modal__body { padding:10px 20px; color:var(--text-secondary); font-size:var(--text-base); }

.ms-form-row { display:flex; gap:14px; margin-bottom:14px; flex-wrap:wrap; }
.ms-form-row .form-group { flex:1; min-width:200px; margin-bottom:0; }

/* ===== 首页统计 ===== */
.ms-stat-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:14px; margin-bottom:18px; }
.ms-stat-card { background:#fff; border:1px solid var(--border); border-radius:var(--radius-lg); padding:16px 18px; box-shadow:var(--shadow-sm); }
.ms-stat-card .ms-stat-label { font-size:13px; color:var(--text-muted); margin-bottom:6px; display:flex; align-items:center; gap:6px; }
.ms-stat-card .ms-stat-value { font-size:26px; font-weight:700; color:var(--text); line-height:1.1; }
.ms-stat-card .ms-stat-value a { color:var(--primary); text-decoration:none; }
.ms-stat-card .ms-stat-value a:hover { text-decoration:underline; }
.ms-stat-card.accent-blue { border-top:3px solid var(--primary); }
.ms-stat-card.accent-green { border-top:3px solid var(--success); }
.ms-stat-card.accent-orange { border-top:3px solid var(--warning); }
.ms-stat-card.accent-red { border-top:3px solid var(--danger); }

.todo-group { background:#fff; border:1px solid var(--border); border-radius:var(--radius-lg); padding:16px 18px; margin-bottom:14px; }
.todo-group-head { display:flex; align-items:center; gap:8px; font-weight:600; margin-bottom:12px; color:var(--text); }
.todo-items { display:flex; flex-wrap:wrap; gap:10px 28px; }
.todo-item { display:flex; flex-direction:column; gap:2px; }
.todo-item .todo-num { font-size:22px; font-weight:700; }
.todo-item .todo-num a { color:var(--text); text-decoration:none; }
.todo-item .todo-num a:hover { color:var(--primary); }
.todo-item .todo-label { font-size:12px; color:var(--text-muted); }
.todo-item.danger .todo-num a { color:var(--danger); }

.quick-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(130px,1fr)); gap:12px; }
.quick-entry {
    display:flex; flex-direction:column; align-items:center; gap:8px; padding:18px 10px;
    background:#f8fafc; border:1px solid var(--border-light); border-radius:var(--radius-lg);
    text-decoration:none; color:var(--text-secondary); transition:all .15s; cursor:pointer;
}
.quick-entry:hover { border-color:var(--primary); background:var(--primary-light); color:var(--primary); transform:translateY(-2px); }
.quick-entry .qe-icon { font-size:24px; }
.quick-entry .qe-name { font-size:var(--text-sm); }

/* 平台图标网格 */
.platform-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:12px; margin-bottom:16px; }
.platform-card {
    border:1px solid var(--border); border-radius:var(--radius-lg); padding:16px; text-align:center;
    cursor:pointer; background:#fff; transition:all .15s; position:relative;
}
.platform-card:hover { border-color:var(--primary); box-shadow:var(--shadow-md); }
.platform-card.locked { opacity:.55; cursor:not-allowed; }
.platform-card .pf-name { font-size:var(--text-base); font-weight:600; margin-top:6px; }
.platform-card .pf-status { font-size:12px; color:var(--text-muted); margin-top:2px; }
.platform-card .pf-soon { position:absolute; top:6px; right:8px; font-size:11px; color:var(--text-muted); }

.ms-progress { height:6px; background:var(--border-light); border-radius:3px; overflow:hidden; }
.ms-progress-bar { height:100%; background:var(--primary); transition:width .3s; }
.inline-editor { background:var(--primary-light); border:1px solid var(--primary-border); border-radius:var(--radius); padding:12px; margin-bottom:10px; display:flex; gap:10px; align-items:center; flex-wrap:wrap; }

/* 订单卡片 */
.order-card { background:#fff; border:1px solid var(--border); border-radius:var(--radius-lg); margin-bottom:12px; overflow:hidden; }
.order-card-head { display:flex; align-items:center; gap:10px; padding:10px 16px; background:#f8fafc; border-bottom:1px solid var(--border-light); font-size:var(--text-sm); flex-wrap:wrap; }
.order-card-body { padding:14px 16px; display:flex; gap:16px; flex-wrap:wrap; }
.order-goods { display:flex; gap:10px; flex:1; min-width:280px; }
.order-goods img { width:56px; height:56px; border-radius:var(--radius); object-fit:cover; border:1px solid var(--border-light); }
.order-meta { font-size:var(--text-sm); color:var(--text-secondary); line-height:1.9; min-width:180px; }
.order-card-foot { padding:10px 16px; border-top:1px solid var(--border-light); display:flex; gap:8px; justify-content:flex-end; }

.ms-pagination { display:flex; align-items:center; gap:6px; justify-content:flex-end; padding:12px 16px; font-size:var(--text-sm); color:var(--text-secondary); flex-wrap:wrap; }
.ms-pagination button { min-width:30px; height:30px; border:1px solid var(--border); background:#fff; border-radius:var(--radius); cursor:pointer; font-size:var(--text-sm); }
.ms-pagination button.active { background:var(--primary); color:#fff; border-color:var(--primary); }
.ms-pagination button:disabled { opacity:.5; cursor:not-allowed; }
.ms-pagination select { height:30px; border:1px solid var(--border); border-radius:var(--radius); }

.ms-cols { display:grid; gap:16px; }
.ms-cols-2 { grid-template-columns:1fr 1fr; }

.ms-cols-3 { grid-template-columns:1fr 1.2fr 1fr; }
@media (max-width: 1280px){ .ms-cols-3 { grid-template-columns:1fr 1fr; } }
@media (max-width: 1100px){ .ms-cols-2,.ms-cols-3 { grid-template-columns:1fr; } .ms-side{display:none;} }
.period-switch { display:inline-flex; border:1px solid var(--border); border-radius:6px; overflow:hidden; }
.period-btn { border:none; background:#fff; padding:5px 14px; font-size:13px; cursor:pointer; color:var(--text-secondary); }
.period-btn + .period-btn { border-left:1px solid var(--border); }
.period-btn.active { background:var(--primary); color:#fff; }
.ms-app-container .container { max-width:none; margin:0; padding:0; }
.ms-nav-badge { display:inline-block; min-width:16px; height:16px; line-height:16px; padding:0 4px; background:var(--danger); color:#fff; border-radius:8px; font-size:11px; text-align:center; margin-left:3px; }


/* ============================================================
   cb2 采集箱布局（像素级对齐妙手平台采集箱，Synchro蓝色主题）
   几何依据：筛选4列等宽网格/控件30px/行高40px；按钮30px圆角3px间距10px；
   状态为 el-radio-button 式相连分段器（35px，选中实心）
   ============================================================ */

/* 筛选卡片：外层卡片边框，内部4列网格，label在控件左上角，无内部小框 */
.cb2-filter{
    background:var(--card-bg); border:1px solid var(--border); border-radius:var(--radius-lg);
    box-shadow:var(--shadow-sm); padding:14px 16px 10px; margin-bottom:12px;
}
.cb2-filter-grid{
    display:grid; grid-template-columns:repeat(4,minmax(0,1fr));
    column-gap:16px; row-gap:12px;
}
/* 筛选项：label居左上+问号同行，控件在下占满，无内部边框 */
.cb2-field{
    display:flex; flex-direction:row; flex-wrap:wrap; align-items:flex-start;
    gap:4px 8px; min-height:0; border:none; border-radius:0; background:transparent;
    padding:0; box-sizing:border-box; overflow:visible;
}
.cb2-field > label{
    order:1; flex:0 0 auto; font-size:13px; color:#374151; white-space:nowrap;
    margin:0; font-weight:500; line-height:1.4; text-align:left;
}
.cb2-field > label::after{ content:"："; }
.cb2-field > .cb2-help{ order:2; flex:0 0 auto; align-self:center; margin-top:1px; }
/* 直接子控件：恢复自身边框，占满整行 */
.cb2-field > input, .cb2-field > select{
    order:3; flex:1 1 100%; width:100%; max-width:none; height:32px; line-height:1.4;
    border:1px solid #d1d5db; border-radius:4px; outline:none;
    font-size:13px; color:#374151; background:#fff; padding:4px 8px; font-family:inherit;
    box-sizing:border-box;
}
.cb2-field > input:focus, .cb2-field > select:focus{ border-color:var(--primary); }
.cb2-field > input::placeholder{ color:var(--text-placeholder); opacity:1; }
.cb2-field > input::-webkit-input-placeholder{ color:var(--text-placeholder); }
.cb2-field > input::-moz-placeholder{ color:var(--text-placeholder); opacity:1; }
.cb2-field > input:-ms-input-placeholder{ color:var(--text-placeholder); }
.cb2-field > select{ appearance:none; cursor:pointer;
    background-image:linear-gradient(45deg,transparent 50%,#909399 50%),linear-gradient(135deg,#909399 50%,transparent 50%);
    background-position:calc(100% - 12px) 50%,calc(100% - 7px) 50%;
    background-size:5px 5px; background-repeat:no-repeat; padding-right:24px; }
.cb2-field > input[type="date"]{ font-family:inherit; color:#374151; -webkit-appearance:none; appearance:none; }
.cb2-field > input[type="date"]::-webkit-calendar-picker-indicator{ cursor:pointer; opacity:.55; vertical-align:middle; margin:0; padding:0; }
/* 复合控件容器（输入+下拉 / 区间 / 双下拉）：占满整行 */
.cb2-field > .cb2-combo, .cb2-field > .cb2-range, .cb2-field > .cb2-dual{
    order:3; flex:1 1 100%; display:flex; align-items:center; gap:6px; width:100%;
}
.cb2-field > .cb2-combo input, .cb2-field > .cb2-range input, .cb2-field > .cb2-dual input,
.cb2-field > .cb2-combo select, .cb2-field > .cb2-dual select{
    flex:1; height:32px; border:1px solid #d1d5db; border-radius:4px;
    padding:4px 8px; font-size:13px; color:#374151; background:#fff; outline:none;
    box-sizing:border-box; min-width:0; max-width:none;
}
.cb2-field > .cb2-combo select, .cb2-field > .cb2-dual select:first-child{ flex:0 0 100px; }
.cb2-range .cb2-range-sep{ color:#C0C4CC; flex-shrink:0; }
.cb2-range .cb2-range-unit{ color:#909399; font-size:13px; flex-shrink:0; }
/* 按钮区：跨列右对齐，独立操作区 */
.cb2-filter-actions{
    grid-column:1 / -1; display:flex; justify-content:flex-end; align-items:center;
    gap:10px; padding:10px 0 2px; border-top:1px solid #f3f4f6; margin-top:2px;
}
.cb2-filter-foot{ display:flex; justify-content:flex-end; align-items:center; gap:10px; padding:6px 0 10px; }

/* 操作按钮栏 */
.cb2-actions{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:12px; }
.cb2-actions .cb2-spacer{ flex:1; }
/* 实心主按钮（妙手所有操作按钮均实心，统一蓝色） */
.cb2-btn{
    display:inline-flex; align-items:center; gap:4px; height:30px;
    padding:0 12px; font-size:13px; font-weight:500; line-height:1;
    border-radius:3px; border:1px solid var(--primary);
    background:var(--primary); color:#fff; cursor:pointer;
    white-space:nowrap; transition:background .12s,border-color .12s; position:relative;
}
.cb2-btn:hover{ background:var(--primary-hover); border-color:var(--primary-hover); color:#fff; }
.cb2-btn:disabled{ opacity:.5; cursor:not-allowed; }
/* 次实心（浅蓝底蓝字蓝边，用于右侧"创建产品"） */
.cb2-btn-ghost{
    background:var(--primary-light); border-color:var(--primary-border); color:var(--primary);
}
.cb2-btn-ghost:hover{ background:#DBEAFE; border-color:var(--primary); color:var(--primary); }
/* 危险实心（删除） */
.cb2-btn-danger{ background:var(--danger); border-color:var(--danger); color:#fff; }
.cb2-btn-danger:hover{ background:#DC2626; border-color:#DC2626; color:#fff; }
/* AI 角标 */
.cb2-ai-badge{
    position:absolute; top:-7px; right:-8px; background:#8B5CF6; color:#fff;
    font-size:10px; line-height:14px; padding:0 4px; border-radius:7px; font-weight:600;
}
/* 下拉箭头 */
.cb2-caret{ font-size:10px; margin-left:2px; }
.cb2-dropdown{ position:relative; display:inline-block; }
.cb2-dropdown-menu{
    display:none; position:absolute; top:calc(100% + 4px); left:0; z-index:200;
    min-width:140px; background:#fff; border:1px solid var(--border); border-radius:4px;
    box-shadow:0 4px 14px rgba(15,23,42,.12); padding:4px 0;
}
.cb2-dropdown-menu a{
    display:block; padding:8px 14px; font-size:13px; color:var(--text-secondary);
    cursor:pointer; white-space:nowrap; text-decoration:none;
}
.cb2-dropdown-menu a:hover{ background:var(--primary-light); color:var(--primary); }
.cb2-sel-info{ font-size:13px; color:var(--text-muted); }
.cb2-sel-info strong{ color:var(--primary); font-weight:600; }

/* 状态分段器（el-radio-button 相连样式） */
.cb2-seg{ display:inline-flex; margin-bottom:12px; }
.cb2-seg-item{
    height:35px; padding:0 16px; display:inline-flex; align-items:center;
    font-size:13px; color:#606266; background:#fff;
    border:1px solid #DCDFE6; margin-left:-1px; cursor:pointer; user-select:none;
    transition:all .12s;
}
.cb2-seg-item:first-child{ margin-left:0; border-radius:4px 0 0 4px; }
.cb2-seg-item:last-child{ border-radius:0 4px 4px 0; }
.cb2-seg-item:hover{ color:var(--primary); z-index:1; }
.cb2-seg-item.active{
    background:var(--primary); border-color:var(--primary); color:#fff; z-index:2; font-weight:500;
}
.cb2-seg-item .seg-count{ margin-left:5px; font-size:13px; }
.cb2-seg-item:not(.active) .seg-count{ color:#909399; }

/* 提示横条（米黄） */
.cb2-notice{
    display:flex; align-items:center; gap:8px; background:#FFFBEB;
    border:1px solid #FDE68A; color:#92400E; font-size:12px;
    padding:8px 14px; border-radius:4px; margin-bottom:12px;
}
.cb2-notice .cb2-notice-close{ margin-left:auto; cursor:pointer; color:#94A3B8; }

/* 采集箱表格微调（对齐妙手表头） */
.cb2-panel{ background:#fff; border:1px solid var(--border); border-radius:6px; overflow:hidden; }
.cb2-panel table.data-table thead th{
    background:#FAFAFA; color:#303030; font-weight:500; font-size:13px;
    padding:11px 12px; border-bottom:1px solid #EBEEF5;
}
.cb2-panel table.data-table tbody td{ padding:10px 12px; border-bottom:1px solid #F2F6FC; font-size:13px; }

/* ============================================================
   采集箱标准筛选补充组件（双级下拉 / 输入+匹配 / 帮助图标 / 按钮组 / 折叠）
   三页统一：label #303133 14px，输入 #303133 14px，placeholder var(--text-placeholder)，边框 #DCDFE6
   ============================================================ */
.cb2-help{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;border:1px solid #C0C4CC;color:#909399;font-size:11px;cursor:help;flex-shrink:0;margin-left:3px;background:#fff;}
.cb2-ico{color:#C0C4CC;flex-shrink:0;margin-left:4px;font-size:14px;}
.cb2-filter-actions .cb2-btn{padding:0 18px;}
.cb2-filter-link{font-size:13px;color:var(--primary);cursor:pointer;text-decoration:none;white-space:nowrap;background:none;border:none;padding:4px 2px;}
.cb2-filter-link:hover{text-decoration:underline;}
.cb2-filter.collapsed .cb2-foldable{display:none !important;}
.cb2-filter.collapsed .cb2-filter-actions{grid-column:1 / -1;justify-content:flex-end;}
/* 可搜索下拉（input+datalist）与普通控件对齐 */
.cb2-field input[list]{cursor:text;}


/* ===== UI优化 v1.0: 统一按钮组件补充 ===== */
.ms-btn:active { transform:translateY(1px); }
.ms-btn-lg { height:38px; padding:0 20px; font-size:var(--text-lg); }
.ms-btn-danger-outline { border-color:var(--danger-border); color:var(--danger); background:#fff; }
.ms-btn-danger-outline:hover { background:var(--danger); border-color:var(--danger); color:#fff; }
.ms-btn-danger-outline:disabled { opacity:.45; }
.ms-btn-group { display:inline-flex; gap:0; }
.ms-btn-group .ms-btn { border-radius:0; }
.ms-btn-group .ms-btn:first-child { border-radius:var(--radius) 0 0 var(--radius); }
.ms-btn-group .ms-btn:last-child { border-radius:0 var(--radius) var(--radius) 0; }
.ms-btn-group .ms-btn + .ms-btn { margin-left:-1px; }
.ms-btn.loading { position:relative; color:transparent !important; pointer-events:none; }
.ms-btn.loading::after {
    content:''; position:absolute; width:14px; height:14px;
    border:2px solid currentColor; border-top-color:transparent; border-radius:50%;
    animation:synchro-spin .6s linear infinite; left:50%; top:50%; margin:-7px 0 0 -7px;
}
.ms-btn-primary.loading::after, .ms-btn-danger.loading::after, .ms-btn-success.loading::after { border-color:#fff; border-top-color:transparent; }

/* ===== UI优化 v1.0: 统一筛选表单组件 ===== */
.ms-filter-card{
  background:var(--card);border:1px solid var(--border);
  border-radius:var(--radius-lg);padding:14px 16px;margin-bottom:12px;
  box-shadow:var(--shadow-sm);
}
.ms-filter-grid{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px 14px;align-items:end;
}
.ms-filter-field{display:flex;flex-direction:column;gap:5px;min-width:0;}
.ms-filter-field label{font-size:12px;color:var(--text-3);font-weight:500;}
.ms-filter-field input,.ms-filter-field select{
  height:32px;padding:0 10px;border:1px solid var(--border);
  border-radius:var(--radius);font-size:13px;color:var(--text);background:#fff;
  transition:border-color .12s;min-width:0;width:100%;
}
.ms-filter-field input:focus,.ms-filter-field select:focus{
  outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light);
}
.ms-filter-field input::placeholder{color:var(--text-placeholder);}
.ms-filter-range{display:flex;align-items:center;gap:6px;}
.ms-filter-range input{flex:1;min-width:0;}
.ms-range-sep{color:var(--text-3);font-size:13px;flex-shrink:0;}
.ms-filter-actions{flex-direction:row;align-items:center;gap:8px;justify-content:flex-end;}
.ms-filter-extra{display:none;}
.ms-filter-grid.expanded .ms-filter-extra{display:flex;}
.ms-filter-toggle{font-size:13px;color:var(--primary);cursor:pointer;background:none;border:none;padding:0 4px;}
.ms-filter-toggle:hover{text-decoration:underline;}
@media(max-width:1280px){.ms-filter-grid{grid-template-columns:repeat(3,1fr);}}
@media(max-width:900px){.ms-filter-grid{grid-template-columns:repeat(2,1fr);}}

/* ===== UI优化 v1.0: 旧筛选组件兼容样式（query-form → ms-filter-card 视觉统一） ===== */
.query-form{
  background:var(--card);border:1px solid var(--border);
  border-radius:var(--radius-lg);padding:14px 16px;margin-bottom:12px;
  box-shadow:var(--shadow-sm);display:flex;flex-wrap:wrap;gap:12px 14px;align-items:flex-end;
}
.query-field{display:flex;flex-direction:column;gap:5px;min-width:0;flex:1 1 200px;}
.query-field label{font-size:12px;color:var(--text-3);font-weight:500;}
.query-field input,.query-field select{
  height:32px;padding:0 10px;border:1px solid var(--border);
  border-radius:var(--radius);font-size:13px;color:var(--text);background:#fff;
  transition:border-color .12s;min-width:0;width:100%;
}
.query-field input:focus,.query-field select:focus{
  outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light);
}
.query-field input::placeholder{color:var(--text-placeholder);}
.query-actions{display:flex;gap:8px;align-items:center;flex:0 0 auto;}

/* 旧操作栏兼容 */
.ms-action-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px;}
.batch-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px;}
.cb-opbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px;}

/* ===== UI优化 v1.0: 采集箱筛选区兼容样式（cb-filter/cb2-filter 视觉统一） ===== */
.cb-filter-bar,.cb2-filter,.cb-filter{
  background:var(--card);border:1px solid var(--border);
  border-radius:var(--radius-lg);padding:14px 16px;margin-bottom:12px;
  box-shadow:var(--shadow-sm);
}
.cb-filter-bar .cb-filter-item,.cb2-field{
  border-color:var(--border);border-radius:var(--radius);transition:border-color .12s;
}
.cb-filter-bar .cb-filter-item:focus-within,.cb2-field:focus-within{
  border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light);
}
.cb-filter-bar .cb-filter-label,.cb2-label{color:var(--text-3);font-size:13px;}
.cb-filter-bar .cb-filter-ctrl,.cb2-ctrl{color:var(--text);font-size:13px;}
.cb-filter-bar .cb-filter-ctrl::placeholder{color:var(--text-placeholder);}

/* 统一表格基础样式 */
.data-table,.cb-table{width:100%;border-collapse:collapse;}
.data-table th,.cb-table th{
  background:#F8FAFC;padding:10px 14px;text-align:left;
  font-size:13px;font-weight:600;color:var(--text-2);border-bottom:1px solid var(--border);
}
.data-table td,.cb-table td{
  padding:12px 14px;border-bottom:1px solid var(--border-light);
  font-size:13px;color:var(--text);vertical-align:middle;
}
.data-table tbody tr:hover,.cb-table tbody tr:hover{background:#F8FAFC;}
.ms-table-wrap{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);margin-bottom:12px;}
.ms-panel{margin-bottom:12px;}

/* ===== UI优化 v1.0: Tag状态标签组件 ===== */
.ms-tag{display:inline-block;padding:2px 8px;border-radius:var(--radius-sm);font-size:12px;font-weight:500;line-height:1.5;white-space:nowrap;}
.ms-tag-default{background:var(--border-light);color:var(--text-2);}
.ms-tag-success{background:var(--success-bg);color:var(--success-hover);}
.ms-tag-warning{background:var(--warning-bg);color:#B45309;}
.ms-tag-danger{background:var(--danger-bg);color:var(--danger);}
.ms-tag-info{background:var(--info-bg);color:#0369A1;}
.ms-tag-primary{background:var(--primary-light);color:var(--primary);}

/* ===== UI优化 v1.0: 表格三态（loading/empty/error）===== */
.ms-table-loading{position:absolute;inset:0;background:rgba(255,255,255,.85);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;z-index:5;color:var(--text-2);font-size:13px;}
.ms-spinner{width:28px;height:28px;border:3px solid var(--primary-light);border-top-color:var(--primary);border-radius:50%;animation:synchro-spin .7s linear infinite;}
.ms-table-empty,.ms-table-error{padding:48px 20px;text-align:center;display:flex;flex-direction:column;align-items:center;}
.ms-empty-icon,.ms-error-icon{font-size:40px;margin-bottom:12px;opacity:.6;}
.ms-empty-title{font-size:15px;font-weight:600;color:var(--text);margin-bottom:6px;}
.ms-empty-desc{font-size:13px;color:var(--text-3);}
.ms-error-title{font-size:15px;font-weight:600;color:var(--danger);margin-bottom:6px;}
.ms-error-desc{font-size:13px;color:var(--text-3);}

/* ===== UI优化 v1.0: 产品标题省略 ===== */
.prod-title-cell{display:flex;align-items:center;gap:10px;min-width:0;}
.prod-thumb{width:48px;height:48px;flex-shrink:0;object-fit:contain;border:1px solid var(--border-light);border-radius:var(--radius-sm);background:#FAFAFA;}
.prod-placeholder{width:48px;height:48px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:#F5F6F8;border-radius:var(--radius-sm);font-size:20px;color:var(--text-3);}
.prod-title-text{font-size:13px;color:var(--text);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all;min-width:0;}
.prod-meta{font-size:12px;color:var(--text-3);margin-top:3px;}

/* ===== UI优化 v1.0: 订单页优化 ===== */
.order-info-cell{min-width:0;}
.order-id{font-size:13px;font-weight:600;color:var(--text);}
.order-meta{font-size:12px;color:var(--text-3);margin-top:2px;}
.order-letter-avatar{display:none !important;}

/* ===== UI优化 v1.0: 统一页面标题区 ===== */
.ms-page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:10px;}
.ms-page-title{font-size:18px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:10px;}
.ms-page-head-side{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.page-title{font-size:18px;font-weight:700;color:var(--text);margin-bottom:16px;}

/* ===== UI优化 v1.0: 统一标签页 ===== */
.ms-tabs,.status-tab-box{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:12px;flex-wrap:wrap;}
.ms-tab,.status-tab{padding:9px 16px;font-size:14px;color:var(--text-2);cursor:pointer;border:none;background:transparent;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .12s;display:inline-flex;align-items:center;gap:5px;}
.ms-tab:hover,.status-tab:hover{color:var(--primary);}
.ms-tab.active,.status-tab.active{color:var(--primary);font-weight:600;border-bottom-color:var(--primary);}
.ms-tab-count,.tab-count{font-size:12px;color:var(--text-3);background:var(--border-light);padding:1px 7px;border-radius:10px;}
.ms-tab.active .ms-tab-count,.status-tab.active .tab-count{background:var(--primary-light);color:var(--primary);}
.status-tab.danger .tab-count{background:var(--danger-bg);color:var(--danger);}

/* ===== UI优化 v1.0: 响应式优化 ===== */
@media (max-width: 1366px){
  .ms-app-container{padding:14px 16px;}
  .ms-side{width:180px;flex:0 0 180px;}
  .ms-nav-item a{padding:0 10px;font-size:13px;}
  .ms-global-search input{width:160px;}
}
@media (max-width: 1100px){
  .ms-side{display:none;}
  .ms-app-main.no-side, .ms-layout-body .ms-app-main{width:100%;}
  .ms-filter-grid{grid-template-columns:repeat(2,1fr);}
}
@media (max-width: 768px){
  .ms-nav-list{display:none;}
  .ms-filter-grid{grid-template-columns:1fr;}
  .ms-page-head{flex-direction:column;align-items:flex-start;}
  .data-table, .ms-data-table, .cb-table{font-size:12px;}
  .data-table th, .ms-data-table th, .cb-table th{padding:8px 10px;}
  .data-table td, .ms-data-table td, .cb-table td{padding:8px 10px;}
}

/* 表格横向滚动容器（小屏幕） */
.ms-table-wrap{overflow-x:auto;}
.ms-table-wrap .data-table, .ms-table-wrap .ms-data-table, .ms-table-wrap .cb-table{min-width:800px;}

/* ===== UI优化 v1.0: 可访问性优化 ===== */
/* 修正文字对比度：--text-muted 从 #94A3B8 改为 #64748B */
:root{
  --text-muted:#64748B;
  --text-3:#64748B;
}
/* 图标按钮添加focus可见性 */
.ms-icon-btn:focus-visible, .ms-btn:focus-visible, .ms-tab:focus-visible, .status-tab:focus-visible{
  outline:2px solid var(--primary);
  outline-offset:2px;
}
/* 输入框focus样式统一 */
input:focus, select:focus, textarea:focus{
  outline:none;
  border-color:var(--primary);
  box-shadow:0 0 0 3px var(--primary-light);
}

/* ===== UI优化 v1.0: 性能优化 ===== */
/* 图片懒加载 */
.prod-thumb, img[loading="lazy"]{
  content-visibility:auto;
}
/* 减少不必要的动画 */
@media (prefers-reduced-motion: reduce){
  *{animation-duration:0.01ms !important;transition-duration:0.01ms !important;}
}
/* 表格固定表头优化 */
.data-table thead, .ms-data-table thead, .cb-table thead{
  position:sticky;
  top:0;
  z-index:2;
}

/* ===== UI优化 v1.0: 空状态统一 ===== */
.empty-state, .no-data, .no-result{
  padding:48px 20px;
  text-align:center;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:8px;
}
.empty-state .empty-icon, .no-data .empty-icon{
  font-size:40px;
  opacity:.5;
  margin-bottom:8px;
}
.empty-state .empty-title, .no-data .empty-title{
  font-size:15px;
  font-weight:600;
  color:var(--text);
}
.empty-state .empty-desc, .no-data .empty-desc{
  font-size:13px;
  color:var(--text-3);
}

/* ########################################################################
   # [UI REDESIGN v2.1] 现代商务B端磨砂玻璃新拟态 · 强力覆盖层
   # 改动标记：本区块以下全部为 v2.1 优化样式，所有声明使用 !important
   # 原因：v6层(3888-4468行)含220处!important + 页面内联style块，必须同权重覆盖
   # 硬性约束：未改动 .ms-header 顶部导航栏任何样式，未改任何HTML业务结构
   # 覆盖类名体系：.ms-* 新版 + .btn/.card/.pc-card 旧版 + .cb-filter-*/.prod-claim-* 页面内联
   ######################################################################## */

/* ====== 1. 全局背景基调：三层视觉结构最底层（浅灰渐变） ====== */
body.has-layout {
  background: linear-gradient(135deg, #EEF2F7 0%, #E8EDF4 50%, #F0F4F9 100%) !important;
  background-attachment: fixed !important;
  color: #1E293B !important;
}
body.has-layout .ms-app-container { padding: 20px 24px 36px !important; }
body.has-layout .ms-app-main.no-side .ms-app-container { max-width: 1440px !important; margin: 0 auto !important; }

/* ====== 2. 左侧二级菜单：磨砂底 + 分组层级 + 选中竖条（固定不随页面滚动） ====== */
body.has-layout .ms-side {
  background: rgba(255,255,255,0.82) !important;
  backdrop-filter: blur(14px) !important;
  -webkit-backdrop-filter: blur(14px) !important;
  border-right: 1px solid rgba(226,232,240,0.7) !important;
  box-shadow: 2px 0 10px rgba(15,23,42,0.03) !important;
  /* 固定侧边栏：吸附在顶部导航(52px)下方，不随内容滚动；菜单过长时侧栏内部滚动 */
  position: sticky !important;
  top: 52px !important;
  align-self: flex-start !important;
  height: calc(100vh - 52px) !important;
  max-height: calc(100vh - 52px) !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  scrollbar-width: thin;
}
body.has-layout .ms-side-inner { padding: 14px 8px !important; }
body.has-layout .ms-sub-menu { margin-bottom: 8px !important; }
body.has-layout .ms-sub-menu + .ms-sub-menu {
  border-top: 1px solid rgba(226,232,240,0.5) !important;
  margin-top: 10px !important; padding-top: 10px !important;
}
body.has-layout .ms-sub-menu__title {
  padding: 8px 14px 6px !important;
  font-size: 10.5px !important;
  color: #94A3B8 !important;
  font-weight: 700 !important;
  letter-spacing: 1.2px !important;
  text-transform: uppercase !important;
}
body.has-layout .ms-side-link {
  display: flex !important; align-items: center !important;
  padding: 9px 14px !important;
  margin: 2px 6px !important;
  font-size: 13.5px !important;
  border-left: none !important;
  border-radius: 8px !important;
  transition: all .18s cubic-bezier(.4,0,.2,1) !important;
}
body.has-layout .ms-side-link:hover {
  background: rgba(37,99,235,0.07) !important;
  color: var(--primary) !important;
  transform: translateX(2px) !important;
}
body.has-layout .ms-side-link.active {
  background: linear-gradient(135deg, rgba(37,99,235,0.13), rgba(37,99,235,0.05)) !important;
  color: var(--primary) !important;
  font-weight: 600 !important;
  border-left: none !important;
  box-shadow: 0 2px 8px rgba(37,99,235,0.10), inset 0 1px 0 rgba(255,255,255,0.7) !important;
  position: relative !important;
}
body.has-layout .ms-side-link.active::before {
  content: '' !important; position: absolute !important;
  left: -6px !important; top: 50% !important; transform: translateY(-50%) !important;
  width: 3px !important; height: 20px !important;
  background: var(--primary) !important; border-radius: 0 3px 3px 0 !important;
}
body.has-layout .ms-side-link.disabled { margin: 2px 6px !important; border-radius: 8px !important; }
body.has-layout .sidebar-tabs {
  background: rgba(255,255,255,0.82) !important;
  backdrop-filter: blur(14px) !important;
  border-right: 1px solid rgba(226,232,240,0.7) !important;
}
body.has-layout .sidebar-tab {
  border-radius: 8px !important; margin: 2px 8px !important;
  border-left: none !important; padding: 9px 14px !important;
}
body.has-layout .sidebar-tab.active {
  background: linear-gradient(135deg, rgba(37,99,235,0.13), rgba(37,99,235,0.05)) !important;
  color: var(--primary) !important; border-left: none !important;
}

/* ====== 3. 页面标题 / 面包屑 ====== */
body.has-layout .ms-page-title,
body.has-layout .page-header h1,
body.has-layout .cb-title {
  font-size: 20px !important; font-weight: 700 !important;
  color: #0F172A !important; letter-spacing: -0.2px !important;
}
body.has-layout .ms-page-head { margin-bottom: 18px !important; }
body.has-layout .breadcrumb {
  font-size: 12.5px !important; color: #94A3B8 !important; margin-bottom: 12px !important;
}
body.has-layout .breadcrumb a { color: #94A3B8 !important; }
body.has-layout .breadcrumb a:hover { color: var(--primary) !important; }
body.has-layout .breadcrumb .current { color: #475569 !important; }

/* ====== 4. 卡片/面板：磨砂玻璃新拟态（覆盖新旧全部卡片类名） ====== */
body.has-layout .card,
body.has-layout .ms-panel,
body.has-layout .cb2-panel,
body.has-layout .pc-card,
body.has-layout .stat-card-v2,
body.has-layout .sidebar-tabs,
body.has-layout .order-card,
body.has-layout .todo-group,
body.has-layout .cb-filter-card,
body.has-layout .plugin-card-detail,
body.has-layout .install-guide {
  background: rgba(255,255,255,0.92) !important;
  backdrop-filter: blur(10px) !important;
  -webkit-backdrop-filter: blur(10px) !important;
  border: 1px solid rgba(255,255,255,0.85) !important;
  border-radius: 12px !important;
  box-shadow: 0 1px 3px rgba(15,23,42,0.05), 0 4px 14px rgba(15,23,42,0.04), inset 0 1px 0 rgba(255,255,255,0.9) !important;
  transition: box-shadow .2s ease, transform .2s ease !important;
}
body.has-layout .card:hover,
body.has-layout .ms-panel:hover,
body.has-layout .pc-card:hover,
body.has-layout .stat-card-v2:hover {
  box-shadow: 0 2px 6px rgba(15,23,42,0.07), 0 8px 22px rgba(15,23,42,0.05), inset 0 1px 0 rgba(255,255,255,0.9) !important;
}
body.has-layout .ms-panel-head,
body.has-layout .card h3 {
  padding: 14px 18px !important;
  border-bottom: 1px solid rgba(226,232,240,0.6) !important;
  font-size: 15px !important; font-weight: 600 !important; color: #1E293B !important;
}

/* ====== 5. 筛选区：磨砂卡片 + 统一栅格间距（覆盖三套筛选类名） ====== */
body.has-layout .ms-filter-bar,
body.has-layout .query-form,
body.has-layout .cb2-filter,
body.has-layout .cb-filter-card,
body.has-layout .pc-cond-grid {
  background: rgba(255,255,255,0.92) !important;
  backdrop-filter: blur(10px) !important;
  -webkit-backdrop-filter: blur(10px) !important;
  border: 1px solid rgba(255,255,255,0.85) !important;
  border-radius: 12px !important;
  box-shadow: 0 1px 3px rgba(15,23,42,0.05), 0 2px 8px rgba(15,23,42,0.03), inset 0 1px 0 rgba(255,255,255,0.9) !important;
  padding: 16px 18px !important;
  margin-bottom: 14px !important;
}
body.has-layout .cb-filter-item,
body.has-layout .cb2-field {
  border-radius: 8px !important;
  border-color: #E2E8F0 !important;
  background: rgba(255,255,255,0.96) !important;
  transition: all .18s ease !important;
  min-height: 36px !important;
}
body.has-layout .cb-filter-item:focus-within,
body.has-layout .cb2-field:focus-within {
  border-color: var(--primary) !important;
  box-shadow: 0 0 0 3px rgba(37,99,235,0.10) !important;
}
body.has-layout .cb-filter-label,
body.has-layout .cb2-field > label,
body.has-layout .ms-filter-item label,
body.has-layout .query-field label,
body.has-layout .pc-cond-item label {
  font-size: 13px !important;
  color: #475569 !important;
  font-weight: 400 !important;
}
body.has-layout .cb-filter-actions .btn,
body.has-layout .cb-filter-foot .btn,
body.has-layout .cb2-filter-actions .cb2-btn,
body.has-layout .query-actions .ms-btn {
  height: 32px !important;
  border-radius: 7px !important;
}

/* ====== 6. 按钮体系：统一全部新旧按钮类名 ====== */
body.has-layout .btn,
body.has-layout .ms-btn,
body.has-layout .cb2-btn {
  height: 34px !important;
  padding: 0 16px !important;
  font-size: 13.5px !important;
  font-weight: 500 !important;
  border-radius: 8px !important;
  transition: all .18s cubic-bezier(.4,0,.2,1) !important;
  letter-spacing: .1px !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 5px !important;
  line-height: 1 !important;
  white-space: nowrap !important;
}
body.has-layout .btn-sm,
body.has-layout .ms-btn-sm { height: 30px !important; padding: 0 12px !important; font-size: 12.5px !important; border-radius: 7px !important; }
body.has-layout .btn-default,
body.has-layout .ms-btn:not(.ms-btn-primary):not(.ms-btn-danger):not(.ms-btn-success):not(.ms-btn-text) {
  background: linear-gradient(180deg,#FFFFFF,#F6F8FB) !important;
  border: 1px solid #E2E8F0 !important;
  color: #475569 !important;
  box-shadow: 0 1px 2px rgba(15,23,42,0.05), inset 0 1px 0 rgba(255,255,255,1) !important;
}
body.has-layout .btn-default:hover,
body.has-layout .ms-btn:not(.ms-btn-primary):not(.ms-btn-danger):not(.ms-btn-success):not(.ms-btn-text):hover {
  border-color: var(--primary) !important;
  color: var(--primary) !important;
  background: linear-gradient(180deg,#FFFFFF,#F0F6FF) !important;
  box-shadow: 0 2px 8px rgba(37,99,235,0.12), inset 0 1px 0 rgba(255,255,255,1) !important;
  transform: translateY(-1px) !important;
}
body.has-layout .cb2-btn-ghost {
  background: rgba(37,99,235,0.07) !important;
  border-color: rgba(37,99,235,0.25) !important;
  color: var(--primary) !important;
  box-shadow: none !important;
}
body.has-layout .cb2-btn-ghost:hover { background: rgba(37,99,235,0.13) !important; }
body.has-layout .btn-primary,
body.has-layout .ms-btn-primary,
body.has-layout .cb-opbar > .btn,
body.has-layout .cb-opbar > .cb-dropdown > .btn,
body.has-layout .cb2-btn:not(.cb2-btn-ghost):not(.cb2-btn-danger) {
  background: linear-gradient(135deg,#3B82F6,#2563EB) !important;
  border: 1px solid transparent !important;
  color: #fff !important;
  box-shadow: 0 2px 6px rgba(37,99,235,0.25), inset 0 1px 0 rgba(255,255,255,0.2) !important;
}
body.has-layout .btn-primary:hover,
body.has-layout .ms-btn-primary:hover,
body.has-layout .cb-opbar > .btn:hover,
body.has-layout .cb-opbar > .cb-dropdown > .btn:hover,
body.has-layout .cb2-btn:not(.cb2-btn-ghost):not(.cb2-btn-danger):hover {
  background: linear-gradient(135deg,#2563EB,#1D4ED8) !important;
  box-shadow: 0 4px 14px rgba(37,99,235,0.35), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transform: translateY(-1px) !important;
  color: #fff !important;
}
body.has-layout .btn-danger,
body.has-layout .ms-btn-danger,
body.has-layout .cb2-btn-danger,
body.has-layout .cb-opbar > span .btn[onclick*="DeleteMenu"],
body.has-layout .cb-opbar button[onclick*="DeleteMenu"] {
  background: linear-gradient(135deg,#F87171,#EF4444) !important;
  border: 1px solid transparent !important;
  color: #fff !important;
  box-shadow: 0 2px 6px rgba(239,68,68,0.22) !important;
}
body.has-layout .btn-danger:hover,
body.has-layout .ms-btn-danger:hover,
body.has-layout .cb2-btn-danger:hover {
  background: linear-gradient(135deg,#EF4444,#DC2626) !important;
  box-shadow: 0 4px 14px rgba(239,68,68,0.32) !important;
}
body.has-layout .btn-success,
body.has-layout .ms-btn-success {
  background: linear-gradient(135deg,#34D399,#10B981) !important;
  border: 1px solid transparent !important;
  color: #fff !important;
  box-shadow: 0 2px 6px rgba(16,185,129,0.22) !important;
}
body.has-layout .btn-success:hover,
body.has-layout .ms-btn-success:hover {
  background: linear-gradient(135deg,#10B981,#059669) !important;
  box-shadow: 0 4px 14px rgba(16,185,129,0.32) !important;
}
body.has-layout .ms-btn-text,
body.has-layout .link-btn {
  background: transparent !important; border: none !important;
  box-shadow: none !important; height: auto !important;
  padding: 4px 8px !important; border-radius: 6px !important;
}
body.has-layout .ms-btn-text:hover { background: rgba(37,99,235,0.07) !important; text-decoration: none !important; }
body.has-layout .link-btn.danger { color: #DC2626 !important; }
body.has-layout .link-btn.danger:hover { background: rgba(220,38,38,0.07) !important; }
body.has-layout .btn:disabled,
body.has-layout .ms-btn:disabled,
body.has-layout .cb2-btn:disabled {
  opacity: .5 !important; cursor: not-allowed !important;
  transform: none !important; box-shadow: none !important;
}

/* ====== 7. 输入框/下拉框：统一高度圆角focus ====== */
body.has-layout input[type="text"],
body.has-layout input[type="password"],
body.has-layout input[type="number"],
body.has-layout input[type="email"],
body.has-layout input[type="search"],
body.has-layout input[type="date"],
body.has-layout select,
body.has-layout textarea,
body.has-layout .form-group input,
body.has-layout .form-group select,
body.has-layout .form-group textarea,
body.has-layout .ms-filter-item input,
body.has-layout .ms-filter-item select,
body.has-layout .query-field input,
body.has-layout .query-field select,
body.has-layout .pc-cond-input,
body.has-layout .cb-filter-input,
body.has-layout .cb-filter-select {
  border: 1px solid #E2E8F0 !important;
  border-radius: 8px !important;
  font-size: 13.5px !important;
  color: #1E293B !important;
  background: rgba(255,255,255,0.96) !important;
  transition: all .18s ease !important;
  box-shadow: inset 0 1px 2px rgba(15,23,42,0.03) !important;
}
body.has-layout .form-group input,
body.has-layout .ms-filter-item input,
body.has-layout .query-field input,
body.has-layout .pc-cond-input,
body.has-layout .cb-filter-input,
body.has-layout .cb-filter-select { height: 36px !important; padding: 0 12px !important; }
body.has-layout textarea { height: auto !important; padding: 8px 12px !important; line-height: 1.6 !important; }
body.has-layout input:focus,
body.has-layout select:focus,
body.has-layout textarea:focus {
  outline: none !important;
  border-color: var(--primary) !important;
  box-shadow: 0 0 0 3px rgba(37,99,235,0.10), inset 0 1px 2px rgba(15,23,42,0.03) !important;
  background: #fff !important;
}
body.has-layout input::placeholder,
body.has-layout textarea::placeholder { color: #94A3B8 !important; }
body.has-layout .cb-filter-item > .cb-filter-ctrl,
body.has-layout .cb2-field input,
body.has-layout .cb2-field select {
  font-size: 13.5px !important; color: #1E293B !important;
  box-shadow: none !important;
}

/* ====== 8. 表格：表头渐变 + 行高 + 斑马纹 + hover ====== */
body.has-layout table th,
body.has-layout .data-table thead th,
body.has-layout .cb-table thead th,
body.has-layout .cb2-panel table.data-table thead th,
body.has-layout #productTable thead th {
  background: linear-gradient(180deg,#F8FAFC,#F1F5F9) !important;
  color: #475569 !important;
  font-weight: 600 !important;
  font-size: 12.5px !important;
  padding: 12px 14px !important;
  border-bottom: 1px solid #E2E8F0 !important;
  letter-spacing: .2px !important;
  height: auto !important;
}
body.has-layout table td,
body.has-layout .data-table tbody td,
body.has-layout .cb-table tbody td,
body.has-layout .cb2-panel table.data-table tbody td {
  padding: 12px 14px !important;
  border-bottom: 1px solid #F1F5F9 !important;
  font-size: 13.5px !important;
  color: #334155 !important;
  vertical-align: middle !important;
}
body.has-layout #productTable tbody td { font-size: 13px !important; }
body.has-layout .data-table tbody tr:nth-child(even),
body.has-layout .cb-table tbody tr:nth-child(even) {
  background: rgba(248,250,252,0.55) !important;
}
body.has-layout table tbody tr:hover,
body.has-layout .data-table tbody tr:hover,
body.has-layout .cb-table tbody tr:hover,
body.has-layout #productTable tbody tr:hover {
  background: rgba(37,99,235,0.045) !important;
}
body.has-layout .num-col,
body.has-layout .text-right,
body.has-layout td.num-col {
  text-align: right !important;
  font-variant-numeric: tabular-nums !important;
}
body.has-layout .prod-thumb,
body.has-layout .prod-placeholder {
  width: 56px !important; height: 56px !important;
  border-radius: 8px !important;
  border: 1px solid #F1F5F9 !important;
  object-fit: cover !important;
}

/* ====== 9. 状态标签：圆点 + 统一语义色 ====== */
body.has-layout .ms-tag,
body.has-layout .status-badge,
body.has-layout .cb-tag-status {
  display: inline-flex !important; align-items: center !important;
  gap: 5px !important; padding: 3px 10px !important;
  border-radius: 6px !important; font-size: 12px !important;
  font-weight: 500 !important; line-height: 1.5 !important;
}
body.has-layout .ms-tag::before,
body.has-layout .cb-tag-status::before {
  content: '' !important; width: 6px !important; height: 6px !important;
  border-radius: 50% !important; background: currentColor !important; flex-shrink: 0 !important;
}
body.has-layout .status-badge { border-radius: 6px !important; }
body.has-layout .status-badge::before { font-size: 11px !important; }
body.has-layout .ms-tag.success, body.has-layout .ms-tag-success,
body.has-layout .cb-tag-green, body.has-layout .status-badge.completed {
  background: #ECFDF5 !important; color: #059669 !important;
}
body.has-layout .ms-tag.warning, body.has-layout .ms-tag-warn, body.has-layout .ms-tag-warning,
body.has-layout .status-badge.partial, body.has-layout .status-badge.pending {
  background: #FFFBEB !important; color: #D97706 !important;
}
body.has-layout .ms-tag.danger, body.has-layout .ms-tag-danger,
body.has-layout .cb-tag-red, body.has-layout .status-badge.failed {
  background: #FEF2F2 !important; color: #DC2626 !important;
}
body.has-layout .ms-tag.info, body.has-layout .ms-tag-info,
body.has-layout .cb-tag-blue, body.has-layout .status-badge.running {
  background: #F0F9FF !important; color: #0284C7 !important;
}
body.has-layout .ms-tag.default, body.has-layout .ms-tag-default,
body.has-layout .cb-tag-gray, body.has-layout .status-badge.cancelled {
  background: #F1F5F9 !important; color: #64748B !important;
}
body.has-layout .platform-badge {
  padding: 3px 10px !important; border-radius: 6px !important;
  font-size: 12px !important; background: #F1F5F9 !important; color: #475569 !important; font-weight: 500 !important;
}

/* ====== 10. Tab 统一：页面级下划线 ====== */
body.has-layout .status-tab-box,
body.has-layout .tabs {
  gap: 0 !important; border-bottom: 2px solid #F1F5F9 !important;
  margin-bottom: 16px !important; padding: 0 4px !important;
}
body.has-layout .status-tab,
body.has-layout .tab-btn,
body.has-layout .edit-tab {
  padding: 10px 18px !important; font-size: 13.5px !important; font-weight: 500 !important;
  border-bottom: 2px solid transparent !important; margin-bottom: -2px !important;
  border-radius: 8px 8px 0 0 !important; transition: all .18s ease !important;
  background: transparent !important; border-top: none !important; border-left: none !important; border-right: none !important;
}
body.has-layout .status-tab:hover,
body.has-layout .tab-btn:hover,
body.has-layout .edit-tab:hover {
  color: var(--primary) !important; background: rgba(37,99,235,0.04) !important;
}
body.has-layout .status-tab.active,
body.has-layout .tab-btn.active,
body.has-layout .edit-tab.active {
  color: var(--primary) !important; font-weight: 600 !important;
  border-bottom-color: var(--primary) !important;
  background: rgba(37,99,235,0.04) !important;
}
body.has-layout .status-tab .tab-count {
  font-size: 11.5px !important; padding: 1px 7px !important;
  border-radius: 10px !important; background: #F1F5F9 !important;
  color: #94A3B8 !important; margin-left: 5px !important;
}
body.has-layout .status-tab.active .tab-count {
  background: rgba(37,99,235,0.12) !important; color: var(--primary) !important;
}
body.has-layout .prod-claim-tabs,
body.has-layout .cb2-seg { gap: 4px !important; }
body.has-layout .prod-claim-tab,
body.has-layout .cb2-seg-item {
  height: 34px !important; padding: 0 16px !important;
  border-radius: 8px !important; border: 1px solid #E2E8F0 !important;
  margin-left: 0 !important; font-size: 13px !important;
  background: linear-gradient(180deg,#fff,#F8FAFC) !important; color: #64748B !important;
  transition: all .15s ease !important;
}
body.has-layout .prod-claim-tab:first-child,
body.has-layout .prod-claim-tab:last-child,
body.has-layout .cb2-seg-item:first-child,
body.has-layout .cb2-seg-item:last-child { border-radius: 8px !important; }
body.has-layout .prod-claim-tab:hover,
body.has-layout .cb2-seg-item:hover { color: var(--primary) !important; border-color: var(--primary-border) !important; z-index: 1 !important; }
body.has-layout .prod-claim-tab.active,
body.has-layout .cb2-seg-item.active {
  background: linear-gradient(135deg,#3B82F6,#2563EB) !important;
  border-color: transparent !important; color: #fff !important;
  font-weight: 500 !important;
  box-shadow: 0 2px 6px rgba(37,99,235,0.25) !important;
}
body.has-layout .prod-claim-tab .pct-count,
body.has-layout .cb2-seg-item .seg-count {
  border-radius: 10px !important; font-size: 11.5px !important;
}
body.has-layout .prod-claim-tab.active .pct-count { background: rgba(255,255,255,0.22) !important; color: #fff !important; }

/* ====== 11. 分页 ====== */
body.has-layout .ms-pagination {
  padding: 14px 18px !important; gap: 6px !important;
  font-size: 13px !important; color: #64748B !important;
  border-top: 1px solid #F1F5F9 !important; justify-content: flex-end !important;
}
body.has-layout .ms-pagination button {
  min-width: 32px !important; height: 32px !important;
  border: 1px solid #E2E8F0 !important; border-radius: 7px !important;
  font-size: 13px !important; color: #475569 !important;
  background: linear-gradient(180deg,#fff,#F8FAFC) !important;
  transition: all .15s ease !important;
  box-shadow: 0 1px 2px rgba(15,23,42,0.04) !important;
}
body.has-layout .ms-pagination button:hover:not(:disabled):not(.active) {
  border-color: var(--primary) !important; color: var(--primary) !important;
  transform: translateY(-1px) !important; box-shadow: 0 2px 6px rgba(37,99,235,0.12) !important;
}
body.has-layout .ms-pagination button.active {
  background: linear-gradient(135deg,#3B82F6,#2563EB) !important;
  color: #fff !important; border-color: transparent !important;
  box-shadow: 0 2px 6px rgba(37,99,235,0.3) !important; font-weight: 600 !important;
}
body.has-layout .ms-pagination button:disabled { opacity: .5 !important; cursor: not-allowed !important; }
body.has-layout .ms-pagination select { height: 32px !important; border-radius: 7px !important; border-color: #E2E8F0 !important; }

/* ====== 12. 空状态 ====== */
body.has-layout .ms-empty,
body.has-layout .empty-state,
body.has-layout .no-data,
body.has-layout .no-result {
  padding: 60px 20px !important; text-align: center !important;
}
body.has-layout .ms-empty .ms-empty-icon,
body.has-layout .empty-state .empty-icon {
  font-size: 52px !important; opacity: .28 !important; margin-bottom: 16px !important;
}
body.has-layout .ms-empty .ms-empty-text,
body.has-layout .empty-state .empty-text {
  font-size: 15px !important; font-weight: 600 !important;
  color: #475569 !important; margin-bottom: 8px !important;
}
body.has-layout .ms-empty .ms-empty-hint,
body.has-layout .empty-state .empty-hint,
body.has-layout .empty-state .empty-desc {
  font-size: 13px !important; color: #94A3B8 !important; margin-bottom: 18px !important;
}

/* ====== 13. 模态框/抽屉/弹层：磨砂玻璃 ====== */
body.has-layout .ms-modal-mask,
body.has-layout .modal-overlay,
body.has-layout .drawer-overlay {
  background: rgba(15,23,42,0.42) !important;
  backdrop-filter: blur(4px) !important;
  -webkit-backdrop-filter: blur(4px) !important;
}
body.has-layout .ms-modal,
body.has-layout .modal-box,
body.has-layout .drawer-panel,
body.has-layout .popconfirm-pop {
  background: rgba(255,255,255,0.97) !important;
  backdrop-filter: blur(16px) !important;
  -webkit-backdrop-filter: blur(16px) !important;
  border-radius: 14px !important;
  border: 1px solid rgba(255,255,255,0.8) !important;
  box-shadow: 0 20px 50px rgba(15,23,42,0.20), 0 8px 20px rgba(15,23,42,0.10), inset 0 1px 0 rgba(255,255,255,0.9) !important;
}
body.has-layout .ms-modal__head,
body.has-layout .modal-header,
body.has-layout .drawer-header {
  padding: 18px 22px !important; border-bottom: 1px solid #F1F5F9 !important;
}
body.has-layout .ms-modal__title,
body.has-layout .modal-header h3,
body.has-layout .drawer-header h3 {
  font-size: 16px !important; font-weight: 600 !important; color: #0F172A !important;
}
body.has-layout .ms-modal__body,
body.has-layout .modal-body,
body.has-layout .drawer-body { padding: 22px !important; }
body.has-layout .ms-modal__footer,
body.has-layout .drawer-footer {
  padding: 14px 22px !important; border-top: 1px solid #F1F5F9 !important; gap: 10px !important;
}
body.has-layout .ms-modal__close {
  width: 32px !important; height: 32px !important; border-radius: 8px !important;
  display: flex !important; align-items: center !important; justify-content: center !important;
  transition: all .15s !important;
}
body.has-layout .ms-modal__close:hover { background: #F1F5F9 !important; color: #475569 !important; }

/* ====== 14. 统计卡片 ====== */
body.has-layout .ms-stat-card,
body.has-layout .stat-card,
body.has-layout .stat-card-v2 {
  background: rgba(255,255,255,0.92) !important;
  backdrop-filter: blur(10px) !important;
  -webkit-backdrop-filter: blur(10px) !important;
  border: 1px solid rgba(255,255,255,0.85) !important;
  border-radius: 12px !important;
  padding: 18px 20px !important;
  box-shadow: 0 1px 3px rgba(15,23,42,0.05), 0 4px 12px rgba(15,23,42,0.03), inset 0 1px 0 rgba(255,255,255,0.9) !important;
  transition: all .2s ease !important;
  border-left: none !important;
  position: relative !important; overflow: hidden !important;
}
body.has-layout .ms-stat-card::before,
body.has-layout .stat-card-v2::before {
  content: '' !important; position: absolute !important;
  top: 0 !important; left: 0 !important; right: 0 !important; height: 3px !important;
  background: linear-gradient(90deg,#3B82F6,#2563EB) !important;
}
body.has-layout .ms-stat-card.accent-green::before,
body.has-layout .stat-card.green::before { background: linear-gradient(90deg,#34D399,#10B981) !important; }
body.has-layout .ms-stat-card.accent-orange::before,
body.has-layout .stat-card.orange::before { background: linear-gradient(90deg,#FBBF24,#F59E0B) !important; }
body.has-layout .ms-stat-card.accent-red::before,
body.has-layout .stat-card.red::before { background: linear-gradient(90deg,#F87171,#EF4444) !important; }
body.has-layout .ms-stat-card:hover,
body.has-layout .stat-card:hover,
body.has-layout .stat-card-v2:hover {
  transform: translateY(-2px) !important;
  box-shadow: 0 4px 8px rgba(15,23,42,0.07), 0 12px 24px rgba(15,23,42,0.05), inset 0 1px 0 rgba(255,255,255,0.9) !important;
}
body.has-layout .ms-stat-card .ms-stat-value,
body.has-layout .stat-card .value,
body.has-layout .stat-card-v2 .value {
  font-size: 28px !important; font-weight: 700 !important;
  color: #0F172A !important; letter-spacing: -0.5px !important; line-height: 1.1 !important;
}
body.has-layout .ms-stat-card .ms-stat-label,
body.has-layout .stat-card .label {
  font-size: 13px !important; color: #64748B !important; margin-bottom: 8px !important;
}
body.has-layout .ms-stat-grid { gap: 16px !important; margin-bottom: 20px !important; }
body.has-layout .stats-grid { gap: 16px !important; margin-bottom: 20px !important; }

/* ====== 15. 操作栏 ====== */
body.has-layout .ms-action-bar,
body.has-layout .batch-bar,
body.has-layout .cb2-actions,
body.has-layout .cb-opbar {
  margin-bottom: 14px !important; gap: 10px !important;
  display: flex !important; align-items: center !important; flex-wrap: wrap !important;
}
body.has-layout .cb-opbar .btn {
  height: 32px !important; border-radius: 7px !important;
  padding: 0 14px !important; font-size: 13px !important;
}
body.has-layout .cb-opbar > span .btn:not([onclick*="DeleteMenu"]) {
  background: rgba(37,99,235,0.07) !important;
  border-color: rgba(37,99,235,0.25) !important;
  color: var(--primary) !important;
}
body.has-layout .cb-opbar > span .btn:not([onclick*="DeleteMenu"]):hover {
  background: rgba(37,99,235,0.13) !important; border-color: var(--primary) !important;
}
body.has-layout .cb2-sel-info {
  font-size: 13px !important; color: #64748B !important;
  background: #F1F5F9 !important; padding: 5px 12px !important; border-radius: 6px !important;
}
body.has-layout .cb2-sel-info strong { color: var(--primary) !important; font-weight: 600 !important; }

/* ====== 16. 订单卡片 ====== */
body.has-layout .order-card { border-radius: 12px !important; overflow: hidden !important; margin-bottom: 14px !important; }
body.has-layout .order-card-head {
  background: linear-gradient(180deg,#F8FAFC,#F1F5F9) !important;
  padding: 12px 18px !important; border-bottom: 1px solid #F1F5F9 !important; font-size: 13px !important;
}
body.has-layout .order-card-body { padding: 16px 18px !important; gap: 18px !important; }
body.has-layout .order-goods img {
  width: 60px !important; height: 60px !important;
  border-radius: 8px !important; border: 1px solid #F1F5F9 !important;
}
body.has-layout .order-meta { font-size: 13px !important; color: #475569 !important; line-height: 2 !important; }
body.has-layout .order-card-foot {
  padding: 12px 18px !important; border-top: 1px solid #F1F5F9 !important; gap: 10px !important;
}

/* ====== 17. 快捷入口/平台卡片 ====== */
body.has-layout .quick-entry {
  background: rgba(255,255,255,0.82) !important;
  backdrop-filter: blur(6px) !important;
  border: 1px solid rgba(255,255,255,0.85) !important;
  border-radius: 12px !important; padding: 20px 12px !important;
  box-shadow: 0 1px 3px rgba(15,23,42,0.04), inset 0 1px 0 rgba(255,255,255,0.9) !important;
  transition: all .2s ease !important;
}
body.has-layout .quick-entry:hover {
  border-color: rgba(37,99,235,0.3) !important;
  background: rgba(37,99,235,0.04) !important;
  box-shadow: 0 4px 12px rgba(37,99,235,0.10) !important;
  transform: translateY(-2px) !important;
}
body.has-layout .platform-card,
body.has-layout .pc-tag {
  border-radius: 12px !important;
  border: 1px solid rgba(226,232,240,0.8) !important;
  background: rgba(255,255,255,0.9) !important;
  box-shadow: 0 1px 3px rgba(15,23,42,0.04), inset 0 1px 0 rgba(255,255,255,0.9) !important;
  transition: all .2s ease !important;
}
body.has-layout .platform-card:hover {
  border-color: rgba(37,99,235,0.4) !important;
  box-shadow: 0 4px 14px rgba(37,99,235,0.12) !important;
  transform: translateY(-2px) !important;
}

/* ====== 18. 提示横幅/通知条 ====== */
body.has-layout .cb2-notice,
body.has-layout .guide-warning {
  border-radius: 8px !important; padding: 10px 16px !important;
  font-size: 12.5px !important;
  background: linear-gradient(135deg,#FFFBEB,#FEF3C7) !important;
  border: 1px solid #FDE68A !important; color: #92400E !important;
  box-shadow: 0 1px 3px rgba(217,119,6,0.08) !important;
}
body.has-layout .member-expired-banner {
  border-radius: 8px !important; padding: 12px 18px !important;
  font-size: 13px !important; margin-bottom: 14px !important;
}
body.has-layout .plugin-update-banner {
  border-radius: 8px !important; padding: 10px 16px !important;
  font-size: 13px !important; margin-bottom: 14px !important;
  display: flex !important; align-items: center !important; gap: 10px !important;
  background: linear-gradient(135deg,#EFF6FF,#DBEAFE) !important;
  border: 1px solid #BFDBFE !important; color: #1E40AF !important;
}
body.has-layout .flash {
  padding: 12px 18px !important; border-radius: 10px !important;
  font-size: 13.5px !important; margin-bottom: 14px !important;
  box-shadow: 0 2px 8px rgba(15,23,42,0.06) !important;
}
body.has-layout .flash.success {
  background: linear-gradient(135deg,#ECFDF5,#D1FAE5) !important;
  border: 1px solid #A7F3D0 !important; color: #065F46 !important;
}
body.has-layout .flash.error {
  background: linear-gradient(135deg,#FEF2F2,#FEE2E2) !important;
  border: 1px solid #FECACA !important; color: #991B1B !important;
}
body.has-layout .flash.info {
  background: linear-gradient(135deg,#EFF6FF,#DBEAFE) !important;
  border: 1px solid #BFDBFE !important; color: #1E40AF !important;
}

/* ====== 19. 进度条 ====== */
body.has-layout .ms-progress {
  height: 8px !important; background: #F1F5F9 !important;
  border-radius: 4px !important; overflow: hidden !important;
}
body.has-layout .ms-progress-bar {
  height: 100% !important;
  background: linear-gradient(90deg,#3B82F6,#2563EB) !important;
  border-radius: 4px !important;
  box-shadow: 0 0 8px rgba(37,99,235,0.3) !important;
}

/* ====== 20. 下拉菜单/弹出层 ====== */
body.has-layout .cb2-dropdown-menu,
body.has-layout .cb-dropdown-menu,
body.has-layout .user-dropdown {
  background: rgba(255,255,255,0.97) !important;
  backdrop-filter: blur(12px) !important;
  -webkit-backdrop-filter: blur(12px) !important;
  border: 1px solid rgba(226,232,240,0.8) !important;
  border-radius: 10px !important;
  box-shadow: 0 8px 24px rgba(15,23,42,0.12), 0 2px 6px rgba(15,23,42,0.06) !important;
  padding: 6px 0 !important;
}
body.has-layout .cb2-dropdown-menu a,
body.has-layout .cb-menu-item {
  padding: 9px 16px !important; font-size: 13px !important;
  border-radius: 6px !important; margin: 0 4px !important;
  color: #475569 !important; transition: all .12s !important;
}
body.has-layout .cb2-dropdown-menu a:hover,
body.has-layout .cb-menu-item:hover {
  background: rgba(37,99,235,0.08) !important; color: var(--primary) !important;
}
body.has-layout .cb-menu-danger { color: #DC2626 !important; }
body.has-layout .cb-menu-danger:hover { background: rgba(220,38,38,0.07) !important; color: #B91C1C !important; }
body.has-layout .user-dropdown a {
  display: block !important; padding: 9px 16px !important; font-size: 13px !important;
  color: #475569 !important; text-decoration: none !important;
  border-radius: 6px !important; margin: 0 4px !important; transition: all .15s !important;
}
body.has-layout .user-dropdown a:hover { background: rgba(37,99,235,0.08) !important; color: var(--primary) !important; }
body.has-layout .user-dropdown .dropdown-divider { height: 1px !important; background: #F1F5F9 !important; margin: 6px 8px !important; }
body.has-layout .user-dropdown .logout-link { color: #DC2626 !important; }
body.has-layout .user-dropdown .logout-link:hover { background: rgba(220,38,38,0.07) !important; color: #DC2626 !important; }
body.has-layout .ms-search-dropdown {
  background: rgba(255,255,255,0.97) !important;
  backdrop-filter: blur(12px) !important;
  border: 1px solid rgba(226,232,240,0.8) !important;
  border-radius: 10px !important;
  box-shadow: 0 8px 24px rgba(15,23,42,0.12) !important;
}
body.has-layout .ms-search-item {
  padding: 10px 16px !important; font-size: 13px !important;
  border-radius: 6px !important; margin: 0 4px !important;
}
body.has-layout .ms-search-item:hover { background: rgba(37,99,235,0.08) !important; color: var(--primary) !important; }

/* ====== 21. 复选框/单选框 ====== */
body.has-layout input[type="checkbox"] {
  width: 17px !important; height: 17px !important;
  border: 1.5px solid #CBD5E1 !important; border-radius: 4px !important;
  background: #fff !important; cursor: pointer !important;
  transition: all .15s !important;
}
body.has-layout input[type="checkbox"]:checked {
  background: var(--primary) !important; border-color: var(--primary) !important;
}
body.has-layout input[type="checkbox"]:focus-visible {
  box-shadow: 0 0 0 3px rgba(37,99,235,0.2) !important; outline: none !important;
}
body.has-layout input[type="radio"] {
  width: 17px !important; height: 17px !important;
  border: 1.5px solid #CBD5E1 !important;
}
body.has-layout input[type="radio"]:checked { border-color: var(--primary) !important; }

/* ====== 22. 时间段切换器 ====== */
body.has-layout .period-switch {
  border-radius: 8px !important; overflow: hidden !important; border-color: #E2E8F0 !important;
}
body.has-layout .period-btn {
  padding: 6px 16px !important; font-size: 13px !important; transition: all .15s !important;
}
body.has-layout .period-btn.active {
  background: linear-gradient(135deg,#3B82F6,#2563EB) !important;
  box-shadow: 0 2px 6px rgba(37,99,235,0.25) !important;
}

/* ====== 23. 待办组/上传区/通用区块 ====== */
body.has-layout .todo-group {
  padding: 18px 20px !important; margin-bottom: 16px !important;
}
body.has-layout .todo-group-head {
  font-size: 15px !important; font-weight: 600 !important;
  color: #1E293B !important; margin-bottom: 14px !important;
}
body.has-layout .todo-item .todo-num {
  font-size: 24px !important; font-weight: 700 !important; color: #0F172A !important;
}
body.has-layout .todo-item .todo-label { font-size: 12.5px !important; color: #64748B !important; }
body.has-layout .upload-area {
  border: 2px dashed #CBD5E1 !important; border-radius: 12px !important;
  transition: all .18s !important;
}
body.has-layout .upload-area:hover,
body.has-layout .upload-area.dragover {
  border-color: var(--primary) !important;
  background: rgba(37,99,235,0.04) !important;
}
body.has-layout .inline-editor {
  background: linear-gradient(135deg,rgba(37,99,235,0.06),rgba(37,99,235,0.02)) !important;
  border: 1px solid rgba(37,99,235,0.2) !important; border-radius: 10px !important;
  padding: 14px 16px !important;
}

/* ====== 24. 表单 ====== */
body.has-layout .form-group { margin-bottom: 18px !important; }
body.has-layout .form-group label {
  font-size: 13.5px !important; font-weight: 500 !important;
  color: #334155 !important; margin-bottom: 8px !important;
}
body.has-layout .ms-form-row { gap: 18px !important; margin-bottom: 18px !important; }

/* ====== 25. Toast 提示 ====== */
body.has-layout .toast-item,
body.has-layout .synchro-toast {
  border-radius: 10px !important;
  box-shadow: 0 8px 24px rgba(15,23,42,0.16) !important;
  font-size: 13.5px !important;
}

/* ====== 26. 滚动条美化 ====== */
body.has-layout ::-webkit-scrollbar { width: 8px !important; height: 8px !important; }
body.has-layout ::-webkit-scrollbar-track { background: transparent !important; }
body.has-layout ::-webkit-scrollbar-thumb {
  background: #CBD5E1 !important; border-radius: 4px !important;
}
body.has-layout ::-webkit-scrollbar-thumb:hover { background: #94A3B8 !important; }

/* ====== 27. 文字三级色阶 ====== */
body.has-layout .text-muted,
body.has-layout .ms-empty-hint { color: #94A3B8 !important; }
body.has-layout .text-secondary { color: #475569 !important; }

/* ====== 28. 网格间距统一 ====== */
body.has-layout .ms-cols { gap: 18px !important; }
body.has-layout .quick-grid { gap: 14px !important; }
body.has-layout .platform-grid { gap: 14px !important; }

/* ====== 29. 表格容器圆角修复 ====== */
body.has-layout .ms-panel .ms-table-wrap,
body.has-layout .cb2-panel .ms-table-wrap,
body.has-layout .cb2-panel { border-radius: 12px !important; }
body.has-layout .ms-table-wrap { border-radius: 0 0 12px 12px !important; }

/* ====== 30. badge 徽章 ====== */
body.has-layout .badge {
  background: #FEF3C7 !important; color: #92400E !important;
  border: 1px solid #FDE68A !important;
  border-radius: 5px !important; font-size: 11px !important;
  padding: 1px 6px !important; font-weight: 600 !important;
}
body.has-layout .ms-nav-badge {
  border-radius: 8px !important; font-size: 11px !important;
}

/* ########################################################################
   # [UI REDESIGN v2.1] 结束
   # 顶部导航栏 .ms-header 全程未覆盖，保持原始结构/位置/样式
   ######################################################################## */


/* ########################################################################
   # [UI REDESIGN v2.1-PATCH] 补充覆盖：按钮变体/订单标识/任务进度等遗漏项
   ######################################################################## */

/* 危险描边按钮：浅红描边风格（列表内删除用，不抢眼） */
body.has-layout .ms-btn-danger-outline {
  background: linear-gradient(180deg,#fff,#FEF2F2) !important;
  border: 1px solid #FECACA !important;
  color: #DC2626 !important;
  box-shadow: 0 1px 2px rgba(220,38,38,0.06), inset 0 1px 0 rgba(255,255,255,1) !important;
}
body.has-layout .ms-btn-danger-outline:hover {
  background: linear-gradient(135deg,#F87171,#EF4444) !important;
  border-color: transparent !important;
  color: #fff !important;
  box-shadow: 0 2px 8px rgba(239,68,68,0.28) !important;
}
body.has-layout .ms-btn-lg { height: 38px !important; padding: 0 20px !important; border-radius: 9px !important; font-size: 14px !important; }
body.has-layout .ms-btn-group .ms-btn { border-radius: 0 !important; }
body.has-layout .ms-btn-group .ms-btn:first-child { border-radius: 8px 0 0 8px !important; }
body.has-layout .ms-btn-group .ms-btn:last-child { border-radius: 0 8px 8px 0 !important; }

/* 订单首字母彩色图标统一为中性灰（消除随机彩色噪音） */
body.has-layout .order-shop-icon,
body.has-layout .biz-tag {
  background: #F1F5F9 !important;
  color: #64748B !important;
  border-radius: 8px !important;
  font-weight: 600 !important;
}

/* 倒计时分级预警（不足24h红/不足48h橙）——通过内联class匹配 */
body.has-layout .time-urgent,
body.has-layout .countdown-danger {
  color: #DC2626 !important; font-weight: 600 !important;
}
body.has-layout .time-warning,
body.has-layout .countdown-warn {
  color: #D97706 !important; font-weight: 600 !important;
}

/* 任务进度条（数据管理页） */
body.has-layout .task-progress {
  height: 8px !important; background: #F1F5F9 !important;
  border-radius: 4px !important; overflow: hidden !important;
}
body.has-layout .task-progress-bar {
  height: 100% !important;
  background: linear-gradient(90deg,#3B82F6,#2563EB) !important;
  border-radius: 4px !important;
}
body.has-layout .progress-text { font-size: 12px !important; color: #64748B !important; }

/* 定价试算器：核心售价放大加粗 */
body.has-layout .calc-result-price,
body.has-layout .result-price {
  font-size: 26px !important; font-weight: 700 !important;
  color: var(--primary) !important; letter-spacing: -0.3px !important;
}

/* 开关/switch 统一 */
body.has-layout .ms-switch {
  border-radius: 12px !important;
}

/* 工具提示 */
body.has-layout .ms-tooltip {
  background: rgba(15,23,42,0.92) !important;
  backdrop-filter: blur(6px) !important;
  border-radius: 6px !important;
  font-size: 12px !important;
  padding: 6px 10px !important;
  box-shadow: 0 4px 12px rgba(15,23,42,0.2) !important;
}

/* 标签页内容面板 */
body.has-layout .tab-panel,
body.has-layout .tab-pane {
  animation: v21FadeIn .22s ease !important;
}
@keyframes v21FadeIn {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}

/* 面包屑容器（若模板中存在） */
body.has-layout .ms-breadcrumb {
  display: flex !important; align-items: center !important; gap: 6px !important;
  font-size: 12.5px !important; color: #94A3B8 !important; margin-bottom: 12px !important;
}
body.has-layout .ms-breadcrumb a { color: #94A3B8 !important; text-decoration: none !important; }
body.has-layout .ms-breadcrumb a:hover { color: var(--primary) !important; }
body.has-layout .ms-breadcrumb .sep { color: #CBD5E1 !important; }

/* 页面副标题 */
body.has-layout .ms-page-sub {
  font-size: 13px !important; color: #64748B !important; margin-top: 4px !important;
}
body.has-layout .ms-page-head {
  display: flex !important; align-items: flex-end !important;
  justify-content: space-between !important; flex-wrap: wrap !important; gap: 12px !important;
}

/* 文本工具类 */
body.has-layout .text-primary { color: var(--primary) !important; }
body.has-layout .text-success { color: #059669 !important; }
body.has-layout .text-warning { color: #D97706 !important; }
body.has-layout .text-danger { color: #DC2626 !important; }

/* 表格内操作列按钮弱化：文字按钮风格 */
body.has-layout .data-table .btn-sm.btn-default,
body.has-layout .cb-table .btn-sm.btn-default {
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none !important;
  color: var(--primary) !important;
  padding: 4px 8px !important;
}
body.has-layout .data-table .btn-sm.btn-default:hover,
body.has-layout .cb-table .btn-sm.btn-default:hover {
  background: rgba(37,99,235,0.07) !important;
  border-color: transparent !important;
}

/* 分割线 */
body.has-layout hr,
body.has-layout .ms-divider {
  border: none !important;
  border-top: 1px solid #F1F5F9 !important;
  margin: 16px 0 !important;
}

/* 描述列表 */
body.has-layout .ms-desc-list {
  display: grid !important; gap: 12px !important;
}
body.has-layout .ms-desc-item { font-size: 13.5px !important; }
body.has-layout .ms-desc-item .label { color: #94A3B8 !important; margin-right: 8px !important; }
body.has-layout .ms-desc-item .value { color: #1E293B !important; font-weight: 500 !important; }

/* [UI REDESIGN v2.1-PATCH] 结束 */


/* ########################################################################
   # [UI REDESIGN v2.1-PATCH-C] 采集箱内联样式精确对齐（改动标记）
   # 解决：内嵌筛选控件双边框/行高/批量菜单/排序箭头等细节
   ######################################################################## */

/* 内嵌式筛选控件：外层.cb-filter-item已有边框，内层input必须无边框，避免双重边框 */
body.has-layout .cb-filter-item > .cb-filter-ctrl,
body.has-layout .cb-filter-range .cb-filter-ctrl,
body.has-layout .cb-filter-dual .cb-filter-ctrl {
  border: none !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  background: transparent !important;
  padding: 0 !important;
  height: auto !important;
  font-size: 13.5px !important;
  color: #1E293B !important;
}
body.has-layout .cb-filter-item > .cb-filter-ctrl:focus,
body.has-layout .cb-filter-range .cb-filter-ctrl:focus,
body.has-layout .cb-filter-dual .cb-filter-ctrl:focus {
  box-shadow: none !important;
  border: none !important;
}
body.has-layout .cb-filter-item > .cb-filter-ctrl::placeholder { color: #94A3B8 !important; }
body.has-layout select.cb-filter-ctrl { padding-right: 18px !important; }
body.has-layout input[type="date"].cb-filter-ctrl { color: #1E293B !important; }

/* 筛选容器内嵌label式筛选条：统一高度/圆角/聚焦 */
body.has-layout .cb-filter-item {
  min-height: 36px !important;
  padding: 6px 12px !important;
  border-radius: 8px !important;
  border: 1px solid #E2E8F0 !important;
  background: rgba(255,255,255,0.96) !important;
}
body.has-layout .cb-filter-item:focus-within {
  border-color: var(--primary) !important;
  box-shadow: 0 0 0 3px rgba(37,99,235,0.10) !important;
}
body.has-layout .cb-filter-label {
  font-size: 13px !important;
  color: #475569 !important;
}
body.has-layout .cb-filter-tilde { color: #CBD5E1 !important; }

/* 筛选折叠/列表设置/表头链接等文字控件统一 */
body.has-layout .cb-filter-toggle,
body.has-layout .cb-header-link {
  color: var(--primary) !important;
  font-size: 13px !important;
  border-radius: 6px !important;
  padding: 4px 8px !important;
  transition: background .15s !important;
}
body.has-layout .cb-filter-toggle:hover,
body.has-layout .cb-header-link:hover {
  background: rgba(37,99,235,0.07) !important;
  text-decoration: none !important;
}
body.has-layout .cb-list-setting-btn {
  color: #64748B !important;
  border-radius: 6px !important;
  font-size: 13px !important;
  transition: all .15s !important;
}
body.has-layout .cb-list-setting-btn:hover {
  color: var(--primary) !important;
  background: rgba(37,99,235,0.07) !important;
}
body.has-layout .cb-retain-tip { color: #94A3B8 !important; font-size: 12.5px !important; }

/* 排序箭头 */
body.has-layout .cb-sort-arrow { color: #CBD5E1 !important; font-size: 11px !important; }
body.has-layout .cb-sort-arrow.cb-sort-active { color: var(--primary) !important; }
body.has-layout .cb-th-sortable:hover { color: var(--primary) !important; }

/* 采集箱表格行高：缩略图56px → 行高72px（原88px过空） */
body.has-layout #productTable tbody tr { height: 72px !important; }
body.has-layout #productTable thead th {
  height: auto !important;
  background: linear-gradient(180deg,#F8FAFC,#F1F5F9) !important;
  color: #475569 !important;
  font-weight: 600 !important;
}

/* 批量编辑下拉菜单细节 */
body.has-layout .cb-batch-item {
  border-radius: 6px !important;
  margin: 0 4px !important;
  padding: 7px 10px !important;
  font-size: 13px !important;
  color: #475569 !important;
  transition: all .12s !important;
}
body.has-layout .cb-batch-item:hover {
  background: rgba(37,99,235,0.08) !important;
  color: var(--primary) !important;
}
body.has-layout .cb-batch-grid { gap: 12px !important; }
body.has-layout .cb-batch-edit-menu {
  background: rgba(255,255,255,0.98) !important;
  backdrop-filter: blur(12px) !important;
  border: 1px solid rgba(226,232,240,0.8) !important;
  border-radius: 12px !important;
  box-shadow: 0 12px 32px rgba(15,23,42,0.14) !important;
  padding: 8px !important;
}
body.has-layout .cb-batch-group-title,
body.has-layout .cb-menu-group-title {
  font-size: 11px !important;
  color: #94A3B8 !important;
  font-weight: 700 !important;
  letter-spacing: .5px !important;
}
body.has-layout .cb-menu-divider {
  border-top: 1px solid #F1F5F9 !important;
  margin: 6px 0 !important;
}
body.has-layout .cb-menu-disabled { color: #CBD5E1 !important; }

/* 筛选状态条 */
body.has-layout .cb-stat-bar { margin: 10px 0 8px !important; gap: 12px !important; }

/* 采集箱筛选卡片padding（覆盖元素内联style） */
body.has-layout .cb-filter-card { padding: 16px 18px 10px !important; }

/* 双下拉级联容器间距 */
body.has-layout .cb-filter-dual { gap: 8px !important; }
body.has-layout .cb-filter-range { gap: 8px !important; }

/* [UI REDESIGN v2.1-PATCH-C] 结束 */


/* ########################################################################
   # [UI REDESIGN v2.1-PATCH-D] 类Excel视图/弹层/特殊控件对齐（改动标记）
   ######################################################################## */

/* 类Excel紧凑编辑表格：恢复紧凑密度（不被通用12px padding覆盖） */
body.has-layout .cb-table th {
  padding: 8px 8px !important;
  font-size: 12px !important;
  background: linear-gradient(180deg,#F8FAFC,#F1F5F9) !important;
  color: #475569 !important;
  font-weight: 600 !important;
  border-bottom: 2px solid #E2E8F0 !important;
  position: sticky !important;
  top: 0 !important;
  z-index: 2 !important;
}
body.has-layout .cb-table td {
  padding: 4px 6px !important;
  font-size: 12.5px !important;
  border-bottom: 1px solid #F1F5F9 !important;
}
body.has-layout .cb-table tr:hover td { background: rgba(37,99,235,0.04) !important; }
body.has-layout .cb-table tr.cb-row-published td { background: #F0FDF4 !important; }
body.has-layout .cb-table tr.cb-row-published:hover td { background: #DCFCE7 !important; }
body.has-layout .cb-table tr.cb-row-dirty td { background: #FFFBEB !important; }
body.has-layout .cb-table-wrap {
  border: 1px solid #E2E8F0 !important;
  border-radius: 10px !important;
  background: #fff !important;
  overflow: hidden auto !important;
  box-shadow: 0 1px 3px rgba(15,23,42,0.04) !important;
}
body.has-layout .cb-table-input {
  border-radius: 6px !important;
  font-size: 12.5px !important;
}
body.has-layout .cb-table-input:focus {
  border-color: var(--primary) !important;
  box-shadow: 0 0 0 2px rgba(37,99,235,0.1) !important;
}
body.has-layout .cb-table-input.cb-dirty,
body.has-layout .cb-table-textarea-cell.cb-dirty {
  background: #FEF3C7 !important;
  border-color: #F59E0B !important;
}
body.has-layout .cb-table-thumb {
  border-radius: 6px !important;
  border: 1px solid #F1F5F9 !important;
}
body.has-layout .cb-table-num {
  text-align: right !important;
  font-variant-numeric: tabular-nums !important;
}

/* 视图切换器（列表/Excel） */
body.has-layout .cb-view-switch {
  border: 1px solid #E2E8F0 !important;
  border-radius: 8px !important;
  overflow: hidden !important;
  background: #fff !important;
}
body.has-layout .cb-view-switch button {
  background: transparent !important;
  color: #64748B !important;
  font-size: 12.5px !important;
  padding: 6px 14px !important;
  transition: all .15s !important;
}
body.has-layout .cb-view-switch button:hover:not(.active) { color: var(--primary) !important; background: rgba(37,99,235,0.05) !important; }
body.has-layout .cb-view-switch button.active {
  background: linear-gradient(135deg,#3B82F6,#2563EB) !important;
  color: #fff !important;
}

/* 未保存保存按钮绿色态保留 */
body.has-layout .cb-save-dirty {
  background: linear-gradient(135deg,#34D399,#059669) !important;
  border-color: transparent !important;
  color: #fff !important;
  box-shadow: 0 2px 6px rgba(5,150,105,0.25) !important;
}

/* 类目/列值/描述编辑等浮层统一磨砂弹层 */
body.has-layout .cat-dropdown,
body.has-layout .cb-col-dropdown,
body.has-layout .d-cat-result {
  background: rgba(255,255,255,0.98) !important;
  backdrop-filter: blur(12px) !important;
  border: 1px solid #E2E8F0 !important;
  border-radius: 10px !important;
  box-shadow: 0 8px 24px rgba(15,23,42,0.12) !important;
  overflow: hidden auto !important;
}
body.has-layout .cat-dropdown-item,
body.has-layout .cb-col-dropdown-item,
body.has-layout .d-cat-result .d-cat-row {
  border-bottom: 1px solid #F8FAFC !important;
  font-size: 12.5px !important;
  transition: background .12s !important;
}
body.has-layout .cat-dropdown-item:hover,
body.has-layout .cat-dropdown-item.active,
body.has-layout .cb-col-dropdown-item:hover,
body.has-layout .d-cat-result .d-cat-row:hover {
  background: rgba(37,99,235,0.07) !important;
}
body.has-layout .cat-dropdown-empty,
body.has-layout .cb-col-dropdown-empty { color: #94A3B8 !important; }
body.has-layout .cb-desc-editor {
  background: rgba(255,255,255,0.98) !important;
  backdrop-filter: blur(12px) !important;
  border: 1px solid #E2E8F0 !important;
  border-radius: 12px !important;
  box-shadow: 0 12px 32px rgba(15,23,42,0.16) !important;
}
body.has-layout .cb-desc-editor textarea {
  border: 1px solid #E2E8F0 !important;
  border-radius: 8px !important;
}
body.has-layout .cb-desc-editor textarea:focus {
  border-color: var(--primary) !important;
  box-shadow: 0 0 0 3px rgba(37,99,235,0.1) !important;
}
body.has-layout .cb-desc-editor .cb-desc-ops button {
  border-radius: 7px !important;
  border: 1px solid #E2E8F0 !important;
  background: linear-gradient(180deg,#fff,#F8FAFC) !important;
  color: #475569 !important;
  transition: all .15s !important;
}
body.has-layout .cb-desc-editor .cb-desc-ops button:hover { border-color: var(--primary) !important; color: var(--primary) !important; }
body.has-layout .cb-desc-editor .cb-desc-ops button.primary {
  background: linear-gradient(135deg,#3B82F6,#2563EB) !important;
  border-color: transparent !important; color: #fff !important;
}

/* 查找替换字段标签 */
body.has-layout .fr-field-tag {
  border: 1px solid #E2E8F0 !important;
  border-radius: 6px !important;
  font-size: 12px !important;
  background: #fff !important;
  transition: all .15s !important;
}
body.has-layout .fr-field-tag:hover { border-color: var(--primary) !important; color: var(--primary) !important; }
body.has-layout .fr-field-tag.active {
  background: linear-gradient(135deg,#3B82F6,#2563EB) !important;
  border-color: transparent !important; color: #fff !important;
}

/* 详情编辑图片缩略 */
body.has-layout .d-img-item {
  border: 1px solid #F1F5F9 !important;
  border-radius: 8px !important;
  overflow: hidden !important;
}

/* 产品信息列文字层级 */
body.has-layout .prod-info-title { font-weight: 500 !important; color: #1E293B !important; line-height: 1.4 !important; }
body.has-layout .prod-info-sub { font-size: 12px !important; color: #94A3B8 !important; }
body.has-layout .col-claim-time { font-size: 12px !important; color: #64748B !important; }

/* [UI REDESIGN v2.1-PATCH-D] 结束 */


/* ########################################################################
   # [UI REDESIGN v2.1-PATCH-E] 工具页/会员页/运营中心旧类名 + 独立编辑页（改动标记）
   ######################################################################## */

/* ===== A. 处理面板/生成任务页（_process_panel / index） ===== */
body.has-layout .gen-type-btn {
  border: 1.5px solid #E2E8F0 !important;
  border-radius: 10px !important;
  background: rgba(255,255,255,0.9) !important;
  transition: all .18s !important;
}
body.has-layout .gen-type-btn:hover {
  border-color: var(--primary) !important;
  background: rgba(37,99,235,0.04) !important;
}
body.has-layout .gen-type-btn.active {
  border-color: transparent !important;
  background: linear-gradient(135deg,#3B82F6,#2563EB) !important;
  color: #fff !important;
  box-shadow: 0 4px 12px rgba(37,99,235,0.25) !important;
}
body.has-layout .gen-type-desc { color: #94A3B8 !important; }
body.has-layout .gen-type-btn.active .gen-type-desc { color: rgba(255,255,255,0.85) !important; }
body.has-layout .param-input,
body.has-layout .price-range-input,
body.has-layout .price-value-input,
body.has-layout .price-type-select,
body.has-layout .filter-search,
body.has-layout .filter-select {
  border: 1px solid #E2E8F0 !important;
  border-radius: 8px !important;
  background: rgba(255,255,255,0.96) !important;
  color: #1E293B !important;
  transition: all .18s !important;
}
body.has-layout .param-input:focus,
body.has-layout .price-range-input:focus,
body.has-layout .price-value-input:focus,
body.has-layout .filter-search:focus {
  outline: none !important;
  border-color: var(--primary) !important;
  box-shadow: 0 0 0 3px rgba(37,99,235,0.10) !important;
}
body.has-layout .param-group label,
body.has-layout .price-cond-label { color: #475569 !important; }
body.has-layout .price-cond {
  border: 1px solid #F1F5F9 !important;
  border-radius: 10px !important;
  background: rgba(248,250,252,0.6) !important;
}
body.has-layout .price-sep,
body.has-layout .price-unit { color: #94A3B8 !important; }
body.has-layout .file-toolbar {
  padding: 12px 18px !important;
  border-bottom: 1px solid #F1F5F9 !important;
}
body.has-layout .file-pagination {
  padding: 12px 18px !important;
  border-top: 1px solid #F1F5F9 !important;
}
body.has-layout .pagination-info { color: #64748B !important; font-size: 13px !important; }
body.has-layout .page-size-select {
  border: 1px solid #E2E8F0 !important; border-radius: 7px !important; height: 32px !important;
}
body.has-layout .unclassified-list {
  border: 1px solid #F1F5F9 !important; border-radius: 10px !important;
}

/* ===== B. 运营中心 operation_center ===== */
body.has-layout .tab-nav {
  border-bottom: 2px solid #F1F5F9 !important; gap: 0 !important; margin-bottom: 18px !important;
}
body.has-layout .tab-nav .tab-btn {
  padding: 10px 18px !important; font-size: 13.5px !important;
  border-radius: 8px 8px 0 0 !important; color: #64748B !important;
}
body.has-layout .tab-nav .tab-btn.active {
  color: var(--primary) !important; border-bottom-color: var(--primary) !important;
  background: rgba(37,99,235,0.04) !important;
}
body.has-layout .stat-card { background: rgba(255,255,255,0.92) !important; border-radius: 12px !important; }
body.has-layout .stat-value { color: var(--primary) !important; }
body.has-layout .stat-label { color: #64748B !important; }
body.has-layout .toolbar .input {
  border: 1px solid #E2E8F0 !important; border-radius: 8px !important; height: 36px !important; padding: 0 12px !important;
}
body.has-layout .tool-card {
  background: rgba(255,255,255,0.92) !important;
  border: 1px solid rgba(226,232,240,0.8) !important;
  border-radius: 12px !important;
  box-shadow: 0 1px 3px rgba(15,23,42,0.04) !important;
  transition: all .2s !important;
}
body.has-layout .tool-card:hover {
  border-color: rgba(37,99,235,0.4) !important;
  box-shadow: 0 6px 18px rgba(37,99,235,0.10) !important;
  transform: translateY(-2px) !important;
}
body.has-layout .tool-card h4 { color: var(--primary) !important; }
body.has-layout .tool-card p { color: #64748B !important; }
body.has-layout .page-desc { color: #64748B !important; }

/* 旧版 badge 语义色统一 */
body.has-layout .badge-success { background: #ECFDF5 !important; color: #059669 !important; }
body.has-layout .badge-warning { background: #FFFBEB !important; color: #D97706 !important; }
body.has-layout .badge-danger { background: #FEF2F2 !important; color: #DC2626 !important; }
body.has-layout .badge-info { background: #F0F9FF !important; color: #0284C7 !important; }
body.has-layout .badge { border-radius: 6px !important; padding: 3px 9px !important; font-weight: 500 !important; }

/* ===== C. 会员管理 member_manage ===== */
body.has-layout .stat-cards { gap: 16px !important; }
body.has-layout .stat-card {
  border-left: 3px solid var(--primary) !important;
  box-shadow: 0 1px 3px rgba(15,23,42,0.05), 0 4px 12px rgba(15,23,42,0.03), inset 0 1px 0 rgba(255,255,255,0.9) !important;
}
body.has-layout .stat-card.card-active { border-left-color: #10B981 !important; }
body.has-layout .stat-card.card-expiring { border-left-color: #F59E0B !important; }
body.has-layout .stat-card.card-expired { border-left-color: #EF4444 !important; }
body.has-layout .stat-card.card-unactivated { border-left-color: #94A3B8 !important; }
body.has-layout .stat-card.card-disabled { border-left-color: #8B5CF6 !important; }
body.has-layout .stat-card .stat-num { color: #0F172A !important; }
body.has-layout .stat-card .stat-label { color: #64748B !important; }
body.has-layout .mm-search {
  border: 1px solid #E2E8F0 !important; border-radius: 8px !important; height: 36px !important;
  background: rgba(255,255,255,0.96) !important;
}
body.has-layout .mm-search:focus-within {
  border-color: var(--primary) !important;
  box-shadow: 0 0 0 3px rgba(37,99,235,0.10) !important;
}
body.has-layout .mm-tabs { border-bottom: 2px solid #F1F5F9 !important; }
body.has-layout .mm-tab {
  font-size: 13.5px !important; padding: 10px 16px !important;
  border-radius: 8px 8px 0 0 !important; color: #64748B !important;
}
body.has-layout .mm-tab.active { color: var(--primary) !important; border-bottom-color: var(--primary) !important; }
body.has-layout .mm-status { border-radius: 6px !important; font-weight: 500 !important; padding: 3px 10px !important; }
body.has-layout .mm-status.super { background: #EFF6FF !important; color: var(--primary) !important; }
body.has-layout .mm-status.member { background: #ECFDF5 !important; color: #059669 !important; }
body.has-layout .mm-status.expiring { background: #FFFBEB !important; color: #D97706 !important; }
body.has-layout .mm-status.expired { background: #FEF2F2 !important; color: #DC2626 !important; }
body.has-layout .mm-status.unactivated { background: #F1F5F9 !important; color: #64748B !important; }
body.has-layout .mm-status.disabled { background: #F5F3FF !important; color: #7C3AED !important; }
body.has-layout .mm-pagination button {
  border: 1px solid #E2E8F0 !important; border-radius: 7px !important;
  background: linear-gradient(180deg,#fff,#F8FAFC) !important; color: #475569 !important;
  box-shadow: 0 1px 2px rgba(15,23,42,0.04) !important; transition: all .15s !important;
}
body.has-layout .mm-pagination button:hover:not(:disabled):not(.active) {
  border-color: var(--primary) !important; color: var(--primary) !important;
}
body.has-layout .mm-pagination button.active {
  background: linear-gradient(135deg,#3B82F6,#2563EB) !important;
  border-color: transparent !important; color: #fff !important;
}
body.has-layout .btn-icon {
  border: 1px solid #E2E8F0 !important; border-radius: 8px !important;
  background: linear-gradient(180deg,#fff,#F8FAFC) !important; color: #64748B !important;
  transition: all .15s !important;
}
body.has-layout .btn-icon:hover { border-color: var(--primary) !important; color: var(--primary) !important; }
body.has-layout .mm-table-footer { color: #64748B !important; border-top: 1px solid #F1F5F9 !important; }
body.has-layout .mm-empty { color: #94A3B8 !important; }

/* ===== D. 亚马逊转换/进度条 ===== */
body.has-layout .progress-bar-wrap {
  height: 8px !important; background: #F1F5F9 !important; border-radius: 4px !important; overflow: hidden !important;
}
body.has-layout .progress-bar {
  height: 100% !important;
  background: linear-gradient(90deg,#3B82F6,#2563EB) !important;
  border-radius: 4px !important;
}
body.has-layout .file-info { color: #64748B !important; font-size: 13px !important; }

/* ===== E. 帮助手册 manual ===== */
body.has-layout .manual-container { max-width: 960px !important; }
body.has-layout .manual-header {
  background: rgba(255,255,255,0.92) !important;
  backdrop-filter: blur(10px) !important;
  border: 1px solid rgba(255,255,255,0.85) !important;
  border-radius: 12px !important;
  box-shadow: 0 2px 8px rgba(15,23,42,0.05) !important;
}
body.has-layout .manual-section {
  background: rgba(255,255,255,0.92) !important;
  border: 1px solid rgba(255,255,255,0.85) !important;
  border-radius: 12px !important;
  box-shadow: 0 1px 3px rgba(15,23,42,0.04) !important;
  margin-bottom: 16px !important;
}
body.has-layout .manual-tip {
  background: #EFF6FF !important; border-left: 3px solid var(--primary) !important;
  border-radius: 0 8px 8px 0 !important;
}
body.has-layout .manual-warn {
  background: #FFFBEB !important; border-left: 3px solid #F59E0B !important;
  border-radius: 0 8px 8px 0 !important;
}
body.has-layout .manual-table { border-radius: 10px !important; overflow: hidden !important; }
body.has-layout .manual-faq-item {
  border: 1px solid #F1F5F9 !important; border-radius: 10px !important;
  margin-bottom: 10px !important; overflow: hidden !important;
}

/* ===== F. 管理员后台 feature 区 ===== */
body.has-layout .card-panel {
  background: rgba(255,255,255,0.92) !important;
  border: 1px solid rgba(255,255,255,0.85) !important;
  border-radius: 12px !important;
  box-shadow: 0 1px 3px rgba(15,23,42,0.04) !important;
}
body.has-layout .feature-checkbox { accent-color: var(--primary) !important; }
body.has-layout .feature-key-cell {
  font-family: ui-monospace, monospace !important;
  background: #F8FAFC !important; border-radius: 5px !important; padding: 2px 7px !important;
  font-size: 12px !important; color: #475569 !important;
}

/* ===== G. SKU查询等 table-wrap ===== */
body.has-layout .table-wrap {
  border: 1px solid #F1F5F9 !important; border-radius: 12px !important;
  overflow: hidden auto !important; background: #fff !important;
  box-shadow: 0 1px 3px rgba(15,23,42,0.04) !important;
}

/* ########################################################################
   # H. 独立全屏页 shein_item_edit（不继承base，无 has-layout 前缀）
   ######################################################################## */
.shein-edit-root .sidebar,
body.shein-edit-body .sidebar {
  border-right: 1px solid #EEF2F7 !important;
}
/* [UI REDESIGN v2.1-PATCH-E] 结束 */


/* ########################################################################
   # [UI REDESIGN v2.1-PATCH-F] 危险色口径修正（改动标记）
   # 规则：列表/操作栏内删除=浅红描边；仅二次确认弹窗=实心红
   ######################################################################## */

/* 操作栏/列表内的删除按钮：浅红描边，弱化视觉冲击 */
body.has-layout .cb-opbar > span .btn[onclick*="DeleteMenu"],
body.has-layout .cb-opbar button[onclick*="DeleteMenu"],
body.has-layout .cb-opbar .btn-danger:not(.ms-modal .btn-danger),
body.has-layout .batch-bar .ms-btn-danger,
body.has-layout .ms-action-bar .ms-btn-danger {
  background: linear-gradient(180deg,#fff,#FEF2F2) !important;
  border: 1px solid #FECACA !important;
  color: #DC2626 !important;
  box-shadow: 0 1px 2px rgba(220,38,38,0.06), inset 0 1px 0 rgba(255,255,255,1) !important;
}
body.has-layout .cb-opbar > span .btn[onclick*="DeleteMenu"]:hover,
body.has-layout .cb-opbar button[onclick*="DeleteMenu"]:hover,
body.has-layout .batch-bar .ms-btn-danger:hover,
body.has-layout .ms-action-bar .ms-btn-danger:hover {
  background: linear-gradient(180deg,#FEF2F2,#FEE2E2) !important;
  border-color: #F87171 !important;
  color: #B91C1C !important;
  box-shadow: 0 2px 8px rgba(220,38,38,0.12) !important;
}

/* 表格行内文字删除链接：浅红文字 */
body.has-layout .data-table .link-btn.danger,
body.has-layout .cb-table .link-btn.danger {
  background: transparent !important;
  color: #DC2626 !important;
  box-shadow: none !important;
}
body.has-layout .data-table .link-btn.danger:hover,
body.has-layout .cb-table .link-btn.danger:hover {
  background: rgba(220,38,38,0.07) !important;
  color: #B91C1C !important;
}

/* 仅模态框内的危险确认按钮保持实心红（强确认） */
body.has-layout .ms-modal .ms-btn-danger,
body.has-layout .ms-modal__footer .ms-btn-danger,
body.has-layout .modal-box .btn-danger,
body.has-layout .popconfirm-pop .ms-btn-danger {
  background: linear-gradient(135deg,#F87171,#EF4444) !important;
  border: 1px solid transparent !important;
  color: #fff !important;
  box-shadow: 0 2px 6px rgba(239,68,68,0.25) !important;
}
body.has-layout .ms-modal .ms-btn-danger:hover,
body.has-layout .modal-box .btn-danger:hover {
  background: linear-gradient(135deg,#EF4444,#DC2626) !important;
  box-shadow: 0 4px 14px rgba(239,68,68,0.35) !important;
}

/* [UI REDESIGN v2.1-PATCH-F] 结束 */


/* ============================================================
   [UI REDESIGN v2.1 PATCH G — 20260901 用户反馈4项修复]
   ============================================================ */
/* 修复(1) 永久隐藏「插件有新版本」更新提示条：保留 HTML 与版本检测 JS 逻辑，仅不显示，可随时恢复 */
body.has-layout #pluginUpdateBanner{display:none !important;}

/* 修复(3) 采集箱「批量编辑」多列下拉浮层：锁定绝对定位/限高滚动/双列网格，杜绝错位、撑高、越界铺满页面 */
body.has-layout #batchEditMenu.cb-dropdown-menu,
body.has-layout .cb-batch-edit-menu{
  position:absolute !important;
  top:calc(100% + 4px) !important;
  left:0 !important;
  min-width:520px !important;
  width:max-content !important;
  max-width:min(560px,92vw) !important;
  max-height:520px !important;
  overflow-x:hidden !important;
  overflow-y:auto !important;
  z-index:300 !important;
  box-sizing:border-box !important;
}
body.has-layout #batchEditMenu .cb-batch-grid,
body.has-layout .cb-batch-edit-menu .cb-batch-grid{
  display:grid !important;
  grid-template-columns:repeat(2,minmax(220px,1fr)) !important;
  gap:12px 16px !important;
  width:100% !important;
  box-sizing:border-box !important;
}
body.has-layout #batchEditMenu .cb-batch-group,
body.has-layout .cb-batch-edit-menu .cb-batch-group{
  display:flex !important;
  flex-direction:column !important;
  min-width:0 !important;
}
body.has-layout #batchEditMenu .cb-batch-item,
body.has-layout .cb-batch-edit-menu .cb-batch-item{
  display:block !important;
  width:auto !important;
  white-space:nowrap !important;
  box-sizing:border-box !important;
}
/* 操作栏其余普通下拉（认领/更多/删除/导入导出）统一限高，项过多时内部滚动而非铺满页面 */
body.has-layout .cb-opbar .cb-dropdown-menu:not(.cb-batch-edit-menu){
  position:absolute !important;
  min-width:150px !important;
  max-height:420px !important;
  overflow-y:auto !important;
  z-index:300 !important;
}
/* ===== END PATCH G ===== */


/* ============================================================
   [UI REDESIGN v2.1 PATCH H — 20260901 需求2(下拉层级)+需求4(标题两行)]
   ============================================================ */
/* 需求2：公共采集箱操作栏下拉浮层与状态Tab/表格列头重叠 —— 提升操作栏整体层级，下拉高z-index+纯白不透明背景 */
body.has-layout .cb-opbar{
  position:relative !important;
  z-index:30 !important;
}
body.has-layout .cb-opbar .cb-dropdown-menu{
  z-index:600 !important;
  background:#ffffff !important;
  background-clip:padding-box !important;
}
/* 状态Tab/表格表头降低层级，避免盖住操作栏下拉 */
body.has-layout .cb-stat-bar,
body.has-layout .prod-claim-tabs{
  position:relative !important;
  z-index:5 !important;
}
body.has-layout .cb-table th,
body.has-layout .data-table thead th{
  z-index:3 !important;
}

/* 需求4：产品信息列标题允许2行显示，不再单行截断 */
body.has-layout .prod-info-title{
  display:-webkit-box !important;
  -webkit-line-clamp:2 !important;
  -webkit-box-orient:vertical !important;
  overflow:hidden !important;
  word-break:break-word !important;
  white-space:normal !important;
  max-width:100% !important;
  line-height:1.4 !important;
}
body.has-layout .prod-info-text{
  min-width:0 !important;
  flex:1 !important;
}
body.has-layout .prod-info-wrap{
  align-items:flex-start !important;
}
/* 公共采集箱/订单等通用产品标题两行 */
body.has-layout .prod-title-text{
  display:-webkit-box !important;
  -webkit-line-clamp:2 !important;
  -webkit-box-orient:vertical !important;
  overflow:hidden !important;
  word-break:break-word !important;
  white-space:normal !important;
  line-height:1.4 !important;
}
/* ===== END PATCH H ===== */


/* ============================================================
   [UI REDESIGN v2.1 PATCH K — 20260901 删除下拉不透明白底+层级修复 & 删除选项字体颜色优化]
   ============================================================ */
/* 1. 操作栏整体提升层级，确保下拉不被状态Tab/表格遮挡 */
body.has-layout .cb-opbar{
  position:relative !important;
  z-index:100 !important;
}
/* 2. 操作栏下拉：强制不透明白底，去掉半透明rgba和backdrop-filter */
body.has-layout .cb-opbar .cb-dropdown-menu{
  position:absolute !important;
  top:calc(100% + 4px) !important;
  left:0 !important;
  z-index:999 !important;
  background:#ffffff !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
  border:1px solid #E2E8F0 !important;
  border-radius:10px !important;
  box-shadow:0 8px 24px rgba(15,23,42,0.15),0 2px 6px rgba(15,23,42,0.08) !important;
  padding:6px 0 !important;
  min-width:180px !important;
  max-height:420px !important;
  overflow-y:auto !important;
  overflow-x:hidden !important;
}
/* 3. 下拉选项：普通深灰文字，不再全红刺眼 */
body.has-layout .cb-opbar .cb-dropdown-menu .cb-menu-item{
  display:block !important;
  padding:8px 16px !important;
  font-size:13px !important;
  color:#334155 !important;
  text-decoration:none !important;
  border-radius:0 !important;
  margin:0 !important;
  transition:background .12s,color .12s !important;
  white-space:nowrap !important;
}
body.has-layout .cb-opbar .cb-dropdown-menu .cb-menu-item:hover{
  background:#F1F5F9 !important;
  color:#1E293B !important;
}
/* 4. 删除类选项：深灰基础色，hover时浅红底+深红，保留危险语义但不刺眼 */
body.has-layout .cb-opbar .cb-dropdown-menu .cb-menu-item.cb-menu-danger{
  color:#334155 !important;
}
body.has-layout .cb-opbar .cb-dropdown-menu .cb-menu-item.cb-menu-danger:hover{
  background:#FEF2F2 !important;
  color:#DC2626 !important;
}
/* 5. 状态Tab/表格表头降低层级，确保不盖住下拉 */
body.has-layout .cb-stat-bar,
body.has-layout .prod-claim-tabs,
body.has-layout .cb2-seg{
  position:relative !important;
  z-index:5 !important;
}
body.has-layout .cb-table th,
body.has-layout .data-table thead th{
  z-index:3 !important;
}
/* ===== END PATCH K ===== */


/* ============================================================
   [UI REDESIGN v2.1 PATCH L — 20260901 发布记录页面9项优化样式]
   ============================================================ */
/* P2-7: 筛选栏快捷日期按钮 */
body.has-layout .pub-query-form{
  display:flex !important; flex-wrap:wrap !important; gap:12px !important;
  align-items:flex-end !important;
}
body.has-layout .pub-quick-dates{
  display:flex !important; gap:6px !important; align-items:center !important;
  padding-bottom:2px !important;
}
body.has-layout .pub-quick-date{
  padding:4px 10px !important; font-size:12px !important;
  border:1px solid #E2E8F0 !important; border-radius:6px !important;
  background:#fff !important; color:#64748B !important; cursor:pointer !important;
  transition:all .12s !important;
}
body.has-layout .pub-quick-date:hover{
  border-color:#2563EB !important; color:#2563EB !important; background:#EFF6FF !important;
}

/* P1-6: 状态Tab失败红色徽章 */
body.has-layout .tab-count-danger{
  background:#FEF2F2 !important; color:#DC2626 !important;
  border-radius:10px !important; padding:1px 7px !important; font-size:11px !important;
}
body.has-layout .pub-batch-resend-all{
  margin-left:auto !important;
}

/* P0-2: 批量操作栏 */
body.has-layout .pub-batch-bar{
  display:flex !important; align-items:center !important; gap:10px !important;
  padding:8px 16px !important; margin-bottom:10px !important;
  background:linear-gradient(135deg,#EFF6FF,#DBEAFE) !important;
  border:1px solid #BFDBFE !important; border-radius:8px !important;
}
body.has-layout .pub-selected-info{font-size:13px !important; color:#1E40AF !important;}
body.has-layout .pub-selected-info strong{color:#2563EB !important;}

/* P0-2: 表格复选框 */
body.has-layout .pub-data-table th:first-child,
body.has-layout .pub-data-table td:first-child{
  text-align:center !important; padding:0 8px !important;
}
body.has-layout .pub-row-check, body.has-layout #pubCheckAll{
  width:16px !important; height:16px !important; cursor:pointer !important;
  accent-color:#2563EB !important;
}

/* P2-8: 表格斑马纹 */
body.has-layout .pub-data-table tbody tr:nth-child(even){
  background:#F8FAFC !important;
}
body.has-layout .pub-data-table tbody tr:hover{
  background:#EFF6FF !important;
}

/* P2-9: 店铺列平台图标 */
body.has-layout .pub-shop-cell{
  display:flex !important; align-items:center !important; gap:8px !important;
}
body.has-layout .pub-platform-icon{
  display:inline-flex !important; align-items:center !important; justify-content:center !important;
  width:28px !important; height:28px !important; border-radius:6px !important;
  font-size:12px !important; font-weight:700 !important; color:#fff !important;
  flex-shrink:0 !important;
}
body.has-layout .pub-platform-newegg{background:linear-gradient(135deg,#3B82F6,#1D4ED8) !important;}
body.has-layout .pub-platform-shein{background:linear-gradient(135deg,#000,#333) !important;}
body.has-layout .pub-platform-amazon{background:linear-gradient(135deg,#F59E0B,#D97706) !important;}
body.has-layout .pub-platform-walmart{background:linear-gradient(135deg,#0071DC,#004F9E) !important;}
body.has-layout .pub-platform-temu{background:linear-gradient(135deg,#FB923C,#EA580C) !important;}
body.has-layout .pub-platform-ebay{background:linear-gradient(135deg,#E53238,#B71C1C) !important;}

/* P0-3: 产品列缩略图 */
body.has-layout .pub-prod-cell{
  display:flex !important; align-items:center !important; gap:10px !important;
}
body.has-layout .pub-prod-img{
  width:48px !important; height:48px !important; border-radius:6px !important;
  object-fit:cover !important; flex-shrink:0 !important;
  border:1px solid #E2E8F0 !important; background:#F8FAFC !important;
}
body.has-layout .pub-prod-img-placeholder{
  display:flex !important; align-items:center !important; justify-content:center !important;
  background:#F1F5F9 !important; color:#94A3B8 !important; font-size:16px !important; font-weight:600 !important;
}
body.has-layout .pub-prod-info{
  min-width:0 !important; flex:1 !important;
}

/* P1-6: 状态胶囊标签 */
body.has-layout .pub-status-tag{
  display:inline-block !important; padding:3px 10px !important;
  border-radius:12px !important; font-size:12px !important; font-weight:500 !important;
  white-space:nowrap !important;
}
body.has-layout .pub-status-success{background:#ECFDF5 !important; color:#059669 !important;}
body.has-layout .pub-status-danger{background:#FEF2F2 !important; color:#DC2626 !important;}
body.has-layout .pub-status-info{background:#EFF6FF !important; color:#2563EB !important;}
body.has-layout .pub-status-default{background:#F1F5F9 !important; color:#64748B !important;}

/* P0-1/P0-4: 失败原因单元格 */
body.has-layout .pub-fail-cell{
  max-width:240px !important;
}
body.has-layout .pub-fail-summary{
  font-size:12.5px !important; color:#DC2626 !important; font-weight:500 !important;
  white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important;
  max-width:100% !important; line-height:1.4 !important;
}
body.has-layout .pub-fail-actions{
  display:flex !important; gap:10px !important; margin-top:3px !important;
}
body.has-layout .pub-fail-detail-link,
body.has-layout .pub-fail-copy-link{
  font-size:11.5px !important; color:#2563EB !important; text-decoration:none !important;
  cursor:pointer !important;
}
body.has-layout .pub-fail-detail-link:hover,
body.has-layout .pub-fail-copy-link:hover{
  text-decoration:underline !important;
}

/* P0-1/P0-4: 失败详情弹窗 */
body.has-layout .pub-fail-modal{
  position:fixed !important; top:0 !important; left:0 !important; right:0 !important; bottom:0 !important;
  z-index:9999 !important; display:none !important; align-items:center !important; justify-content:center !important;
}
body.has-layout .pub-fail-modal.show{
  display:flex !important;
}
body.has-layout .pub-fail-modal-mask{
  position:absolute !important; top:0 !important; left:0 !important; right:0 !important; bottom:0 !important;
  background:rgba(15,23,42,0.45) !important; backdrop-filter:blur(2px) !important;
}
body.has-layout .pub-fail-modal-box{
  position:relative !important; width:520px !important; max-width:90vw !important;
  background:#fff !important; border-radius:12px !important;
  box-shadow:0 20px 60px rgba(15,23,42,0.2) !important;
  padding:24px !important; z-index:1 !important;
}
body.has-layout .pub-fail-modal-title{
  font-size:17px !important; font-weight:700 !important; color:#1E293B !important; margin-bottom:16px !important;
}
body.has-layout .pub-fail-modal-summary{
  font-size:15px !important; font-weight:600 !important; color:#DC2626 !important; margin-bottom:8px !important;
}
body.has-layout .pub-fail-modal-suggest{
  font-size:13px !important; color:#475569 !important; line-height:1.6 !important;
  background:#FFFBEB !important; border:1px solid #FDE68A !important; border-radius:8px !important;
  padding:10px 14px !important; margin-bottom:16px !important;
}
body.has-layout .pub-fail-modal-raw-label{
  font-size:12px !important; color:#94A3B8 !important; margin-bottom:6px !important; font-weight:500 !important;
}
body.has-layout .pub-fail-modal-raw{
  font-size:12px !important; color:#64748B !important; background:#F8FAFC !important;
  border:1px solid #E2E8F0 !important; border-radius:8px !important; padding:12px !important;
  max-height:160px !important; overflow-y:auto !important; word-break:break-all !important;
  line-height:1.6 !important; font-family:Consolas,Monaco,monospace !important;
}
body.has-layout .pub-fail-modal-actions{
  display:flex !important; justify-content:flex-end !important; gap:8px !important; margin-top:18px !important;
}
/* ===== END PATCH L ===== */


/* ============================================================
   [UI REDESIGN v2.1 PATCH M — 20260901 发布记录第二轮：批量栏/分页/删除弹窗修复]
   ============================================================ */
/* [A2/A5] 批量操作栏：默认隐藏，show class显示，浅蓝底 */
body.has-layout .pub-batch-bar{
  display:none !important;
  align-items:center !important; gap:10px !important;
  padding:8px 16px !important; margin-bottom:10px !important;
  background:#EFF6FF !important;
  border:1px solid #BFDBFE !important; border-radius:8px !important;
}
body.has-layout .pub-batch-bar.show{
  display:flex !important;
}
body.has-layout .pub-selected-info{font-size:13px !important; color:#1E40AF !important;}
body.has-layout .pub-selected-info strong{color:#2563EB !important;}

/* [B1] 一键全部重发按钮默认隐藏 */
body.has-layout .pub-batch-resend-all{
  display:none !important;
  margin-left:auto !important;
}

/* [C1] 产品占位图默认隐藏，只有img加载失败才显示 */
body.has-layout .pub-prod-img-placeholder{
  display:none !important;
}

/* [C3] 未生成颜色加深 */
body.has-layout .pub-not-generated{
  color:#94A3B8 !important;
  font-size:12px !important;
}

/* [C4] 表格底部留白收紧 */
body.has-layout .pub-data-table tbody tr:last-child td{
  border-bottom:none !important;
}

/* [D] 分页控件重做 */
body.has-layout .pub-pagination{
  display:flex !important; align-items:center !important; justify-content:flex-end !important;
  gap:16px !important; padding:12px 16px !important;
  border-top:1px solid #F1F5F9 !important; flex-wrap:wrap !important;
}
body.has-layout .pub-pager-total{
  font-size:13px !important; color:#64748B !important; margin-right:auto !important;
}
body.has-layout .pub-pager-buttons{
  display:flex !important; align-items:center !important; gap:4px !important;
}
body.has-layout .pub-pager-btn{
  min-width:32px !important; height:32px !important; padding:0 10px !important;
  border:1px solid #E2E8F0 !important; border-radius:6px !important;
  background:#fff !important; color:#475569 !important; font-size:13px !important;
  cursor:pointer !important; transition:all .12s !important;
}
body.has-layout .pub-pager-btn:hover:not(:disabled){
  border-color:#2563EB !important; color:#2563EB !important; background:#EFF6FF !important;
}
body.has-layout .pub-pager-btn.active{
  background:#2563EB !important; color:#fff !important; border-color:#2563EB !important;
  font-weight:600 !important;
}
body.has-layout .pub-pager-btn:disabled{
  opacity:0.4 !important; cursor:not-allowed !important; background:#F8FAFC !important;
}
body.has-layout .pub-pager-ellipsis{
  padding:0 4px !important; color:#94A3B8 !important; font-size:13px !important;
}
body.has-layout .pub-pager-jump{
  display:flex !important; align-items:center !important; gap:6px !important;
  font-size:13px !important; color:#64748B !important;
}
body.has-layout .pub-pager-input{
  width:50px !important; height:32px !important; padding:0 8px !important;
  border:1px solid #E2E8F0 !important; border-radius:6px !important;
  font-size:13px !important; text-align:center !important; outline:none !important;
}
body.has-layout .pub-pager-input:focus{border-color:#2563EB !important;}
body.has-layout .pub-pager-jump-btn{
  height:32px !important; padding:0 12px !important;
}
body.has-layout .pub-pager-select{
  height:32px !important; padding:0 8px !important;
  border:1px solid #E2E8F0 !important; border-radius:6px !important;
  font-size:13px !important; color:#475569 !important; background:#fff !important;
  outline:none !important; cursor:pointer !important;
}

/* [A4] 删除确认弹窗文字 */
body.has-layout .pub-delete-confirm-text{
  font-size:14px !important; color:#475569 !important; line-height:1.6 !important;
  padding:8px 0 !important;
}

/* [B2] 状态Tab数字徽章统一 */
body.has-layout .status-tab .tab-count{
  display:inline-block !important;
  background:#F1F5F9 !important; color:#64748B !important;
  border-radius:10px !important; padding:1px 7px !important;
  font-size:11px !important; font-weight:500 !important;
  margin-left:4px !important;
}
body.has-layout .status-tab.active .tab-count{
  background:rgba(37,99,235,0.12) !important; color:#2563EB !important;
}
body.has-layout .status-tab.danger .tab-count,
body.has-layout .status-tab .tab-count-danger{
  background:#FEF2F2 !important; color:#DC2626 !important;
}
/* ===== END PATCH M ===== */


/* ============================================================
   [UI REDESIGN v2.1 PATCH O — 20260902 个人中心布局优化]
   ============================================================ */
/* [个人中心] 两列卡片网格 */
body.has-layout .profile-grid{
  display:grid !important; grid-template-columns:1fr 1fr !important;
  gap:16px !important;
}
@media (max-width:900px){
  body.has-layout .profile-grid{grid-template-columns:1fr !important;}
}
/* [个人中心] 卡片内边距 */
body.has-layout .profile-card{
  padding:20px 24px !important;
}
/* [个人中心] 卡片标题 */
body.has-layout .profile-card-title{
  font-size:15px !important; font-weight:600 !important; color:#1E293B !important;
  margin-bottom:12px !important; padding-bottom:12px !important;
  border-bottom:1px solid #F1F5F9 !important;
}
/* [个人中心] 信息行：标签左、数值右，统一高度 */
body.has-layout .profile-card .info-row{
  display:flex !important; justify-content:space-between !important;
  align-items:center !important; padding:11px 0 !important;
  border-bottom:1px solid #F8FAFC !important; min-height:44px !important;
}
body.has-layout .profile-card .info-row:last-child{border-bottom:none !important;}
/* [个人中心] 标签颜色加深 */
body.has-layout .profile-card .info-label{
  color:#64748B !important; font-size:13px !important; font-weight:400 !important;
}
/* [个人中心] 数值样式 */
body.has-layout .profile-card .info-value{
  color:#1E293B !important; font-size:14px !important; font-weight:500 !important;
  text-align:right !important;
}
/* [个人中心] 统计数字强调 */
body.has-layout .profile-stat-num{
  font-size:16px !important; font-weight:700 !important; color:#2563EB !important;
}
/* [个人中心] 会员状态语义色 */
body.has-layout .profile-member-super{color:#2563EB !important; font-weight:500 !important;}
body.has-layout .profile-member-active{color:#059669 !important; font-weight:500 !important;}
body.has-layout .profile-member-warning{color:#D97706 !important; font-weight:500 !important;}
body.has-layout .profile-member-expired{color:#DC2626 !important; font-weight:500 !important;}
/* [个人中心] 去掉右上角重复副标题 */
body.has-layout .ms-page-sub{display:none !important;}
/* [个人中心] 修改密码表单宽度 */
body.has-layout #ptab-password{max-width:520px !important;}
body.has-layout #ptab-password .form-group{margin-bottom:16px !important;}
body.has-layout #ptab-password .form-group label{
  display:block !important; font-size:13px !important; font-weight:500 !important;
  color:#475569 !important; margin-bottom:6px !important;
}
body.has-layout #ptab-password .form-group input{
  width:100% !important; height:38px !important; padding:0 12px !important;
  border:1px solid #E2E8F0 !important; border-radius:6px !important;
  font-size:14px !important; outline:none !important; box-sizing:border-box !important;
}
body.has-layout #ptab-password .form-group input:focus{
  border-color:#2563EB !important; box-shadow:0 0 0 3px rgba(37,99,235,0.1) !important;
}
/* ===== END PATCH O ===== */


/* ============================================================
   [UI REDESIGN v2.1 PATCH P — 20260902 筛选区去嵌套边框优化]
   仅保留最外层筛选卡片边框，移除内部每项独立边框，靠间距分隔
   ============================================================ */
/* [最外层筛选卡片] 保留边框，调整为干净白底 */
body.has-layout .ms-filter-bar,
body.has-layout .query-form,
body.has-layout .cb2-filter,
body.has-layout .cb-filter-card,
body.has-layout .pc-cond-grid {
  background:#ffffff !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
  border:1px solid #E2E8F0 !important;
  border-radius:10px !important;
  box-shadow:0 1px 3px rgba(15,23,42,0.04) !important;
  padding:18px 20px !important;
  margin-bottom:14px !important;
}
/* [内部筛选项] 移除独立边框、背景、圆角，消除嵌套感 */
body.has-layout .cb-filter-item,
body.has-layout .cb2-field,
body.has-layout .ms-filter-item,
body.has-layout .pc-cond-item {
  border:none !important;
  background:transparent !important;
  border-radius:0 !important;
  box-shadow:none !important;
  min-height:auto !important;
  padding:0 !important;
  margin:0 !important;
}
/* [内部筛选项 focus] 不再有外层边框变色，改为输入框自身 focus */
body.has-layout .cb-filter-item:focus-within,
body.has-layout .cb2-field:focus-within,
body.has-layout .ms-filter-item:focus-within {
  border:none !important;
  box-shadow:none !important;
}
/* [筛选区整体布局] flex wrap，统一间距 */
body.has-layout .ms-filter-bar,
body.has-layout .query-form,
body.has-layout .cb2-filter,
body.has-layout .cb-filter-card,
body.has-layout .pc-cond-grid {
  display:flex !important;
  flex-wrap:wrap !important;
  align-items:flex-end !important;
  gap:16px 20px !important;
}
/* [每个筛选项] 固定或自适应宽度 */
body.has-layout .cb-filter-item,
body.has-layout .cb2-field,
body.has-layout .ms-filter-item,
body.has-layout .pc-cond-item,
body.has-layout .query-field {
  flex:0 0 auto !important;
  display:flex !important;
  flex-direction:column !important;
  gap:6px !important;
}
/* [筛选标签] 统一样式 */
body.has-layout .cb-filter-label,
body.has-layout .cb2-field > label,
body.has-layout .ms-filter-item label,
body.has-layout .query-field label,
body.has-layout .pc-cond-item label {
  font-size:13px !important;
  color:#475569 !important;
  font-weight:500 !important;
  margin:0 !important;
  padding:0 !important;
}
/* [筛选输入框/下拉框] 控件自身保留边框 */
body.has-layout .cb-filter-item input,
body.has-layout .cb-filter-item select,
body.has-layout .cb2-field input,
body.has-layout .cb2-field select,
body.has-layout .ms-filter-item input,
body.has-layout .ms-filter-item select,
body.has-layout .query-field input,
body.has-layout .query-field select,
body.has-layout .pc-cond-item input,
body.has-layout .pc-cond-item select {
  height:36px !important;
  padding:0 12px !important;
  border:1px solid #E2E8F0 !important;
  border-radius:6px !important;
  font-size:13px !important;
  color:#334155 !important;
  background:#fff !important;
  outline:none !important;
  transition:border-color .15s, box-shadow .15s !important;
  width:100% !important;
  box-sizing:border-box !important;
}
body.has-layout .cb-filter-item input:focus,
body.has-layout .cb-filter-item select:focus,
body.has-layout .cb2-field input:focus,
body.has-layout .cb2-field select:focus,
body.has-layout .ms-filter-item input:focus,
body.has-layout .ms-filter-item select:focus,
body.has-layout .query-field input:focus,
body.has-layout .query-field select:focus,
body.has-layout .pc-cond-item input:focus,
body.has-layout .pc-cond-item select:focus {
  border-color:#2563EB !important;
  box-shadow:0 0 0 3px rgba(37,99,235,0.10) !important;
}
/* [筛选操作按钮区] 靠右下角对齐 */
body.has-layout .cb-filter-actions,
body.has-layout .cb-filter-foot,
body.has-layout .cb2-filter-actions,
body.has-layout .query-actions,
body.has-layout .pc-cond-actions {
  margin-left:auto !important;
  display:flex !important;
  gap:8px !important;
  align-items:center !important;
}
/* [筛选区快捷日期/附加操作] 无独立边框 */
body.has-layout .query-quick-dates,
body.has-layout .cb-filter-quick,
body.has-layout .cb2-quick-dates {
  border:none !important;
  background:transparent !important;
  padding:0 !important;
  margin:0 !important;
  display:flex !important;
  gap:6px !important;
  flex-wrap:wrap !important;
}
/* ===== END PATCH P ===== */

/* ============================================================
   PATCH Q — 数据管理页面视觉优化
   ============================================================ */

/* Q-1: 表格容器 */
body.has-layout #tab-tasks .ms-table-wrap,
body.has-layout #tab-uploads .ms-table-wrap,
body.has-layout #tab-exports .ms-table-wrap,
body.has-layout #tab-recycle .ms-table-wrap,
body.has-layout #tab-logs .ms-table-wrap{
  border-radius:10px !important; overflow:hidden !important;
  border:1px solid #E2E8F0 !important;
  box-shadow:0 1px 3px rgba(0,0,0,0.04) !important;
}

/* Q-2: 表头 */
body.has-layout #tab-tasks .data-table thead th,
body.has-layout #tab-uploads .data-table thead th,
body.has-layout #tab-exports .data-table thead th,
body.has-layout #tab-recycle .data-table thead th,
body.has-layout #tab-logs .data-table thead th{
  background:#F8FAFC !important; color:#475569 !important;
  font-weight:600 !important; font-size:13px !important;
  padding:12px 16px !important; border-bottom:2px solid #E2E8F0 !important;
  white-space:nowrap !important;
}

/* Q-3: 行高/斑马纹/hover */
body.has-layout #tab-tasks .data-table tbody td,
body.has-layout #tab-uploads .data-table tbody td,
body.has-layout #tab-exports .data-table tbody td,
body.has-layout #tab-recycle .data-table tbody td,
body.has-layout #tab-logs .data-table tbody td{
  padding:14px 16px !important; font-size:13.5px !important;
  color:#334155 !important; border-bottom:1px solid #F1F5F9 !important;
  vertical-align:middle !important;
}
body.has-layout #tab-tasks .data-table tbody tr:nth-child(even) td,
body.has-layout #tab-uploads .data-table tbody tr:nth-child(even) td,
body.has-layout #tab-exports .data-table tbody tr:nth-child(even) td,
body.has-layout #tab-recycle .data-table tbody tr:nth-child(even) td,
body.has-layout #tab-logs .data-table tbody tr:nth-child(even) td{
  background:#FAFBFC !important;
}
body.has-layout #tab-tasks .data-table tbody tr:hover td,
body.has-layout #tab-uploads .data-table tbody tr:hover td,
body.has-layout #tab-exports .data-table tbody tr:hover td,
body.has-layout #tab-recycle .data-table tbody tr:hover td,
body.has-layout #tab-logs .data-table tbody tr:hover td{
  background:#EFF6FF !important;
}

/* Q-4: 进度条 */
body.has-layout #tab-tasks .ms-progress{
  height:8px !important; background:#E2E8F0 !important;
  border-radius:6px !important; overflow:hidden !important;
}
body.has-layout #tab-tasks .ms-progress > div{
  height:100% !important; border-radius:6px !important;
  background:linear-gradient(90deg,#60A5FA 0%,#2563EB 100%) !important;
  transition:width 0.3s ease !important;
}

/* Q-5: 状态标签 */
body.has-layout #tab-tasks .ms-tag,
body.has-layout #tab-uploads .ms-tag,
body.has-layout #tab-exports .ms-tag{
  display:inline-block !important; padding:4px 12px !important;
  border-radius:12px !important; font-size:12px !important;
  font-weight:500 !important; white-space:nowrap !important; line-height:1.4 !important;
}
body.has-layout #tab-tasks .ms-tag-success,
body.has-layout #tab-uploads .ms-tag-success,
body.has-layout #tab-exports .ms-tag-success{ background:#ECFDF5 !important; color:#059669 !important; }
body.has-layout #tab-tasks .ms-tag-warning,
body.has-layout #tab-uploads .ms-tag-warning,
body.has-layout #tab-exports .ms-tag-warning{ background:#FFFBEB !important; color:#D97706 !important; }
body.has-layout #tab-tasks .ms-tag-danger,
body.has-layout #tab-uploads .ms-tag-danger,
body.has-layout #tab-exports .ms-tag-danger{ background:#FEF2F2 !important; color:#DC2626 !important; }
body.has-layout #tab-tasks .ms-tag-info,
body.has-layout #tab-uploads .ms-tag-info,
body.has-layout #tab-exports .ms-tag-info{ background:#EFF6FF !important; color:#2563EB !important; }

/* Q-6: 操作按钮 */
body.has-layout #tab-tasks .ms-btn-sm,
body.has-layout #tab-uploads .ms-btn-sm,
body.has-layout #tab-exports .ms-btn-sm,
body.has-layout #tab-recycle .ms-btn-sm{
  padding:5px 14px !important; font-size:12.5px !important;
  border-radius:6px !important; font-weight:500 !important;
  transition:all 0.2s ease !important;
}
body.has-layout #tab-tasks .ms-btn-sm:hover,
body.has-layout #tab-uploads .ms-btn-sm:hover,
body.has-layout #tab-exports .ms-btn-sm:hover{
  background:#EFF6FF !important; color:#2563EB !important; border-color:#BFDBFE !important;
}

/* Q-7: Tab栏 */
body.has-layout .status-tab-box{
  display:flex !important; gap:4px !important;
  border-bottom:2px solid #E2E8F0 !important;
  margin-bottom:20px !important; padding-bottom:0 !important;
}
body.has-layout .status-tab{
  padding:10px 20px !important; font-size:14px !important;
  font-weight:500 !important; color:#64748B !important;
  background:transparent !important; border:none !important;
  border-bottom:2px solid transparent !important; margin-bottom:-2px !important;
  cursor:pointer !important; transition:all 0.2s ease !important; border-radius:0 !important;
}
body.has-layout .status-tab:hover{ color:#2563EB !important; background:#F8FAFC !important; }
body.has-layout .status-tab.active{
  color:#2563EB !important; font-weight:600 !important;
  border-bottom:2px solid #2563EB !important; background:transparent !important;
}

/* Q-8: 页面标题 */
body.has-layout .ms-page-head{ margin-bottom:20px !important; }
body.has-layout .ms-page-title{
  font-size:20px !important; font-weight:700 !important;
  color:#1E293B !important; margin-bottom:4px !important;
}
body.has-layout .ms-page-sub{ font-size:13px !important; color:#94A3B8 !important; }

/* Q-9: 回收站操作栏 */
body.has-layout #tab-recycle .ms-action-bar{
  display:flex !important; gap:10px !important; margin-bottom:16px !important;
  padding:14px 16px !important; background:#F8FAFC !important;
  border-radius:10px !important; border:1px solid #E2E8F0 !important;
}

/* Q-10: 操作日志筛选栏 */
body.has-layout #tab-logs .ms-filter-bar{
  display:flex !important; gap:16px !important; align-items:flex-end !important;
  margin-bottom:16px !important; padding:16px !important;
  background:#F8FAFC !important; border-radius:10px !important; border:1px solid #E2E8F0 !important;
}
body.has-layout #tab-logs .ms-filter-item label{
  display:block !important; font-size:12.5px !important; color:#64748B !important;
  margin-bottom:6px !important; font-weight:500 !important;
}
body.has-layout #tab-logs .ms-filter-item select,
body.has-layout #tab-logs .ms-filter-item input{
  padding:8px 12px !important; border:1px solid #E2E8F0 !important;
  border-radius:6px !important; font-size:13px !important; background:#fff !important;
  transition:border-color 0.2s, box-shadow 0.2s !important;
}
body.has-layout #tab-logs .ms-filter-item select:focus,
body.has-layout #tab-logs .ms-filter-item input:focus{
  outline:none !important; border-color:#2563EB !important;
  box-shadow:0 0 0 3px rgba(37,99,235,0.1) !important;
}

/* ============================================================
   PATCH R — 左侧导航栏视觉优化
   ============================================================ */

/* R-1: 侧边栏容器 */
body.has-layout .ms-side{
  width:200px !important;
  background:#fff !important;
  border-right:1px solid #E2E8F0 !important;
  padding:16px 12px !important;
  flex-shrink:0 !important;
}
body.has-layout .ms-side-inner{
  display:flex !important;
  flex-direction:column !important;
  gap:20px !important;
}

/* R-2: 分组 */
body.has-layout .ms-sub-menu{
  display:flex !important;
  flex-direction:column !important;
  gap:4px !important;
}

/* R-3: 分组标题 */
body.has-layout .ms-sub-menu__title{
  font-size:11px !important;
  font-weight:700 !important;
  color:#94A3B8 !important;
  text-transform:uppercase !important;
  letter-spacing:0.8px !important;
  padding:0 12px !important;
  margin-bottom:4px !important;
  line-height:1.4 !important;
}

/* R-4: 菜单项 */
body.has-layout .ms-side-link{
  display:flex !important;
  align-items:center !important;
  padding:10px 12px !important;
  font-size:13.5px !important;
  font-weight:500 !important;
  color:#475569 !important;
  text-decoration:none !important;
  border-radius:8px !important;
  transition:all 0.18s ease !important;
  position:relative !important;
  line-height:1.4 !important;
  cursor:pointer !important;
}
body.has-layout .ms-side-link:hover{
  background:#F1F5F9 !important;
  color:#1E293B !important;
}

/* R-5: 选中态 — 左侧蓝色竖条 + 浅蓝背景 + 加粗蓝字 */
body.has-layout .ms-side-link.active{
  background:#EFF6FF !important;
  color:#2563EB !important;
  font-weight:600 !important;
}
body.has-layout .ms-side-link.active::before{
  content:"" !important;
  position:absolute !important;
  left:-12px !important;
  top:50% !important;
  transform:translateY(-50%) !important;
  width:3px !important;
  height:20px !important;
  background:#2563EB !important;
  border-radius:0 3px 3px 0 !important;
}

/* R-6: 禁用态 */
body.has-layout .ms-side-link.disabled{
  color:#CBD5E1 !important;
  cursor:not-allowed !important;
}
body.has-layout .ms-side-link.disabled:hover{
  background:transparent !important;
  color:#CBD5E1 !important;
}

/* ============================================================
   PATCH S — 采集箱筛选栏修复（公共/Newegg/SHEIN）
   ============================================================ */

/* S-1: 筛选栏外层卡片 — 统一内边距和圆角 */
body.has-layout .cb-filter-card{
  padding:16px 20px 12px !important;
  border-radius:10px !important;
  border:1px solid #E2E8F0 !important;
  box-shadow:0 1px 3px rgba(0,0,0,0.04) !important;
  background:#fff !important;
  margin-bottom:16px !important;
}

/* S-2: 筛选栏网格 — 4列，统一间距 */
body.has-layout .cb-filter-bar{
  display:grid !important;
  grid-template-columns:repeat(4,minmax(0,1fr)) !important;
  gap:14px 20px !important;
  align-items:start !important;
}

/* S-3: 筛选项 — 去掉独立边框/背景，标签+控件纵向排列 */
body.has-layout .cb-filter-item{
  display:flex !important;
  flex-direction:column !important;
  gap:6px !important;
  border:none !important;
  background:transparent !important;
  padding:0 !important;
  min-height:0 !important;
  box-shadow:none !important;
}

/* S-4: 筛选标签 — 统一字号颜色，去掉冒号后的多余空格 */
body.has-layout .cb-filter-label{
  font-size:12.5px !important;
  font-weight:500 !important;
  color:#64748B !important;
  white-space:nowrap !important;
  line-height:1.4 !important;
  padding:0 !important;
  text-align:left !important;
}

/* S-5: 筛选控件 — 统一高度、边框、圆角、字号 */
body.has-layout .cb-filter-ctrl{
  height:34px !important;
  line-height:1.4 !important;
  border:1px solid #E2E8F0 !important;
  border-radius:6px !important;
  background:#fff !important;
  padding:4px 10px !important;
  font-size:13px !important;
  color:#334155 !important;
  outline:none !important;
  box-shadow:none !important;
  box-sizing:border-box !important;
  width:100% !important;
  transition:border-color 0.2s, box-shadow 0.2s !important;
}
body.has-layout .cb-filter-ctrl:focus{
  border-color:#2563EB !important;
  box-shadow:0 0 0 3px rgba(37,99,235,0.1) !important;
}
body.has-layout .cb-filter-ctrl::placeholder{
  color:#94A3B8 !important;
}

/* S-6: 下拉控件 — 统一箭头样式 */
body.has-layout select.cb-filter-ctrl{
  cursor:pointer !important;
  appearance:none !important;
  -webkit-appearance:none !important;
  background-image:linear-gradient(45deg,transparent 50%,#94A3B8 50%),linear-gradient(135deg,#94A3B8 50%,transparent 50%) !important;
  background-position:calc(100% - 14px) 50%,calc(100% - 9px) 50% !important;
  background-size:5px 5px !important;
  background-repeat:no-repeat !important;
  padding-right:28px !important;
}

/* S-7: 复合控件容器（双下拉/区间/输入+下拉）— 横向排列，统一间距 */
body.has-layout .cb-filter-dual,
body.has-layout .cb-filter-range{
  display:flex !important;
  flex-direction:row !important;
  align-items:center !important;
  gap:8px !important;
  width:100% !important;
  min-width:0 !important;
}
body.has-layout .cb-filter-dual .cb-filter-ctrl,
body.has-layout .cb-filter-range .cb-filter-ctrl{
  flex:1 !important;
  min-width:0 !important;
  width:auto !important;
}

/* S-8: 区间分隔符（~ / - / 元）— 统一颜色字号，不压缩 */
body.has-layout .cb-filter-tilde,
body.has-layout .cb-filter-suffix{
  color:#94A3B8 !important;
  font-size:13px !important;
  flex-shrink:0 !important;
  white-space:nowrap !important;
}

/* S-9: 按钮区 — 跨列右对齐，顶部细线分隔 */
body.has-layout .cb-filter-actions,
body.has-layout .cb-filter-foot{
  grid-column:1 / -1 !important;
  display:flex !important;
  gap:10px !important;
  align-items:center !important;
  justify-content:flex-end !important;
  padding-top:12px !important;
  margin-top:4px !important;
  border-top:1px solid #F1F5F9 !important;
}
body.has-layout .cb-filter-actions .btn,
body.has-layout .cb-filter-foot .btn{
  height:34px !important;
  padding:0 18px !important;
  border-radius:6px !important;
  font-size:13px !important;
  font-weight:500 !important;
  display:inline-flex !important;
  align-items:center !important;
}

/* S-10: 展开/折叠切换链接 — 统一颜色字号 */
body.has-layout .cb-filter-toggle{
  font-size:13px !important;
  color:#2563EB !important;
  text-decoration:none !important;
  padding:0 4px !important;
  white-space:nowrap !important;
  cursor:pointer !important;
  font-weight:500 !important;
}
body.has-layout .cb-filter-toggle:hover{
  text-decoration:underline !important;
}

/* S-11: 折叠状态 — 只显示第一行 */
body.has-layout .cb-filter-bar.cb-collapsed .cb-foldable{
  display:none !important;
}
body.has-layout .cb-filter-bar.cb-collapsed .cb-filter-actions,
body.has-layout .cb-filter-bar.cb-collapsed .cb-filter-foot{
  grid-column:1 / -1 !important;
  justify-content:flex-end !important;
  padding-top:0 !important;
  margin-top:0 !important;
  border-top:none !important;
}

/* S-12: 日期控件 — 统一对齐和图标 */
body.has-layout input[type="date"].cb-filter-ctrl{
  color:#334155 !important;
  -webkit-appearance:none !important;
  appearance:none !important;
}
body.has-layout input[type="date"].cb-filter-ctrl::-webkit-calendar-picker-indicator{
  cursor:pointer !important;
  opacity:0.55 !important;
  vertical-align:middle !important;
  margin:0 !important;
  padding:0 !important;
}

/* ============================================================
   PATCH T — cb2 筛选栏修复（Newegg/SHEIN采集箱）
   ============================================================ */

/* T-1: 筛选栏外层卡片 */
body.has-layout .cb2-filter{
  padding:16px 20px 12px !important;
  border-radius:10px !important;
  border:1px solid #E2E8F0 !important;
  box-shadow:0 1px 3px rgba(0,0,0,0.04) !important;
  background:#fff !important;
  margin-bottom:16px !important;
}

/* T-2: 筛选网格 — 4列 */
body.has-layout .cb2-filter-grid{
  display:grid !important;
  grid-template-columns:repeat(4,minmax(0,1fr)) !important;
  gap:14px 20px !important;
  align-items:start !important;
}

/* T-3: 筛选项 — 去掉独立边框，纵向排列 */
body.has-layout .cb2-field{
  display:flex !important;
  flex-direction:column !important;
  gap:6px !important;
  border:none !important;
  background:transparent !important;
  padding:0 !important;
  min-height:0 !important;
  box-shadow:none !important;
}

/* T-4: 筛选标签 */
body.has-layout .cb2-field label{
  font-size:12.5px !important;
  font-weight:500 !important;
  color:#64748B !important;
  white-space:nowrap !important;
  line-height:1.4 !important;
  padding:0 !important;
  margin:0 !important;
  text-align:left !important;
}

/* T-5: 筛选控件 — 统一高度边框圆角 */
body.has-layout .cb2-field select,
body.has-layout .cb2-field input{
  height:34px !important;
  line-height:1.4 !important;
  border:1px solid #E2E8F0 !important;
  border-radius:6px !important;
  background:#fff !important;
  padding:4px 10px !important;
  font-size:13px !important;
  color:#334155 !important;
  outline:none !important;
  box-shadow:none !important;
  box-sizing:border-box !important;
  width:100% !important;
  transition:border-color 0.2s, box-shadow 0.2s !important;
}
body.has-layout .cb2-field select:focus,
body.has-layout .cb2-field input:focus{
  border-color:#2563EB !important;
  box-shadow:0 0 0 3px rgba(37,99,235,0.1) !important;
}
body.has-layout .cb2-field input::placeholder{
  color:#94A3B8 !important;
}

/* T-6: 下拉控件箭头 */
body.has-layout .cb2-field select{
  cursor:pointer !important;
  appearance:none !important;
  -webkit-appearance:none !important;
  background-image:linear-gradient(45deg,transparent 50%,#94A3B8 50%),linear-gradient(135deg,#94A3B8 50%,transparent 50%) !important;
  background-position:calc(100% - 14px) 50%,calc(100% - 9px) 50% !important;
  background-size:5px 5px !important;
  background-repeat:no-repeat !important;
  padding-right:28px !important;
}

/* T-7: 复合控件容器 — 横向排列，统一间距8px */
body.has-layout .cb2-dual,
body.has-layout .cb2-range,
body.has-layout .cb2-combo{
  display:flex !important;
  flex-direction:row !important;
  align-items:center !important;
  gap:8px !important;
  width:100% !important;
  min-width:0 !important;
}
body.has-layout .cb2-dual select,
body.has-layout .cb2-dual input,
body.has-layout .cb2-range input,
body.has-layout .cb2-combo input,
body.has-layout .cb2-combo select{
  flex:1 !important;
  min-width:0 !important;
  width:auto !important;
}

/* T-8: 区间分隔符和单位 */
body.has-layout .cb2-range-sep,
body.has-layout .cb2-range-unit{
  color:#94A3B8 !important;
  font-size:13px !important;
  flex-shrink:0 !important;
  white-space:nowrap !important;
}

/* T-9: 帮助图标 */
body.has-layout .cb2-help{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  width:16px !important;
  height:16px !important;
  border-radius:50% !important;
  background:#F1F5F9 !important;
  color:#94A3B8 !important;
  font-size:11px !important;
  font-weight:600 !important;
  cursor:help !important;
  flex-shrink:0 !important;
}

/* T-10: 按钮区 — 跨列右对齐，顶部细线 */
body.has-layout .cb2-filter-actions{
  grid-column:1 / -1 !important;
  display:flex !important;
  gap:10px !important;
  align-items:center !important;
  justify-content:flex-end !important;
  padding-top:12px !important;
  margin-top:4px !important;
  border-top:1px solid #F1F5F9 !important;
}

/* T-11: 搜索按钮 — 蓝色主按钮 */
body.has-layout .cb2-filter-actions .ms-btn{
  height:34px !important;
  padding:0 18px !important;
  border-radius:6px !important;
  font-size:13px !important;
  font-weight:500 !important;
  background:#2563EB !important;
  border:1px solid #2563EB !important;
  color:#fff !important;
  cursor:pointer !important;
  transition:all 0.2s !important;
  display:inline-flex !important;
  align-items:center !important;
}
body.has-layout .cb2-filter-actions .ms-btn:hover{
  background:#1D4ED8 !important;
  border-color:#1D4ED8 !important;
}

/* T-12: 重置按钮 — 灰色次要按钮 */
body.has-layout .cb2-filter-actions .cb2-btn-ghost{
  height:34px !important;
  padding:0 18px !important;
  border-radius:6px !important;
  font-size:13px !important;
  font-weight:500 !important;
  background:#fff !important;
  border:1px solid #E2E8F0 !important;
  color:#475569 !important;
  cursor:pointer !important;
  transition:all 0.2s !important;
  display:inline-flex !important;
  align-items:center !important;
}
body.has-layout .cb2-filter-actions .cb2-btn-ghost:hover{
  background:#F8FAFC !important;
  border-color:#CBD5E1 !important;
  color:#1E293B !important;
}

/* T-13: 展开/折叠链接 */
body.has-layout .cb2-filter-link{
  font-size:13px !important;
  color:#2563EB !important;
  text-decoration:none !important;
  padding:0 4px !important;
  white-space:nowrap !important;
  cursor:pointer !important;
  font-weight:500 !important;
  background:none !important;
  border:none !important;
}
body.has-layout .cb2-filter-link:hover{
  text-decoration:underline !important;
}

/* T-14: 折叠状态 — 隐藏可折叠项 */
body.has-layout .cb2-filter.collapsed .cb2-foldable{
  display:none !important;
}
body.has-layout .cb2-filter.collapsed .cb2-filter-actions{
  grid-column:1 / -1 !important;
  justify-content:flex-end !important;
  padding-top:0 !important;
  margin-top:0 !important;
  border-top:none !important;
}

/* T-15: 日期控件统一 */
body.has-layout .cb2-field input[type="date"]{
  color:#334155 !important;
  -webkit-appearance:none !important;
  appearance:none !important;
}
body.has-layout .cb2-field input[type="date"]::-webkit-calendar-picker-indicator{
  cursor:pointer !important;
  opacity:0.55 !important;
  vertical-align:middle !important;
  margin:0 !important;
  padding:0 !important;
}

/* T-16: 公共采集箱控件边框加强修复（防止被覆盖） */
body.has-layout .cb-filter-card .cb-filter-item .cb-filter-ctrl{
  border:1px solid #E2E8F0 !important;
  background:#fff !important;
}
body.has-layout .cb-filter-card .cb-filter-item select.cb-filter-ctrl{
  border:1px solid #E2E8F0 !important;
  background:#fff !important;
}

/* ============================================================
   PATCH U — 筛选栏横向排列（标签在左，控件在右）
   覆盖公共采集箱(cb-filter-*) 和 Newegg/SHEIN(cb2-*)
   ============================================================ */

/* ========== 公共采集箱 cb-filter-* ========== */

/* U-1: 筛选项 — 横向排列，去掉独立边框 */
body.has-layout .cb-filter-card .cb-filter-item{
  display:flex !important;
  flex-direction:row !important;
  align-items:center !important;
  gap:10px !important;
  border:none !important;
  background:transparent !important;
  padding:0 !important;
  box-shadow:none !important;
  min-height:34px !important;
}

/* U-2: 标签 — 固定宽度，右对齐，和控件同行 */
body.has-layout .cb-filter-card .cb-filter-label{
  flex:0 0 72px !important;
  font-size:13px !important;
  font-weight:500 !important;
  color:#475569 !important;
  text-align:right !important;
  white-space:nowrap !important;
  line-height:34px !important;
  padding:0 !important;
  margin:0 !important;
}

/* U-3: 控件 — flex:1，占满剩余空间 */
body.has-layout .cb-filter-card .cb-filter-item > .cb-filter-ctrl{
  flex:1 !important;
  min-width:0 !important;
  width:auto !important;
  height:34px !important;
  border:1px solid #E2E8F0 !important;
  border-radius:6px !important;
  background:#fff !important;
  padding:4px 10px !important;
  font-size:13px !important;
  color:#334155 !important;
}

/* U-4: 复合控件容器 — 横向排列，在标签右边 */
body.has-layout .cb-filter-card .cb-filter-item > .cb-filter-range,
body.has-layout .cb-filter-card .cb-filter-item > .cb-filter-dual{
  flex:1 !important;
  min-width:0 !important;
  display:flex !important;
  flex-direction:row !important;
  align-items:center !important;
  gap:8px !important;
}

/* ========== Newegg/SHEIN cb2-* ========== */

/* U-5: 筛选项 — 横向排列，去掉独立边框 */
body.has-layout .cb2-filter .cb2-field{
  display:flex !important;
  flex-direction:row !important;
  align-items:center !important;
  gap:10px !important;
  border:none !important;
  background:transparent !important;
  padding:0 !important;
  box-shadow:none !important;
  min-height:34px !important;
}

/* U-6: 标签 — 固定宽度，右对齐，和控件同行 */
body.has-layout .cb2-filter .cb2-field label{
  flex:0 0 72px !important;
  font-size:13px !important;
  font-weight:500 !important;
  color:#475569 !important;
  text-align:right !important;
  white-space:nowrap !important;
  line-height:34px !important;
  padding:0 !important;
  margin:0 !important;
}

/* U-7: 控件 — flex:1，占满剩余空间 */
body.has-layout .cb2-filter .cb2-field > select,
body.has-layout .cb2-filter .cb2-field > input{
  flex:1 !important;
  min-width:0 !important;
  width:auto !important;
  height:34px !important;
  border:1px solid #E2E8F0 !important;
  border-radius:6px !important;
  background:#fff !important;
  padding:4px 10px !important;
  font-size:13px !important;
  color:#334155 !important;
}

/* U-8: 复合控件容器 — 横向排列，在标签右边 */
body.has-layout .cb2-filter .cb2-field > .cb2-dual,
body.has-layout .cb2-filter .cb2-field > .cb2-range,
body.has-layout .cb2-filter .cb2-field > .cb2-combo{
  flex:1 !important;
  min-width:0 !important;
  display:flex !important;
  flex-direction:row !important;
  align-items:center !important;
  gap:8px !important;
}

/* U-9: 复合控件内的子控件 — flex:1均分 */
body.has-layout .cb2-filter .cb2-dual > select,
body.has-layout .cb2-filter .cb2-dual > input,
body.has-layout .cb2-filter .cb2-range > input,
body.has-layout .cb2-filter .cb2-combo > input,
body.has-layout .cb2-filter .cb2-combo > select{
  flex:1 !important;
  min-width:0 !important;
  width:auto !important;
  height:34px !important;
}

/* U-10: 帮助图标 — 和标签同行，在标签右边 */
body.has-layout .cb2-filter .cb2-help{
  flex-shrink:0 !important;
  margin-left:-6px !important;
}

/* U-11: 筛选网格 — 调整行间距，适应横向排列 */
body.has-layout .cb-filter-bar{
  gap:12px 20px !important;
}
body.has-layout .cb2-filter-grid{
  gap:12px 20px !important;
}

/* ============================================================
   PATCH V — 筛选标签左对齐 + 宽度自适应
   ============================================================ */

/* 公共采集箱标签 — 左对齐，宽度自适应 */
body.has-layout .cb-filter-card .cb-filter-label{
  flex:0 0 auto !important;
  width:auto !important;
  text-align:left !important;
  font-size:13px !important;
  font-weight:500 !important;
  color:#475569 !important;
  white-space:nowrap !important;
  line-height:34px !important;
  padding:0 !important;
  margin:0 !important;
}

/* Newegg/SHEIN标签 — 左对齐，宽度自适应 */
body.has-layout .cb2-filter .cb2-field label{
  flex:0 0 auto !important;
  width:auto !important;
  text-align:left !important;
  font-size:13px !important;
  font-weight:500 !important;
  color:#475569 !important;
  white-space:nowrap !important;
  line-height:34px !important;
  padding:0 !important;
  margin:0 !important;
}

/* 筛选项间距 — 标签和控件之间10px */
body.has-layout .cb-filter-card .cb-filter-item,
body.has-layout .cb2-filter .cb2-field{
  gap:10px !important;
}

/* ============================================================
   PATCH W — 公共采集箱控件样式统一（单控件 + 复合控件子控件）
   ============================================================ */

/* W-1: 复合控件容器 — 确保横向排列 + 间距8px */
body.has-layout .cb-filter-card .cb-filter-dual,
body.has-layout .cb-filter-card .cb-filter-range{
  display:flex !important;
  flex-direction:row !important;
  align-items:center !important;
  gap:8px !important;
  flex:1 !important;
  min-width:0 !important;
  width:auto !important;
}

/* W-2: 复合控件内的所有子控件 — 统一样式，和单控件一致 */
body.has-layout .cb-filter-card .cb-filter-dual .cb-filter-ctrl,
body.has-layout .cb-filter-card .cb-filter-range .cb-filter-ctrl,
body.has-layout .cb-filter-card .cb-filter-dual select,
body.has-layout .cb-filter-card .cb-filter-dual input,
body.has-layout .cb-filter-card .cb-filter-range select,
body.has-layout .cb-filter-card .cb-filter-range input{
  flex:1 !important;
  min-width:0 !important;
  width:auto !important;
  height:34px !important;
  line-height:1.4 !important;
  border:1px solid #E2E8F0 !important;
  border-radius:6px !important;
  background:#fff !important;
  padding:4px 10px !important;
  font-size:13px !important;
  color:#334155 !important;
  outline:none !important;
  box-shadow:none !important;
  box-sizing:border-box !important;
  transition:border-color 0.2s, box-shadow 0.2s !important;
}

/* W-3: 复合控件内子控件 focus 状态统一 */
body.has-layout .cb-filter-card .cb-filter-dual .cb-filter-ctrl:focus,
body.has-layout .cb-filter-card .cb-filter-range .cb-filter-ctrl:focus,
body.has-layout .cb-filter-card .cb-filter-dual select:focus,
body.has-layout .cb-filter-card .cb-filter-dual input:focus,
body.has-layout .cb-filter-card .cb-filter-range select:focus,
body.has-layout .cb-filter-card .cb-filter-range input:focus{
  border-color:#2563EB !important;
  box-shadow:0 0 0 3px rgba(37,99,235,0.1) !important;
}

/* W-4: 复合控件内下拉框箭头统一 */
body.has-layout .cb-filter-card .cb-filter-dual select.cb-filter-ctrl,
body.has-layout .cb-filter-card .cb-filter-range select.cb-filter-ctrl{
  cursor:pointer !important;
  appearance:none !important;
  -webkit-appearance:none !important;
  background-image:linear-gradient(45deg,transparent 50%,#94A3B8 50%),linear-gradient(135deg,#94A3B8 50%,transparent 50%) !important;
  background-position:calc(100% - 14px) 50%,calc(100% - 9px) 50% !important;
  background-size:5px 5px !important;
  background-repeat:no-repeat !important;
  padding-right:28px !important;
  background-color:#fff !important;
}

/* W-5: 区间分隔符和单位 — 统一颜色字号，不压缩 */
body.has-layout .cb-filter-card .cb-filter-tilde,
body.has-layout .cb-filter-card .cb-filter-suffix{
  color:#94A3B8 !important;
  font-size:13px !important;
  flex-shrink:0 !important;
  white-space:nowrap !important;
  line-height:34px !important;
}

/* W-6: 日期输入框 — 统一高度和日历图标 */
body.has-layout .cb-filter-card input[type="date"].cb-filter-ctrl,
body.has-layout .cb-filter-card .cb-filter-range input[type="date"]{
  color:#334155 !important;
  -webkit-appearance:none !important;
  appearance:none !important;
  height:34px !important;
}
body.has-layout .cb-filter-card input[type="date"].cb-filter-ctrl::-webkit-calendar-picker-indicator,
body.has-layout .cb-filter-card .cb-filter-range input[type="date"]::-webkit-calendar-picker-indicator{
  cursor:pointer !important;
  opacity:0.55 !important;
  vertical-align:middle !important;
  margin:0 !important;
  padding:0 !important;
}

/* W-7: 单控件 — 确保和复合控件子控件样式完全一致 */
body.has-layout .cb-filter-card .cb-filter-item > .cb-filter-ctrl{
  height:34px !important;
  border:1px solid #E2E8F0 !important;
  border-radius:6px !important;
  background:#fff !important;
  padding:4px 10px !important;
  font-size:13px !important;
  color:#334155 !important;
}

/* W-8: 单控件下拉箭头统一 */
body.has-layout .cb-filter-card .cb-filter-item > select.cb-filter-ctrl{
  cursor:pointer !important;
  appearance:none !important;
  -webkit-appearance:none !important;
  background-image:linear-gradient(45deg,transparent 50%,#94A3B8 50%),linear-gradient(135deg,#94A3B8 50%,transparent 50%) !important;
  background-position:calc(100% - 14px) 50%,calc(100% - 9px) 50% !important;
  background-size:5px 5px !important;
  background-repeat:no-repeat !important;
  padding-right:28px !important;
  background-color:#fff !important;
}

/* W-9: 占位符统一颜色 */
body.has-layout .cb-filter-card .cb-filter-ctrl::placeholder,
body.has-layout .cb-filter-card .cb-filter-dual .cb-filter-ctrl::placeholder,
body.has-layout .cb-filter-card .cb-filter-range .cb-filter-ctrl::placeholder{
  color:#94A3B8 !important;
}

/* ============================================================
   PATCH X — 公共采集箱筛选栏按钮区内联样式
   ============================================================ */

/* X-1: 按钮区筛选项 — 和其他筛选项一致的横向排列 */
body.has-layout .cb-filter-card .cb-filter-actions-inline{
  display:flex !important;
  flex-direction:row !important;
  align-items:center !important;
  gap:10px !important;
  border:none !important;
  background:transparent !important;
  padding:0 !important;
  min-height:34px !important;
}

/* X-2: 按钮区内隐藏标签 — 占空间保持对齐，但不可见 */
body.has-layout .cb-filter-card .cb-filter-actions-inline .cb-filter-label{
  visibility:hidden !important;
  flex:0 0 auto !important;
  width:auto !important;
}

/* X-3: 按钮容器 — flex:1占满，右对齐 */
body.has-layout .cb-filter-card .cb-filter-actions-inline > div{
  display:flex !important;
  flex-direction:row !important;
  align-items:center !important;
  gap:8px !important;
  flex:1 !important;
  justify-content:flex-end !important;
  min-width:0 !important;
}

/* X-4: 按钮区内按钮 — 统一高度和样式 */
body.has-layout .cb-filter-card .cb-filter-actions-inline .ms-btn{
  height:34px !important;
  padding:0 16px !important;
  border-radius:6px !important;
  font-size:13px !important;
  font-weight:500 !important;
  display:inline-flex !important;
  align-items:center !important;
  cursor:pointer !important;
  transition:all 0.2s !important;
}

/* X-5: 收起筛选链接 — 蓝色，无下划线 */
body.has-layout .cb-filter-card .cb-filter-actions-inline .cb-filter-toggle{
  font-size:13px !important;
  color:#2563EB !important;
  text-decoration:none !important;
  padding:0 4px !important;
  white-space:nowrap !important;
  cursor:pointer !important;
  font-weight:500 !important;
  background:none !important;
  border:none !important;
}
body.has-layout .cb-filter-card .cb-filter-actions-inline .cb-filter-toggle:hover{
  text-decoration:underline !important;
}

/* X-6: 收起状态 — 按钮区一起隐藏 */
body.has-layout .cb-filter-bar.cb-collapsed .cb-filter-actions-inline{
  display:none !important;
}

/* ============================================================
   PATCH Y — 公共采集箱筛选栏去掉最外层外壳
   ============================================================ */
body.has-layout .cb-filter-card{
  background:transparent !important;
  border:none !important;
  box-shadow:none !important;
  border-radius:0 !important;
  padding:0 !important;
  margin-bottom:16px !important;
}

/* ============================================================
   PATCH Z — 公共采集箱筛选栏白色卡片（覆盖PATCH Y的透明背景）
   ============================================================ */
body.has-layout .cb-filter-card{
  background:#fff !important;
  border:1px solid #E2E8F0 !important;
  border-radius:10px !important;
  box-shadow:none !important;
  padding:16px 20px 12px !important;
  margin-bottom:16px !important;
}

/* ============================================================
   PATCH AA — 公共采集箱筛选栏去掉外框（边框+阴影），保留白色背景
   ============================================================ */
body.has-layout .cb-filter-card{
  background:#fff !important;
  border:none !important;
  box-shadow:none !important;
  border-radius:10px !important;
  padding:16px 20px 12px !important;
  margin-bottom:16px !important;
}

/* ============================================================
   PATCH AB — 妙手风格筛选栏展开/收起（公共采集箱）
   ============================================================ */

/* 默认收起：隐藏第三行筛选项、创建时间、展开时按钮区 */
body.has-layout .cb-filter-bar .cb-foldable{
  display:none !important;
}
body.has-layout .cb-filter-bar .cb-foldable-second-row{
  display:none !important;
}
body.has-layout .cb-filter-bar .cb-actions-expanded{
  display:none !important;
}

/* 展开时：显示第三行、创建时间、展开时按钮区，隐藏收起时按钮区 */
body.has-layout .cb-filter-bar.cb-expanded .cb-foldable{
  display:flex !important;
}
body.has-layout .cb-filter-bar.cb-expanded .cb-foldable-second-row{
  display:flex !important;
}
body.has-layout .cb-filter-bar.cb-expanded .cb-actions-expanded{
  display:flex !important;
}
body.has-layout .cb-filter-bar.cb-expanded .cb-actions-collapsed{
  display:none !important;
}

/* 展开/收起链接样式 */
body.has-layout .cb-filter-bar .cb-filter-toggle{
  font-size:13px !important;
  color:#2563EB !important;
  text-decoration:none !important;
  padding:0 4px !important;
  white-space:nowrap !important;
  cursor:pointer !important;
  font-weight:500 !important;
  background:none !important;
  border:none !important;
}
body.has-layout .cb-filter-bar .cb-filter-toggle:hover{
  text-decoration:underline !important;
}

/* ============================================================
   PATCH AC — 妙手风格筛选栏展开/收起（Newegg/SHEIN采集箱 cb2-*）
   ============================================================ */

/* 默认收起（collapsed）：隐藏第三四行、备注、展开时按钮区 */
body.has-layout .cb2-filter.collapsed .cb2-foldable{
  display:none !important;
}
body.has-layout .cb2-filter.collapsed .cb2-foldable-second-row{
  display:none !important;
}
body.has-layout .cb2-filter.collapsed .cb2-actions-expanded{
  display:none !important;
}
body.has-layout .cb2-filter.collapsed .cb2-actions-collapsed{
  display:flex !important;
}

/* 展开时：显示第三四行、备注、展开时按钮区，隐藏收起时按钮区 */
body.has-layout .cb2-filter:not(.collapsed) .cb2-foldable{
  display:flex !important;
}
body.has-layout .cb2-filter:not(.collapsed) .cb2-foldable-second-row{
  display:flex !important;
}
body.has-layout .cb2-filter:not(.collapsed) .cb2-actions-expanded{
  display:flex !important;
}
body.has-layout .cb2-filter:not(.collapsed) .cb2-actions-collapsed{
  display:none !important;
}

/* 展开时按钮区和收起时按钮区的基础样式 */
body.has-layout .cb2-field.cb2-actions-collapsed,
body.has-layout .cb2-field.cb2-actions-expanded{
  border:none !important;
  background:transparent !important;
  padding:0 !important;
  min-height:34px !important;
  align-items:center !important;
}

/* ============================================================
   PATCH AD — 修复采集箱布局异常（状态分段器+表格宽度）
   ============================================================ */

/* AD-1: 状态分段器改为块级flex，独占一行，避免和操作栏挤在一起 */
body.has-layout .cb2-seg{
  display:flex !important;
  width:100% !important;
  margin-bottom:12px !important;
}

/* AD-2: 表格面板清除浮动，占满整行宽度 */
body.has-layout .cb2-panel{
  width:100% !important;
  clear:both !important;
  float:none !important;
  display:block !important;
  box-sizing:border-box !important;
}

/* AD-3: 表格包裹层占满宽度 */
body.has-layout .cb2-panel .ms-table-wrap{
  width:100% !important;
  overflow-x:auto !important;
}

/* AD-4: 表格本身占满宽度 */
body.has-layout .cb2-panel table.data-table{
  width:100% !important;
  table-layout:fixed !important;
}

/* ============================================================
   PATCH AE — 全局自定义提示弹窗 S.alert（页面居中，无服务器地址）
   ============================================================ */

/* 遮罩层：全屏半透明，flex 垂直水平居中 */
.s-alert-mask{
  position:fixed !important;
  top:0 !important;
  left:0 !important;
  right:0 !important;
  bottom:0 !important;
  background:rgba(15,23,42,0.5) !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  z-index:99999 !important;
  animation:s-alert-fade-in 0.15s ease !important;
}

/* 弹窗主体：白色卡片，圆角，阴影 */
.s-alert-box{
  background:#fff !important;
  border-radius:14px !important;
  width:420px !important;
  max-width:90vw !important;
  box-shadow:0 24px 64px rgba(15,23,42,0.25), 0 4px 12px rgba(15,23,42,0.1) !important;
  padding:28px 28px 22px !important;
  box-sizing:border-box !important;
  animation:s-alert-pop-in 0.2s cubic-bezier(0.34,1.56,0.64,1) !important;
}

/* 第一行：报错标题（红色加粗） */
.s-alert-title{
  font-size:16px !important;
  font-weight:600 !important;
  color:#DC2626 !important;
  margin-bottom:12px !important;
  line-height:1.4 !important;
  word-break:break-word !important;
}

/* 第二行：报错原因（灰色普通文字） */
.s-alert-msg{
  font-size:14px !important;
  color:#475569 !important;
  line-height:1.7 !important;
  margin-bottom:24px !important;
  word-break:break-word !important;
}

/* 底部按钮区：居中 */
.s-alert-footer{
  display:flex !important;
  justify-content:center !important;
  gap:10px !important;
}

/* 确定按钮：蓝色实心 */
.s-alert-ok{
  background:#2563EB !important;
  color:#fff !important;
  border:none !important;
  border-radius:8px !important;
  padding:10px 36px !important;
  font-size:14px !important;
  font-weight:500 !important;
  cursor:pointer !important;
  transition:all 0.2s !important;
  min-width:96px !important;
}
.s-alert-ok:hover{
  background:#1D4ED8 !important;
  box-shadow:0 4px 12px rgba(37,99,235,0.35) !important;
}
.s-alert-ok:active{
  transform:scale(0.97) !important;
}

/* 动画 */
@keyframes s-alert-fade-in{
  from{opacity:0;}
  to{opacity:1;}
}
@keyframes s-alert-pop-in{
  from{opacity:0; transform:scale(0.9) translateY(-12px);}
  to{opacity:1; transform:scale(1) translateY(0);}
}

/* ============================================================
   PATCH AF — 产品采集页全面优化（UI/UX 重构）
   ============================================================ */

/* ===== P0-1: 高级筛选区4列栅格重构 ===== */

/* 筛选区栅格：从3列改为4列等宽 */
.pc-cond-grid{
  display:grid !important;
  grid-template-columns:repeat(4, 1fr) !important;
  gap:20px 16px !important;
  align-items:start !important;
}

/* 筛选项：标签在上，控件在下 */
.pc-cond-item{
  display:flex !important;
  flex-direction:column !important;
  gap:8px !important;
}

/* 筛选项标签：统一字号字重颜色 */
.pc-cond-item label{
  font-size:13px !important;
  font-weight:500 !important;
  color:#374151 !important;
  margin:0 !important;
  line-height:1.4 !important;
}

/* 控件统一：高度36px、圆角6px、边框、focus态 */
.pc-cond-input{
  height:36px !important;
  padding:0 12px !important;
  border:1px solid #CBD5E1 !important;
  border-radius:6px !important;
  font-size:14px !important;
  color:#1E293B !important;
  background:#fff !important;
  outline:none !important;
  box-sizing:border-box !important;
  width:100% !important;
  transition:all 0.2s !important;
}
.pc-cond-input:hover{
  border-color:#94A3B8 !important;
}
.pc-cond-input:focus{
  border-color:#2563EB !important;
  box-shadow:0 0 0 3px rgba(37,99,235,0.1) !important;
}
.pc-cond-input::placeholder{
  color:#94A3B8 !important;
}

/* 下拉框样式 */
.pc-cond-input select,
select.pc-cond-input{
  appearance:none !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748B' d='M6 8L1 3h10z'/%3E%3C/svg%3E") !important;
  background-repeat:no-repeat !important;
  background-position:right 12px center !important;
  padding-right:32px !important;
  cursor:pointer !important;
}

/* 价格区间：复合控件，~符号间距 */
.pc-price-row{
  display:flex !important;
  align-items:center !important;
  gap:8px !important;
}
.pc-price-input{
  flex:1 !important;
  min-width:0 !important;
}
.pc-price-sep{
  color:#94A3B8 !important;
  font-size:14px !important;
  flex-shrink:0 !important;
  font-weight:500 !important;
}

/* ===== P0-2: 复选框/单选框组垂直排列 ===== */

/* 复选框/单选框组：垂直排列 */
.pc-check-group{
  display:flex !important;
  flex-direction:column !important;
  gap:10px !important;
  padding-top:2px !important;
}

/* 复选框/单选框项：统一尺寸和样式 */
.pc-check-item{
  display:inline-flex !important;
  align-items:center !important;
  gap:8px !important;
  font-size:14px !important;
  color:#374151 !important;
  cursor:pointer !important;
  user-select:none !important;
  line-height:1.4 !important;
}

/* 复选框/单选框统一尺寸 */
.pc-check-item input[type="checkbox"],
.pc-check-item input[type="radio"]{
  width:16px !important;
  height:16px !important;
  margin:0 !important;
  cursor:pointer !important;
  accent-color:#2563EB !important;
  flex-shrink:0 !important;
}

/* ===== P0-3: 批量填入区和CSV上传区等高对齐 ===== */

/* 底部两栏栅格：等高对齐 */
.pc-bottom-grid{
  display:grid !important;
  grid-template-columns:3fr 2fr !important;
  gap:16px !important;
  margin-bottom:16px !important;
  align-items:stretch !important;
}

/* 卡片：flex布局，撑满高度 */
.pc-bottom-grid .pc-card{
  display:flex !important;
  flex-direction:column !important;
  height:100% !important;
  margin-bottom:0 !important;
}

/* 卡片body：flex:1 撑开剩余高度 */
.pc-bottom-grid .pc-card-body{
  flex:1 !important;
  display:flex !important;
  flex-direction:column !important;
}

/* 批量填入文本框：flex:1 撑开高度 */
.pc-textarea{
  flex:1 !important;
  min-height:200px !important;
  padding:14px 16px !important;
  border:1px solid #CBD5E1 !important;
  border-radius:8px !important;
  font-size:13px !important;
  font-family:'SF Mono', 'Consolas', 'Monaco', monospace !important;
  line-height:1.8 !important;
  color:#1E293B !important;
  background:#fff !important;
  outline:none !important;
  resize:vertical !important;
  box-sizing:border-box !important;
  width:100% !important;
  transition:all 0.2s !important;
}
.pc-textarea:focus{
  border-color:#2563EB !important;
  box-shadow:0 0 0 3px rgba(37,99,235,0.1) !important;
}
.pc-textarea::placeholder{
  color:#94A3B8 !important;
}

/* 批量操作区：底部对齐 */
.pc-batch-actions{
  display:flex !important;
  justify-content:space-between !important;
  align-items:center !important;
  margin-top:16px !important;
  flex-shrink:0 !important;
}
.pc-batch-count{
  font-size:13px !important;
  color:#64748B !important;
}
.pc-batch-count span{
  font-weight:600 !important;
  color:#2563EB !important;
}
.pc-batch-btn{
  height:36px !important;
  padding:0 20px !important;
  background:#2563EB !important;
  color:#fff !important;
  border:none !important;
  border-radius:6px !important;
  font-size:14px !important;
  font-weight:500 !important;
  cursor:pointer !important;
  transition:all 0.2s !important;
  display:inline-flex !important;
  align-items:center !important;
  gap:6px !important;
}
.pc-batch-btn:hover{
  background:#1D4ED8 !important;
  box-shadow:0 4px 12px rgba(37,99,235,0.25) !important;
}
.pc-batch-btn:active{
  transform:scale(0.97) !important;
}
.pc-batch-btn:disabled{
  background:#CBD5E1 !important;
  cursor:not-allowed !important;
  box-shadow:none !important;
}

/* CSV上传区域：flex:1 撑开，内容垂直居中 */
.pc-dropzone{
  flex:1 !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  border:2px dashed #CBD5E1 !important;
  border-radius:10px !important;
  padding:32px 24px !important;
  text-align:center !important;
  cursor:pointer !important;
  transition:all 0.2s !important;
  background:#F8FAFC !important;
  min-height:200px !important;
}
.pc-dropzone:hover,
.pc-dropzone.dragover{
  border-color:#2563EB !important;
  background:#EFF6FF !important;
}
.pc-dropzone-text{
  font-size:15px !important;
  font-weight:600 !important;
  color:#1E293B !important;
  margin-bottom:6px !important;
}
.pc-dropzone-hint{
  font-size:13px !important;
  color:#64748B !important;
}

/* ===== P1-1: 关键词搜索区优化 ===== */

/* 搜索行：统一高度和间距 */
.pc-search-row{
  display:flex !important;
  gap:12px !important;
  align-items:center !important;
  max-width:100% !important;
  margin:0 !important;
}

/* 搜索输入框：统一高度、图标、focus态 */
.pc-search-input{
  flex:1 !important;
  height:44px !important;
  padding:0 16px 0 44px !important;
  border:1px solid #CBD5E1 !important;
  border-radius:8px !important;
  font-size:14px !important;
  color:#1E293B !important;
  background:#fff !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%2394A3B8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E") !important;
  background-repeat:no-repeat !important;
  background-position:left 14px center !important;
  outline:none !important;
  box-sizing:border-box !important;
  transition:all 0.2s !important;
}
.pc-search-input:hover{
  border-color:#94A3B8 !important;
}
.pc-search-input:focus{
  border-color:#2563EB !important;
  box-shadow:0 0 0 3px rgba(37,99,235,0.1) !important;
}
.pc-search-input::placeholder{
  color:#94A3B8 !important;
}

/* 搜索按钮：统一高度、主色、hover态 */
.pc-search-row .ms-btn-primary,
.pc-search-row button{
  height:44px !important;
  padding:0 28px !important;
  background:#2563EB !important;
  color:#fff !important;
  border:none !important;
  border-radius:8px !important;
  font-size:14px !important;
  font-weight:500 !important;
  cursor:pointer !important;
  transition:all 0.2s !important;
  display:inline-flex !important;
  align-items:center !important;
  gap:6px !important;
  white-space:nowrap !important;
}
.pc-search-row .ms-btn-primary:hover,
.pc-search-row button:hover{
  background:#1D4ED8 !important;
  box-shadow:0 4px 12px rgba(37,99,235,0.25) !important;
}
.pc-search-row .ms-btn-primary:active,
.pc-search-row button:active{
  transform:scale(0.97) !important;
}

/* ===== P1-2: 页面标题区标签样式 ===== */

/* 状态标签容器 */
.pc-status-tags{
  display:flex !important;
  gap:8px !important;
  align-items:center !important;
  flex-wrap:wrap !important;
}

/* 通用标签样式 */
.pc-tag{
  display:inline-flex !important;
  align-items:center !important;
  gap:6px !important;
  padding:5px 12px !important;
  border-radius:6px !important;
  font-size:12px !important;
  font-weight:500 !important;
  line-height:1.4 !important;
  cursor:default !important;
  white-space:nowrap !important;
}

/* 成功标签（风控正常） */
.pc-tag-success{
  background:#ECFDF5 !important;
  border:1px solid #A7F3D0 !important;
  color:#059669 !important;
  cursor:pointer !important;
}
.pc-tag-success:hover{
  background:#D1FAE5 !important;
}

/* 主色标签（今日采集） */
.pc-tag-primary{
  background:#EFF6FF !important;
  border:1px solid #BFDBFE !important;
  color:#2563EB !important;
}

/* 标签圆点 */
.pc-tag-dot{
  width:6px !important;
  height:6px !important;
  border-radius:50% !important;
  background:#059669 !important;
  flex-shrink:0 !important;
}

/* ===== P1-3: 按钮统一样式 ===== */

/* 次要按钮（排除名单等） */
.pc-btn-secondary{
  height:36px !important;
  padding:0 16px !important;
  background:#fff !important;
  color:#374151 !important;
  border:1px solid #CBD5E1 !important;
  border-radius:6px !important;
  font-size:13px !important;
  font-weight:500 !important;
  cursor:pointer !important;
  transition:all 0.2s !important;
  display:inline-flex !important;
  align-items:center !important;
  gap:6px !important;
  white-space:nowrap !important;
}
.pc-btn-secondary:hover{
  background:#F8FAFC !important;
  border-color:#94A3B8 !important;
  color:#1E293B !important;
}
.pc-btn-secondary:active{
  transform:scale(0.97) !important;
}

/* ===== P2-1: 底部插件引导区美化 ===== */

.pc-plugin-tip{
  display:flex !important;
  align-items:center !important;
  gap:16px !important;
  background:linear-gradient(135deg, #EFF6FF 0%, #F0F9FF 100%) !important;
  border:1px solid #BFDBFE !important;
  border-radius:10px !important;
  padding:14px 20px !important;
  margin-bottom:20px !important;
}
.pc-plugin-text{
  flex:1 !important;
  font-size:13px !important;
  color:#475569 !important;
  line-height:1.6 !important;
  display:flex !important;
  align-items:center !important;
  gap:8px !important;
}
.pc-plugin-text strong{
  color:#1E293B !important;
  font-weight:600 !important;
}
.pc-plugin-text::before{
  content:'' !important;
  display:inline-block !important;
  width:18px !important;
  height:18px !important;
  flex-shrink:0 !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%232563EB' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4'/%3E%3Cpath d='M12 8h.01'/%3E%3C/svg%3E") !important;
  background-repeat:no-repeat !important;
  background-position:center !important;
}
.pc-plugin-link{
  color:#2563EB !important;
  text-decoration:none !important;
  font-size:14px !important;
  font-weight:600 !important;
  white-space:nowrap !important;
  display:inline-flex !important;
  align-items:center !important;
  gap:6px !important;
  transition:all 0.2s !important;
}
.pc-plugin-link:hover{
  color:#1D4ED8 !important;
  text-decoration:underline !important;
}

/* ===== P2-2: 交互体验样式 ===== */

/* 按钮 loading 态 */
.pc-btn-loading{
  position:relative !important;
  color:transparent !important;
  pointer-events:none !important;
}
.pc-btn-loading::after{
  content:'' !important;
  position:absolute !important;
  top:50% !important;
  left:50% !important;
  width:16px !important;
  height:16px !important;
  margin:-8px 0 0 -8px !important;
  border:2px solid rgba(255,255,255,0.3) !important;
  border-top-color:#fff !important;
  border-radius:50% !important;
  animation:pc-spin 0.8s linear infinite !important;
}
@keyframes pc-spin{
  to{ transform:rotate(360deg); }
}

/* CSV上传拖拽高亮态 */
.pc-dropzone.dragover{
  border-color:#2563EB !important;
  border-width:3px !important;
  background:#EFF6FF !important;
  transform:scale(1.01) !important;
}

/* CSV上传进度条 */
.pc-upload-progress{
  width:100% !important;
  height:4px !important;
  background:#E2E8F0 !important;
  border-radius:2px !important;
  overflow:hidden !important;
  margin-top:12px !important;
}
.pc-upload-progress-bar{
  height:100% !important;
  background:linear-gradient(90deg, #2563EB, #3B82F6) !important;
  border-radius:2px !important;
  transition:width 0.3s ease !important;
  width:0% !important;
}

/* 已识别计数强调 */
.pc-batch-count{
  display:inline-flex !important;
  align-items:center !important;
  gap:4px !important;
}
.pc-batch-count::before{
  content:'' !important;
  display:inline-block !important;
  width:14px !important;
  height:14px !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2364748B' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpolyline points='14 2 14 8 20 8'/%3E%3Cline x1='16' y1='13' x2='8' y2='13'/%3E%3Cline x1='16' y1='17' x2='8' y2='17'/%3E%3C/svg%3E") !important;
  background-repeat:no-repeat !important;
  background-position:center !important;
}

/* 卡片统一阴影和圆角 */
.pc-card{
  background:#fff !important;
  border-radius:10px !important;
  box-shadow:0 1px 3px rgba(15,23,42,0.06), 0 1px 2px rgba(15,23,42,0.04) !important;
  border:1px solid #E2E8F0 !important;
  overflow:hidden !important;
}

/* 卡片头部统一样式 */
.pc-card-header{
  padding:14px 20px !important;
  display:flex !important;
  justify-content:space-between !important;
  align-items:center !important;
  border-bottom:1px solid #F1F5F9 !important;
  background:#FAFBFC !important;
}
.pc-card-title{
  font-size:15px !important;
  font-weight:600 !important;
  color:#1E293B !important;
}

/* 卡片body统一样式 */
.pc-card-body{
  padding:20px !important;
}

/* 搜索区卡片特殊处理 */
.page-header + .card{
  background:#fff !important;
  border-radius:10px !important;
  box-shadow:0 1px 3px rgba(15,23,42,0.06), 0 1px 2px rgba(15,23,42,0.04) !important;
  border:1px solid #E2E8F0 !important;
  padding:16px 20px !important;
  margin-bottom:16px !important;
}

/* ===== P3: 响应式适配 ===== */

/* 中屏（1024px - 1439px）：筛选区保持4列，底部保持2列 */
@media (max-width: 1439px) and (min-width: 1024px) {
  .pc-cond-grid{
    grid-template-columns:repeat(4, 1fr) !important;
  }
  .pc-bottom-grid{
    grid-template-columns:1fr 1fr !important;
  }
}

/* 小屏（768px - 1023px）：筛选区2列，底部1列 */
@media (max-width: 1023px) and (min-width: 768px) {
  .pc-cond-grid{
    grid-template-columns:repeat(2, 1fr) !important;
    gap:16px !important;
  }
  .pc-bottom-grid{
    grid-template-columns:1fr !important;
  }
  .pc-search-row{
    flex-direction:column !important;
    align-items:stretch !important;
  }
  .pc-search-row button{
    width:100% !important;
    justify-content:center !important;
  }
}

/* 超小屏（<768px）：筛选区1列，所有卡片padding减小 */
@media (max-width: 767px) {
  .pc-cond-grid{
    grid-template-columns:1fr !important;
    gap:14px !important;
  }
  .pc-bottom-grid{
    grid-template-columns:1fr !important;
    gap:12px !important;
  }
  .pc-card,
  .pc-card-body{
    padding:16px !important;
  }
  .pc-card-header{
    padding:12px 16px !important;
  }
  .pc-search-row{
    flex-direction:column !important;
    align-items:stretch !important;
    gap:10px !important;
  }
  .pc-search-input{
    height:40px !important;
  }
  .pc-search-row button{
    width:100% !important;
    height:40px !important;
    justify-content:center !important;
  }
  .pc-plugin-tip{
    flex-direction:column !important;
    align-items:flex-start !important;
    gap:10px !important;
    padding:12px 16px !important;
  }
  .pc-status-tags{
    width:100% !important;
  }
  .pc-batch-actions{
    flex-direction:column !important;
    align-items:stretch !important;
    gap:10px !important;
  }
  .pc-batch-btn{
    width:100% !important;
    justify-content:center !important;
  }
}

/* ============================================================
   PATCH AG — 修复产品采集页筛选区布局异常
   根因：body.has-layout 全局规则把 .pc-cond-grid 改成 flex，
   导致4列grid失效、配送组跑到右上角、复选框文字竖排
   修复：用 body.has-layout 同等优先级覆盖，恢复grid布局
   ============================================================ */

/* 恢复4列grid栅格（覆盖 body.has-layout 的 flex） */
body.has-layout .pc-cond-grid{
  display:grid !important;
  grid-template-columns:repeat(4, 1fr) !important;
  gap:20px 16px !important;
  align-items:start !important;
  flex-wrap:nowrap !important;
}

/* 筛选项：宽度由grid控制，不要 flex:0 0 auto */
body.has-layout .pc-cond-item{
  flex:1 1 0 !important;
  min-width:0 !important;
  width:auto !important;
  display:flex !important;
  flex-direction:column !important;
  gap:8px !important;
}

/* 筛选项标签：不要影响内部复选框label */
body.has-layout .pc-cond-item > label{
  font-size:13px !important;
  font-weight:500 !important;
  color:#374151 !important;
  margin:0 !important;
  line-height:1.4 !important;
}

/* 复选框/单选框组：宽度100%，垂直排列 */
body.has-layout .pc-check-group{
  display:flex !important;
  flex-direction:column !important;
  gap:10px !important;
  width:100% !important;
  padding-top:2px !important;
  flex-wrap:nowrap !important;
}

/* 复选框/单选框项：横向排列，文字不换行不竖排 */
body.has-layout .pc-check-item{
  display:inline-flex !important;
  flex-direction:row !important;
  align-items:center !important;
  gap:8px !important;
  width:100% !important;
  font-size:13px !important;
  font-weight:400 !important;
  color:#374151 !important;
  cursor:pointer !important;
  user-select:none !important;
  line-height:1.4 !important;
  white-space:nowrap !important;
  margin:0 !important;
  padding:0 !important;
  border:none !important;
  background:transparent !important;
  border-radius:0 !important;
}

/* 复选框/单选框：固定16px，不被压缩 */
body.has-layout .pc-check-item input[type="checkbox"],
body.has-layout .pc-check-item input[type="radio"]{
  width:16px !important;
  height:16px !important;
  min-width:16px !important;
  margin:0 !important;
  cursor:pointer !important;
  accent-color:#2563EB !important;
  flex-shrink:0 !important;
}

/* 控件统一（覆盖 body.has-layout 的旧样式） */
body.has-layout .pc-cond-item input,
body.has-layout .pc-cond-item select{
  height:36px !important;
  padding:0 12px !important;
  border:1px solid #CBD5E1 !important;
  border-radius:6px !important;
  font-size:14px !important;
  color:#1E293B !important;
  background:#fff !important;
  outline:none !important;
  width:100% !important;
  box-sizing:border-box !important;
  transition:all 0.2s !important;
}

/* 价格区间复合控件 */
body.has-layout .pc-price-row{
  display:flex !important;
  align-items:center !important;
  gap:8px !important;
  width:100% !important;
}
body.has-layout .pc-price-input{
  flex:1 !important;
  min-width:0 !important;
  width:auto !important;
}
body.has-layout .pc-price-sep{
  color:#94A3B8 !important;
  font-size:14px !important;
  flex-shrink:0 !important;
}

/* 下拉框自定义箭头 */
body.has-layout .pc-cond-item select{
  appearance:none !important;
  -webkit-appearance:none !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748B' d='M6 8L1 3h10z'/%3E%3C/svg%3E") !important;
  background-repeat:no-repeat !important;
  background-position:right 12px center !important;
  padding-right:32px !important;
  cursor:pointer !important;
}

/* 响应式：小屏2列，超小屏1列（覆盖旧的3列规则） */
@media (max-width: 1023px){
  body.has-layout .pc-cond-grid{
    grid-template-columns:repeat(2, 1fr) !important;
  }
}
@media (max-width: 767px){
  body.has-layout .pc-cond-grid{
    grid-template-columns:1fr !important;
  }
}

/* ===== PATCH AG 补充：去除筛选栅格多余卡片外壳 + 修复状态标签磨砂冲突 ===== */

/* 去掉 .pc-cond-grid 的磨砂卡片背景/边框/padding（它已在 .pc-card 内部，不要大框套小框） */
body.has-layout .pc-cond-grid{
  background:transparent !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
  border:none !important;
  border-radius:0 !important;
  box-shadow:none !important;
  padding:0 !important;
  margin-bottom:0 !important;
}

/* 状态标签：覆盖 body.has-layout .pc-tag 的磨砂玻璃效果 */
body.has-layout .pc-status-tags .pc-tag{
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
  box-shadow:none !important;
  border-radius:6px !important;
  padding:5px 12px !important;
  font-size:12px !important;
  font-weight:500 !important;
}
body.has-layout .pc-status-tags .pc-tag-success{
  background:#ECFDF5 !important;
  border:1px solid #A7F3D0 !important;
  color:#059669 !important;
}
body.has-layout .pc-status-tags .pc-tag-primary{
  background:#EFF6FF !important;
  border:1px solid #BFDBFE !important;
  color:#2563EB !important;
}

/* 产品采集页卡片：统一纯白背景，不要磨砂半透明 */
body.has-layout .pc-bottom-grid .pc-card{
  background:#fff !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
  border:1px solid #E2E8F0 !important;
  border-radius:10px !important;
  box-shadow:0 1px 3px rgba(15,23,42,0.06), 0 1px 2px rgba(15,23,42,0.04) !important;
}

/* 筛选区所在卡片也保持纯白 */
body.has-layout .pc-card{
  background:#fff !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
}

/* ============================================================
   PATCH AH — 配送选项方案C：纯横排不换行，紧凑布局
   ============================================================ */

/* 选项组：横向一行排列，不换行 */
body.has-layout .pc-check-group{
  display:flex !important;
  flex-direction:row !important;
  flex-wrap:nowrap !important;
  align-items:center !important;
  gap:14px !important;
  width:100% !important;
  height:36px !important;
  padding-top:0 !important;
}

/* 选项：横向紧凑排列，宽度自适应，不换行 */
body.has-layout .pc-check-item{
  display:inline-flex !important;
  flex-direction:row !important;
  align-items:center !important;
  gap:5px !important;
  width:auto !important;
  flex:0 0 auto !important;
  font-size:13px !important;
  font-weight:400 !important;
  color:#374151 !important;
  cursor:pointer !important;
  white-space:nowrap !important;
  line-height:1 !important;
  margin:0 !important;
  padding:0 !important;
  border:none !important;
  background:transparent !important;
}

/* 复选框/单选框：16px */
body.has-layout .pc-check-item input[type="checkbox"],
body.has-layout .pc-check-item input[type="radio"]{
  width:15px !important;
  height:15px !important;
  min-width:15px !important;
  margin:0 !important;
  cursor:pointer !important;
  accent-color:#2563EB !important;
  flex-shrink:0 !important;
}

/* ============================================================
   PATCH AI — 产品采集页勾选控件精致化（复选框/单选框统一）
   ============================================================ */

/* ===== 复选框：16px 方形，圆角4px，自定义对勾 ===== */
body.has-layout .pc-check-item input[type="checkbox"]{
  appearance:none !important;
  -webkit-appearance:none !important;
  width:16px !important;
  height:16px !important;
  min-width:16px !important;
  max-width:16px !important;
  border:1.5px solid #CBD5E1 !important;
  border-radius:4px !important;
  background:#fff !important;
  cursor:pointer !important;
  position:relative !important;
  margin:0 !important;
  flex:0 0 16px !important;
  vertical-align:middle !important;
  transition:all .15s ease !important;
  box-shadow:none !important;
}
body.has-layout .pc-check-item input[type="checkbox"]:hover{
  border-color:#2563EB !important;
}
body.has-layout .pc-check-item input[type="checkbox"]:checked{
  background:#2563EB !important;
  border-color:#2563EB !important;
}
/* 选中对勾（CSS绘制） */
body.has-layout .pc-check-item input[type="checkbox"]:checked::after{
  content:'' !important;
  position:absolute !important;
  left:4.5px !important;
  top:1.5px !important;
  width:4px !important;
  height:8px !important;
  border:solid #fff !important;
  border-width:0 2px 2px 0 !important;
  transform:rotate(45deg) !important;
}

/* ===== 单选框：16px 正圆形，选中内部圆点 ===== */
body.has-layout .pc-check-item input[type="radio"]{
  appearance:none !important;
  -webkit-appearance:none !important;
  width:16px !important;
  height:16px !important;
  min-width:16px !important;
  max-width:16px !important;
  border:1.5px solid #CBD5E1 !important;
  border-radius:50% !important;
  background:#fff !important;
  cursor:pointer !important;
  position:relative !important;
  margin:0 !important;
  flex:0 0 16px !important;
  vertical-align:middle !important;
  transition:all .15s ease !important;
  box-shadow:none !important;
}
body.has-layout .pc-check-item input[type="radio"]:hover{
  border-color:#2563EB !important;
}
body.has-layout .pc-check-item input[type="radio"]:checked{
  border-color:#2563EB !important;
  background:#fff !important;
}
/* 选中内部圆点 */
body.has-layout .pc-check-item input[type="radio"]:checked::after{
  content:'' !important;
  position:absolute !important;
  left:3px !important;
  top:3px !important;
  width:8px !important;
  height:8px !important;
  border-radius:50% !important;
  background:#2563EB !important;
}

/* 选项 hover 时文字轻微变主色 */
body.has-layout .pc-check-item:hover input[type="checkbox"],
body.has-layout .pc-check-item:hover input[type="radio"]{
  border-color:#2563EB !important;
}

/* ============================================================
   PATCH AJ — 配送方式单选框视觉改为正方形勾选框（保留单选逻辑）
   ============================================================ */

/* 单选框外形：圆形 → 正方形，和复选框一致 */
body.has-layout .pc-check-item input[type="radio"]{
  border-radius:4px !important;
}
/* 选中：蓝底（和复选框一致），不再是圆环 */
body.has-layout .pc-check-item input[type="radio"]:checked{
  background:#2563EB !important;
  border-color:#2563EB !important;
}
/* 选中标记：内部圆点 → 白色对勾（和复选框一致） */
body.has-layout .pc-check-item input[type="radio"]:checked::after{
  left:4.5px !important;
  top:1.5px !important;
  width:4px !important;
  height:8px !important;
  border:solid #fff !important;
  border-width:0 2px 2px 0 !important;
  border-radius:0 !important;
  background:transparent !important;
  transform:rotate(45deg) !important;
}

/* ============================================================
   PATCH AL — 全站分页栏统一（左信息 + 右聚拢一组 / 主色统一 / 控件32px / 衔接表格）
   覆盖：cb-pagination(公共采集箱) / ms-pagination(Newegg·SHEIN·草稿) /
        file-pagination(文件·操作日志) / pub-pagination(发布记录) / mm-pagination(会员)
   ============================================================ */

/* AL-1 卡片内分页容器：统一右对齐、纵向居中、统一间距与顶部分割线 */
body.has-layout .ms-pagination,
body.has-layout .file-pagination,
body.has-layout .pub-pagination,
body.has-layout .mm-pagination{
  display:flex;
  align-items:center !important;
  justify-content:flex-end !important;
  flex-wrap:wrap !important;
  gap:10px 16px !important;
  padding:12px 18px !important;
  margin:0 !important;
  background:#fff !important;
  border-top:1px solid #F1F5F9 !important;
}

/* AL-2 公共采集箱分页在表格卡片外：独立白色圆角条，去掉悬空感 */
body.has-layout .cb-pagination{
  display:flex;
  align-items:center !important;
  justify-content:flex-end !important;
  flex-wrap:wrap !important;
  gap:10px 16px !important;
  padding:10px 18px !important;
  margin:10px 0 0 !important;
  background:#fff !important;
  border:1px solid #F1F5F9 !important;
  border-radius:10px !important;
}

/* AL-3 第一个“共 N 条”信息块固定到最左，其余控件自然在右侧聚拢成一组 */
body.has-layout .cb-pagination > .cb-page-info,
body.has-layout .ms-pagination > span:first-child,
body.has-layout .file-pagination > .pagination-info,
body.has-layout .file-pagination > div:first-child,
body.has-layout .pub-pagination > .pub-pager-total{
  margin-right:auto !important;
}

/* AL-4 页码/翻页按钮组内部间距统一 */
body.has-layout .cb-page-controls,
body.has-layout .pagination-controls,
body.has-layout .pub-pager-buttons{
  display:flex !important;
  align-items:center !important;
  gap:6px !important;
  flex-wrap:wrap !important;
}

/* AL-5 公共采集箱分页按钮/页码：旧蓝#1a73e8、#ddd、圆角4 → 统一主色规范 */
body.has-layout .cb-page-btn,
body.has-layout .cb-page-num{
  min-width:32px !important;
  height:32px !important;
  padding:0 10px !important;
  border:1px solid #E2E8F0 !important;
  border-radius:6px !important;
  background:#fff !important;
  color:#475569 !important;
  font-size:13px !important;
  cursor:pointer !important;
  transition:all .12s !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  box-shadow:none !important;
}
body.has-layout .cb-page-btn:hover:not(:disabled),
body.has-layout .cb-page-num:hover{
  border-color:#2563EB !important;
  color:#2563EB !important;
  background:#EFF6FF !important;
}
body.has-layout .cb-page-num.active{
  background:#2563EB !important;
  color:#fff !important;
  border-color:#2563EB !important;
  font-weight:600 !important;
}
body.has-layout .cb-page-btn:disabled{ opacity:.4 !important; cursor:not-allowed !important; }
body.has-layout .cb-page-dots{ color:#94A3B8 !important; padding:0 4px !important; font-size:13px !important; }

/* AL-6 公共采集箱“共N条 / 每页 / 跳转”文字与控件统一 */
body.has-layout .cb-page-info{ font-size:13px !important; color:#64748B !important; }
body.has-layout .cb-page-info strong{ color:#2563EB !important; font-weight:600 !important; }
body.has-layout .cb-page-size,
body.has-layout .cb-page-jump{
  display:inline-flex !important;
  align-items:center !important;
  gap:6px !important;
  font-size:13px !important;
  color:#64748B !important;
}
body.has-layout .cb-page-size select,
body.has-layout .cb-page-jump input{
  height:32px !important;
  border:1px solid #E2E8F0 !important;
  border-radius:6px !important;
  font-size:13px !important;
  outline:none !important;
  background:#fff !important;
  color:#475569 !important;
  box-sizing:border-box !important;
}
body.has-layout .cb-page-size select{ padding:0 8px !important; }
body.has-layout .cb-page-jump input{ width:54px !important; padding:0 6px !important; text-align:center !important; }
body.has-layout .cb-page-jump input:focus{ border-color:#2563EB !important; }
body.has-layout .cb-page-jump .btn,
body.has-layout .cb-page-jump button{ height:32px !important; padding:0 12px !important; border-radius:6px !important; }

/* AL-7 ms 分页（Newegg/SHEIN/草稿）：信息文字与跳转输入框统一 */
body.has-layout .ms-pagination > span{ color:#64748B !important; font-size:13px !important; }
body.has-layout .ms-pagination input[type="number"]{
  width:54px !important;
  height:32px !important;
  padding:0 6px !important;
  border:1px solid #E2E8F0 !important;
  border-radius:6px !important;
  font-size:13px !important;
  text-align:center !important;
  outline:none !important;
  box-sizing:border-box !important;
}
body.has-layout .ms-pagination input[type="number"]:focus{ border-color:#2563EB !important; }

/* AL-8 会员分页：纯页码整组靠右，按钮尺寸与页码信息统一 */
body.has-layout .mm-pagination{ gap:6px !important; }
body.has-layout .mm-pagination button{ min-width:32px !important; height:32px !important; }
body.has-layout .mm-pagination .page-info{ font-size:13px !important; color:#64748B !important; padding:0 8px !important; }

/* AL-9 file 分页信息/控件文字颜色统一 */
body.has-layout .file-pagination .pagination-info{ color:#64748B !important; font-size:13px !important; }
body.has-layout .file-pagination .page-num{ color:#475569 !important; font-size:13px !important; }

/* AL-10 超管用户分页（纯页码居中）按钮尺寸统一 */
body.has-layout .pagination{ gap:8px !important; flex-wrap:wrap !important; }
body.has-layout .pagination .btn-sm{ min-width:32px !important; height:32px !important; border-radius:6px !important; display:inline-flex;align-items:center;justify-content:center; }

/* ============================================================
   PATCH AM — 修复列表表格被固定高度裁切（数据显示不全、缺滚动条、分页栏顶在半截行上）
   根因：.ms-table-wrap 全局 max-height:calc(100vh - 320px)，叠加后续 overflow:hidden，
   超出可视高度的数据行被直接裁掉且无法纵向滚动（历史“10条只显5条/12条只显6条”同一根因）。
   分页列表改为随数据自然撑开，由页面整体滚动，分页栏紧跟全部数据之后。
   说明：cb2-panel / 数据管理 tab 等更高优先级规则仍各自保留 overflow-x，不受影响。
   ============================================================ */
body.has-layout .ms-table-wrap{
  max-height:none !important;   /* 取消表格内部固定限高，数据行完整铺开 */
  overflow:visible !important;  /* 纵向不再裁切；横向由更高优先级规则保留 auto */
}

/* ============================================================
   PATCH AN — 全站下拉菜单“去拥挤”统一规范
   问题：菜单项 padding 偏小、直角通栏、项间无间隙、长文案贴边、容器半透明显乱
   覆盖：cb-dropdown-menu / cb2-dropdown-menu / dropdown-menu / user-dropdown / export-menu
   ============================================================ */

/* AN-1 菜单容器：纯白不透明（去毛玻璃半透明）、统一圆角阴影、宽松内边距；浮于表格/表头之上、低于弹窗遮罩 */
body.has-layout .cb-dropdown-menu,
body.has-layout .cb2-dropdown-menu,
body.has-layout .dropdown-menu,
body.has-layout .user-dropdown{
  background:#ffffff !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
  border:1px solid #E2E8F0 !important;
  border-radius:10px !important;
  box-shadow:0 8px 24px rgba(15,23,42,.12),0 2px 6px rgba(15,23,42,.06) !important;
  padding:8px !important;
  z-index:900 !important;
}

/* AN-2 通用菜单项：加高、圆角块、项间呼吸间隙、行高舒适、长文案不折行 */
body.has-layout .cb2-dropdown-menu a,
body.has-layout .dropdown-menu a,
body.has-layout .export-menu-item{
  display:flex !important;
  align-items:center !important;
  padding:9px 14px !important;
  margin:2px 0 !important;
  border-radius:7px !important;
  font-size:13.5px !important;
  line-height:1.5 !important;
  color:#334155 !important;
  white-space:nowrap !important;
  cursor:pointer !important;
  text-decoration:none !important;
  box-sizing:border-box !important;
  transition:background .12s,color .12s !important;
}
/* 公共采集箱操作栏菜单项：以同等优先级覆盖旧“直角紧贴”规则，改为圆角宽松项 */
body.has-layout .cb-opbar .cb-dropdown-menu .cb-menu-item,
body.has-layout .cb-dropdown-menu .cb-menu-item{
  display:block !important;
  padding:10px 14px !important;
  margin:2px 0 !important;
  border-radius:7px !important;
  font-size:13.5px !important;
  line-height:1.5 !important;
  white-space:nowrap !important;
  box-sizing:border-box !important;
}

/* AN-3 通用 hover：浅灰圆角块（危险项浅红由既有 .cb-menu-danger:hover 规则负责，不覆盖） */
body.has-layout .cb2-dropdown-menu a:hover,
body.has-layout .dropdown-menu a:hover,
body.has-layout .export-menu-item:hover{
  background:#F1F5F9 !important;
  color:#1E293B !important;
}

/* AN-4 分组标题与分割线：留出上下呼吸间距，不再贴边 */
body.has-layout .cb-menu-group-title,
body.has-layout .cb-batch-group-title{
  padding:8px 12px 4px !important;
  margin:2px 0 0 !important;
}
body.has-layout .cb-menu-divider,
body.has-layout .dropdown-divider{ margin:6px 4px !important; }

/* AN-5 批量编辑大菜单内的选项同步宽松 */
body.has-layout .cb-batch-item{
  padding:9px 12px !important;
  margin:2px 0 !important;
  border-radius:7px !important;
  line-height:1.5 !important;
}

/* AN-6 顶部用户菜单项与操作菜单统一为圆角留白项 */
body.has-layout .user-dropdown a{
  margin:2px 4px !important;
  border-radius:7px !important;
  padding:9px 12px !important;
}

/* ===== 全局消息铃铛下拉兜底（与 mp.css 保持一致，任何页面都不裸奔） ===== */
.mp-notif-panel{position:absolute;right:0;top:46px;width:340px;min-width:300px;max-width:92vw;background:#fff !important;border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.18);z-index:2000;display:none;max-height:60vh;overflow:auto;text-align:left}
.mp-notif-panel.show{display:block}
.mp-notif-item{padding:10px 14px;border-bottom:1px solid #f1f5f9;cursor:pointer;font-size:13px;background:#fff}
.mp-notif-item.unread{background:#f0f7ff}
.mp-notif-item .t{font-weight:600;margin-bottom:2px;color:#1e293b}
.mp-notif-item .c{color:#6b7280;font-size:12px;line-height:1.5;word-break:break-word}
.mp-notif-item .time{color:#94a3b8;font-size:11px;margin-top:2px}
.mp-notif-foot{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border-top:1px solid #eef2f7;background:#fff;border-radius:0 0 10px 10px}
.mp-notif-foot .row{display:flex;gap:18px;width:100%;justify-content:center;align-items:center}
.mp-notif-foot a{font-size:12px;white-space:nowrap;cursor:pointer}
