/* ===== common.css — 全局样式 ===== */
/* 从 index.html 提取，保持原始内容不变 */

        :root {
            --primary: #3b82f6;
            --primary-dark: #2563eb;
            --success: #10b981;
            --warning: #f59e0b;
            --danger: #ef4444;
            --purple: #8b5cf6;
            --bg-dark: #070b16;
            --bg-dark-fallback: #0f172a;
            --bg-card: #1e293b;
            --bg-card-hover: #334155;
            --text-primary: #f8fafc;
            --text-secondary: #94a3b8;
            --border-color: #334155;
            --shadow-glow: 0 0 20px rgba(59, 130, 246, 0.3);
            --shadow-glow-success: 0 0 20px rgba(16, 185, 129, 0.3);
            --shadow-glow-warning: 0 0 20px rgba(245, 158, 11, 0.3);
            --shadow-glow-purple: 0 0 20px rgba(139, 92, 246, 0.3);
            /* Glassmorphism 设计系统 token */
            --glass-blur: 16px;
            --glass-blur-heavy: 24px;
            --glass-bg: rgba(255, 255, 255, 0.08);
            --glass-bg-hover: rgba(255, 255, 255, 0.12);
            --glass-border: rgba(255, 255, 255, 0.15);
            --glass-border-hover: rgba(255, 255, 255, 0.25);
            --glass-highlight: rgba(255, 255, 255, 0.08);
            --glass-shadow: 0 4px 24px rgba(0, 0, 0, 0.3);
            --glass-shadow-hover: 0 8px 32px rgba(0, 0, 0, 0.4);
        }

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

        body {
            font-family: 'Inter', system-ui, sans-serif;
            background: var(--bg-dark);
            background-image:
                radial-gradient(ellipse 800px 600px at 15% 50%, rgba(99, 102, 241, 0.15) 0%, transparent 70%),
                radial-gradient(ellipse 600px 500px at 85% 15%, rgba(139, 92, 246, 0.1) 0%, transparent 65%),
                radial-gradient(ellipse 700px 400px at 45% 95%, rgba(59, 130, 246, 0.08) 0%, transparent 60%);
            background-attachment: fixed;
            color: var(--text-primary);
            min-height: 100vh;
            display: flex;
            overflow-x: hidden;
        }

        /* ===== 左侧 Dock 栏 ===== */
        .dock {
            position: fixed;
            top: 12px;
            left: 12px;
            bottom: 12px;
            width: 160px;
            background: rgba(15, 23, 42, 0.55);
            backdrop-filter: blur(20px) saturate(180%);
            -webkit-backdrop-filter: blur(20px) saturate(180%);
            border: 1px solid rgba(255, 255, 255, 0.1);
            border-radius: 16px;
            box-shadow: 0 4px 24px rgba(0, 0, 0, 0.25),
                        inset 0 1px 0 rgba(255, 255, 255, 0.08);
            display: flex;
            flex-direction: column;
            z-index: 100;
            transition: opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1),
                        transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
        }

        .dock.minimized {
            opacity: 0;
            transform: translateX(-20px) scale(0.95);
            pointer-events: none;
        }

        .dock-nav {
            display: flex;
            flex-direction: column;
            align-items: stretch;
            gap: 4px;
            overflow-y: auto;
            overflow-x: hidden;
            flex: 1;
            padding: 8px 8px 12px;
            scrollbar-width: none;
        }
        .dock-nav::-webkit-scrollbar { display: none; }

        .dock .nav-item {
            display: flex;
            align-items: center;
            gap: 10px;
            padding: 9px 12px;
            border-radius: 10px;
            font-size: 13px;
            font-weight: 500;
            color: rgba(248, 250, 252, 0.65);
            white-space: nowrap;
            text-decoration: none;
            cursor: pointer;
            transition: background 0.2s, color 0.2s, box-shadow 0.2s;
            flex-shrink: 0;
        }

        .dock .nav-item:hover {
            background: rgba(255, 255, 255, 0.1);
            color: #f8fafc;
        }

        .dock .nav-item.active {
            background: rgba(59, 130, 246, 0.25);
            color: #60a5fa;
            box-shadow: 0 0 12px rgba(59, 130, 246, 0.15);
        }

        .dock .nav-item svg {
            width: 18px;
            height: 18px;
            flex-shrink: 0;
        }

        .dock-separator {
            height: 1px;
            margin: 6px 10px;
            background: rgba(255, 255, 255, 0.06);
        }

        .dock .nav-logout {
            color: rgba(248, 250, 252, 0.35);
        }
        .dock .nav-logout:hover {
            background: rgba(239, 68, 68, 0.15);
            color: #f87171;
        }

        .dock-minimize {
            width: 100%;
            height: 40px;
            border: none;
            background: transparent;
            border-radius: 0 0 15px 15px;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            color: rgba(248, 250, 252, 0.3);
            transition: background 0.2s, color 0.2s;
            flex-shrink: 0;
        }

        .dock-minimize:hover {
            background: rgba(255, 255, 255, 0.08);
            color: rgba(248, 250, 252, 0.7);
        }

        .dock-minimize svg {
            width: 16px;
            height: 16px;
        }

        /* ===== Dock 顶部用户信息区 ===== */
        .dock-user {
            display: flex;
            align-items: center;
            gap: 10px;
            padding: 12px 12px 8px;
            border-bottom: 1px solid rgba(255, 255, 255, 0.06);
            margin-bottom: 4px;
            flex-shrink: 0;
        }

        .dock-user-avatar {
            width: 36px;
            height: 36px;
            border-radius: 50%;
            flex-shrink: 0;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 14px;
            font-weight: 600;
            color: #fff;
            background: rgba(59, 130, 246, 0.6);
            overflow: hidden;
            transition: opacity 0.2s, box-shadow 0.2s;
            position: relative;
        }

        .dock-user-avatar:hover {
            opacity: 0.85;
            box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.3);
        }

        .dock-user-avatar img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        .dock-user-avatar .avatar-hint {
            position: absolute;
            inset: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            background: rgba(0, 0, 0, 0.5);
            opacity: 0;
            transition: opacity 0.2s;
            font-size: 11px;
        }

        .dock-user-avatar:hover .avatar-hint {
            opacity: 1;
        }

        .dock-user-info {
            min-width: 0;
            flex: 1;
        }

        .dock-user-name {
            font-size: 13px;
            font-weight: 600;
            color: #f1f5f9;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            line-height: 1.3;
        }

        .dock-user-role {
            font-size: 11px;
            color: rgba(248, 250, 252, 0.45);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            line-height: 1.3;
        }

        /* ===== 悬浮球 ===== */
        .floating-ball {
            position: fixed;
            bottom: 20px;
            left: 20px;
            width: 48px;
            height: 48px;
            border-radius: 50%;
            background: rgba(15, 23, 42, 0.6);
            backdrop-filter: blur(16px) saturate(180%);
            -webkit-backdrop-filter: blur(16px) saturate(180%);
            border: 1px solid rgba(255, 255, 255, 0.12);
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3),
                        inset 0 1px 0 rgba(255, 255, 255, 0.08);
            cursor: grab;
            z-index: 1000;
            will-change: transform;
            display: flex;
            align-items: center;
            justify-content: center;
            opacity: 0;
            transform: scale(0.5);
            pointer-events: none;
            transition: opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1),
                        transform 0.3s cubic-bezier(0.4, 0, 0.2, 1),
                        box-shadow 0.2s;
            user-select: none;
        }

        .floating-ball:active {
            cursor: grabbing;
        }

        .floating-ball.visible {
            opacity: 1;
            transform: scale(1);
            pointer-events: auto;
        }

        .floating-ball:hover {
            box-shadow: 0 6px 24px rgba(0, 0, 0, 0.35),
                        0 0 16px rgba(59, 130, 246, 0.15);
        }

        .floating-ball svg {
            width: 22px;
            height: 22px;
            color: rgba(248, 250, 252, 0.8);
            pointer-events: none;
        }

                /* 主内容区 */
        /* .main-content 已移至 #page-report 响应式区块（使用calc+clamp自适应） */

        .page {
            display: none;
        }

        .page.active {
            display: block;
            animation: fadeIn 0.3s ease;
        }

        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(10px); }
            to { opacity: 1; transform: translateY(0); }
        }

        /* 图表从左到右揭示动画 */
        .chart-reveal {
            clip-path: inset(0 100% 0 0);
            animation: revealLeft 1s ease-out forwards;
        }
        @keyframes revealLeft {
            to { clip-path: inset(0 0% 0 0); }
        }

        /* 页面标题 */
        .page-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 24px;
        }

        .page-title {
            font-size: 24px;
            font-weight: 700;
        }

        /* 筛选器区域 */
        .filters-bar {
            position: relative;
            z-index: 200;
            background: rgba(255,255,255,0.06);
            backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
            -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
            border-radius: 14px;
            padding: 14px 20px;
            margin-bottom: 24px;
            border: 1px solid var(--glass-border);
            box-shadow: var(--glass-shadow),
                        inset 0 1px 0 var(--glass-highlight);
        }

        .filters-row {
            display: flex;
            flex-wrap: wrap;
            gap: 20px;
            align-items: center;
        }

        .filter-group {
            display: flex;
            align-items: center;
            gap: 10px;
        }

        .filter-label {
            font-size: 12px;
            font-weight: 500;
            color: rgba(255,255,255,0.4);
            white-space: nowrap;
            letter-spacing: 0.3px;
        }

        /* 平台选择按钮（头像风格） */
        .platform-checkboxes {
            display: flex;
            gap: 6px;
            flex-wrap: wrap;
        }

        .platform-btn {
            display: flex;
            align-items: center;
            padding: 5px 16px;
            border-radius: 20px;
            border: 0.5px solid rgba(255,255,255,0.1);
            cursor: pointer;
            transition: all 0.2s ease;
            user-select: none;
            background: rgba(255,255,255,0.06);
        }

        .platform-btn:hover {
            background: rgba(255,255,255,0.1);
            border-color: rgba(255,255,255,0.18);
        }

        .platform-btn.active {
            border-color: transparent;
            box-shadow: none;
        }

        .platform-btn span {
            font-size: 13px;
            font-weight: 500;
            white-space: nowrap;
            transition: color 0.2s ease;
        }

        /* 商品搜索框 */
        .product-search-wrapper {
            position: relative;
            display: flex;
            align-items: center;
        }

        .product-search-icon {
            position: absolute;
            left: 10px;
            width: 16px;
            height: 16px;
            color: var(--text-secondary);
            pointer-events: none;
        }

        .product-search-wrapper input {
            padding: 7px 32px 7px 32px;
            background: rgba(255,255,255,0.06);
            color: var(--text-primary);
            border: 1px solid rgba(255,255,255,0.1);
            border-radius: 8px;
            font-size: 13px;
            width: 180px;
            outline: none;
            transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;
        }

        .product-search-wrapper input:focus {
            border-color: var(--primary);
            background: rgba(255,255,255,0.08);
            box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15);
        }

        .product-search-wrapper input::placeholder {
            color: var(--text-secondary);
            opacity: 0.6;
        }

        .product-search-clear {
            position: absolute;
            right: 4px;
            width: 22px;
            height: 22px;
            border: none;
            background: none;
            color: var(--text-secondary);
            cursor: pointer;
            display: none;
            align-items: center;
            justify-content: center;
            border-radius: 4px;
            padding: 0;
            transition: color 0.2s, background 0.2s;
        }

        .product-search-clear:hover {
            color: var(--error);
            background: rgba(239, 68, 68, 0.1);
        }

        .product-search-clear svg {
            width: 14px;
            height: 14px;
        }

        .product-search-clear.visible {
            display: flex;
        }

        /* 日期范围选择器 */
        .date-range-selector {
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .date-input {
            padding: 8px 12px;
            border: 1px solid var(--border-color);
            border-radius: 8px;
            font-size: 13px;
            font-weight: 500;
            background: var(--bg-dark);
            color: var(--text-secondary);
            cursor: pointer;
            transition: all 0.2s ease;
            min-width: 120px;
        }

        .date-input:hover {
            border-color: var(--primary);
            color: var(--text-primary);
        }

        .date-input:focus {
            outline: none;
            border-color: var(--primary);
            color: var(--text-primary);
            box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
        }

        .date-input::-webkit-calendar-picker-indicator {
            cursor: pointer;
            filter: invert(0.6);
            transition: filter 0.2s ease;
        }

        .date-input:hover::-webkit-calendar-picker-indicator {
            filter: invert(0.3);
        }

        .date-separator {
            color: var(--text-muted);
            font-size: 13px;
        }

        /* 日期范围选择器（自定义日历） */
        .date-range-picker {
            position: relative;
        }

        .date-range-btn {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 8px 14px;
            background: rgba(255,255,255,0.08);
            color: var(--text-primary, #e2e8f0);
            border: 1px solid rgba(255,255,255,0.12);
            border-radius: 8px;
            font-size: 13px;
            font-weight: 500;
            cursor: pointer;
            transition: all 0.2s;
            white-space: nowrap;
        }

        .date-range-btn:hover {
            background: rgba(255,255,255,0.12);
            border-color: rgba(255,255,255,0.2);
            box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);
        }

        .date-range-btn.active {
            border-color: var(--primary);
            background: rgba(59, 130, 246, 0.1);
        }

        .date-range-btn svg:first-child {
            opacity: 0.6;
        }

        #date-range-display {
            font-variant-numeric: tabular-nums;
        }

        /* 日历弹出层 */
        .drp-calendar {
            position: fixed;
            z-index: 9999;
            width: 300px;
            background: #1e1f35;
            border: 1px solid rgba(255,255,255,0.08);
            border-radius: 12px;
            box-shadow: 0 12px 40px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.04);
            padding: 16px;
            animation: drp-fadeIn 0.15s ease;
        }

        @keyframes drp-fadeIn {
            from { opacity: 0; transform: translateY(-6px); }
            to { opacity: 1; transform: translateY(0); }
        }

        .drp-calendar-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 12px;
        }

        .drp-nav-btn {
            display: flex;
            align-items: center;
            justify-content: center;
            width: 30px;
            height: 30px;
            background: transparent;
            border: none;
            border-radius: 6px;
            color: #94a3b8;
            cursor: pointer;
            transition: all 0.15s;
        }

        .drp-nav-btn:hover {
            background: rgba(59,130,246,0.15);
            color: #e2e8f0;
        }

        .drp-month-label {
            font-size: 14px;
            font-weight: 600;
            color: #e2e8f0;
        }

        .drp-weekdays {
            display: grid;
            grid-template-columns: repeat(7, 1fr);
            text-align: center;
            margin-bottom: 6px;
        }

        .drp-weekdays span {
            font-size: 11px;
            font-weight: 500;
            color: #64748b;
            padding: 4px 0;
        }

        .drp-days {
            display: grid;
            grid-template-columns: repeat(7, 1fr);
            gap: 2px;
        }

        .drp-day {
            display: flex;
            align-items: center;
            justify-content: center;
            width: 36px;
            height: 32px;
            margin: 0 auto;
            font-size: 12px;
            color: #cbd5e1;
            border-radius: 6px;
            cursor: pointer;
            transition: all 0.12s;
            user-select: none;
            position: relative;
        }

        .drp-day:hover:not(.drp-other):not(.drp-disabled) {
            background: rgba(59,130,246,0.15);
        }

        .drp-day.drp-today {
            border: 1px solid rgba(59,130,246,0.4);
        }

        .drp-day.drp-selected {
            background: #3b82f6 !important;
            color: white !important;
            font-weight: 600;
        }

        .drp-day.drp-in-range {
            background: rgba(59,130,246,0.12);
            border-radius: 0;
            color: #93c5fd;
        }

        .drp-day.drp-range-start {
            border-radius: 6px 0 0 6px;
        }

        .drp-day.drp-range-end {
            border-radius: 0 6px 6px 0;
        }

        .drp-day.drp-range-start.drp-range-end {
            border-radius: 6px;
        }

        .drp-day.drp-other {
            color: #334155;
            cursor: default;
        }

        .drp-day.drp-disabled {
            color: #1e293b;
            cursor: default;
        }

        .drp-hint {
            margin-top: 10px;
            text-align: center;
            font-size: 11px;
            color: #64748b;
            min-height: 16px;
        }

        /* 页面标题日期展示 */
        .page-header-date {
            display: flex;
            align-items: center;
            gap: 10px;
            padding: 6px 16px;
            background: rgba(59,130,246,0.08);
            border: 1px solid rgba(59,130,246,0.15);
            border-radius: 20px;
        }

        .phd-label {
            font-size: 11px;
            color: #64748b;
            font-weight: 500;
        }

        .phd-range {
            font-size: 13px;
            font-weight: 600;
            color: #93c5fd;
            font-variant-numeric: tabular-nums;
            letter-spacing: 0.02em;
        }
        input[type="date"] {
            -webkit-appearance: none;
            -moz-appearance: none;
            appearance: none;
            background-color: var(--bg-dark);
            color: var(--text-secondary);
        }

        input[type="date"]::-webkit-calendar-picker-container {
            background-color: var(--bg-dark) !important;
            border: 1px solid var(--border-color);
            border-radius: 8px;
        }

        input[type="date"]::-webkit-calendar-picker-container * {
            background-color: var(--bg-dark) !important;
            color: var(--text-secondary) !important;
        }

        input[type="date"]::-webkit-inner-spin-button,
        input[type="date"]::-webkit-outer-spin-button {
            -webkit-appearance: none;
        }

        /* Firefox 日期选择器深色主题 */
        input[type="date"]::-moz-calendar-picker-container {
            background-color: var(--bg-dark) !important;
            color: var(--text-secondary) !important;
        }

        /* 日期选择弹窗整体样式 */
        input[type="date"]::-webkit-calendar-picker-container .calendar-picker-container {
            filter: invert(1) hue-rotate(180deg);
        }

        /* 下拉框多选 */
        .multi-select-wrapper {
            position: relative;
            min-width: 200px;
        }

        .multi-select-trigger {
            background: rgba(255,255,255,0.08);
            border: 1px solid rgba(255,255,255,0.1);
            border-radius: 8px;
            padding: 7px 14px;
            color: var(--text-primary);
            cursor: pointer;
            display: flex;
            justify-content: space-between;
            align-items: center;
            gap: 8px;
            font-size: 13px;
            transition: all 0.2s ease;
            min-width: 160px;
        }

        .multi-select-trigger:hover {
            background: rgba(255,255,255,0.12);
            border-color: rgba(255,255,255,0.18);
        }

        .multi-select-trigger .selected-text {
            flex: 1;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .multi-select-trigger svg {
            width: 16px;
            height: 16px;
            transition: transform 0.2s ease;
        }

        .multi-select-wrapper.open .multi-select-trigger svg {
            transform: rotate(180deg);
        }

        .multi-select-dropdown {
            position: absolute;
            top: 100%;
            left: 0;
            right: 0;
            background: rgba(15, 23, 42, 0.9);
            backdrop-filter: blur(16px) saturate(1.3);
            -webkit-backdrop-filter: blur(16px) saturate(1.3);
            border: 1px solid rgba(255,255,255,0.1);
            border-radius: 10px;
            margin-top: 4px;
            max-height: 240px;
            overflow-y: auto;
            z-index: 1000;
            display: none;
            box-shadow: 0 12px 40px rgba(0,0,0,0.4), 0 0 0 1px rgba(255,255,255,0.04);
        }

        .multi-select-wrapper.open .multi-select-dropdown {
            display: block;
        }

        .multi-select-option {
            padding: 10px 14px;
            cursor: pointer;
            display: flex;
            align-items: center;
            gap: 10px;
            transition: background 0.2s ease;
        }

        .multi-select-option:hover {
            background: rgba(255,255,255,0.06);
        }

        .multi-select-option input {
            accent-color: var(--primary);
        }

        /* 时间周期选择 */
        .period-selector {
            display: flex;
            gap: 4px;
            padding: 3px;
            background: rgba(255,255,255,0.04);
            border-radius: 10px;
            border: 1px solid rgba(255,255,255,0.06);
        }

        .period-btn {
            padding: 6px 16px;
            border: 1px solid transparent;
            border-radius: 8px;
            background: transparent;
            color: rgba(255,255,255,0.45);
            cursor: pointer;
            font-size: 13px;
            font-weight: 500;
            transition: all 0.2s ease;
        }

        .period-btn:hover {
            color: var(--text-primary);
            background: rgba(255,255,255,0.06);
        }

        .period-btn.active {
            background: rgba(255,255,255,0.1);
            border-color: rgba(255,255,255,0.12);
            color: white;
            box-shadow: 0 1px 4px rgba(0,0,0,0.2);
        }

        /* 一键显示/隐藏按钮 */
        .toggle-visibility-btn {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 8px 16px;
            border: 1px solid rgba(255,255,255,0.1);
            border-radius: 8px;
            background: rgba(255,255,255,0.06);
            color: var(--text-primary);
            cursor: pointer;
            font-size: 13px;
            transition: all 0.2s ease;
        }

        .toggle-visibility-btn:hover {
            border-color: rgba(245, 158, 11, 0.4);
            background: rgba(245, 158, 11, 0.1);
        }

        .toggle-visibility-btn svg {
            width: 18px;
            height: 18px;
        }

        /* 工具栏按钮 */
        .toolbar-btn {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            padding: 8px 14px;
            background: var(--bg-card);
            color: var(--text-secondary);
            border: 1px solid var(--border-color);
            border-radius: 8px;
            cursor: pointer;
            font-size: 13px;
            transition: all 0.2s;
        }
        .toolbar-btn svg {
            width: 16px;
            height: 16px;
        }
        .toolbar-btn:hover {
            border-color: var(--primary);
            color: var(--primary);
            background: rgba(59, 130, 246, 0.08);
        }

        /* 导入状态 */
        .import-status {
            background: var(--bg-dark);
            color: var(--text-secondary);
        }
        .import-status.success {
            background: rgba(16, 185, 129, 0.1);
            color: #10b981;
        }
        .import-status.error {
            background: rgba(239, 68, 68, 0.1);
            color: #ef4444;
        }

        /* KPI 卡片区域 */
        .kpi-grid {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: clamp(8px, 1.2vw, 16px);
            margin-bottom: clamp(16px, 2vw, 24px);
            overflow: hidden;
        }
        /* 防护锁定：确保 KPI 网格布局不被外部 CSS 意外覆盖 */
        #page-report .kpi-grid {
            display: grid !important;
            grid-template-columns: repeat(4, 1fr) !important;
            gap: clamp(8px, 1.2vw, 16px) !important;
        }

        .kpi-card {
            position: relative;
            background: rgba(30, 41, 59, 0.5);
            backdrop-filter: blur(20px) saturate(180%);
            -webkit-backdrop-filter: blur(20px) saturate(180%);
            border-radius: 16px;
            padding: 16px;
            border: 1px solid rgba(255, 255, 255, 0.08);
            box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2),
                        inset 0 1px 0 rgba(255, 255, 255, 0.06);
            cursor: pointer;
            overflow: hidden;
            contain: layout style paint;
            transition: transform 400ms cubic-bezier(.34,1.56,.64,1),
                        box-shadow 400ms ease,
                        border-color 400ms ease,
                        filter 400ms ease,
                        opacity 400ms ease;
        }

        /* 顶部渐变色条 */
        .kpi-card::before {
            content: '';
            position: absolute;
            top: 0; left: 0; right: 0;
            height: 2px;
            border-radius: 16px 16px 0 0;
            opacity: 0.7;
        }

        .kpi-card.primary::before { background: linear-gradient(90deg, var(--primary), transparent); }
        .kpi-card.success::before { background: linear-gradient(90deg, var(--success), transparent); }
        .kpi-card.warning::before { background: linear-gradient(90deg, var(--warning), transparent); }
        .kpi-card.profit::before { background: linear-gradient(90deg, var(--purple), var(--success)); }

        /* hover */
        .kpi-card:hover {
            transform: scale(1.015) translateY(-2px);
            box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3),
                        inset 0 1px 0 rgba(255, 255, 255, 0.08),
                        0 0 24px rgba(99, 102, 241, 0.12);
            border-color: rgba(255, 255, 255, 0.14);
            z-index: 10;
        }
        .kpi-card.primary:hover { border-color: rgba(59, 130, 246, 0.25); }
        .kpi-card.success:hover { border-color: rgba(16, 185, 129, 0.25); }
        .kpi-card.warning:hover { border-color: rgba(245, 158, 11, 0.25); }
        .kpi-card.profit:hover { border-color: rgba(139, 92, 246, 0.25); }

        /* KPI 网格 hover 置灰：hover 一张时其他卡片变暗（翻转中的卡片除外） */
        .kpi-grid:has(.kpi-card:hover) .kpi-card:not(:hover):not(.kpi-shrink):not(.kpi-expand) {
            filter: brightness(0.6) saturate(0.6);
            transform: scale(0.98);
            opacity: 0.6;
        }

        /* ===== 翻转动画（两阶段：收缩→展开，纯2D避免grid内3D泄漏） ===== */
        .kpi-card.kpi-shrink {
            transform: scaleX(0.05) scaleY(0.92);
            opacity: 0.6;
            box-shadow: 0 12px 40px rgba(0, 0, 0, 0.5);
            transition: transform 0.18s cubic-bezier(0.4, 0, 1, 1), box-shadow 0.18s ease-in, opacity 0.18s ease-in;
        }
        .kpi-card.kpi-expand {
            transform: scaleX(1) scaleY(1);
            opacity: 1;
            box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.06);
            transition: transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.3s ease-out, opacity 0.2s ease-out;
        }
        /* 翻转指示器（小角标） */
        .kpi-flip-hint {
            position: absolute;
            top: 8px;
            right: 8px;
            font-size: 9px;
            color: rgba(148, 163, 184, 0.5);
            opacity: 0;
            transition: opacity 0.2s ease;
            pointer-events: none;
        }
        .kpi-card:hover .kpi-flip-hint {
            opacity: 1;
        }

        .kpi-card .card-top {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            margin-bottom: 12px;
        }

        .kpi-card .card-title {
            font-size: 13px;
            color: var(--text-secondary);
            font-weight: 500;
        }

        .kpi-card .card-icon {
            width: 36px;
            height: 36px;
            border-radius: 10px;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .kpi-card.primary .card-icon { background: rgba(59, 130, 246, 0.15); color: var(--primary); }
        .kpi-card.success .card-icon { background: rgba(16, 185, 129, 0.15); color: var(--success); }
        .kpi-card.warning .card-icon { background: rgba(245, 158, 11, 0.15); color: var(--warning); }
        .kpi-card.profit .card-icon { background: rgba(139, 92, 246, 0.15); color: var(--purple); }

        .kpi-card .card-icon svg {
            width: 20px;
            height: 20px;
        }

        .kpi-card .card-value {
            font-size: 28px;
            font-weight: 700;
            margin-bottom: 4px;
            transition: opacity 0.3s ease;
        }

        /* 隐藏敏感数据（销售成本/利润） */
        .kpi-card.warning .card-value,
        .kpi-card.warning .card-change,
        .kpi-card.warning .mini-chart,
        .kpi-card.profit .card-value,
        .kpi-card.profit .card-change,
        .kpi-card.profit .profit-rate,
        .kpi-card.profit .mini-chart {
            transition: opacity 0.3s ease;
        }

        .kpi-card.warning .card-value.sensitive,
        .kpi-card.warning .card-change.sensitive,
        .kpi-card.warning .mini-chart.sensitive,
        .kpi-card.profit .card-value.sensitive,
        .kpi-card.profit .card-change.sensitive,
        .kpi-card.profit .profit-rate.sensitive,
        .kpi-card.profit .mini-chart.sensitive {
            opacity: 0;
            pointer-events: none;
        }

        .kpi-card .card-value .unit {
            font-size: 14px;
            font-weight: 500;
            color: var(--text-secondary);
        }

        .kpi-card .card-change {
            font-size: 12px;
            display: flex;
            align-items: center;
            gap: 4px;
        }

        .kpi-card .card-change.up { color: var(--success); }
        .kpi-card .card-change.down { color: var(--danger); }

        /* 利润率展示（仅利润卡） */
        .profit-rate {
            margin-top: 8px;
            padding: 8px 12px;
            background: rgba(139, 92, 246, 0.1);
            border-radius: 8px;
            display: flex;
            align-items: center;
            gap: 8px;
            transition: opacity 0.3s ease;
        }

        .profit-rate .label {
            font-size: 12px;
            color: var(--text-secondary);
        }

        .profit-rate .value {
            font-size: 16px;
            font-weight: 600;
            color: var(--success);
        }

        /* 迷你波形图 */
        .kpi-card .mini-chart {
            margin-top: 8px;
            height: 40px;
            transition: opacity 0.3s ease;
        }

        /* 利润卡特殊布局 */
        .kpi-card.profit {
            grid-column: span 1;
        }

        .kpi-card.profit .mini-chart {
            height: 48px;
        }

        /* 利润卡片：数值 + 利润率横排 */
        .profit-card-row {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            gap: 8px;
        }

        .profit-card-left {
            flex: 1;
            min-width: 0;
        }

        .kpi-card.profit .profit-card-left .card-value {
            margin-bottom: 2px;
        }

        .kpi-card.profit .profit-rate {
            margin-top: 0;
            flex-shrink: 0;
        }

        /* 商品维度分析 */
        .section-title {
            font-size: 18px;
            font-weight: 600;
            margin-bottom: 16px;
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .section-title svg {
            width: 22px;
            height: 22px;
            color: var(--primary);
        }

        .product-grid {
            display: grid;
            grid-template-columns: repeat(5, 1fr);
            gap: 16px;
            margin-bottom: 24px;
        }

        .product-card {
            background: rgba(30, 41, 59, 0.45);
            backdrop-filter: blur(20px) saturate(180%);
            -webkit-backdrop-filter: blur(20px) saturate(180%);
            border-radius: 16px;
            padding: 16px;
            border: 1px solid rgba(255, 255, 255, 0.07);
            box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18),
                        inset 0 1px 0 rgba(255, 255, 255, 0.05);
            position: relative;
            overflow: visible;
            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
            cursor: pointer;
            z-index: 1;
        }

        .product-card::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            height: 2px;
            border-radius: 16px 16px 0 0;
            background: linear-gradient(90deg, var(--primary), transparent);
            z-index: 1;
            opacity: 0.6;
        }

        .product-card:hover {
            transform: translateY(-6px) scale(1.02);
            box-shadow: 0 12px 32px rgba(0, 0, 0, 0.28),
                        0 0 20px rgba(59, 130, 246, 0.08),
                        inset 0 1px 0 rgba(255, 255, 255, 0.07);
            border-color: rgba(59, 130, 246, 0.2);
            z-index: 10;
        }

        .product-card:hover::before {
            background: linear-gradient(90deg, var(--primary), var(--success));
            opacity: 0.85;
        }

        /* 商品网格 hover 置灰：hover 一张时其他卡片变暗 */
        .product-grid:has(.product-card:hover) .product-card:not(:hover) {
            filter: brightness(0.6) saturate(0.6);
            transform: scale(0.98);
            opacity: 0.6;
        }

        .product-card .card-top {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            margin-bottom: 8px;
        }

        .product-card .card-title {
            font-size: 15px;
            color: var(--text-primary);
            font-weight: 600;
            display: flex;
            align-items: center;
            gap: 4px;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .product-card .card-icon {
            width: 28px;
            height: 28px;
            background: rgba(59, 130, 246, 0.15);
            border-radius: 8px;
            display: flex;
            align-items: center;
            justify-content: center;
            color: var(--primary);
        }

        .product-card .card-icon svg {
            width: 14px;
            height: 14px;
        }

        .product-card .card-value {
            font-size: 18px;
            font-weight: 700;
            color: var(--text-primary);
            margin-bottom: 4px;
        }

        .product-card .card-subtitle {
            font-size: 11px;
            color: var(--text-secondary);
            margin-bottom: 10px;
        }

        .product-card .card-change {
            font-size: 11px;
            margin-bottom: 10px;
            padding: 4px 8px;
            border-radius: 6px;
            display: inline-block;
        }

        .product-card .card-change.up {
            color: var(--success);
            background: rgba(16, 185, 129, 0.1);
        }

        .product-card .card-change.down {
            color: var(--error);
            background: rgba(239, 68, 68, 0.1);
        }

        .product-card .mini-chart {
            height: 56px;
            margin-top: 4px;
            border-radius: 8px;
            padding: 0;
            position: relative;
            overflow: hidden;
        }

        .product-card .mini-chart canvas {
            width: 100% !important;
            display: block;
        }

        /* 数据表格 — Glassmorphism */
        .data-table-container {
            background: transparent;
            backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
            -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
            border: 1px solid var(--glass-border);
            border-radius: 16px;
            overflow: hidden;
            box-shadow: var(--glass-shadow),
                        inset 0 1px 0 var(--glass-highlight);
            display: flex; flex-direction: column;
        }

        /* ===== 双表结构：表头表 + 内容表，列宽严格对齐 ===== */
        /* 表头表格：宽度 = 容器宽 - 滚动条宽（--scrollbar-w 由 JS 动态设置） */
        .data-table-head {
            width: calc(100% - var(--scrollbar-w, 5px));
            table-layout: fixed; border-collapse: separate; border-spacing: 0;
            flex-shrink: 0;
        }
        /* 内容表格：放在可滚动容器内 */
        .data-table-body {
            width: 100%; table-layout: fixed; border-collapse: separate; border-spacing: 0;
        }
        /* 滚动容器：overflow-y:scroll 始终显示滚动条，保证 head/body 等宽 */
        .data-table-scroll {
            overflow-y: scroll; overflow-x: hidden;
            flex: 1; min-height: 0;
            max-height: calc(100vh - 380px);
        }
        .data-table-scroll::-webkit-scrollbar { width: 5px; }
        .data-table-scroll::-webkit-scrollbar-track { background: transparent; }
        .data-table-scroll::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 10px; }
        .data-table-scroll::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.18); }

        .data-table-head th,
        .data-table-head td,
        .data-table-body th,
        .data-table-body td {
            padding: 12px 8px; font-size: 13px; text-align: center;
            box-sizing: border-box; overflow: hidden; text-overflow: ellipsis;
        }
        .data-table-head th {
            background: rgba(15, 15, 30, 0.85);
            backdrop-filter: blur(6px);
            font-weight: 600;
            color: rgba(255, 255, 255, 0.55);
            text-transform: uppercase; letter-spacing: 0.5px;
            border-bottom: 1px solid rgba(255, 255, 255, 0.06);
        }
        .data-table-body td {
            color: rgba(255, 255, 255, 0.8); border-bottom: 1px solid rgba(255, 255, 255, 0.03);
        }

        .data-table-head th.sortable {
            cursor: pointer;
            user-select: none;
            transition: color 0.2s ease;
        }

        .data-table-head th.sortable:hover {
            color: var(--primary);
        }

        .data-table-head th.sortable .sort-indicator {
            display: inline-block;
            margin-left: 4px;
            opacity: 0.3;
        }

        .data-table-head th.sortable.asc .sort-indicator::after {
            content: '↑';
        }

        .data-table-head th.sortable.desc .sort-indicator::after {
            content: '↓';
        }

        .data-table-head th.sortable.asc,
        .data-table-head th.sortable.desc {
            color: var(--primary);
        }

        .data-table-head th.sortable.asc .sort-indicator,
        .data-table-head th.sortable.desc .sort-indicator {
            opacity: 1;
        }

        .data-table-body td {
            padding: 12px;
            font-size: 13px;
            color: rgba(255, 255, 255, 0.8);
            border-bottom: 1px solid rgba(255, 255, 255, 0.03);
        }

        .data-table-body tbody tr {
            cursor: pointer;
            transition: background 0.2s ease;
        }

        .data-table-body tbody tr:hover {
            background: rgba(255, 255, 255, 0.025);
        }

        /* 展开指示器 */
        .expand-icon {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 20px;
            height: 20px;
            margin-right: 8px;
            transition: transform 0.3s ease;
        }

        .expand-icon svg {
            width: 14px;
            height: 14px;
            color: var(--text-secondary);
        }

        .data-table-body tbody tr.expanded .expand-icon {
            transform: rotate(90deg);
        }

        .data-table-body tbody tr.expanded {
            background: var(--bg-dark);
        }

        /* SKU明细展开行 — max-height 作用在 .sku-detail-content（block 元素），不用 display:none */
        .sku-detail-row {
            display: table-row;
        }

        .sku-detail-row td {
            padding: 0;
            background: var(--bg-dark);
        }

        .sku-detail-content {
            max-height: 0;
            overflow: hidden;
            padding: 0 20px 0 60px;
            transition: max-height 0.3s ease, padding 0.3s ease;
        }

.sku-detail-row.active .sku-detail-content {
    /* max-height 由 JS 动态设置（scrollHeight），CSS 只控制 padding */
    padding: 16px 20px 16px 60px;
    /* overflow: visible 由 JS 在动画结束后设置，防止过渡期间内容溢出覆盖下一行 */
}

        .sku-detail-header {
            display: flex;
            align-items: center;
            gap: 8px;
            margin-bottom: 12px;
            font-size: 12px;
            color: var(--text-secondary);
            font-weight: 500;
        }

        .sku-detail-header svg {
            width: 16px;
            height: 16px;
            color: var(--primary);
        }

        .sku-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
            gap: 20px;
        }

        .sku-card {
            background: rgba(255, 255, 255, 0.06);
            border: 1px solid rgba(255, 255, 255, 0.08);
            border-radius: 10px;
            padding: 14px;
            transition: all 0.2s ease;
            overflow: hidden;
            min-width: 0;
        }

        .sku-card:hover {
            border-color: rgba(59, 130, 246, 0.3);
            box-shadow: 0 4px 16px rgba(59, 130, 246, 0.12);
        }

        .sku-card-header {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            margin-bottom: 10px;
        }

        .sku-card-title {
            font-size: 13px;
            font-weight: 600;
            color: var(--text-primary);
        }

        .sku-card-id {
            font-size: 11px;
            color: rgba(255, 255, 255, 0.4);
            background: rgba(255, 255, 255, 0.04);
            padding: 2px 6px;
            border-radius: 4px;
            border: 1px solid rgba(255, 255, 255, 0.06);
        }

        .sku-platform-tag {
            font-size: 10px;
            font-weight: 600;
            padding: 1px 7px;
            border-radius: 4px;
            white-space: nowrap;
            flex-shrink: 0;
        }

        .sku-card-bill-name {
            font-size: 10px;
            color: rgba(255, 255, 255, 0.35);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            line-height: 1.3;
        }

        .sku-card-stats {
            display: grid;
            grid-template-columns: repeat(3, 1fr) auto;
            gap: 8px;
            align-items: center;
        }
        /* SKU卡片内OI防止被grid拉伸 */
        .sku-card-stats .operation-index {
            width: 2em !important;
            height: 2em !important;
            justify-self: center;
        }

        .sku-stat {
            display: flex;
            flex-direction: column;
            gap: 2px;
        }

        .sku-stat-label {
            font-size: 10px;
            color: var(--text-secondary);
            text-transform: uppercase;
        }

        .sku-stat-value {
            font-size: 14px;
            font-weight: 600;
        }

        .sku-stat-value.amount {
            color: var(--success);
        }

        /* 运营指数 — 使用em相对单位 */
        .operation-index {
            width: 2em;
            height: 2em;
            border-radius: 50%;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            cursor: default;
            position: relative;
            flex-shrink: 0;
            transition: transform 0.2s ease;
            z-index: 2;
        }

        .operation-index:hover {
            transform: scale(1.15);
        }

        .oi-emoji {
            font-size: clamp(12px, 1.2vw, 18px);
            line-height: 1;
        }

        /* 运营指数 tooltip 改由 JS 创建 fixed 元素（不受 overflow 裁切） */

        .sku-stat-value.profit {
            color: var(--purple);
        }

        .sku-mini-chart {
            margin-top: 10px;
            height: 28px;
        }

        /* ===== SKU 拖拽分组 ===== */

        /* 分组模式下强制单列布局 */
        .sku-grid.sku-group-mode {
            display: flex !important;
            flex-direction: column;
            gap: 12px;
        }

        /* group-box 容器（组标题 + 卡片 + drop zone） */
        .sku-group-box {
            border: 1.5px solid rgba(59, 130, 246, 0.25);
            border-radius: 10px;
            background: rgba(59, 130, 246, 0.04);
            overflow: hidden;
            grid-column: 1 / -1;
        }
        .sku-group-box-header {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 8px 12px;
            background: rgba(59, 130, 246, 0.08);
            border-bottom: 1px solid rgba(59, 130, 246, 0.15);
            font-size: 12px;
            font-weight: 600;
            color: #93c5fd;
        }
        .sku-group-box-header .sku-group-count {
            font-weight: 400;
            color: rgba(147, 197, 253, 0.6);
            font-size: 10px;
        }
        .sku-group-box-header .sku-group-del {
            margin-left: auto;
            font-size: 10px;
            cursor: pointer;
            color: rgba(239, 68, 68, 0.5);
            border: 1px solid rgba(239, 68, 68, 0.2);
            border-radius: 4px;
            padding: 1px 6px;
            background: transparent;
            transition: all 0.15s;
        }
        .sku-group-box-header .sku-group-del:hover {
            color: #ef4444;
            border-color: rgba(239, 68, 68, 0.5);
            background: rgba(239, 68, 68, 0.1);
        }
        .sku-group-box-cards {
            display: flex;
            flex-direction: row;
            flex-wrap: wrap;
            gap: 8px;
            padding: 10px;
        }
        .sku-group-box-cards .sku-card {
            flex: 0 0 280px;
            width: 280px;
            max-width: calc(50% - 4px);
            min-width: 240px;
        }        }

        /* 拖拽手柄 */
        .sku-card-drag-handle {
            display: inline-flex;
            align-items: center;
            cursor: grab;
            color: rgba(255, 255, 255, 0.3);
            font-size: 14px;
            letter-spacing: -2px;
            user-select: none;
            margin-right: 6px;
            flex-shrink: 0;
            transition: color 0.15s;
        }
        .sku-card-drag-handle:hover { color: #93c5fd; }
        .sku-card-drag-handle:active { cursor: grabbing; }

        /* 拖拽中的卡片 */
        .sku-card.dragging {
            opacity: 0.35;
            transform: scale(0.95);
            border-style: dashed !important;
        }

        /* Drop Zone */
        .sku-drop-zone {
            margin: 4px 10px;
            border: 2px dashed rgba(59, 130, 246, 0.2);
            border-radius: 8px;
            padding: 14px;
            text-align: center;
            font-size: 11px;
            color: rgba(147, 197, 253, 0.4);
            transition: all 0.2s ease;
            min-height: 36px;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 6px;
        }
        .sku-drop-zone:hover,
        .sku-drop-zone.active {
            border-color: rgba(59, 130, 246, 0.7);
            background: rgba(59, 130, 246, 0.1);
            color: #93c5fd;
            box-shadow: 0 0 16px rgba(59, 130, 246, 0.2);
            animation: sku-dz-pulse 1.2s ease-in-out infinite;
        }
        @keyframes sku-dz-pulse {
            0%, 100% { box-shadow: 0 0 12px rgba(59, 130, 246, 0.15); }
            50% { box-shadow: 0 0 24px rgba(59, 130, 246, 0.35); }
        }
        .sku-drop-zone-icon { font-size: 16px; }

        /* 新建分组按钮 */
        .sku-new-group-btn {
            display: block;
            width: 100%;
            padding: 10px;
            border: 1.5px dashed rgba(255,255,255,0.12);
            border-radius: 8px;
            background: transparent;
            color: rgba(255,255,255,0.35);
            font-size: 12px;
            cursor: pointer;
            transition: all 0.2s;
        }
        .sku-new-group-btn:hover {
            border-color: rgba(59,130,246,0.4);
            color: #93c5fd;
            background: rgba(59,130,246,0.05);
        }

        /* 保存分组按钮 */
        .sku-save-group-btn {
            display: block;
            width: 100%;
            padding: 10px;
            margin-top: 8px;
            border: 1.5px solid rgba(59,130,246,0.3);
            border-radius: 8px;
            background: rgba(59,130,246,0.12);
            color: #93c5fd;
            font-size: 13px;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.2s;
        }
        .sku-save-group-btn:hover {
            border-color: rgba(59,130,246,0.7);
            background: rgba(59,130,246,0.25);
            color: #fff;
            box-shadow: 0 0 12px rgba(59,130,246,0.2);
        }

        .data-table-body tbody tr:last-child td {
            border-bottom: none;
        }

        .data-table-body tfoot td {
            background: transparent;
            font-weight: 600;
            padding: 16px 12px;
            color: rgba(255, 255, 255, 0.9);
        }

        /* 数据管理页面 */
        .manage-section {
            background: var(--bg-card);
            border-radius: 16px;
            padding: 24px;
            margin-bottom: 24px;
            border: 1px solid var(--border-color);
        }

        .manage-section h3 {
            font-size: 16px;
            font-weight: 600;
            margin-bottom: 16px;
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .manage-section h3 svg {
            width: 20px;
            height: 20px;
            color: var(--primary);
        }

        /* 售后分析页面 */
        .after-sale-content {
            padding: 20px;
        }

        .coming-soon {
            text-align: center;
            padding: 60px 20px;
            background: var(--bg-card);
            border-radius: 16px;
            border: 1px solid var(--border-color);
        }

        .coming-soon-icon {
            font-size: 64px;
            margin-bottom: 20px;
        }

        .coming-soon h3 {
            font-size: 24px;
            font-weight: 600;
            color: var(--text-primary);
            margin-bottom: 12px;
        }

        .coming-soon p {
            font-size: 14px;
            color: var(--text-secondary);
            margin-bottom: 8px;
        }

        .coming-soon-desc {
            font-size: 13px;
            color: var(--text-muted);
            margin-top: 20px;
            padding: 16px;
            background: var(--bg-dark);
            border-radius: 8px;
            line-height: 1.8;
        }

        .platform-list {
            display: flex;
            flex-wrap: wrap;
            gap: 12px;
            margin-bottom: 16px;
        }

        .platform-tag {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 8px 16px;
            background: var(--bg-dark);
            border: 1px solid var(--border-color);
            border-radius: 8px;
            font-size: 14px;
        }

        .platform-tag .close-btn {
            width: 18px;
            height: 18px;
            border-radius: 50%;
            background: var(--danger);
            color: white;
            border: none;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 12px;
            transition: transform 0.2s ease;
        }

        .platform-tag .close-btn:hover {
            transform: scale(1.1);
        }

        .add-form {
            display: flex;
            gap: 12px;
            align-items: center;
        }

        .add-form input {
            background: var(--bg-dark);
            border: 1px solid var(--border-color);
            border-radius: 8px;
            padding: 10px 14px;
            color: var(--text-primary);
            font-size: 14px;
            width: 200px;
        }

        .add-form input:focus {
            outline: none;
            border-color: var(--primary);
        }

        .add-form button {
            padding: 10px 20px;
            border: none;
            border-radius: 8px;
            font-size: 14px;
            font-weight: 500;
            cursor: pointer;
            transition: all 0.2s ease;
        }

        .btn-primary {
            background: var(--primary);
            color: white;
        }

        .btn-primary:hover {
            background: var(--primary-dark);
        }

        .btn-secondary {
            background: var(--bg-dark);
            color: var(--text-primary);
            border: 1px solid var(--border-color);
        }

        .btn-secondary:hover {
            background: var(--border-color);
        }

        /* 商家列表管理 */
        .merchant-list {
            display: flex;
            flex-wrap: wrap;
            gap: 12px;
        }

        .merchant-item {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 8px 14px;
            background: var(--bg-dark);
            border: 1px solid var(--border-color);
            border-radius: 8px;
            font-size: 14px;
        }

        /* 系统设置 */
        .settings-section {
            background: var(--bg-card);
            border-radius: 16px;
            padding: 24px;
            margin-bottom: 24px;
            border: 1px solid var(--border-color);
        }

        .settings-section h3 {
            font-size: 16px;
            font-weight: 600;
            margin-bottom: 16px;
        }

        .settings-row {
            display: flex;
            align-items: center;
            gap: 16px;
            margin-bottom: 16px;
        }

        .settings-row label {
            font-size: 14px;
            min-width: 100px;
        }

        /* 自定义字段配置 */
        .add-field-form {
            display: flex;
            gap: 12px;
            margin-bottom: 16px;
            flex-wrap: wrap;
        }

        .add-field-form input {
            flex: 1;
            min-width: 180px;
            background: var(--bg-dark);
            border: 1px solid var(--border-color);
            border-radius: 8px;
            padding: 10px 14px;
            color: var(--text-primary);
            font-size: 14px;
        }

        .add-field-form input:focus {
            outline: none;
            border-color: var(--primary);
        }

        .add-field-form select {
            min-width: 130px;
        }

        .btn-add-field {
            padding: 10px 20px;
            background: var(--primary);
            color: white;
            border: none;
            border-radius: 8px;
            font-size: 14px;
            font-weight: 500;
            cursor: pointer;
            transition: all 0.2s;
        }

        .btn-add-field:hover {
            background: #2563eb;
        }

        /* 字段列表 */
        .field-list {
            display: flex;
            flex-direction: column;
            gap: 8px;
        }

        .field-item {
            display: flex;
            align-items: center;
            gap: 12px;
            padding: 12px 16px;
            background: var(--bg-dark);
            border: 1px solid var(--border-color);
            border-radius: 10px;
            transition: all 0.2s;
        }

        .field-item:hover {
            border-color: var(--primary);
        }

        .field-item input[type="checkbox"] {
            width: 18px;
            height: 18px;
            accent-color: var(--primary);
        }

        .field-item .field-name {
            flex: 1;
            font-size: 14px;
            color: var(--text-primary);
        }

        .field-item .field-target {
            padding: 4px 12px;
            border-radius: 6px;
            font-size: 12px;
            font-weight: 500;
        }

        .field-target.boss {
            background: rgba(239, 68, 68, 0.2);
            color: #f87171;
        }

        .field-target.operation {
            background: rgba(59, 130, 246, 0.2);
            color: #60a5fa;
        }

        .field-target.all {
            background: rgba(16, 185, 129, 0.2);
            color: #34d399;
        }

        .field-item .field-actions {
            display: flex;
            gap: 8px;
        }

        .field-item .btn-edit,
        .field-item .btn-delete {
            background: none;
            border: none;
            cursor: pointer;
            padding: 4px 8px;
            border-radius: 4px;
            font-size: 12px;
            transition: all 0.2s;
        }

        .field-item .btn-edit {
            color: var(--primary);
        }

        .field-item .btn-edit:hover {
            background: rgba(59, 130, 246, 0.1);
        }

        .field-item .btn-delete {
            color: var(--danger);
        }

        .field-item .btn-delete:hover {
            background: rgba(239, 68, 68, 0.1);
        }

        /* 预设字段 */
        .preset-fields {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
        }

        .preset-field-btn {
            padding: 8px 16px;
            background: var(--bg-dark);
            border: 1px solid var(--border-color);
            border-radius: 8px;
            color: var(--text-secondary);
            font-size: 13px;
            cursor: pointer;
            transition: all 0.2s;
        }

        .preset-field-btn:hover {
            border-color: var(--primary);
            color: var(--text-primary);
            background: rgba(59, 130, 246, 0.1);
        }

        .settings-row input {
            flex: 1;
            max-width: 400px;
            background: var(--bg-dark);
            border: 1px solid var(--border-color);
            border-radius: 8px;
            padding: 10px 14px;
            color: var(--text-primary);
            font-size: 14px;
        }

        .settings-row input:focus {
            outline: none;
            border-color: var(--primary);
        }

        /* 分页组件 — Glassmorphism */
        .pagination-container {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 16px 20px;
            background: rgba(255, 255, 255, 0.04);
            backdrop-filter: blur(8px);
            -webkit-backdrop-filter: blur(8px);
            border-top: 1px solid rgba(255, 255, 255, 0.06);
        }

        .pagination-info {
            font-size: 13px;
            color: var(--text-secondary);
        }

        .pagination-info strong {
            color: var(--text-primary);
        }

        .pagination-controls {
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .pagination-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            min-width: 36px;
            height: 36px;
            padding: 0 12px;
            border: 1px solid rgba(255, 255, 255, 0.1);
            border-radius: 8px;
            background: rgba(255, 255, 255, 0.04);
            color: rgba(255, 255, 255, 0.5);
            font-size: 13px;
            cursor: pointer;
            transition: all 0.2s ease;
        }

        .pagination-btn:hover:not(:disabled) {
            border-color: var(--primary);
            color: var(--primary);
            background: rgba(59, 130, 246, 0.08);
        }

        .pagination-btn:disabled {
            opacity: 0.4;
            cursor: not-allowed;
        }

        .pagination-btn.active {
            background: linear-gradient(135deg, #6366f1, #8b5cf6);
            border-color: transparent;
            color: white;
            box-shadow: 0 2px 8px rgba(99, 102, 241, 0.35);
        }

        .pagination-btn.nav {
            padding: 0 8px;
        }

        .pagination-ellipsis {
            color: var(--text-secondary);
            padding: 0 4px;
        }

        .page-size-selector {
            display: flex;
            align-items: center;
            gap: 8px;
            margin-right: 16px;
        }

        .page-size-selector label {
            font-size: 13px;
            color: var(--text-secondary);
        }

        .page-size-selector select {
            background: rgba(255, 255, 255, 0.05);
            border: 1px solid rgba(255, 255, 255, 0.1);
            border-radius: 6px;
            padding: 6px 10px;
            color: rgba(255, 255, 255, 0.8);
            font-size: 13px;
            cursor: pointer;
            transition: border-color 0.2s, box-shadow 0.2s;
        }

        .page-size-selector select:focus {
            outline: none;
            border-color: rgba(99, 102, 241, 0.4);
            box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.1);
        }

        /* ===== 报告表格辅助 class（替代内联样式） ===== */
        .rt-product-id {
            font-family: 'JetBrains Mono', monospace;
            font-size: 11px;
            color: #94a3b8;
        }
        .rt-product-name { font-weight: 500; }
        .rt-amount { font-weight: 600; }
        .rt-top10 { background: rgba(59, 130, 246, 0.03); }
        .rt-rank {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 18px;
            height: 18px;
            margin-right: 4px;
            font-size: 11px;
            color: rgba(255, 255, 255, 0.4);
        }
        .rt-rank-gold {
            color: white;
            background: #f59e0b;
            border-radius: 4px;
            font-size: 10px;
            font-weight: 700;
        }
        .rt-rank-blue {
            color: white;
            background: var(--primary);
            border-radius: 4px;
            font-size: 10px;
            font-weight: 700;
        }
        .rt-consignment-tag {
            font-size: 10px;
            background: rgba(168, 85, 247, 0.12);
            color: #c084fc;
            padding: 1px 5px;
            border-radius: 3px;
            margin-left: 4px;
            border: 1px solid rgba(168, 85, 247, 0.2);
        }
        .rt-sku-badge {
            background: rgba(59, 130, 246, 0.12);
            color: var(--primary);
            padding: 2px 8px;
            border-radius: 4px;
            font-weight: 600;
            border: 1px solid rgba(59, 130, 246, 0.2);
        }
        .rt-profit-positive { color: #10b981; font-weight: 600; }
        .rt-profit-low { color: #f59e0b; font-weight: 600; }
        .rt-profit-negative { color: #ef4444; font-weight: 600; }
        .rt-profit-consignment { color: rgba(255, 255, 255, 0.35); font-style: italic; }
        .rt-follower-avatar {
            width: 32px;
            height: 32px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            font-size: 12px;
            font-weight: 600;
        }
        .rt-follower-avatar.no-follower { opacity: 0.45; }
        /* 运营操作列 */
        .rt-op-cell { display: flex; flex-direction: column; align-items: center; gap: 2px; }
        .rt-op-pill { display: inline-flex; align-items: center; font-size: 11px; padding: 1px 9px; border-radius: 10px; white-space: nowrap; color: rgba(255,255,255,0.25); background: rgba(255,255,255,0.04); border: 0.5px solid rgba(255,255,255,0.08); }
        .rt-op-pill.op-active { color: #f59e0b; background: rgba(245,158,11,0.12); border-color: rgba(245,158,11,0.25); font-weight: 600; }
        .rt-op-pill.op-pill-comment { color: rgba(255,255,255,0.22); }
        .rt-op-pill.op-pill-comment.op-active { color: #38bdf8; background: rgba(56,189,248,0.12); border-color: rgba(56,189,248,0.25); }
        .rt-op-pill.op-pill-note { color: rgba(255,255,255,0.22); }
        .rt-op-pill.op-pill-note.op-active { color: #34d399; background: rgba(52,211,153,0.12); border-color: rgba(52,211,153,0.25); }
        .rt-trend-cell {
            height: 36px;
            position: relative;
            width: 100%;
        }
        .rt-plat-badge {
            font-size: 10px;
            padding: 1px 6px;
            border-radius: 3px;
            margin-right: 3px;
        }

        /* 响应式 */
        @media (max-width: 1400px) {
            .kpi-grid {
                grid-template-columns: repeat(4, 1fr);
            }
        }

        @media (max-width: 1200px) {
            .pagination-container {
                flex-direction: column;
                gap: 12px;
            }
        }

        @media (max-width: 900px) {
            .kpi-grid {
                grid-template-columns: repeat(2, 1fr);
            }
        }

        /* ========== #page-report 运营报告 — 全自适应弹性布局 ========== */

        /* 根容器：100%宽度，不裁切内容（用overflow-x:auto在子级控制） */
        #page-report {
            width: 100%;
            max-width: 100%;
            box-sizing: border-box;
        }

        /* ===== 主内容区：真正的弹性布局 ===== */
        .main-content {
            position: relative;
            flex: 1;
            margin-left: calc(160px + 24px); /* dock宽160 + 间距 */
            padding: clamp(12px, 1.5vw, 24px);
            min-height: 100vh;
            transition: margin-left 0.3s cubic-bezier(0.4, 0, 0.2, 1);
            width: auto; /* 让flex:1决定实际宽度 */
            min-width: 0;
        }
        .main-content.dock-collapsed {
            margin-left: clamp(16px, 2vw, 32px); /* 收起后只留小间距 */
        }

        /* 商品网格：固定5列 + 自适应间距，保证10张卡片永远是5+2行对齐 */
        #page-report .product-grid {
            display: grid;
            grid-template-columns: repeat(5, minmax(0, 1fr));
            gap: clamp(8px, 1.5vw, 20px);
            margin-bottom: clamp(16px, 2vw, 24px);
            width: 100%;
            min-width: 0;
        }

        /* 响应式断点 */
        @media (max-width: 1200px) {
            #page-report .kpi-grid {
                grid-template-columns: repeat(2, 1fr) !important;
            }
        }
        @media (max-width: 768px) {
            #page-report .product-grid {
                grid-template-columns: repeat(2, minmax(0, 1fr));
            }
            #page-report .kpi-grid {
                grid-template-columns: 1fr !important;
            }
            #page-report .page-header {
                flex-direction: column;
                gap: clamp(8px, 1vw, 12px);
                align-items: flex-start;
            }
        }
        @media (max-width: 480px) {
            #page-report { padding: clamp(8px, 2vw, 12px); }
            #page-report .product-card { padding: clamp(8px, 2vw, 12px); }
            #page-report .kpi-card { padding: clamp(8px, 2vw, 12px); }
            #page-report .product-grid {
                grid-template-columns: 1fr;
            }
        }

        /* 表格容器：弹性宽度 + 横向滚动 */
        #page-report .table-container {
            overflow-x: auto;
            -webkit-overflow-scrolling: touch;
            width: 100%;
        }
        /* 运营报告表格容器：允许横向滚动（覆盖全局overflow:hidden） */
        #page-report .data-table-container {
            overflow-x: auto;
            overflow-y: hidden;
            display: flex;
            flex-direction: column;
        }

        /* ===== operation-index：全局使用相对单位 ===== */
        .operation-index {
            width: 2em;
            height: 2em;
            min-width: 1.5em;
            min-height: 1.5em;
            border-radius: 50%;
            display: inline-flex;   /* 行内正常流，不用absolute！ */
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
            position: relative;
            z-index: 2;
            transition: transform 0.2s ease;
        }
        .operation-index:hover {
            transform: scale(1.15);
        }
        .oi-emoji {
            font-size: clamp(12px, 1.2vw, 18px);  /* 自适应字号 */
            line-height: 1;
            display: inline-block;
        }
        /* SKU卡片内OI防拉伸（grid子项） */
        .sku-card-stats .operation-index {
            width: 2em !important;
            height: 2em !important;
            justify-self: center;
        }

        /* ===== 商品卡片card-top：emoji在正常流中 ===== */
        #page-report .product-card {
            padding: clamp(10px, 1.2vw, 16px);
        }
        #page-report .product-card .card-title {
            font-size: clamp(12px, 1.15vw, 15px);
        }
        #page-report .product-card .card-value {
            font-size: clamp(14px, 1.35vw, 18px);
        }
        #page-report .product-card .card-icon {
            width: clamp(22px, 2vw, 28px);
            height: clamp(22px, 2vw, 28px);
        }
        #page-report .product-card .card-change,
        #page-report .product-card .card-subtitle {
            font-size: clamp(10px, 0.85vw, 11px);
        }
        #page-report .product-card .mini-chart {
            height: clamp(40px, 4.5vw, 56px);
        }
        /* 卡片内辅助文字（JS inline style 写死了 11px/10px）用 !important 覆盖为弹性 */
        #page-report .product-card div > div[style*="font-size:11px"],
        #page-report .product-card div > div[style*="font-size:10px"] {
            font-size: clamp(10px, 0.85vw, 11px) !important;
        }
        /* 排名编号内文字 */
        #page-report .product-card .card-icon span {
            font-size: clamp(9px, 0.8vw, 10px) !important;
        }
        /* 卡片内辅助文字（成本/毛利等）弹性字号 */
        #page-report .product-card .card-top {
            display: flex;
            justify-content: space-between;
            align-items: center;     /* 垂直居中对齐 */
            gap: clamp(4px, 0.6vw, 8px);
            flex-wrap: nowrap;
        }
        #page-report .product-card .card-title {
            flex: 1;
            min-width: 0;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
        /* 右侧区域(emoji+编号)：不换行、不压缩 */
        #page-report .product-card .card-top > div:last-child {
            display: flex;
            align-items: center;
            gap: clamp(3px, 0.5vw, 6px);
            flex-shrink: 0;
        }

        /* 表格行内的OI：紧凑但仍是相对单位 */
        #page-report .data-table-body .operation-index {
            width: 1.8em;
            height: 1.8em;
            margin: 0 !important;
            vertical-align: middle;
        }
        #page-report .data-table-body td:has(.operation-index) {
            padding: clamp(2px, 0.3vw, 6px) clamp(4px, 0.5vw, 8px);
            text-align: center;
            vertical-align: middle;
        }

        /* 滚动条美化 */
        ::-webkit-scrollbar {
            width: 8px;
            height: 8px;
        }

        ::-webkit-scrollbar-track {
            background: var(--bg-dark);
        }

        ::-webkit-scrollbar-thumb {
            background: var(--border-color);
            border-radius: 4px;
        }

        ::-webkit-scrollbar-thumb:hover {
            background: var(--text-secondary);
        }

        /* 动画 */
        @keyframes pulse {
            0%, 100% { opacity: 1; }
            50% { opacity: 0.5; }
        }

        .loading {
            animation: pulse 1.5s infinite;
        }

        /* 入场动画 */
        .animate-in {
            animation: slideUp 0.5s ease forwards;
            opacity: 0;
        }

        @keyframes slideUp {
            from {
                opacity: 0;
                transform: translateY(20px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        .kpi-card:nth-child(1) { animation-delay: 0.1s; }
        .kpi-card:nth-child(2) { animation-delay: 0.2s; }
        .kpi-card:nth-child(3) { animation-delay: 0.3s; }
        .kpi-card:nth-child(4) { animation-delay: 0.4s; }

        .product-card:nth-child(1) { animation-delay: 0.1s; }
        .product-card:nth-child(2) { animation-delay: 0.15s; }
        .product-card:nth-child(3) { animation-delay: 0.2s; }
        .product-card:nth-child(4) { animation-delay: 0.25s; }
        .product-card:nth-child(5) { animation-delay: 0.3s; }
        .product-card:nth-child(6) { animation-delay: 0.35s; }
        .product-card:nth-child(7) { animation-delay: 0.4s; }
        .product-card:nth-child(8) { animation-delay: 0.45s; }
        .product-card:nth-child(9) { animation-delay: 0.5s; }
        .product-card:nth-child(10) { animation-delay: 0.55s; }

        .bm-layout {
            display: flex;
            gap: 20px;
            height: calc(100vh - 140px);
            min-height: 500px;
        }

        .bm-main {
            flex: 1;
            display: flex;
            flex-direction: column;
            min-width: 0;
            min-height: 0;
        }

        .bm-toolbar {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 12px;
            flex-wrap: wrap;
            gap: 8px;
        }

        .bm-toolbar-left {
            display: flex;
            gap: 8px;
            align-items: center;
            flex-wrap: wrap;
        }

        .bm-search-box {
            position: relative;
        }

        .bm-search-box input {
            padding: 7px 12px 7px 34px;
            border: 1px solid #475569;
            border-radius: 8px;
            background: rgb(36, 41, 57);
            color: var(--text-primary);
            font-size: 13px;
            width: 260px;
            outline: none;
            transition: border-color 0.2s;
        }

        .bm-search-box input:focus {
            border-color: var(--primary);
        }

        .bm-search-box::before {
            content: '🔍';
            position: absolute;
            left: 10px;
            top: 50%;
            transform: translateY(-50%);
            font-size: 13px;
            pointer-events: none;
        }

        .bm-filter-select {
            padding: 7px 28px 7px 12px;
            border: 1px solid #475569;
            border-radius: 8px;
            background: rgb(36, 41, 57);
            color: var(--text-primary);
            font-size: 13px;
            outline: none;
            cursor: pointer;
            appearance: none;
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2394a3b8' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10z'/%3E%3C/svg%3E");
            background-repeat: no-repeat;
            background-position: right 8px center;
        }

        .bm-filter-select:focus {
            border-color: var(--primary);
        }

        .bm-stats {
            display: flex;
            gap: 16px;
            margin-bottom: 12px;
            font-size: 13px;
            color: #94a3b8;
        }

        .bm-stat-item span:last-child {
            margin-left: 4px;
            color: var(--text-primary);
            font-weight: 600;
        }

        .bm-table-wrapper {
            flex: 1;
            background: rgb(36, 41, 57);
            border-radius: 12px;
            border: 1px solid #475569;
            overflow: hidden;
            display: flex;
            flex-direction: column;
            min-height: 0;
        }

        .bm-table-scroll {
            flex: 1;
            overflow-y: auto;
            min-height: 0;
        }

        .bm-table-scroll::-webkit-scrollbar {
            width: 6px;
        }

        .bm-table-scroll::-webkit-scrollbar-thumb {
            background: #475569;
            border-radius: 3px;
        }

        .bm-table {
            width: 100%;
            border-collapse: collapse;
            table-layout: fixed;
            width: 100%;
            border-collapse: collapse;
            font-size: 13px;
        }

        .bm-table thead {
            position: sticky;
            top: 0;
            z-index: 1;
            background: #2a3040;
        }

        .bm-table th {
            padding: 10px 12px;
            text-align: left;
            font-weight: 600;
            color: #94a3b8;
            font-size: 12px;
            border-bottom: 1px solid #475569;
            white-space: nowrap;
        }

        .bm-table td {
            padding: 10px 12px;
            border-bottom: 1px solid rgba(71, 85, 105, 0.3);
            vertical-align: middle;
        }

        .bm-table tbody tr {
            transition: background 0.15s;
        }

        .bm-table tbody tr:hover {
            background: rgba(59, 130, 246, 0.06);
        }

        .bm-table tbody tr.selected {
            background: rgba(59, 130, 246, 0.12);
        }

        /* 商品分级行 */
        .bm-group-product {
            background: rgba(59, 130, 246, 0.06);
            cursor: pointer;
        }
        .bm-group-product:hover {
            background: rgba(59, 130, 246, 0.1);
        }
        .bm-group-product td {
            padding: 8px 12px;
            border-bottom: 1px solid #475569;
        }
        .bm-group-toggle {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 20px;
            height: 20px;
            border-radius: 4px;
            background: rgba(59, 130, 246, 0.15);
            color: #60a5fa;
            font-size: 12px;
            font-weight: bold;
            transition: transform 0.2s, background 0.15s;
            margin-right: 8px;
        }
        .bm-group-toggle.collapsed {
            transform: rotate(-90deg);
        }
        .bm-group-name {
            font-weight: 600;
            font-size: 13px;
            color: var(--text-primary);
        }
        .bm-group-code {
            font-size: 11px;
            color: #64748b;
            margin-left: 6px;
        }
        .bm-group-stats {
            margin-left: auto;
            display: flex;
            align-items: center;
            gap: 6px;
        }
        .bm-sku-count {
            display: inline-flex;
            align-items: center;
            gap: 3px;
            padding: 2px 8px;
            border-radius: 10px;
            background: rgba(59, 130, 246, 0.12);
            color: #60a5fa;
            font-size: 11px;
            font-weight: 600;
        }
        .bm-spec-count {
            display: inline-flex;
            align-items: center;
            gap: 3px;
            padding: 2px 8px;
            border-radius: 10px;
            background: rgba(16, 185, 129, 0.12);
            color: #34d399;
            font-size: 11px;
            font-weight: 600;
        }

        /* 规格分级行 */
        .bm-group-spec {
            background: rgba(16, 185, 129, 0.04);
            cursor: pointer;
        }
        .bm-group-spec:hover {
            background: rgba(16, 185, 129, 0.08);
        }
        .bm-group-spec td {
            padding: 7px 12px 7px 56px;
            border-bottom: 1px solid rgba(71, 85, 105, 0.3);
            font-size: 13px;
        }
        .bm-spec-unit-tag {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            padding: 2px 8px;
            border-radius: 6px;
            background: rgba(16, 185, 129, 0.12);
            color: #34d399;
            font-size: 12px;
            font-weight: 500;
        }
        .bm-spec-info {
            color: #94a3b8;
            font-size: 11px;
            margin-left: 6px;
        }

        /* 条码子行 */
        .bm-barcode-row td {
            padding: 6px 12px 6px 80px;
            border-bottom: 1px solid rgba(71, 85, 105, 0.15);
        }
        .bm-barcode-row:hover {
            background: rgba(59, 130, 246, 0.04);
        }



        .bm-checkbox {
            width: 16px;
            height: 16px;
            accent-color: var(--primary);
            cursor: pointer;
        }

        .bm-product-cell {
            display: flex;
            align-items: center;
            gap: 10px;
        }

        .bm-product-cell .bm-picon {
            width: 32px;
            height: 32px;
            border-radius: 6px;
            background: #1e293b;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 16px;
            flex-shrink: 0;
        }

        .bm-product-cell .bm-pinfo {
            min-width: 0;
        }

        .bm-product-cell .bm-pname {
            font-weight: 500;
            color: var(--text-primary);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            max-width: 200px;
        }

        .bm-product-cell .bm-pcode {
            font-size: 11px;
            color: #64748b;
            margin-top: 2px;
        }

        .bm-barcode-text {
            font-family: 'JetBrains Mono', 'Menlo', monospace;
            font-size: 13px;
            color: var(--text-primary);
            letter-spacing: 0.5px;
        }

        .bm-spec-badge {
            display: inline-block;
            padding: 2px 8px;
            border-radius: 4px;
            background: rgba(139, 92, 246, 0.15);
            color: #a78bfa;
            font-size: 12px;
            font-weight: 500;
        }

        .bm-platform-badge {
            display: inline-block;
            padding: 2px 8px;
            border-radius: 4px;
            font-size: 12px;
            font-weight: 500;
        }

        .bm-platform-meicai {
            background: rgba(59, 130, 246, 0.15);
            color: #60a5fa;
        }

        .bm-platform-kuailv {
            background: rgba(16, 185, 129, 0.15);
            color: #34d399;
        }

        .bm-platform-other {
            background: rgba(245, 158, 11, 0.15);
            color: #fbbf24;
        }

        .bm-platform-none {
            background: rgba(100, 116, 139, 0.15);
            color: #64748b;
        }

        .bm-action-btns {
            display: flex;
            gap: 4px;
        }

        .bm-action-btns button {
            width: 28px;
            height: 28px;
            border: none;
            border-radius: 6px;
            background: transparent;
            cursor: pointer;
            font-size: 13px;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: background 0.15s;
        }

        .bm-action-btns .bm-btn-edit:hover {
            background: rgba(59, 130, 246, 0.15);
        }

        .bm-action-btns .bm-btn-del:hover {
            background: rgba(239, 68, 68, 0.15);
        }

        .bm-pagination {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 12px 16px;
            border-top: 1px solid #475569;
        }

        .bm-pagination-info {
            font-size: 12px;
            color: #64748b;
        }

        .bm-pagination-btns {
            display: flex;
            gap: 4px;
        }

        .bm-pagination-btns button {
            min-width: 32px;
            height: 32px;
            border: 1px solid #475569;
            border-radius: 6px;
            background: transparent;
            color: #94a3b8;
            font-size: 12px;
            cursor: pointer;
            transition: all 0.15s;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .bm-pagination-btns button:hover {
            border-color: var(--primary);
            color: var(--primary);
        }

        .bm-pagination-btns button.active {
            background: var(--primary);
            border-color: var(--primary);
            color: white;
        }

        .bm-pagination-btns button:disabled {
            opacity: 0.3;
            cursor: not-allowed;
        }

        .bm-batch-bar {
            display: none;
            align-items: center;
            gap: 12px;
            padding: 10px 16px;
            background: rgba(59, 130, 246, 0.1);
            border: 1px solid rgba(59, 130, 246, 0.3);
            border-radius: 10px;
            margin-bottom: 12px;
            font-size: 13px;
            color: var(--text-primary);
        }

        .bm-batch-bar.show {
            display: flex;
        }

        .bm-batch-bar span {
            color: var(--primary);
            font-weight: 600;
        }

        .bm-empty {
            flex: 1;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            color: #475569;
            gap: 12px;
            padding: 60px;
        }

        .bm-empty-icon {
            font-size: 48px;
            opacity: 0.5;
        }

        .bm-panel-list::-webkit-scrollbar {
            width: 5px;
        }
        .bm-panel-list::-webkit-scrollbar-thumb {
            background: #475569;
            border-radius: 3px;
        }
        .bm-panel-list::-webkit-scrollbar-track {
            background: transparent;
        }

        /* 条码模态框 */
        .bm-modal-overlay {
            display: none;
            position: fixed;
            top: 0; left: 0; right: 0; bottom: 0;
            background: rgba(0,0,0,0.6);
            z-index: 1000;
            align-items: center;
            justify-content: center;
        }

        .bm-modal-overlay.show {
            display: flex;
        }

        .bm-modal {
            background: #1e293b;
            border-radius: 16px;
            border: 1px solid #475569;
            width: 480px;
            max-width: 90vw;
            max-height: 80vh;
            overflow: auto;
            box-shadow: 0 20px 60px rgba(0,0,0,0.5);
        }

        .bm-modal-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 20px 24px;
            border-bottom: 1px solid #334155;
        }

        .bm-modal-header h3 {
            font-size: 16px;
            font-weight: 600;
        }

        .bm-modal-close {
            width: 32px;
            height: 32px;
            border: none;
            border-radius: 8px;
            background: transparent;
            color: #94a3b8;
            font-size: 18px;
            cursor: pointer;
            transition: all 0.15s;
        }

        .bm-modal-close:hover {
            background: rgba(239, 68, 68, 0.15);
            color: #ef4444;
        }

        .bm-modal-body {
            padding: 20px 24px;
        }

        .bm-form-group {
            margin-bottom: 16px;
        }

        .bm-form-group label {
            display: block;
            font-size: 13px;
            color: #94a3b8;
            margin-bottom: 6px;
        }

        .bm-form-group label .bm-required {
            color: var(--danger);
        }

        .bm-form-group input,
        .bm-form-group select {
            width: 100%;
            padding: 9px 12px;
            border: 1px solid #475569;
            border-radius: 8px;
            background: #0f172a;
            color: var(--text-primary);
            font-size: 14px;
            outline: none;
            transition: border-color 0.2s;
        }

        .bm-form-group input:focus,
        .bm-form-group select:focus {
            border-color: var(--primary);
        }

        .bm-form-hint {
            font-size: 11px;
            color: #64748b;
            margin-top: 4px;
        }

        .bm-modal-footer {
            display: flex;
            justify-content: flex-end;
            gap: 8px;
            padding: 16px 24px;
            border-top: 1px solid #334155;
        }

        /* ========== 库存维护模块 ========== */
        .inv-layout {
            display: flex;
            flex-direction: column;
            height: 100%;
            gap: 16px;
        }
        .inv-main {
            flex: 1;
            display: flex;
            flex-direction: column;
            min-height: 0;
        }
        .inv-toolbar {
            display: flex;
            align-items: center;
            justify-content: space-between;
            flex-wrap: wrap;
            gap: 10px;
            margin-bottom: 12px;
        }
        .inv-toolbar-left {
            display: flex;
            align-items: center;
            gap: 8px;
            flex-wrap: wrap;
        }
        .inv-search-box input {
            padding: 7px 12px;
            border: 1px solid #475569;
            border-radius: 8px;
            background: rgb(36, 41, 57);
            color: var(--text-primary);
            font-size: 13px;
            outline: none;
            width: 220px;
        }
        .inv-search-box input:focus {
            border-color: var(--primary);
        }
        .inv-filter-select {
            padding: 7px 28px 7px 12px;
            border: 1px solid #475569;
            border-radius: 8px;
            background: rgb(36, 41, 57);
            color: var(--text-primary);
            font-size: 13px;
            outline: none;
            cursor: pointer;
            appearance: none;
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2394a3b8' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10z'/%3E%3C/svg%3E");
            background-repeat: no-repeat;
            background-position: right 8px center;
        }
        .inv-kpi-row {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 12px;
            margin-bottom: 16px;
        }
        .inv-kpi-card {
            background: rgb(36, 41, 57);
            border-radius: 12px;
            border: 1px solid #475569;
            padding: 16px;
            display: flex;
            align-items: center;
            gap: 14px;
            transition: transform 0.2s, box-shadow 0.2s;
        }
        .inv-kpi-card:hover {
            transform: translateY(-2px);
            box-shadow: 0 8px 20px rgba(0,0,0,0.2);
        }
        .inv-kpi-icon {
            width: 44px;
            height: 44px;
            border-radius: 10px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 20px;
            flex-shrink: 0;
        }
        .inv-kpi-value {
            font-size: 22px;
            font-weight: 700;
            color: var(--text-primary);
        }
        .inv-kpi-label {
            font-size: 12px;
            color: #94a3b8;
            margin-top: 2px;
        }
        .inv-table-wrapper {
            flex: 1;
            background: rgb(36, 41, 57);
            border-radius: 12px;
            border: 1px solid #475569;
            overflow: hidden;
            display: flex;
            flex-direction: column;
            min-height: 0;
        }
        .inv-table-scroll {
            flex: 1;
            overflow-y: auto;
            overflow-x: hidden;
            min-height: 0;
        }
        .inv-table-scroll::-webkit-scrollbar { width: 6px; }
        .inv-table-scroll::-webkit-scrollbar-thumb { background: #475569; border-radius: 3px; }
        .inv-table {
            width: 100%;
            border-collapse: collapse;
            table-layout: fixed;
            font-size: 13px;
        }
        .inv-table thead {
            position: sticky;
            top: 0;
            z-index: 1;
            background: #2a3040;
        }
        .inv-table th {
            padding: 10px 12px;
            text-align: left;
            font-weight: 600;
            color: #94a3b8;
            font-size: 12px;
            border-bottom: 1px solid #475569;
            white-space: nowrap;
        }
        .inv-table td {
            padding: 10px 12px;
            border-bottom: 1px solid rgba(71, 85, 105, 0.3);
            vertical-align: middle;
        }
        .inv-table tbody tr { transition: background 0.15s; }
        .inv-table tbody tr:hover { background: rgba(59, 130, 246, 0.06); }

        /* 库存层级 */
        .inv-group-product {
            background: rgba(59, 130, 246, 0.06);
            cursor: pointer;
        }
        .inv-group-product:hover { background: rgba(59, 130, 246, 0.1); }
        .inv-group-product td {
            padding: 8px 12px;
            border-bottom: 1px solid #475569;
        }
        .inv-group-spec {
            background: rgba(16, 185, 129, 0.04);
            cursor: pointer;
        }
        .inv-group-spec:hover { background: rgba(16, 185, 129, 0.08); }
        .inv-group-spec td {
            padding: 7px 12px 7px 52px;
            border-bottom: 1px solid rgba(71, 85, 105, 0.3);
        }
        .inv-spec-row td {
            padding: 6px 12px 6px 52px;
            border-bottom: 1px solid rgba(71, 85, 105, 0.15);
        }

        /* 库存数量样式 */
        .inv-stock-value {
            font-weight: 600;
            font-size: 14px;
        }
        .inv-stock-zero { color: #f87171; }
        .inv-stock-low { color: #fbbf24; }
        .inv-stock-ok { color: #34d399; }
        .inv-stock-high { color: #60a5fa; }

        /* 库存 - 条码聚合展示 */
        .inv-bc-summary {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            margin-left: 10px;
            padding: 2px 8px;
            border-radius: 6px;
            background: rgba(100, 116, 139, 0.12);
            cursor: pointer;
            transition: background 0.15s;
            user-select: none;
            vertical-align: middle;
        }
        .inv-bc-summary:hover { background: rgba(100, 116, 139, 0.22); }
        .inv-bc-count {
            font-size: 11px;
            color: #94a3b8;
            font-weight: 600;
        }
        .inv-bc-tags { display: inline-flex; gap: 3px; }
        .inv-bc-tag {
            padding: 1px 6px;
            border-radius: 3px;
            font-size: 10px;
            font-weight: 500;
        }
        .inv-bc-tag-mc { background: rgba(59, 130, 246, 0.15); color: #60a5fa; }
        .inv-bc-tag-kl { background: rgba(16, 185, 129, 0.15); color: #34d399; }
        .inv-bc-tag-other { background: rgba(245, 158, 11, 0.15); color: #fbbf24; }
        .inv-bc-tag-none { background: rgba(100, 116, 139, 0.15); color: #94a3b8; }
        .inv-bc-arrow {
            font-size: 9px;
            color: #64748b;
            transition: transform 0.2s;
            display: inline-block;
            margin-left: 2px;
        }
        .inv-bc-arrow.open { transform: rotate(90deg); }
        .inv-bc-detail-row { display: none; }
        .inv-bc-detail-row.show { display: table-row; }
        .inv-bc-detail-cell {
            padding: 0 16px 14px 60px !important;
            border-bottom: 1px solid rgba(71, 85, 105, 0.3);
            background: rgba(15, 23, 42, 0.4) !important;
        }
        .inv-bc-detail-content {
            padding: 10px 14px;
            background: #0f172a;
            border-radius: 8px;
            border: 1px solid #334155;
        }
        .inv-bc-detail-title {
            font-size: 11px;
            color: #64748b;
            margin-bottom: 8px;
            font-weight: 600;
            text-transform: uppercase;
            letter-spacing: 0.5px;
        }
        .inv-bc-list { display: flex; flex-wrap: wrap; gap: 6px; }
        .inv-bc-item {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            padding: 4px 10px;
            border-radius: 6px;
            font-size: 12px;
            background: #1e293b;
            border: 1px solid #334155;
        }
        .inv-bc-item-code {
            font-family: 'JetBrains Mono', monospace;
            color: #f8fafc;
            font-weight: 500;
        }
        .inv-bc-item-platform { font-size: 10px; }

        /* 库存流水 */
        .inv-log-panel {
            margin-top: 16px;
        }
        .inv-log-tabs {
            display: flex;
            gap: 0;
            border-bottom: 1px solid #475569;
            margin-bottom: 0;
        }
        .inv-log-tab {
            padding: 10px 20px;
            font-size: 13px;
            color: #94a3b8;
            cursor: pointer;
            border-bottom: 2px solid transparent;
            transition: all 0.15s;
        }
        .inv-log-tab:hover { color: var(--text-primary); }
        .inv-log-tab.active {
            color: var(--primary);
            border-bottom-color: var(--primary);
        }
        .inv-log-body {
            background: rgb(36, 41, 57);
            border-radius: 0 0 12px 12px;
            border: 1px solid #475569;
            border-top: none;
            max-height: 350px;
            overflow-y: auto;
            overflow-x: hidden;
        }
        .inv-log-body::-webkit-scrollbar { width: 6px; }
        .inv-log-body::-webkit-scrollbar-thumb { background: #475569; border-radius: 3px; }
        .inv-log-row {
            display: flex;
            align-items: center;
            gap: 12px;
            padding: 10px 16px;
            border-bottom: 1px solid rgba(71, 85, 105, 0.2);
            font-size: 13px;
        }
        .inv-log-type {
            padding: 2px 8px;
            border-radius: 4px;
            font-size: 11px;
            font-weight: 600;
            white-space: nowrap;
        }
        .inv-log-type-in { background: rgba(16,185,129,0.15); color: #34d399; }
        .inv-log-type-out { background: rgba(245,158,11,0.15); color: #fbbf24; }
        .inv-log-type-check { background: rgba(59,130,246,0.15); color: #60a5fa; }
        .inv-log-type-adjust { background: rgba(139,92,246,0.15); color: #a78bfa; }
        .inv-log-type-preout { background: rgba(99,102,241,0.15); color: #818cf8; }
        .inv-log-type-precancel { background: rgba(107,114,128,0.12); color: #9ca3af; }
        .inv-log-type-diffout { background: rgba(239,68,68,0.12); color: #f87171; }
        .inv-log-type-diffin { background: rgba(34,197,94,0.12); color: #4ade80; }
        .inv-log-time { color: #64748b; font-size: 12px; white-space: nowrap; }
        .inv-log-product { color: var(--text-primary); font-weight: 500; white-space: nowrap; }
        .inv-log-detail { color: #94a3b8; flex: 1; }
        .inv-log-qty { font-weight: 600; white-space: nowrap; }
        .inv-log-qty-in { color: #34d399; }
        .inv-log-qty-out { color: #fbbf24; }
        .inv-log-remark { color: #64748b; font-size: 12px; max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

        /* 入库/出库/盘点 模态框复用条码样式 */
        .inv-modal-form {
            padding: 20px 24px;
        }
        .inv-form-row {
            display: flex;
            gap: 12px;
        }
        .inv-form-row .bm-form-group { flex: 1; }
        .inv-stock-display {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 12px 16px;
            background: #0f172a;
            border-radius: 10px;
            border: 1px solid #334155;
            margin-bottom: 16px;
            font-size: 13px;
        }
        .inv-stock-display-label { color: #94a3b8; }
        .inv-stock-display-value { font-weight: 700; font-size: 16px; }
        .inv-qty-input-group {
            display: flex;
            align-items: center;
            gap: 0;
        }
        .inv-qty-btn {
            width: 36px;
            height: 36px;
            border: 1px solid #475569;
            background: #1e293b;
            color: var(--text-primary);
            font-size: 18px;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: background 0.15s;
        }
        .inv-qty-btn:first-child { border-radius: 8px 0 0 8px; }
        .inv-qty-btn:last-child { border-radius: 0 8px 8px 0; }
        .inv-qty-btn:hover { background: #334155; }
        .inv-qty-input {
            width: 100px;
            height: 36px;
            text-align: center;
            border: 1px solid #475569;
            border-left: none;
            border-right: none;
            background: #0f172a;
            color: var(--text-primary);
            font-size: 15px;
            font-weight: 600;
            outline: none;
        }
        .inv-qty-input:focus { border-color: var(--primary); }

        /* 盘点表格 */
        .inv-check-table {
            width: 100%;
            border-collapse: collapse;
            table-layout: fixed;
            width: 100%;
            border-collapse: collapse;
            font-size: 13px;
        }
        .inv-check-table th {
            padding: 8px 12px;
            text-align: left;
            background: #1e293b;
            color: #94a3b8;
            font-size: 12px;
            font-weight: 600;
            border-bottom: 1px solid #334155;
        }
        .inv-check-table td {
            padding: 8px 12px;
            border-bottom: 1px solid rgba(71,85,105,0.2);
        }
        .inv-check-table tr:hover { background: rgba(59,130,246,0.04); }
        .inv-check-input {
            width: 70px;
            padding: 4px 8px;
            border: 1px solid #475569;
            border-radius: 6px;
            background: #0f172a;
            color: var(--text-primary);
            font-size: 13px;
            text-align: center;
            outline: none;
        }
        .inv-check-input:focus { border-color: var(--primary); }
        .inv-diff-positive { color: #34d399; font-weight: 600; }
        .inv-diff-negative { color: #f87171; font-weight: 600; }
        .inv-diff-zero { color: #64748b; }


/* ===== SOP 工作台样式 v7 — Premium Dark Glassmorphism ===== */

.page-sop {
  /* 与运营报告保持一致：使用全局暗色背景 */
  margin: -24px;
  padding: 0 20px;
  height: calc(100vh - 48px);
  overflow-y: auto;
  overflow-x: hidden;
  box-sizing: border-box;
  /* display 由 .page / .page.active 控制，不再在此覆盖 */
  flex-direction: column;
}

/* SOP 页面激活时设为 flex 布局 */
.page-sop.active {
  display: flex;
}

/* SOP 页面激活时禁止 body 滚动，由 .page-sop 统一滚动 */
body.has-sop-active { overflow: hidden; }

.sop-container {
  display: flex;
  flex-direction: column;
  gap: 16px;
  height: 100%;
  padding: 12px 0;
  overflow-y: visible;  /* 不嵌套滚动条，由 .page-sop 统一滚动 */
  flex: 1;
  min-height: 0;
  /* Glassmorphism 背景层 — 鲜艳光斑提供透视深度 */
  background:
    radial-gradient(ellipse 800px 500px at 10% 15%, rgba(99,102,241,0.2) 0%, transparent 70%),
    radial-gradient(ellipse 600px 600px at 90% 10%, rgba(59,130,246,0.18) 0%, transparent 65%),
    radial-gradient(ellipse 500px 400px at 50% 90%, rgba(139,92,246,0.18) 0%, transparent 60%),
    radial-gradient(ellipse 400px 350px at 80% 55%, rgba(16,185,129,0.1) 0%, transparent 55%),
    radial-gradient(ellipse 350px 300px at 30% 60%, rgba(236,72,153,0.08) 0%, transparent 50%);
}

/* ===== Bento Grid — 三列布局 ===== */
.sop-board {
  flex: 2;
  min-height: 520px;
}

.bento-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 14px;
  height: 100%;
}

/* 左侧两张小卡 */
.bento-grid .bento-small {
  min-height: 0;
  align-self: stretch;
}

/* 底部计划卡横跨左两列 */
.bento-grid .bento-plan {
  grid-column: 1 / 3;
  align-self: stretch;
}

/* 进行中+已完成：左右并排，占据第3、4列，竖跨两行 */
.bento-grid .bento-right-cards {
  grid-column: 3 / 5;
  grid-row: 1 / 3;
  display: flex;
  flex-direction: row;
  gap: 14px;
  align-self: stretch;
  min-height: 0;
}

.bento-grid .bento-right-cards .bento-card {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

/* ===== Glass Card — SOP 卡片（Glassmorphism） ===== */
.bento-card {
  background: var(--glass-bg);
  backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
  border: 1px solid var(--glass-border);
  border-radius: 16px;
  padding: 20px;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  position: relative;
  transition: transform 400ms cubic-bezier(.34,1.56,.64,1),
              box-shadow 400ms ease,
              background 400ms ease,
              border-color 400ms ease;
  box-shadow: var(--glass-shadow),
              inset 0 1px 0 var(--glass-highlight);
}

/* hover — 发光+放大 */
.bento-card:hover,
.bento-card.is-hovered {
  transform: scale(1.015) translateY(-2px);
  background: var(--glass-bg-hover);
  border-color: var(--glass-border-hover);
  box-shadow: var(--glass-shadow-hover),
              inset 0 1px 0 rgba(255,255,255,0.1),
              0 0 24px rgba(99,102,241,0.15);
  z-index: 10;
}

/* 焦点卡片高亮，其他卡片暗淡 */
.bento-grid:has(.is-hovered) .bento-card:not(.is-hovered) {
  filter: brightness(0.6) saturate(0.6);
  transform: scale(0.98);
  opacity: 0.6;
  transition: all 400ms ease;
}

/* ===== 卡片头部 ===== */
.card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 14px;
  flex-shrink: 0;
}

.card-title {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  font-weight: 600;
  color: rgba(255,255,255,0.88);
}

.card-count {
  font-size: 12px;
  font-weight: 700;
  color: rgba(255,255,255,0.45);
  background: rgba(255,255,255,0.06);
  padding: 3px 10px;
  border-radius: 20px;
  border: 1px solid rgba(255,255,255,0.06);
}

/* ===== 卡片内容区 ===== */
.card-body {
  flex: 1;
  overflow-y: auto;
  min-height: 0;
}
.card-body::-webkit-scrollbar { width: 4px; }
.card-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.12); border-radius: 4px; }
.card-body::-webkit-scrollbar-track { background: transparent; }

/* ===== 卡片背景曲线 ===== */
.card-chart-bg {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 45%;
  pointer-events: none;
  z-index: 0;
  opacity: 0.7;
  border-radius: 0 0 15px 15px;
  overflow: hidden;
}
.card-chart-bg canvas {
  display: block;
  width: 100%;
  height: 100%;
}
/* 确保卡片内容在曲线之上 */
.bento-card > .card-header,
.bento-card > .card-body {
  position: relative;
  z-index: 1;
}

/* ===== 优先级圆点（霓虹光晕）===== */
.priority-dot {
  width: 10px; height: 10px;
  border-radius: 50%;
  flex-shrink: 0;
  box-shadow: 0 0 0 0 transparent;
}
.priority-urgent { background:#ff4757; box-shadow:0 0 10px #ff4757, 0 0 20px rgba(255,71,87,0.3); }
.priority-important { background:#ffa502; box-shadow:0 0 10px #ffa502, 0 0 20px rgba(255,165,2,0.3); }
.priority-low { background:#2ed573; box-shadow:0 0 10px #2ed573, 0 0 20px rgba(46,213,115,0.3); }
.priority-plan { background:#1e90ff; box-shadow:0 0 10px #1e90ff, 0 0 20px rgba(30,144,255,0.3); }

/* ===== 任务列表 ===== */
.task-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.task-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  border-radius: 10px;
  transition: background 150ms;
}
.task-item.clickable { cursor: pointer; }
.task-item.clickable:hover {
  background: rgba(255,255,255,0.05);
}

/* 优先级左边框（内联样式替代方案，用 class 控制）*/
.task-item.pi-urgent { border-left: 3px solid #ff4757; padding-left: 7px; }
.task-item.pi-important { border-left: 3px solid #ffa502; padding-left: 7px; }

/* 任务圆点（更小的）*/
.task-item .dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  flex-shrink: 0;
}
.task-item .dot.urgent { background: #ff4757; box-shadow: 0 0 6px #ff4757; }
.task-item .dot.important { background: #ffa502; box-shadow: 0 0 6px #ffa502; }

.task-item .ttitle {
  font-size: 12.5px;
  color: rgba(255,255,255,0.85);
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.task-item .tmeta {
  font-size: 10.5px;
  color: rgba(255,255,255,0.4);
  flex-shrink: 0;
}

/* 任务行内的发布人+领取人头像 */
.task-avatars {
  display: flex;
  align-items: center;
  gap: -4px;
  flex-shrink: 0;
  margin-left: auto;
}

.task-avatar {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  font-size: 12px;
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  background: #3b82f6;
  border: 1.5px solid var(--bg-dark);
  flex-shrink: 0;
  margin-left: -4px;
}

.task-avatar:first-child {
  margin-left: 0;
}

.task-avatar.pub {
  border-color: rgba(255,255,255,0.3);
}

.task-item.done .ttitle {
  text-decoration: line-through;
  opacity: 0.6;
}

.task-item .dot.done {
  background: #10b981;
  box-shadow: 0 0 6px #10b981;
}

/* ===== 任务卡片样式（源头/进行中/已完成） ===== */
.task-card-item {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 10px 14px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-left: 3px solid rgba(255,255,255,0.25);
  border-radius: 12px;
  cursor: pointer;
  transition: all 200ms ease;
  margin-bottom: 6px;
}

/* 单行内联模式 */
.task-card-inline {
  flex-direction: row;
  align-items: center;
  gap: 8px;
}

.task-card-item:hover {
  background: rgba(255,255,255,0.07);
  border-color: rgba(255,255,255,0.15);
}

.task-card-top {
  display: flex;
  align-items: center;
  gap: 6px;
}

.task-card-title {
  flex: 1;
  font-size: 12px;
  color: rgba(255,255,255,0.88);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  line-height: 1.4;
}

.task-card-assignee {
  display: flex;
  align-items: center;
  gap: 5px;
  padding-left: 2px;
}

.task-card-assignee-name {
  font-size: 11px;
  color: rgba(255,255,255,0.5);
}

.task-assignee-label {
  font-size: 10px;
  color: rgba(255,255,255,0.35);
  flex-shrink: 0;
}

.task-assignee-group {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

.task-card-pub-name {
  font-size: 11px;
  color: rgba(255,255,255,0.45);
  flex-shrink: 0;
  max-width: 48px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.task-card-assignee-name {
  font-size: 11px;
  color: rgba(255,255,255,0.5);
  flex-shrink: 0;
}

.task-card-age {
  font-size: 10px;
  color: rgba(255,255,255,0.3);
  flex-shrink: 0;
  white-space: nowrap;
}

.task-card-claim-btn {
  flex-shrink: 0;
  padding: 4px 14px;
  background: rgba(59,130,246,0.15);
  border: 1px solid rgba(59,130,246,0.25);
  border-radius: 6px;
  color: #60a5fa;
  font-size: 11px;
  font-weight: 500;
  cursor: pointer;
  transition: all 200ms ease;
}

.task-card-claim-btn:hover {
  background: rgba(59,130,246,0.3);
  border-color: rgba(59,130,246,0.5);
  color: #93c5fd;
}

/* 进行中卡片 */
.task-card-item.doing {
  border-left: 4px solid #6366f1;
  background: rgba(99,102,241,0.12);
}

.task-card-timer {
  flex-shrink: 0;
  font-size: 11px;
  color: rgba(255,255,255,0.5);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.5px;
}

.task-card-actions {
  display: inline-flex;
  gap: 4px;
  flex-shrink: 0;
  margin-left: auto;
}

/* 已完成卡片 */
.task-card-item.done {
  border-left: 4px solid #10b981;
  background: rgba(16,185,129,0.1);
  opacity: 0.8;
}

.task-card-item.done .task-card-title {
  text-decoration: line-through;
  color: rgba(255,255,255,0.55);
}

.task-card-time {
  flex-shrink: 0;
  font-size: 11px;
  color: #10b981;
  font-weight: 500;
}

/* ===== 任务翻转详情（固定浮层 + 3D 翻转动画）===== */

/* 暗色遮罩 */
.task-detail-overlay {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.45);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}

/* 遮罩过渡 */
.td-overlay-enter { transition: opacity 0.3s ease; }
.td-overlay-enter-start { opacity: 0; }
.td-overlay-enter-end { opacity: 1; }
.td-overlay-leave { transition: opacity 0.2s ease; }
.td-overlay-leave-start { opacity: 1; }
.td-overlay-leave-end { opacity: 0; }

/* 卡片容器 */
.task-detail-card {
  width: 400px;
  max-width: 100%;
  max-height: 85vh;
  overflow-y: auto;
}
.task-detail-card::-webkit-scrollbar { width: 4px; }
.task-detail-card::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.15); border-radius: 4px; }

/* 卡片 3D 翻转过渡 */
.td-card-enter { transition: all 0.4s cubic-bezier(0.34,1.56,0.64,1); }
.td-card-enter-start { opacity: 0; transform: perspective(800px) rotateY(90deg) scale(0.85); }
.td-card-enter-end { opacity: 1; transform: perspective(800px) rotateY(0) scale(1); }
.td-card-leave { transition: all 0.25s ease-in; }
.td-card-leave-start { opacity: 1; transform: perspective(800px) rotateY(0) scale(1); }
.td-card-leave-end { opacity: 0; transform: perspective(800px) rotateY(-90deg) scale(0.85); }

/* 详情卡片内容 */
.task-card-detail {
  background: linear-gradient(145deg, rgba(30,41,59,0.97) 0%, rgba(15,23,42,0.99) 100%);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 16px;
  padding: 22px;
  box-shadow: 0 25px 60px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.05) inset;
  position: relative;
}

.tcd-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 8px;
}
.tcd-title {
  font-size: 16px;
  font-weight: 600;
  color: rgba(255,255,255,0.95);
  line-height: 1.4;
  flex: 1;
}
.tcd-priority {
  flex-shrink: 0;
  padding: 3px 10px;
  border-radius: 10px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.5px;
}
.tcd-desc {
  font-size: 12px;
  color: rgba(255,255,255,0.45);
  line-height: 1.6;
  margin-bottom: 14px;
}
.tcd-divider {
  height: 1px;
  background: rgba(255,255,255,0.06);
  margin: 0 -22px 14px;
}
.tcd-fields {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 14px;
}
.tcd-field {
  display: flex;
  gap: 8px;
  align-items: flex-start;
}
.tcd-field-icon {
  width: 20px;
  text-align: center;
  flex-shrink: 0;
  font-size: 14px;
  line-height: 1.6;
}
.tcd-field-label {
  font-size: 11px;
  color: rgba(255,255,255,0.4);
  flex-shrink: 0;
  width: 56px;
  line-height: 1.6;
}
.tcd-field-value {
  font-size: 13px;
  color: rgba(255,255,255,0.85);
  line-height: 1.6;
  flex: 1;
  word-break: break-word;
}
.tcd-tags {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  padding-top: 10px;
  border-top: 1px solid rgba(255,255,255,0.05);
  margin-bottom: 14px;
}
.tcd-tag {
  padding: 3px 10px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 6px;
  font-size: 11px;
  color: rgba(255,255,255,0.55);
}
.tcd-people {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 12px 16px;
  background: rgba(255,255,255,0.025);
  border-radius: 10px;
  margin-bottom: 14px;
}
.tcd-person-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 0;
  border-bottom: 1px solid rgba(255,255,255,0.04);
}
.tcd-person-row:last-child {
  border-bottom: none;
  padding-bottom: 0;
}
.tcd-person-row:first-child {
  padding-top: 0;
}
.tcd-person-role {
  font-size: 11px;
  color: rgba(255,255,255,0.35);
  flex-shrink: 0;
  width: 56px;
}
.tcd-person-avatar {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  font-size: 13px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  flex-shrink: 0;
  box-shadow: 0 2px 8px rgba(0,0,0,0.3);
}
.tcd-person-name {
  font-size: 13px;
  color: rgba(255,255,255,0.8);
  font-weight: 500;
}
.tcd-person-time {
  font-size: 11px;
  color: rgba(255,255,255,0.35);
  margin-left: auto;
}
.tcd-duration {
  font-size: 15px;
  font-weight: 700;
  color: var(--primary);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.5px;
}
.tcd-actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  padding-top: 12px;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.tcd-btn {
  padding: 6px 18px;
  border-radius: 8px;
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  border: 1px solid transparent;
  transition: all 200ms ease;
}
.tcd-btn-claim {
  background: rgba(59,130,246,0.15);
  border-color: rgba(59,130,246,0.3);
  color: #60a5fa;
}
.tcd-btn-claim:hover { background: rgba(59,130,246,0.3); border-color: rgba(59,130,246,0.5); }
.tcd-btn-complete {
  background: rgba(16,185,129,0.15);
  border-color: rgba(16,185,129,0.3);
  color: #34d399;
}
.tcd-btn-complete:hover { background: rgba(16,185,129,0.3); border-color: rgba(16,185,129,0.5); }
.tcd-btn-delete {
  background: rgba(239,68,68,0.1);
  border-color: rgba(239,68,68,0.2);
  color: #f87171;
}
.tcd-btn-delete:hover { background: rgba(239,68,68,0.25); border-color: rgba(239,68,68,0.4); }
.tcd-hint {
  text-align: center;
  font-size: 10px;
  color: rgba(255,255,255,0.2);
  margin-top: 10px;
}

/* ===== 评论区 ===== */
.tcd-comments {
  margin-top: 6px;
}

.tcd-comments-title {
  font-size: 12px;
  font-weight: 600;
  color: rgba(255,255,255,0.5);
  margin-bottom: 8px;
}

.tcd-comments-list {
  max-height: 180px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding-right: 2px;
}
.tcd-comments-list::-webkit-scrollbar { width: 3px; }
.tcd-comments-list::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.12); border-radius: 3px; }

.tcd-comment-item {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 8px 10px;
  background: rgba(255,255,255,0.03);
  border-radius: 10px;
  position: relative;
}

.tcd-comment-avatar {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  font-weight: 600;
  color: #fff;
  flex-shrink: 0;
}

.tcd-comment-body {
  flex: 1;
  min-width: 0;
}

.tcd-comment-meta {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 3px;
}

.tcd-comment-name {
  font-size: 11px;
  font-weight: 600;
  color: rgba(255,255,255,0.75);
}

.tcd-comment-time {
  font-size: 10px;
  color: rgba(255,255,255,0.3);
}

.tcd-comment-text {
  font-size: 12px;
  color: rgba(255,255,255,0.7);
  line-height: 1.5;
  word-break: break-word;
}

.tcd-comment-del {
  position: absolute;
  top: 4px;
  right: 6px;
  width: 18px;
  height: 18px;
  border: none;
  background: transparent;
  color: rgba(255,255,255,0.15);
  font-size: 14px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  opacity: 0;
  transition: all 200ms;
}

.tcd-comment-item:hover .tcd-comment-del {
  opacity: 1;
}

.tcd-comment-del:hover {
  background: rgba(239,68,68,0.2);
  color: #ff4757;
}

.tcd-comment-empty {
  text-align: center;
  font-size: 12px;
  color: rgba(255,255,255,0.25);
  padding: 16px 0;
}

.tcd-comment-input-row {
  display: flex;
  gap: 6px;
  margin-top: 8px;
}

.tcd-comment-input-row input {
  flex: 1;
  padding: 7px 12px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 8px;
  color: rgba(255,255,255,0.9);
  font-size: 12px;
  outline: none;
  transition: border-color 200ms;
}

.tcd-comment-input-row input::placeholder {
  color: rgba(255,255,255,0.25);
}

.tcd-comment-input-row input:focus {
  border-color: rgba(59,130,246,0.4);
}

.tcd-comment-send {
  padding: 7px 14px;
  background: rgba(59,130,246,0.2);
  border: 1px solid rgba(59,130,246,0.3);
  border-radius: 8px;
  color: #60a5fa;
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  transition: all 200ms;
  white-space: nowrap;
}

.tcd-comment-send:hover {
  background: rgba(59,130,246,0.35);
  border-color: rgba(59,130,246,0.5);
}

/* ===== 5W2H 任务弹窗样式 ===== */
/* ===== 任务发布卡片（与详情卡片风格统一） ===== */
.sop-publish-card {
  max-width: 440px;
}

/* 优先级切换条 */
.sop-priority-bar {
  display: flex;
  gap: 6px;
  margin-bottom: 14px;
}

.sop-priority-chip {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 6px 8px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 8px;
  color: rgba(255,255,255,0.5);
  font-size: 11px;
  font-weight: 500;
  cursor: pointer;
  transition: all 200ms ease;
}

.sop-priority-chip:hover {
  background: rgba(255,255,255,0.07);
}

.sop-priority-chip.active {
  background: rgba(255,255,255,0.08);
  border-color: rgba(255,255,255,0.18);
  color: rgba(255,255,255,0.9);
}

/* 5W2H 表单字段 */
.sop-form-fields {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.sop-field-row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}

.sop-field-icon {
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
  background: rgba(255,255,255,0.05);
  border-radius: 8px;
  flex-shrink: 0;
  margin-top: 1px;
}

.sop-field-body {
  flex: 1;
  min-width: 0;
}

.sop-field-body label {
  display: block;
  font-size: 12px;
  color: rgba(255,255,255,0.6);
  margin-bottom: 4px;
  font-weight: 500;
}

.sop-field-sub {
  font-weight: 400;
  color: rgba(255,255,255,0.35);
  font-size: 11px;
  margin-left: 3px;
}

.sop-field-body input,
.sop-field-body select,
.sop-field-body textarea {
  width: 100%;
  padding: 8px 12px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 8px;
  color: rgba(255,255,255,0.9);
  font-size: 13px;
  outline: none;
  transition: all 200ms ease;
  font-family: inherit;
}

.sop-field-body input::placeholder,
.sop-field-body textarea::placeholder {
  color: rgba(255,255,255,0.25);
}

.sop-field-body input:focus,
.sop-field-body select:focus,
.sop-field-body textarea:focus {
  border-color: rgba(59,130,246,0.45);
  box-shadow: 0 0 0 3px rgba(59,130,246,0.08);
  background: rgba(255,255,255,0.08);
}

.sop-field-body select {
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
  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 d='M3 5l3 3 3-3' stroke='rgba(255,255,255,0.4)' fill='none' stroke-width='1.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 10px center;
  padding-right: 28px;
}

.sop-field-body textarea {
  resize: vertical;
  min-height: 60px;
  line-height: 1.5;
}

/* 补充信息折叠 */
.sop-extra-toggle {
  display: flex;
  align-items: center;
  gap: 4px;
  margin-top: 14px;
  margin-bottom: 8px;
  font-size: 12px;
  color: rgba(255,255,255,0.4);
  cursor: pointer;
  padding: 4px 0;
  transition: color 200ms;
  user-select: none;
}

.sop-extra-toggle:hover {
  color: rgba(255,255,255,0.6);
}

.sop-extra-fields {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.sop-field-inline-row {
  display: flex;
  gap: 10px;
}

.sop-field-inline-row .sop-field-body {
  flex: 1;
}

/* 底部操作栏 */
.sop-publish-footer {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px solid rgba(255,255,255,0.06);
}

.sop-publish-footer .form-validate-hint {
  flex: 1;
}

.sop-publish-footer .tcd-actions {
  flex-shrink: 0;
}

.sop-publish-footer .tcd-btn-claim:disabled {
  opacity: 0.4;
  cursor: not-allowed;
  pointer-events: none;
}

.btn-primary:disabled {
  opacity: 0.4;
  cursor: not-allowed;
  pointer-events: none;
}

.more-hint {
  font-size: 11px;
  color: rgba(255,255,255,0.35);
  padding: 4px 10px;
}

/* ===== 任务分组 ===== */
.task-group {
  margin-bottom: 14px;
  padding: 10px 12px;
  background: rgba(255,255,255,0.025);
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,0.04);
}

.group-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
  padding-bottom: 6px;
  border-bottom: 1px solid rgba(255,255,255,0.05);
}

.assignee-avatar {
  width: 24px; height: 24px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  font-weight: 700;
  color: #fff;
  flex-shrink: 0;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
}
.assignee-avatar.sm { width: 18px; height: 18px; font-size: 8px; }

.assignee-name { font-size: 12px; font-weight: 600; color: rgba(255,255,255,0.65); }
.assignee-name.sm { font-size: 10.5px; }

.task-list.compact { gap: 4px; }
.task-list.compact .task-item { padding: 5px 8px; background: transparent; border: none; }

/* ===== Mini 分组（计划卡片）===== */
.mini-group {
  margin-bottom: 10px;
  padding: 8px 10px;
  background: rgba(255,255,255,0.02);
  border-radius: 10px;
}
.mini-header { display: flex; align-items: center; gap: 6px; margin-bottom: 4px; }
.mini-tasks { display: flex; flex-wrap: wrap; gap: 4px; padding-left: 24px; }

.mini-task {
  font-size: 10.5px;
  padding: 2px 8px;
  border-radius: 12px;
  background: rgba(255,255,255,0.05);
  color: rgba(255,255,255,0.6);
  border: 1px solid rgba(255,255,255,0.05);
}
.mini-task.urgent { color: #ff6b7a; background: rgba(255,71,87,0.1); border-color: rgba(255,71,87,0.15); }
.mini-task.important { color: #ffc048; background: rgba(255,165,2,0.1); border-color: rgba(255,165,2,0.15); }

.more-badge {
  font-size: 10px;
  color: rgba(255,255,255,0.35);
  padding: 2px 6px;
}

/* ===== SOP 打卡卡片（横排6列 + 内嵌商家任务条） ===== */

.checks-row {
  display: flex;
  gap: 12px;
  flex: 1;
  /* 不换行，6张卡片一行排列 */
}

.check-card {
  flex: 1;
  min-width: 0;
  min-height: 0;
  background: rgba(255,255,255,0.025);
  backdrop-filter: blur(32px) saturate(1.3);
  -webkit-backdrop-filter: blur(32px) saturate(1.3);
  border: 1px solid rgba(255,255,255,0.05);
  border-radius: 20px;
  padding: 16px 14px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  transition: all 400ms cubic-bezier(.34,1.56,.64,1);
  position: relative;
  overflow: hidden;
  box-shadow: 0 2px 12px rgba(0,0,0,0.2), inset 0 1px 0 rgba(255,255,255,0.03);
}

/* 打卡卡片顶部光条 */
.check-card::before {
  content: '';
  position: absolute;
  top: 0; left: 16px; right: 16px;
  height: 1px;
  background: linear-gradient(90deg, transparent 5%, rgba(255,255,255,0.15) 30%, rgba(255,255,255,0.25) 50%, rgba(255,255,255,0.15) 70%, transparent 95%);
  opacity: 0.6;
}

.check-card:hover,
.check-card.is-hovered {
  transform: scale(1.03) translateY(-2px);
  background: rgba(255,255,255,0.05);
  border-color: rgba(255,255,255,0.1);
  box-shadow: 0 8px 32px rgba(0,0,0,0.4), 0 0 60px rgba(46,213,115,0.03), inset 0 1px 0 rgba(255,255,255,0.06);
  z-index: 10;
}

.checks-row:has(.is-hovered) .check-card:not(.is-hovered) {
  filter: brightness(0.55) saturate(0.5);
  transform: scale(0.97);
  opacity: 0.65;
}

.check-card.is-checked {
  background: rgba(46,213,115,0.08);
  border-color: rgba(46,213,115,0.25);
}
.check-card.is-checked::before {
  background: linear-gradient(90deg, transparent, rgba(46,213,115,0.4), transparent);
}

/* 卡片头部：图标 + 标题 + 进度 */
.check-header {
  display: flex;
  align-items: center;
  gap: 12px;
}

.check-icon {
  width: 42px; height: 42px;
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  flex-shrink: 0;
}
.check-icon.morning { background: rgba(255,193,7,0.12); }
.check-icon.afternoon { background: rgba(33,150,243,0.12); }
.check-icon.evening { background: rgba(156,39,176,0.12); }
.check-icon.warehouse { background: rgba(233,30,99,0.12); }
.check-icon.procurement { background: rgba(76,175,80,0.12); }
.check-icon.followup { background: rgba(255,152,0,0.12); }

.check-info { flex: 1; min-width: 0; }
.check-name { display: block; font-size: 13px; font-weight: 600; color: rgba(255,255,255,0.88); }
.check-status { display: block; font-size: 11px; color: rgba(255,255,255,0.45); margin-top: 2px; }

/* 商家列表区域 */
.check-merchants {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1;
  min-height: 0;
  overflow-y: auto;
}
.check-merchants::-webkit-scrollbar { width: 2px; }
.check-merchants::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.08); border-radius: 2px; }

.check-merchant-empty {
  font-size: 11px;
  color: rgba(255,255,255,0.3);
  padding: 6px 8px;
  text-align: center;
}

/* 商家行（任务条样式） */
.check-merchant-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 10px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 10px;
  font-size: 12px;
  color: rgba(255,255,255,0.7);
  transition: all 150ms ease;
}

.check-merchant-row:hover {
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.12);
}

.check-merchant-row.is-done {
  background: rgba(46,213,115,0.05);
  border-color: rgba(46,213,115,0.15);
}

.check-merchant-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  border: 1.5px solid rgba(255,255,255,0.3);
  flex-shrink: 0;
  transition: all 150ms;
}

.check-merchant-dot.done {
  background: #2ed573;
  border-color: #2ed573;
}

.check-merchant-row.is-done .check-merchant-name {
  text-decoration: line-through;
  color: rgba(255,255,255,0.4);
}

.check-merchant-name {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12px;
  color: rgba(255,255,255,0.78);
}

.check-merchant-user {
  width: 20px; height: 20px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 8px;
  font-weight: 700;
  color: #fff;
  flex-shrink: 0;
}

.check-merchant-btn {
  padding: 2px 10px;
  border-radius: 6px;
  font-size: 11px;
  font-weight: 600;
  border: 1px solid rgba(255,255,255,0.12);
  background: transparent;
  color: rgba(255,255,255,0.5);
  cursor: pointer;
  transition: all 150ms;
  white-space: nowrap;
  flex-shrink: 0;
}

.check-merchant-btn:hover {
  background: rgba(46,213,115,0.12);
  border-color: rgba(46,213,115,0.35);
  color: #2ed573;
}

/* ===== 打卡日期导航（方案C：选中天详情+概览圆点）===== */

.check-date-nav {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 0;
}

.cdn-arrow {
  width: 22px; height: 22px;
  border-radius: 6px;
  border: 1px solid rgba(255,255,255,0.08);
  background: rgba(255,255,255,0.04);
  color: rgba(255,255,255,0.5);
  font-size: 16px;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 150ms;
  flex-shrink: 0;
}

.cdn-arrow:hover {
  background: rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.8);
}

.cdn-dots {
  display: flex;
  gap: 5px;
  flex: 1;
  justify-content: center;
  flex-wrap: wrap;
}

.cdn-dot {
  width: 10px; height: 10px;
  border-radius: 50%;
  border: 1.5px solid rgba(255,255,255,0.2);
  background: transparent;
  cursor: pointer;
  transition: all 200ms ease;
  position: relative;
}

.cdn-dot:hover {
  border-color: rgba(255,255,255,0.4);
  transform: scale(1.3);
}

.cdn-dot.is-full {
  background: #2ed573;
  border-color: #2ed573;
}

.cdn-dot.is-partial {
  background: rgba(245,158,11,0.7);
  border-color: #f59e0b;
}

.cdn-dot.is-active {
  border-color: rgba(255,255,255,0.9);
  box-shadow: 0 0 0 2px rgba(255,255,255,0.2);
  transform: scale(1.25);
}

.cdn-dot.is-active.is-full {
  box-shadow: 0 0 0 2px rgba(46,213,115,0.4);
}

.cdn-dot.is-active.is-partial {
  box-shadow: 0 0 0 2px rgba(245,158,11,0.4);
}

.cdn-dot.is-today {
  box-shadow: 0 0 0 1.5px rgba(99,102,241,0.5);
}

/* 日期标签 */
.cdn-date-label {
  font-size: 10px;
  color: rgba(255,255,255,0.4);
  text-align: center;
  padding: 1px 0 3px;
  letter-spacing: 0.5px;
}

/* ===== SOP 打卡区域 ===== */
.sop-checks {
  flex: 2.5;
  min-height: 400px;
  display: flex;
  flex-direction: column;
}

/* ===== 运营工具卡（可展开 bar） ===== */
.sop-tool-cards { width: 100%; flex-shrink: 0; }

.stc-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 16px;
  background: rgba(99,102,241,0.08);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(99,102,241,0.15);
  border-radius: 12px;
  cursor: pointer;
  transition: all 200ms ease;
  user-select: none;
}

.stc-bar:hover {
  background: rgba(99,102,241,0.1);
  border-color: rgba(99,102,241,0.2);
}

.stc-bar.is-expanded {
  border-radius: 12px 12px 0 0;
  border-bottom-color: rgba(99,102,241,0.06);
}

.stc-bar-icon { font-size: 16px; flex-shrink: 0; }
.stc-bar-title { font-size: 13px; font-weight: 600; color: rgba(255,255,255,0.85); }
.stc-bar-count {
  font-size: 11px;
  background: rgba(99,102,241,0.15);
  color: rgba(255,255,255,0.6);
  padding: 1px 8px;
  border-radius: 10px;
  font-variant-numeric: tabular-nums;
}
.stc-bar-arrow { font-size: 12px; color: rgba(255,255,255,0.4); }

.stc-body {
  background: rgba(255,255,255,0.03);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border: 1px solid rgba(99,102,241,0.1);
  border-top: none;
  border-radius: 0 0 12px 12px;
  padding: 12px 16px;
  /* 用 max-height 过渡代替 x-collapse（x-collapse 的 overflow:hidden 会裁剪 select 下拉框） */
  max-height: 0;
  overflow: visible;
  opacity: 0;
  transition: max-height 0.35s ease, opacity 0.25s ease, padding 0.3s ease;
  padding: 0 16px;
}
.stc-body-open {
  max-height: 3000px;
  overflow: visible;
  opacity: 1;
  padding: 12px 16px;
}

/* 平台分组 */
.stc-platform-group { margin-bottom: 12px; }
.stc-platform-group:last-child { margin-bottom: 0; }

.stc-platform-label {
  font-size: 11px;
  font-weight: 600;
  color: rgba(99,102,241,0.7);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: 6px;
  padding-left: 2px;
}
.stc-plat-美菜 { color: rgba(16,185,129,0.85); }
.stc-plat-快驴 { color: rgba(245,158,11,0.85); }
.stc-plat-其他 { color: rgba(156,163,175,0.85); }

/* 工具卡网格 */
.tc-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 14px;
}

/* ===== 暗黑游戏风卡牌（Glassmorphism） ===== */
.tc-card-item {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 0;
  background: rgba(255,255,255,0.06);
  backdrop-filter: blur(14px) saturate(1.3);
  -webkit-backdrop-filter: blur(14px) saturate(1.3);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 14px;
  cursor: pointer;
  transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1);
  overflow: hidden;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 4px 16px rgba(0,0,0,0.3);
}
.tc-card-item::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: linear-gradient(90deg, transparent, rgba(99,102,241,0.4), transparent);
  opacity: 0;
  transition: opacity 250ms;
}
.tc-card-item:hover {
  transform: translateY(-3px);
  border-color: rgba(99,102,241,0.2);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 8px 24px rgba(0,0,0,0.5), 0 0 20px rgba(99,102,241,0.08);
}
.tc-card-item:hover::before { opacity: 1; }

/* 管理模式选中样式 */
.tc-card-item.tc-selected {
  border-color: rgba(239,68,68,0.5) !important;
  box-shadow: inset 0 0 0 1px rgba(239,68,68,0.15), 0 0 0 2px rgba(239,68,68,0.2), 0 4px 12px rgba(239,68,68,0.1);
  transform: none;
}
.tc-card-item.tc-selected::before {
  background: linear-gradient(90deg, transparent, rgba(239,68,68,0.4), transparent) !important;
  opacity: 1 !important;
}

/* 等级色系 */
.tc-grade-S { border-color: rgba(251,191,36,0.15); }
.tc-grade-S::before { background: linear-gradient(90deg, transparent, rgba(251,191,36,0.6), transparent); opacity: 0.6; }
.tc-grade-S:hover { border-color: rgba(251,191,36,0.3); box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 8px 24px rgba(0,0,0,0.5), 0 0 20px rgba(251,191,36,0.1); }

.tc-grade-A { border-color: rgba(168,85,247,0.15); }
.tc-grade-A::before { background: linear-gradient(90deg, transparent, rgba(168,85,247,0.5), transparent); opacity: 0.5; }
.tc-grade-A:hover { border-color: rgba(168,85,247,0.3); box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 8px 24px rgba(0,0,0,0.5), 0 0 20px rgba(168,85,247,0.1); }

.tc-grade-B { border-color: rgba(59,130,246,0.12); }
.tc-grade-B::before { background: linear-gradient(90deg, transparent, rgba(59,130,246,0.4), transparent); opacity: 0.4; }
.tc-grade-B:hover { border-color: rgba(59,130,246,0.25); box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 8px 24px rgba(0,0,0,0.5), 0 0 20px rgba(59,130,246,0.08); }

.tc-grade-C { border-color: rgba(100,116,139,0.12); }
.tc-grade-C::before { background: linear-gradient(90deg, transparent, rgba(100,116,139,0.3), transparent); opacity: 0.3; }
.tc-grade-C:hover { border-color: rgba(100,116,139,0.25); }

.tc-grade-SS { border-color: rgba(251,146,60,0.18); }
.tc-grade-SS::before { background: linear-gradient(90deg, transparent, rgba(251,146,60,0.55), transparent); opacity: 0.55; }
.tc-grade-SS:hover { border-color: rgba(251,146,60,0.35); box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 8px 24px rgba(0,0,0,0.5), 0 0 20px rgba(251,146,60,0.12); }

.tc-grade-SSS { border-color: rgba(248,113,113,0.22); }
.tc-grade-SSS::before { background: linear-gradient(90deg, transparent, rgba(248,113,113,0.6), transparent); opacity: 0.6; }
.tc-grade-SSS:hover { border-color: rgba(248,113,113,0.4); box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 8px 24px rgba(0,0,0,0.5), 0 0 24px rgba(248,113,113,0.15); }

/* 平台分色（叠加） */
.tc-plat-美菜 { border-color: rgba(16,185,129,0.15); }
.tc-plat-美菜::before { background: linear-gradient(90deg, transparent, rgba(16,185,129,0.4), transparent); opacity: 0.5; }
.tc-plat-美菜:hover { border-color: rgba(16,185,129,0.3); box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 8px 24px rgba(0,0,0,0.5), 0 0 20px rgba(16,185,129,0.1); }

.tc-plat-快驴 { border-color: rgba(245,158,11,0.15); }
.tc-plat-快驴::before { background: linear-gradient(90deg, transparent, rgba(245,158,11,0.4), transparent); opacity: 0.5; }
.tc-plat-快驴:hover { border-color: rgba(245,158,11,0.3); box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 8px 24px rgba(0,0,0,0.5), 0 0 20px rgba(245,158,11,0.1); }

/* 卡牌头部 */
.tc-card-header {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 14px 14px 8px;
}

/* 等级徽章 */
.tc-grade-badge {
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  font-size: 16px;
  font-weight: 800;
  letter-spacing: -0.5px;
}
.tc-grade-badge.S {
  background: linear-gradient(135deg, rgba(251,191,36,0.15), rgba(245,158,11,0.08));
  color: #fbbf24;
  border: 1px solid rgba(251,191,36,0.25);
  text-shadow: 0 0 12px rgba(251,191,36,0.4);
}
.tc-grade-badge.A {
  background: linear-gradient(135deg, rgba(168,85,247,0.15), rgba(139,92,246,0.08));
  color: #a855f7;
  border: 1px solid rgba(168,85,247,0.25);
  text-shadow: 0 0 12px rgba(168,85,247,0.4);
}
.tc-grade-badge.B {
  background: linear-gradient(135deg, rgba(59,130,246,0.12), rgba(99,102,241,0.06));
  color: #60a5fa;
  border: 1px solid rgba(59,130,246,0.2);
}
.tc-grade-badge.C {
  background: linear-gradient(135deg, rgba(100,116,139,0.12), rgba(148,163,184,0.06));
  color: #94a3b8;
  border: 1px solid rgba(100,116,139,0.15);
}
.tc-grade-badge.SS {
  background: linear-gradient(135deg, rgba(251,146,60,0.18), rgba(245,101,57,0.08));
  color: #fb923c;
  border: 1px solid rgba(251,146,60,0.3);
  text-shadow: 0 0 14px rgba(251,146,60,0.45);
}
.tc-grade-badge.SSS {
  background: linear-gradient(135deg, rgba(248,113,113,0.2), rgba(239,68,68,0.1));
  color: #f87171;
  border: 1px solid rgba(248,113,113,0.35);
  text-shadow: 0 0 16px rgba(248,113,113,0.5);
  animation: sssPulse 2s ease-in-out infinite;
}
@keyframes sssPulse {
  0%, 100% { box-shadow: 0 0 8px rgba(248,113,113,0.15); }
  50% { box-shadow: 0 0 16px rgba(248,113,113,0.3); }
}
.tc-grade-label {
  font-size: 7px;
  font-weight: 600;
  letter-spacing: 0.5px;
  margin-top: 1px;
}
.tc-grade-badge.S .tc-grade-label { color: rgba(251,191,36,0.6); }
.tc-grade-badge.A .tc-grade-label { color: rgba(168,85,247,0.55); }
.tc-grade-badge.B .tc-grade-label { color: rgba(96,165,250,0.5); }
.tc-grade-badge.C .tc-grade-label { color: rgba(148,163,184,0.45); }
.tc-grade-badge.SS .tc-grade-label { color: rgba(251,146,60,0.6); }
.tc-grade-badge.SSS .tc-grade-label { color: rgba(248,113,113,0.65); }

.tc-card-title {
  flex: 1;
  font-size: 14px;
  font-weight: 700;
  color: rgba(255,255,255,0.92);
  line-height: 1.4;
  letter-spacing: 0.3px;
}

/* 适用战区标签 */
.tc-card-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  padding: 0 14px 10px;
}
.tc-tag {
  font-size: 10px;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 4px;
  letter-spacing: 0.3px;
  background: rgba(255,255,255,0.04);
  color: rgba(255,255,255,0.45);
  border: 1px solid rgba(255,255,255,0.06);
}

/* 核心手法 */
.tc-card-body {
  font-size: 12px;
  color: rgba(255,255,255,0.5);
  line-height: 1.6;
  padding: 0 14px 12px;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* 底栏 */
.tc-card-footer {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  border-top: 1px solid rgba(255,255,255,0.04);
  background: rgba(0,0,0,0.15);
  margin-top: auto;
}
.tc-card-footer .task-avatar {
  width: 20px;
  height: 20px;
  font-size: 9px;
}
.tc-card-platform-tag {
  font-size: 10px;
  font-weight: 600;
  padding: 1px 7px;
  border-radius: 4px;
  margin-left: auto;
  background: rgba(99,102,241,0.1);
  color: rgba(147,130,255,0.85);
  border: 1px solid rgba(99,102,241,0.15);
}
.tc-plat-美菜 .tc-card-platform-tag { background: rgba(16,185,129,0.1); color: rgba(52,211,153,0.85); border-color: rgba(16,185,129,0.15); }
.tc-plat-快驴 .tc-card-platform-tag { background: rgba(245,158,11,0.1); color: rgba(251,191,36,0.85); border-color: rgba(245,158,11,0.15); }
.tc-plat-其他 .tc-card-platform-tag { background: rgba(156,163,175,0.1); color: rgba(209,213,219,0.85); border-color: rgba(156,163,175,0.15); }

.tc-card-date {
  font-size: 10px;
  color: rgba(255,255,255,0.3);
  font-variant-numeric: tabular-nums;
}

/* 热度值（卡片右上角） */
.tc-heat-val {
  font-size: 9px;
  font-weight: 600;
  margin-left: auto;
  letter-spacing: 0.3px;
  font-variant-numeric: tabular-nums;
  flex-shrink: 0;
}

/* 热度进度条 */
.tc-heat-bar-wrap {
  padding: 0 14px 8px;
}
.tc-heat-bar {
  height: 3px;
  background: rgba(255,255,255,0.05);
  border-radius: 2px;
  overflow: hidden;
}
.tc-heat-fill {
  height: 100%;
  border-radius: 2px;
  transition: width 0.4s ease;
}
.tc-heat-fill.tc-grade-S  { background: #fbbf24; }
.tc-heat-fill.tc-grade-SS { background: #fb923c; }
.tc-heat-fill.tc-grade-SSS { background: #f87171; }
.tc-heat-fill.tc-grade-A  { background: #a78bfa; }
.tc-heat-fill.tc-grade-B  { background: #60a5fa; }
.tc-heat-fill.tc-grade-C  { background: #6b7280; }

/* SSS 满级卡片边框微光 */
.tc-grade-SSS.tc-card-item {
  border-color: rgba(248,113,113,0.25);
  box-shadow: inset 0 0 20px rgba(248,113,113,0.04);
}

/* ===== 商品跟进 ===== */
.sop-products { width: 100%; flex: 2; min-height: 160px; display: flex; flex-direction: column; }

/* ===== SOP 页面标题栏（与运营报告 .page-header 一致） ===== */
.sop-page-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
  padding-top: 16px;
  flex-shrink: 0;
}

/* ===== SOP 统一工具栏（Glassmorphism） ===== */
.sop-toolbar {
  flex-shrink: 0;
  background: rgba(255,255,255,0.06);
  backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
  border: 1px solid var(--glass-border);
  border-radius: 14px;
  padding: 10px 20px;
  display: flex;
  align-items: center;
  gap: 24px;
  box-shadow: var(--glass-shadow),
              inset 0 1px 0 var(--glass-highlight);
}

/* 左侧筛选区 */
.sop-toolbar-left {
  display: flex;
  align-items: center;
  gap: 20px;
  flex: 1;
  min-width: 0;
}

/* 操作人显示（只读） */
.sop-operator {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.sop-operator-name {
  font-size: 13px;
  font-weight: 500;
  color: var(--text-primary);
}
.sop-operator-avatar {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  font-weight: 700;
  color: #fff;
  flex-shrink: 0;
}

/* 分隔线 */
.sop-toolbar-sep {
  width: 1px;
  height: 22px;
  background: var(--border-color);
  flex-shrink: 0;
}

/* 日期选择器 */
.sop-toolbar .date-range-picker { position: relative; flex-shrink: 0; }
.sop-toolbar .date-range-btn {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  background: rgba(255,255,255,0.1);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: 8px;
  color: var(--text-primary);
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  outline: none;
  transition: all 0.2s;
  white-space: nowrap;
}
.sop-toolbar .date-range-btn:hover {
  border-color: var(--primary);
  box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15);
}
.sop-toolbar .date-range-btn.active {
  border-color: var(--primary);
  background: rgba(59, 130, 246, 0.15);
}
.sop-toolbar .date-range-btn svg { color: var(--text-secondary); flex-shrink: 0; opacity: 0.6; }

/* 同事头像排列（错开间距） */
.sop-colleagues {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.sop-colleague-avatar {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  font-weight: 700;
  color: #fff;
  flex-shrink: 0;
}

.sop-colleague-chip {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 3px 10px 3px 3px;
  border-radius: 20px;
  cursor: pointer;
  border: 1.5px solid rgba(255,255,255,0.1);
  background: rgba(255,255,255,0.04);
  transition: all 150ms;
  user-select: none;
}

.sop-colleague-chip:hover {
  background: rgba(255,255,255,0.08);
  border-color: rgba(255,255,255,0.2);
}

.sop-colleague-chip.active {
  border-color: var(--primary);
  background: rgba(59,130,246,0.1);
}

.sop-colleague-name {
  font-size: 12px;
  color: rgba(255,255,255,0.7);
  white-space: nowrap;
}

.sop-colleague-chip.active .sop-colleague-name {
  color: rgba(255,255,255,0.95);
}

/* 右侧公告信息（点击可编辑） */
.sop-toolbar-right {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 6px;
  transition: background 200ms;
}
.sop-toolbar-right:hover {
  background: rgba(255,255,255,0.04);
}
.sop-message-display {
  display: flex;
  align-items: center;
  gap: 8px;
  max-width: 400px;
  overflow: hidden;
}
.sop-message-text {
  font-size: 15px;
  font-weight: 500;
  color: var(--text-primary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.4;
}
.sop-message-edit-icon {
  flex-shrink: 0;
  color: var(--text-muted);
  opacity: 0;
  transition: opacity 200ms, color 200ms;
}
.sop-toolbar-right:hover .sop-message-edit-icon {
  opacity: 1;
}
.sop-toolbar-right:hover .sop-message-edit-icon:hover {
  color: var(--primary);
}

/* ===== 公告编辑器弹窗 ===== */
.sop-announce-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px) saturate(1.3);
  -webkit-backdrop-filter: blur(10px) saturate(1.3);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10000;
  animation: sop-overlay-in 200ms ease;
}
@keyframes sop-overlay-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
.sop-announce-editor {
  background: rgba(255,255,255,0.08);
  backdrop-filter: blur(var(--glass-blur-heavy)) saturate(1.4);
  -webkit-backdrop-filter: blur(var(--glass-blur-heavy)) saturate(1.4);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: 16px;
  width: 520px;
  max-width: 90vw;
  max-height: 80vh;
  display: flex;
  flex-direction: column;
  box-shadow: 0 24px 48px rgba(0,0,0,0.4),
              inset 0 1px 0 rgba(255,255,255,0.08);
  animation: sop-editor-in 250ms cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes sop-editor-in {
  from { opacity: 0; transform: translateY(12px) scale(0.97); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.sop-announce-editor-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 18px 20px 14px;
  border-bottom: 1px solid var(--border-color);
}
.sop-announce-editor-header h3 {
  font-size: 16px;
  font-weight: 600;
  color: var(--text-primary);
  margin: 0;
}
.sop-announce-close {
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  background: none;
  color: var(--text-secondary);
  cursor: pointer;
  border-radius: 6px;
  transition: background 150ms, color 150ms;
}
.sop-announce-close:hover {
  background: rgba(255,255,255,0.08);
  color: var(--text-primary);
}
.sop-announce-editor-body {
  flex: 1;
  overflow-y: auto;
  padding: 16px 20px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.sop-announce-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.sop-announce-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  background: rgba(255,255,255,0.04);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 10px;
  transition: border-color 200ms, box-shadow 200ms;
}
.sop-announce-item:focus-within {
  border-color: var(--primary);
  box-shadow: 0 0 0 2px rgba(59,130,246,0.1);
}
.sop-announce-item-drag {
  color: var(--text-muted);
  font-size: 14px;
  cursor: grab;
  flex-shrink: 0;
  user-select: none;
  letter-spacing: 1px;
}
.sop-announce-input {
  flex: 1;
  background: none;
  border: none;
  outline: none;
  color: var(--text-primary);
  font-size: 13px;
  font-weight: 400;
  min-width: 0;
}
.sop-announce-input::placeholder {
  color: var(--text-muted);
}
.sop-announce-item-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}
.sop-announce-pin {
  display: flex;
  align-items: center;
  gap: 3px;
  padding: 3px 8px;
  border-radius: 6px;
  font-size: 11px;
  color: var(--text-muted);
  cursor: pointer;
  transition: all 200ms;
  user-select: none;
}
.sop-announce-pin:hover {
  color: var(--text-secondary);
  background: rgba(255,255,255,0.04);
}
.sop-announce-pin.pinned {
  color: #f59e0b;
  background: rgba(245,158,11,0.1);
}
.sop-announce-delete {
  width: 26px;
  height: 26px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  background: none;
  color: var(--text-muted);
  cursor: pointer;
  border-radius: 6px;
  transition: all 150ms;
}
.sop-announce-delete:hover {
  color: #ef4444;
  background: rgba(239,68,68,0.1);
}
.sop-announce-add {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 8px;
  border: 1px dashed var(--border-color);
  border-radius: 10px;
  background: none;
  color: var(--text-secondary);
  font-size: 13px;
  cursor: pointer;
  transition: all 200ms;
}
.sop-announce-add:hover {
  border-color: var(--primary);
  color: var(--primary);
  background: rgba(59,130,246,0.05);
}

/* 编辑器底部 */
.sop-announce-editor-footer {
  padding: 14px 20px 18px;
  border-top: 1px solid var(--border-color);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
}
.sop-announce-display-mode {
  display: flex;
  align-items: center;
  gap: 8px;
}
.sop-announce-mode-label {
  font-size: 12px;
  color: var(--text-secondary);
  flex-shrink: 0;
}
.sop-mode-option {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 5px 10px;
  border-radius: 8px;
  border: 1px solid var(--border-color);
  font-size: 12px;
  color: var(--text-secondary);
  cursor: pointer;
  transition: all 200ms;
  user-select: none;
}
.sop-mode-option:hover {
  border-color: rgba(59,130,246,0.3);
  color: var(--text-primary);
}
.sop-mode-option.active {
  border-color: var(--primary);
  background: rgba(59,130,246,0.1);
  color: var(--primary);
}
.mode-icon { font-size: 12px; }
.sop-announce-footer-actions {
  display: flex;
  gap: 8px;
}
.sop-announce-cancel {
  padding: 6px 16px;
  border: 1px solid var(--border-color);
  border-radius: 8px;
  background: none;
  color: var(--text-secondary);
  font-size: 13px;
  cursor: pointer;
  transition: all 150ms;
}
.sop-announce-cancel:hover {
  border-color: var(--text-secondary);
  color: var(--text-primary);
}
.sop-announce-save {
  padding: 6px 18px;
  border: none;
  border-radius: 8px;
  background: var(--primary);
  color: #fff;
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  transition: all 150ms;
}
.sop-announce-save:hover {
  background: #2563eb;
  box-shadow: 0 2px 8px rgba(59,130,246,0.3);
}

/* 公告展示动画 —— 打字机效果 */
.sop-message-text.typewriter-active {
  border-right: 2px solid var(--primary);
  animation: sop-blink-cursor 0.8s step-end infinite;
}
@keyframes sop-blink-cursor {
  50% { border-color: transparent; }
}

/* 公告展示动画 —— 滚动效果 */
.sop-message-text.scroll-active {
  animation: sop-msg-scroll 12s linear infinite;
  display: inline-block;
}
@keyframes sop-msg-scroll {
  0%, 10% { transform: translateX(0); }
  50%, 60% { transform: translateX(-100%); }
  100% { transform: translateX(0); }
}

/* 公告展示动画 —— 淡入淡出 */
.sop-message-text.fade-active {
  animation: sop-msg-fade 6s ease-in-out infinite;
}
@keyframes sop-msg-fade {
  0%, 5% { opacity: 0; transform: translateY(4px); }
  10%, 40% { opacity: 1; transform: translateY(0); }
  45%, 55% { opacity: 0; }
  60%, 90% { opacity: 1; }
  95%, 100% { opacity: 0; transform: translateY(-4px); }
}

/* 表格 — SOP 卡片（Glassmorphism） */
.table-card {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  background: rgba(255,255,255,0.06);
  backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
  border: 1px solid var(--glass-border);
  border-radius: 12px;
  overflow: hidden;
  box-shadow: var(--glass-shadow),
              inset 0 1px 0 var(--glass-highlight);
}

.data-table-body { width: 100%; border-collapse: separate; border-spacing: 0; table-layout: fixed; }

/* SOP 页面表格独立滚动（仅限 .sop-products 内） */
.sop-products .data-table { flex: 1; display: flex; flex-direction: column; }
.sop-products .data-table thead { flex-shrink: 0; }
.sop-products .data-table tbody { display: block; flex: 1; overflow-y: auto; min-height: 0; }
.sop-products .data-table thead,
.sop-products .data-table tbody tr { display: table; width: 100%; table-layout: fixed; }
.sop-products .data-table th,
.sop-products .data-table td { box-sizing: border-box; }

.data-table th {
  padding: 12px 16px;
  text-align: left;
  font-size: 11.5px;
  font-weight: 600;
  color: rgba(255,255,255,0.4);
  border-bottom: 1px solid rgba(255,255,255,0.06);
  background: rgba(255,255,255,0.02);
}

.data-table td {
  padding: 10px 16px;
  font-size: 12.5px;
  color: rgba(255,255,255,0.82);
  border-bottom: 1px solid rgba(255,255,255,0.03);
}

.data-table tr:hover td { background: rgba(255,255,255,0.025); }

.plat-badge {
  display: inline-block;
  padding: 3px 8px;
  border-radius: 6px;
  font-size: 10.5px;
  font-weight: 600;
}
.plat-badge.美菜 { background: rgba(33,150,243,0.18); color: #64b5f6; }
.plat-badge.快驴 { background: rgba(255,152,0,0.18); color: #ffb74d; }
.plat-badge.其他 { background: rgba(158,158,158,0.18); color: #bdbdbd; }

.btn-text {
  background: none; border: none;
  color: #1e90ff;
  cursor: pointer;
  font-size: 12px;
  padding: 3px 8px;
  border-radius: 6px;
  transition: background 200ms;
}
.btn-text:hover { background: rgba(30,144,255,0.12); }

/* ===== 空状态 ===== */
.empty-state {
  text-align: center;
  padding: 40px 20px;
  color: rgba(255,255,255,0.35);
  font-size: 13px;
}

/* ===== 弹窗 — Premium Glass ===== */
.modal {
  position: fixed; inset: 0;
  background: rgba(0,0,0,0.75);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
  backdrop-filter: blur(12px);
}

.modal-content {
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: 16px;
  width: 90%;
  max-width: 460px;
  box-shadow: 0 24px 48px rgba(0,0,0,0.4);
}
.modal-content.small { max-width: 340px; }

.modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 22px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}
.modal-header h4 { margin:0; font-size: 16px; font-weight: 600; color: rgba(255,255,255,0.92); }

.btn-close {
  background: none; border: none;
  font-size: 22px;
  color: rgba(255,255,255,0.35);
  cursor: pointer; line-height: 1;
  padding: 0 4px; border-radius: 6px;
  transition: all 200ms;
}
.btn-close:hover { color: rgba(255,255,255,0.85); background: rgba(255,255,255,0.05); }

.modal-body { padding: 20px 22px; }
.modal-body p { margin:0 0 14px; font-size: 13.5px; color: rgba(255,255,255,0.6); }
.modal-footer {
  display: flex; justify-content: flex-end; gap: 10px;
  padding: 14px 22px;
  border-top: 1px solid rgba(255,255,255,0.06);
}

/* ===== 表单 ===== */
.form-row { margin-bottom: 14px; }
.form-row:last-child { margin-bottom: 0; }
.form-row label {
  display: block;
  font-size: 12px;
  font-weight: 600;
  color: rgba(255,255,255,0.4);
  margin-bottom: 5px;
}
.form-row input,
.form-row select,
.form-row textarea {
  width: 100%;
  padding: 9px 12px;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 10px;
  background: rgba(0,0,0,0.3);
  color: rgba(255,255,255,0.88);
  font-size: 13.5px;
  box-sizing: border-box;
  transition: border-color 200ms, box-shadow 200ms;
}
.form-row input:focus,
.form-row select:focus,
.form-row textarea:focus {
  outline: none;
  border-color: rgba(30,144,255,0.5);
  box-shadow: 0 0 0 3px rgba(30,144,255,0.1);
}
.form-row select {
  appearance: none;
  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='%23888' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 10px center;
  padding-right: 28px;
}
.form-row textarea { resize: vertical; min-height: 72px; }

/* ===== 按钮 ===== */
.btn-primary {
  padding: 9px 20px;
  border-radius: 10px;
  border: none;
  background: linear-gradient(135deg, #1e90ff 0%, #0066cc 100%);
  color: #fff;
  font-size: 13.5px;
  font-weight: 600;
  cursor: pointer;
  transition: all 200ms;
  box-shadow: 0 4px 16px rgba(30,144,255,0.3);
}
.btn-primary:hover { transform: translateY(-1px); box-shadow: 0 6px 24px rgba(30,144,255,0.4); }

.btn-secondary {
  padding: 9px 20px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,0.12);
  background: transparent;
  color: rgba(255,255,255,0.65);
  font-size: 13.5px;
  font-weight: 600;
  cursor: pointer;
  transition: all 200ms;
}
.btn-secondary:hover {
  border-color: rgba(255,255,255,0.25);
  color: rgba(255,255,255,0.9);
  background: rgba(255,255,255,0.04);
}

/* ===== Toast — Glass ===== */
.toast {
  position: fixed;
  bottom: 32px; left: 50%;
  transform: translateX(-50%);
  background: rgba(14,14,18,0.92);
  backdrop-filter: blur(24px) saturate(1.4);
  -webkit-backdrop-filter: blur(24px) saturate(1.4);
  border: 1px solid rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.92);
  padding: 12px 26px;
  border-radius: 14px;
  font-size: 13.5px;
  z-index: 2000;
  box-shadow: 0 8px 32px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.04);
}

/* ===== x-cloak ===== */
[x-cloak] { display: none !important; }

/* ===== sop.js 动态渲染所需样式 ===== */
.sop-row { cursor: pointer; transition: background 150ms; }
.sop-row:hover td { background: var(--bg-card-hover); }
.sop-detail td { background: var(--bg-card) !important; }

.sop-btn-follow {
  background: none; border: none;
  color: #1e90ff; cursor: pointer;
  font-size: 12px; padding: 3px 8px;
  border-radius: 6px; transition: background 200ms;
}
.sop-btn-follow:hover { background: rgba(30,144,255,0.12); }

.sop-avatar {
  width: 28px; height: 28px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700; color: #fff;
  flex-shrink: 0;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
}
.sop-avatar-xs {
  width: 18px; height: 18px;
  border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 8px; font-weight: 700; color: #fff;
  flex-shrink: 0;
}

.sop-sku-table {
  width: 100%; border-collapse: collapse;
  font-size: 12px;
}
.sop-sku-table th {
  padding: 6px 10px; text-align: left;
  font-size: 11px; font-weight: 600;
  color: rgba(255,255,255,0.4);
  border-bottom: 1px solid rgba(255,255,255,0.06);
  background: rgba(255,255,255,0.02);
}
.sop-sku-table td {
  padding: 5px 10px;
  font-size: 12px;
  color: rgba(255,255,255,0.75);
  border-bottom: 1px solid rgba(255,255,255,0.03);
}

/* ==================== 商品跟进管理 ==================== */
.sop-follow-section .stc-bar { margin-top: 12px; }

/* —— 筛选工具栏（Glassmorphism） —— */
.sop-follow-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  background: rgba(255,255,255,0.04);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 10px;
  flex-wrap: wrap;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.03);
}

.sop-follow-toolbar select,
.sop-follow-toolbar input[type="text"] {
  padding: 6px 10px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 6px;
  color: rgba(255,255,255,0.8);
  font-size: 12px;
  transition: border-color 0.2s, box-shadow 0.2s;
  outline: none;
}
.sop-follow-toolbar select:focus,
.sop-follow-toolbar input[type="text"]:focus {
  border-color: rgba(99,102,241,0.4);
  box-shadow: 0 0 0 2px rgba(99,102,241,0.1);
}

.sop-follow-toolbar select option {
  background: #1a1a2e;
  color: rgba(255,255,255,0.85);
}

.sop-follow-search {
  flex: 1;
  min-width: 140px;
}

.sop-follow-filter-select {
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 6px;
  color: rgba(255,255,255,0.7);
  font-size: 12px;
  padding: 5px 8px;
  outline: none;
  cursor: pointer;
  max-width: 120px;
}
.sop-follow-filter-select:focus {
  border-color: rgba(99,102,241,0.4);
}
.sop-follow-filter-select option {
  background: #1a1a2e;
  color: rgba(255,255,255,0.85);
}

.sop-follow-search::placeholder {
  color: rgba(255,255,255,0.25);
}

.sop-follow-filter-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 10px;
  border-radius: 6px;
  font-size: 11.5px;
  font-weight: 500;
  color: rgba(255,255,255,0.5);
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  cursor: pointer;
  transition: all 0.15s;
  white-space: nowrap;
  user-select: none;
}
.sop-follow-filter-chip:hover {
  background: rgba(255,255,255,0.06);
}
.sop-follow-filter-chip.active {
  color: #a5b4fc;
  background: rgba(99,102,241,0.1);
  border-color: rgba(99,102,241,0.2);
}
.sop-follow-filter-chip input[type="checkbox"] {
  accent-color: #6366f1;
  margin: 0;
}

.sop-follow-stats {
  margin-left: auto;
  font-size: 11px;
  color: rgba(255,255,255,0.25);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.sop-follow-stats strong {
  color: rgba(255,255,255,0.5);
  font-weight: 600;
}

/* —— 批量浮动操作栏（Glassmorphism） —— */
.sop-follow-action-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 14px;
  margin-top: 8px;
  background: linear-gradient(135deg, rgba(99,102,241,0.12), rgba(139,92,246,0.08));
  backdrop-filter: blur(14px) saturate(1.2);
  -webkit-backdrop-filter: blur(14px) saturate(1.2);
  border: 1px solid rgba(99,102,241,0.2);
  border-radius: 10px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.04);
  animation: sf-action-slide 0.2s ease;
}
@keyframes sf-action-slide {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}
.sop-follow-action-count {
  font-size: 12px;
  color: rgba(255,255,255,0.5);
}
.sop-follow-action-count strong {
  color: #a5b4fc;
  font-weight: 700;
  font-size: 14px;
}
.sop-follow-action-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 14px;
  font-size: 12px;
  font-weight: 600;
  border-radius: 7px;
  border: none;
  cursor: pointer;
  transition: all 0.15s;
}
.sop-follow-action-btn.primary {
  color: #e0e7ff;
  background: linear-gradient(135deg, #6366f1, #818cf8);
  box-shadow: 0 2px 8px rgba(99,102,241,0.25);
}
.sop-follow-action-btn.primary:hover {
  box-shadow: 0 4px 12px rgba(99,102,241,0.35);
  transform: translateY(-1px);
}
.sop-follow-action-btn.ghost {
  color: rgba(255,255,255,0.4);
  background: transparent;
  border: 1px solid rgba(255,255,255,0.1);
}
.sop-follow-action-btn.ghost:hover {
  color: rgba(255,255,255,0.6);
  background: rgba(255,255,255,0.05);
}
.sop-follow-action-btn.detail {
  color: #a5b4fc;
  background: rgba(99,102,241,0.1);
  border: 1px solid rgba(99,102,241,0.25);
  padding: 4px 12px;
  font-size: 11px;
}
.sop-follow-action-btn.detail:hover {
  background: rgba(99,102,241,0.18);
}

/* —— 表格容器（Glassmorphism） —— */
.sop-follow-section .data-table-container {
  margin-top: 10px;
  max-height: 420px;
  overflow-y: auto;
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,0.08);
  background: rgba(255,255,255,0.03);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.03);
  /* 自定义滚动条 */
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.08) transparent;
}
.sop-follow-section .data-table-container::-webkit-scrollbar { width: 5px; }
.sop-follow-section .data-table-container::-webkit-scrollbar-track { background: transparent; }
.sop-follow-section .data-table-container::-webkit-scrollbar-thumb {
  background: rgba(255,255,255,0.1);
  border-radius: 10px;
}
.sop-follow-section .data-table-container::-webkit-scrollbar-thumb:hover {
  background: rgba(255,255,255,0.18);
}

/* —— 表格 —— */
.sop-follow-section .data-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
}
.sop-follow-section .data-table thead {
  position: sticky;
  top: 0;
  z-index: 2;
}
.sop-follow-section .data-table th {
  padding: 11px 14px;
  text-align: left;
  font-size: 11px;
  font-weight: 600;
  color: rgba(255,255,255,0.35);
  text-transform: uppercase;
  letter-spacing: 0.6px;
  background: rgba(15,15,30,0.85);
  backdrop-filter: blur(6px);
  border-bottom: 1px solid rgba(255,255,255,0.06);
  white-space: nowrap;
}
.sop-follow-section .data-table th:first-child { border-radius: 12px 0 0 0; }
.sop-follow-section .data-table th:last-child  { border-radius: 0 12px 0 0; }

.sop-follow-section .data-table td {
  padding: 12px 14px;
  font-size: 13px;
  color: rgba(255,255,255,0.8);
  border-bottom: 1px solid rgba(255,255,255,0.03);
  vertical-align: middle;
}

.sop-follow-section .data-table tbody tr {
  transition: background 0.15s;
}
.sop-follow-section .data-table tbody tr:hover td {
  background: rgba(255,255,255,0.025);
}
.sop-follow-section .data-table tbody tr:last-child td {
  border-bottom: none;
}

/* 选中行高亮 */
.sop-follow-selected td {
  background: rgba(99,102,241,0.06) !important;
}
.sop-follow-selected:hover td {
  background: rgba(99,102,241,0.1) !important;
}

/* —— 商品名称单元格 —— */
.sop-product-cell-name {
  font-weight: 600;
  color: rgba(255,255,255,0.88);
  font-size: 13px;
  line-height: 1.3;
}
.sop-product-cell-code {
  font-size: 11px;
  color: rgba(255,255,255,0.28);
  margin-top: 2px;
  font-family: 'SF Mono', 'Menlo', monospace;
}

/* —— SKU 数量徽标 —— */
.sop-sku-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 28px;
  padding: 2px 8px;
  font-size: 11px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  border-radius: 6px;
  background: rgba(255,255,255,0.05);
  color: rgba(255,255,255,0.5);
}
.sop-sku-badge.high {
  background: rgba(16,185,129,0.1);
  color: #6ee7b7;
}
.sop-sku-badge.medium {
  background: rgba(245,158,11,0.1);
  color: #fcd34d;
}

/* —— 跟进人标签（升级版） —— */
.sop-follow-chips {
  display: flex;
  gap: 5px;
  flex-wrap: wrap;
}
.sop-follow-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 10px 3px 3px;
  border-radius: 20px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  font-size: 11.5px;
  font-weight: 500;
  white-space: nowrap;
  transition: all 0.15s;
}
.sop-follow-chip:hover {
  background: rgba(255,255,255,0.07);
  border-color: rgba(255,255,255,0.12);
}

.sop-unassigned-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 10px;
  border-radius: 20px;
  background: rgba(255,255,255,0.02);
  border: 1px dashed rgba(255,255,255,0.1);
  font-size: 11.5px;
  color: rgba(255,255,255,0.2);
  font-style: italic;
}

/* —— 跟进时间 —— */
.sop-follow-time {
  font-size: 12px;
  color: rgba(255,255,255,0.3);
  font-variant-numeric: tabular-nums;
}
.sop-follow-time .day {
  color: rgba(255,255,255,0.5);
  font-weight: 500;
}
.sop-follow-time .label {
  font-size: 10px;
  color: rgba(255,255,255,0.2);
  display: block;
  margin-top: 1px;
}

/* —— 空状态 —— */
.sop-follow-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 48px 24px;
  text-align: center;
}
.sop-follow-empty-icon {
  width: 64px;
  height: 64px;
  border-radius: 20px;
  background: linear-gradient(135deg, rgba(99,102,241,0.08), rgba(139,92,246,0.04));
  border: 1px solid rgba(99,102,241,0.1);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 28px;
  margin-bottom: 14px;
}
.sop-follow-empty-title {
  font-size: 14px;
  font-weight: 600;
  color: rgba(255,255,255,0.4);
  margin-bottom: 4px;
}
.sop-follow-empty-desc {
  font-size: 12px;
  color: rgba(255,255,255,0.2);
  max-width: 260px;
  line-height: 1.5;
}

/* —— 超小头像 —— */
.sop-avatar-xs {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  font-size: 10px;
  font-weight: 700;
  color: white;
  flex-shrink: 0;
  box-shadow: 0 1px 3px rgba(0,0,0,0.2);
}

/* —— 分配弹窗选项 —— */
.sop-assign-option {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  border-radius: 10px;
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.06);
  cursor: pointer;
  transition: all 0.15s;
}
.sop-assign-option:hover {
  background: rgba(255,255,255,0.05);
  border-color: rgba(255,255,255,0.1);
}
.sop-assign-option.sop-assign-checked {
  background: rgba(99,102,241,0.08);
  border-color: rgba(99,102,241,0.25);
}
.sop-assign-option .sop-assign-name {
  font-size: 13px;
  color: rgba(255,255,255,0.85);
  font-weight: 500;
}

/* —— 跟进人快速筛选头像条 —— */
.sop-follow-user-bar {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 0;
  overflow-x: auto;
  scrollbar-width: none;
}
.sop-follow-user-bar::-webkit-scrollbar { display: none; }

.sop-follow-user-chip {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 3px 10px 3px 3px;
  border-radius: 20px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  cursor: pointer;
  transition: all 0.15s;
  white-space: nowrap;
  flex-shrink: 0;
}
.sop-follow-user-chip:hover {
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.12);
}
.sop-follow-user-chip.active {
  border-color: #6366f1;
  background: rgba(99,102,241,0.1);
}
.sop-follow-user-chip.active .sop-follow-user-name {
  color: rgba(255,255,255,0.95);
}
.sop-follow-user-avatar {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: 700;
  color: white;
  flex-shrink: 0;
}
.sop-follow-user-name {
  font-size: 12px;
  color: rgba(255,255,255,0.6);
}

/* —— 表格居中列 —— */
.sop-follow-td-center { text-align: center; }
.sop-follow-td-right  { text-align: right; }

/* —— 月销量 —— */
.sop-monthly-qty {
  font-size: 14px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: rgba(255,255,255,0.75);
}
.sop-monthly-amt {
  font-size: 12.5px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: rgba(245,158,11,0.8);
}

/* —— 货主标签 —— */
.sop-merchant-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}
.sop-merchant-tag {
  display: inline-block;
  padding: 2px 7px;
  border-radius: 5px;
  font-size: 10.5px;
  font-weight: 600;
  background: rgba(255,255,255,0.05);
  color: rgba(255,255,255,0.55);
}
.sop-merchant-more {
  font-size: 10.5px;
  color: rgba(255,255,255,0.25);
  align-self: center;
}

/* —— 展开指示器 —— */
.sop-follow-section .expand-icon {
  display: inline-block;
  color: rgba(255,255,255,0.2);
  font-size: 11px;
  transition: transform 0.2s ease;
}
.sop-follow-section .expand-icon.is-expanded {
  transform: rotate(90deg);
  color: #818cf8;
}
.sop-follow-section tr.expanded td {
  background: rgba(99,102,241,0.04) !important;
}

/* —— 展开趋势图面板 —— */
.sop-follow-trend-panel {
  padding: 16px 24px 20px;
  background: linear-gradient(180deg, rgba(99,102,241,0.03), transparent);
  overflow-x: auto;
}
.sop-follow-trend-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}

/* ==================== 商品跟进 — 任务分配系统新增样式 ==================== */

/* —— Tab 栏（Glassmorphism） —— */
.sop-follow-tabs {
  display: flex;
  gap: 4px;
  background: rgba(255,255,255,0.04);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 10px;
  padding: 3px;
}
.sop-follow-tab {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 14px;
  border: none;
  border-radius: 8px;
  font-size: 12px;
  font-weight: 600;
  color: rgba(255,255,255,0.45);
  background: transparent;
  cursor: pointer;
  transition: all 0.2s;
  white-space: nowrap;
}
.sop-follow-tab:hover { color: rgba(255,255,255,0.7); background: rgba(255,255,255,0.06); }
.sop-follow-tab.active {
  color: rgba(255,255,255,0.95);
  background: rgba(99,102,241,0.18);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  box-shadow: 0 0 16px rgba(99,102,241,0.12);
}
.sop-tab-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 9px;
  font-size: 10px;
  font-weight: 700;
  background: rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.4);
}
.sop-follow-tab.active .sop-tab-badge {
  background: rgba(99,102,241,0.25);
  color: rgba(255,255,255,0.9);
}

/* —— 跟进次数 —— */
.sop-record-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 26px;
  height: 22px;
  border-radius: 6px;
  font-size: 11px;
  font-weight: 700;
  background: rgba(255,255,255,0.05);
  color: rgba(255,255,255,0.3);
}
.sop-record-count.has-records {
  background: rgba(99,102,241,0.12);
  color: #a5b4fc;
}

/* —— 信息芯片 —— */
.sop-info-chip {
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 8px;
  padding: 8px 12px;
  flex: 1;
  min-width: 100px;
}

/* —— 跟进记录条目 —— */
.sop-follow-record-item {
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.05);
  border-radius: 10px;
  padding: 12px;
  margin-bottom: 8px;
  transition: background 0.15s;
}
.sop-follow-record-item:hover { background: rgba(255,255,255,0.04); }
.sop-follow-record-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.sop-result-type-badge {
  display: inline-block;
  padding: 1px 7px;
  border-radius: 4px;
  font-size: 10px;
  font-weight: 600;
  background: rgba(245,158,11,0.1);
  color: rgba(245,158,11,0.7);
}

/* —— 优先级选项 —— */
.sop-priority-opt {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 5px 12px;
  border-radius: 6px;
  font-size: 12px;
  color: rgba(255,255,255,0.4);
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  cursor: pointer;
  transition: all 0.15s;
  user-select: none;
}
.sop-priority-opt:hover { color: rgba(255,255,255,0.7); border-color: rgba(255,255,255,0.15); }
.sop-priority-opt.active {
  color: rgba(255,255,255,0.9);
  background: rgba(99,102,241,0.12);
  border-color: rgba(99,102,241,0.35);
}

/* —— 详情操作栏 —— */
.sop-detail-actions {
  display: flex;
  gap: 8px;
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.sop-detail-btn {
  flex: 1;
  padding: 8px 0;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 8px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
  background: transparent;
  text-align: center;
}
.sop-detail-btn:hover { background: rgba(255,255,255,0.05); }
.sop-detail-btn.complete { color: #10b981; border-color: rgba(16,185,129,0.3); }
.sop-detail-btn.complete:hover { background: rgba(16,185,129,0.1); }
.sop-detail-btn.reassign { color: #f59e0b; border-color: rgba(245,158,11,0.3); }
.sop-detail-btn.reassign:hover { background: rgba(245,158,11,0.1); }
.sop-detail-btn.recycle { color: rgba(255,255,255,0.4); border-color: rgba(255,255,255,0.08); }
.sop-detail-btn.recycle:hover { background: rgba(239,68,68,0.08); color: #ef4444; border-color: rgba(239,68,68,0.3); }

/* ==================== 商品跟进管理 - 新版表格 ==================== */

/* 表格外包装（随页面滚动，不单独滚动） */
.sop-follow-table-wrap {
  padding: 0 0 8px;
}

/* 主表格 */
.sop-follow-main-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  table-layout: fixed;
  font-size: 13px;
}

.sop-follow-main-table thead tr {
  background: #0f0f1e;
}

.sop-follow-main-table th {
  padding: 10px 12px;
  text-align: left;
  font-size: 12px;
  font-weight: 600;
  color: rgba(255,255,255,0.55);
  border-bottom: 1px solid rgba(255,255,255,0.07);
  white-space: nowrap;
}

.sop-follow-main-table td {
  padding: 10px 12px;
  color: rgba(255,255,255,0.8);
  border-bottom: 1px solid rgba(255,255,255,0.04);
  vertical-align: middle;
  overflow: hidden;
}

.sop-follow-row {
  cursor: pointer;
  transition: background 0.15s;
}
.sop-follow-row:hover td {
  background: rgba(255,255,255,0.025);
}
.sop-follow-row.row-selected td {
  background: rgba(99,102,241,0.07) !important;
}
.sop-follow-row.row-expanded td {
  background: rgba(99,102,241,0.04);
}

/* 单元格类型 — 宽度与th严格一一对应 */
.td-check   { text-align: center; width: 38px; min-width: 38px; max-width: 38px; }
.td-hidden  { visibility: hidden; pointer-events: none; }
.td-text    { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.td-code    { font-size: 11px; color: rgba(255,255,255,0.35); font-variant-numeric: tabular-nums; }
.td-name    { overflow: hidden; }
.td-center  { text-align: center; }
.td-right   { text-align: right; font-variant-numeric: tabular-nums; }
.td-status  { text-align: center; }
.td-platform { text-align: center; }
.td-follower { text-align: center; }

.follow-product-name {
  font-weight: 500;
  color: rgba(255,255,255,0.9);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  line-height: 1.4;
}
.follow-brand-tag {
  font-size: 12px;
  color: #a78bfa;
  font-weight: 500;
}
.follow-spec-tag {
  font-size: 12px;
  color: rgba(255,255,255,0.5);
}

.follow-cell-text {
  font-size: 12px;
  color: rgba(255,255,255,0.6);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: block;
  max-width: 100%;
}

.follow-num {
  font-size: 12px;
  color: rgba(255,255,255,0.75);
  font-variant-numeric: tabular-nums;
}

.follow-muted {
  font-size: 12px;
  color: rgba(255,255,255,0.2);
}

/* 状态 Badge */
.status-badge {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 10px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.3px;
}
.status-waiting {
  background: rgba(255,255,255,0.06);
  color: rgba(255,255,255,0.45);
  border: 1px solid rgba(255,255,255,0.1);
}
.status-following {
  background: rgba(99,102,241,0.12);
  color: #a5b4fc;
  border: 1px solid rgba(99,102,241,0.25);
}
.status-done {
  background: rgba(16,185,129,0.1);
  color: #6ee7b7;
  border: 1px solid rgba(16,185,129,0.25);
}

/* 平台 Badge */
.platform-badge {
  display: inline-block;
  padding: 1px 6px;
  border-radius: 4px;
  font-size: 10px;
  font-weight: 600;
  background: rgba(255,255,255,0.05);
  color: rgba(255,255,255,0.5);
  border: 1px solid rgba(255,255,255,0.08);
  white-space: nowrap;
}
.platform-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 3px;
}/* 负责人 */
.follow-person-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 10px 3px 3px;
  border-radius: 20px;
  background: rgba(255,255,255,0.04);
  border: 1px solid;
  font-size: 12px;
  font-weight: 500;
  white-space: nowrap;
  max-width: 100px;
  overflow: hidden;
}
.follow-person-chip .sop-avatar-xs {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: 700;
  color: white;
  flex-shrink: 0;
}

/* 趋势迷你图 */
.td-trend { position: relative; }
.follow-trend-spark {
  width: 130px;
  height: 32px;
  display: block;
  cursor: pointer;
}
.follow-trend-spark svg { width: 100%; height: 100%; }
.follow-no-trend {
  font-size: 11px;
  color: rgba(255,255,255,0.15);
}

/* 展开行 — 完全照搬运营报告的 max-height 方案（非 display:none） */
.follow-expand-row {
  display: table-row;
}
.follow-expand-row td {
  padding: 0 !important;
  border-bottom: none;
}
.follow-expand-cell {
  padding: 0 !important;
  border-bottom: 1px solid rgba(99,102,241,0.1);
  background: linear-gradient(180deg, rgba(99,102,241,0.03) 0%, transparent 100%);
}
.follow-expand-inner {
  max-height: 0;
  overflow: hidden;
  padding: 0 20px;
  opacity: 0;
  transition: max-height 0.35s ease, padding 0.35s ease, opacity 0.25s ease;
}
/* 展开状态（通过 tr 的 row-expanded class 触发） */
.follow-expand-row.row-expanded .follow-expand-inner {
  max-height: 200px;
  padding: 14px 20px 16px;
  opacity: 1;
}
.follow-expand-label {
  font-size: 11px;
  font-weight: 600;
  color: rgba(255,255,255,0.3);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: 10px;
}
.follow-expand-chart-wrap {
  position: relative;
  height: 80px;
  width: 100%;
}
.follow-row-chart {
  display: block;
}

/* 分配按钮 */
.follow-assign-btn {
  display: inline-block;
  padding: 2px 8px;
  font-size: 11px;
  font-weight: 600;
  color: #6366f1;
  background: rgba(99,102,241,0.1);
  border: 1px solid rgba(99,102,241,0.3);
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.2s ease;
}
.follow-assign-btn:hover {
  background: rgba(99,102,241,0.2);
  border-color: #6366f1;
}

/* 排序表头 */
.follow-sortable {
  cursor: pointer;
  user-select: none;
  transition: color 0.15s ease;
}
.follow-sortable:hover {
  color: rgba(255,255,255,0.6);
}
.sort-icon {
  font-size: 9px;
  opacity: 0.4;
}

/* 分页（右对齐，高级感） */
.sop-follow-pagination {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 16px;
  padding: 12px 14px;
}
.sop-page-info {
  font-size: 11px;
  color: rgba(255,255,255,0.3);
  letter-spacing: 0.3px;
}
.sop-page-controls {
  display: flex;
  align-items: center;
  gap: 3px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 8px;
  padding: 3px;
}
.sop-page-btn,
.sop-page-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 28px;
  height: 28px;
  border: none;
  border-radius: 5px;
  background: transparent;
  color: rgba(255,255,255,0.45);
  font-size: 11px;
  cursor: pointer;
  transition: all 0.15s ease;
  padding: 0 6px;
}
.sop-page-btn:hover:not(:disabled) {
  color: rgba(255,255,255,0.85);
  background: rgba(255,255,255,0.08);
}
.sop-page-num:hover:not(:disabled):not(.active) {
  color: rgba(255,255,255,0.8);
  background: rgba(255,255,255,0.06);
}
.sop-page-num.active {
  background: linear-gradient(135deg, #6366f1, #8b5cf6);
  color: #fff;
  font-weight: 600;
  box-shadow: 0 2px 8px rgba(99,102,241,0.35);
}
.sop-page-num.ellipsis {
  cursor: default;
  color: rgba(255,255,255,0.2);
  letter-spacing: 2px;
}
.sop-page-btn:disabled,
.sop-page-num.disabled {
  opacity: 0.2;
  cursor: not-allowed;
}

/* 全部/收起 切换按钮 */
.sop-page-toggle-all {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  height: 28px;
  padding: 0 10px;
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 5px;
  background: transparent;
  color: rgba(255,255,255,0.45);
  font-size: 11px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  white-space: nowrap;
}
.sop-page-toggle-all:hover {
  color: rgba(255,255,255,0.8);
  background: rgba(255,255,255,0.08);
  border-color: rgba(99,102,241,0.3);
}
.sop-page-toggle-all.active {
  background: linear-gradient(135deg, rgba(99,102,241,0.25), rgba(139,92,246,0.2));
  border-color: rgba(99,102,241,0.5);
  color: #a5b4fc;
  box-shadow: 0 1px 6px rgba(99,102,241,0.15);
}
.sop-page-btn-group {
  display: flex;
  align-items: center;
  gap: 2px;
}

/* 负责人可点击 */
.follow-person-chip.clickable {
  cursor: pointer;
  transition: all 0.15s ease;
}
.follow-person-chip.clickable:hover {
  filter: brightness(1.3);
  transform: scale(1.03);
}
.follow-reassign-hint {
  margin-left: 6px;
  font-size: 10px;
  opacity: 0.5;
  transition: opacity 0.15s;
}
.follow-person-chip.clickable:hover .follow-reassign-hint {
  opacity: 1;
}

.follow-assigned-time {
  font-size: 10px;
  color: rgba(255,255,255,0.3);
  margin-top: 3px;
  white-space: nowrap;
}

/* 转交弹窗 */
.follow-reassign-modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(4px);
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
}
.follow-reassign-modal {
  background: #1e293b;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 12px;
  padding: 20px;
  width: 340px;
  max-height: 70vh;
  overflow-y: auto;
  box-shadow: 0 20px 60px rgba(0,0,0,0.5);
}
.follow-reassign-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
}
.follow-reassign-header h4 {
  font-size: 15px;
  font-weight: 600;
  color: #f8fafc;
}
.follow-reassign-close {
  background: none;
  border: none;
  color: rgba(255,255,255,0.4);
  font-size: 16px;
  cursor: pointer;
  padding: 4px;
  transition: color 0.15s;
}
.follow-reassign-close:hover { color: #f8fafc; }
.follow-reassign-info {
  margin-bottom: 12px;
}
.follow-reassign-label {
  font-size: 11px;
  color: rgba(255,255,255,0.35);
  margin-bottom: 2px;
  text-transform: uppercase;
  letter-spacing: 0.3px;
}
.follow-reassign-value {
  font-size: 14px;
  color: rgba(255,255,255,0.9);
}
.follow-reassign-time {
  font-size: 11px;
  color: rgba(255,255,255,0.3);
  margin-top: 3px;
}
.follow-reassign-section-label {
  font-size: 11px;
  color: rgba(255,255,255,0.35);
  margin-bottom: 8px;
  text-transform: uppercase;
  letter-spacing: 0.3px;
  padding-top: 8px;
}
.follow-reassign-user-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.follow-reassign-user-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 13px;
  color: rgba(255,255,255,0.8);
  transition: all 0.15s;
}
.follow-reassign-user-item:hover {
  background: rgba(99,102,241,0.15);
  color: #fff;
}
.follow-reassign-divider {
  height: 1px;
  background: rgba(255,255,255,0.08);
  margin: 14px 0;
}
.follow-reassign-recycle-btn {
  display: block;
  width: 100%;
  padding: 10px;
  background: rgba(239,68,68,0.1);
  border: 1px solid rgba(239,68,68,0.25);
  border-radius: 8px;
  color: #f87171;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
}
.follow-reassign-recycle-btn:hover {
  background: rgba(239,68,68,0.2);
  border-color: rgba(239,68,68,0.4);
}


/* ===== 运营报告筛选栏 — 玻璃质感补丁 ===== */

/* 右推元素 */
.filter-group-push { margin-left: auto; }

/* 通用玻璃 select（替代 inline style） */
.gf-select {
  padding: 7px 12px;
  background: rgba(255,255,255,0.08);
  color: var(--text-primary);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 8px;
  font-size: 13px;
  cursor: pointer;
  transition: all 0.2s;
  outline: none;
  -webkit-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' stroke='rgba(255,255,255,0.4)' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 8px center;
  background-size: 14px;
  padding-right: 28px;
}
.gf-select:hover { background-color: rgba(255,255,255,0.12); border-color: rgba(255,255,255,0.18); }
.gf-select:focus { border-color: var(--primary); box-shadow: 0 0 0 2px rgba(59,130,246,0.15); }
.gf-select option { background: #1e1f35; color: #e2e8f0; }


/* ===== 用户管理页面 — Premium Dark Glassmorphism ===== */

/* 页面容器 — 绝对定位填满 main-content */
.page-users {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  margin: 0;
  padding: 0;
  overflow-y: auto;
  overflow-x: hidden;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  background:
    radial-gradient(ellipse 700px 500px at 15% 20%, rgba(99,102,241,0.15) 0%, transparent 70%),
    radial-gradient(ellipse 500px 400px at 85% 10%, rgba(139,92,246,0.12) 0%, transparent 65%),
    radial-gradient(ellipse 600px 350px at 50% 85%, rgba(59,130,246,0.1) 0%, transparent 60%);
}

.page-users.active {
  display: flex;
}

body.has-users-active { overflow: hidden; }

/* 内容区撑满 */
.page-users .um-content {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  padding: 20px 24px 24px;
  gap: 16px;
  overflow-y: auto;
  overflow-x: hidden;
}

/* Tab 切换器 — 玻璃胶囊 */
.um-tabs {
  display: inline-flex;
  gap: 2px;
  padding: 4px;
  background: rgba(255,255,255,0.04);
  backdrop-filter: blur(8px) saturate(1.2);
  -webkit-backdrop-filter: blur(8px) saturate(1.2);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 14px;
  flex-shrink: 0;
}

.um-tab {
  padding: 8px 22px;
  border: none;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  background: transparent;
  color: rgba(255,255,255,0.45);
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  position: relative;
  white-space: nowrap;
}

.um-tab:hover {
  color: rgba(255,255,255,0.7);
  background: rgba(255,255,255,0.04);
}

.um-tab.active {
  background: rgba(255,255,255,0.1);
  backdrop-filter: blur(8px) saturate(1.3);
  -webkit-backdrop-filter: blur(8px) saturate(1.3);
  color: rgba(255,255,255,0.95);
  box-shadow: 0 2px 12px rgba(0,0,0,0.2),
              inset 0 1px 0 rgba(255,255,255,0.08);
}

/* 内容面板容器 */
.um-panel {
  flex: 1;
  min-height: 0;
  display: none;
  flex-direction: column;
  gap: 16px;
}

.um-panel.active {
  display: flex;
}

/* 面板头部栏 */
.um-panel-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-shrink: 0;
}

.um-panel-desc {
  font-size: 13px;
  color: rgba(255,255,255,0.4);
  font-weight: 400;
}

/* 按钮系列 */
.um-btn {
  padding: 9px 18px;
  border: none;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
}

.um-btn-primary {
  background: linear-gradient(135deg, rgba(59,130,246,0.85) 0%, rgba(99,102,241,0.85) 100%);
  color: white;
  box-shadow: 0 2px 12px rgba(59,130,246,0.3),
              inset 0 1px 0 rgba(255,255,255,0.15);
}

.um-btn-primary:hover {
  background: linear-gradient(135deg, rgba(59,130,246,1) 0%, rgba(99,102,241,1) 100%);
  box-shadow: 0 4px 20px rgba(59,130,246,0.4),
              inset 0 1px 0 rgba(255,255,255,0.2);
  transform: translateY(-1px);
}

.um-btn-ghost {
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.6);
}

.um-btn-ghost:hover {
  background: rgba(255,255,255,0.1);
  border-color: rgba(255,255,255,0.15);
  color: rgba(255,255,255,0.85);
}

.um-btn-danger {
  background: rgba(239,68,68,0.1);
  border: 1px solid rgba(239,68,68,0.2);
  color: rgba(248,113,113,0.8);
}

.um-btn-danger:hover {
  background: rgba(239,68,68,0.2);
  border-color: rgba(239,68,68,0.35);
  color: #f87171;
}

.um-btn-success {
  background: rgba(16,185,129,0.1);
  border: 1px solid rgba(16,185,129,0.2);
  color: rgba(52,211,153,0.8);
}

.um-btn-success:hover {
  background: rgba(16,185,129,0.2);
  border-color: rgba(16,185,129,0.35);
  color: #34d399;
}

.um-btn-sm {
  padding: 4px 10px;
  font-size: 11px;
  border-radius: 7px;
}

/* 玻璃卡片表格容器 */
.um-table-card {
  background: var(--glass-bg);
  backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
  border: 1px solid var(--glass-border);
  border-radius: 16px;
  overflow: hidden;
  flex: 1;
  min-height: 0;
  box-shadow: var(--glass-shadow),
              inset 0 1px 0 var(--glass-highlight);
  display: flex;
  flex-direction: column;
}

.um-table { table-layout: fixed; width: 100%; border-collapse: collapse; }

.um-table-card .um-table-scroll {
  overflow: auto;
  overflow-x: hidden;
  flex: 1;
  min-height: 0;
  transform: translateZ(0);
  scrollbar-gutter: stable;
}

.um-table-card .um-table-scroll::-webkit-scrollbar { width: 5px; }
.um-table-card .um-table-scroll::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 5px; }
.um-table-card .um-table-scroll::-webkit-scrollbar-track { background: transparent; }

/* 表格 */
.um-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

.um-table thead {
  position: sticky;
  top: 0;
  z-index: 2;
}

.um-table thead tr {
  background: rgba(255,255,255,0.03);
  border-bottom: 1px solid rgba(255,255,255,0.06);
}

.um-table th {
  text-align: left;
  padding: 12px 16px;
  font-size: 11px;
  font-weight: 600;
  color: rgba(255,255,255,0.35);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  white-space: nowrap;
}

.um-table td {
  padding: 12px 16px;
  border-bottom: 1px solid rgba(255,255,255,0.04);
  vertical-align: middle;
}

.um-table tbody tr {
  transition: background 0.15s ease;
}

.um-table tbody tr:hover {
  background: rgba(255,255,255,0.03);
}

.um-table tbody tr:last-child td {
  border-bottom: none;
}

/* 表格单元格文字颜色 */
.um-text-primary { color: rgba(255,255,255,0.88); font-weight: 500; }
.um-text-secondary { color: rgba(255,255,255,0.45); }
.um-text-muted { color: rgba(255,255,255,0.25); }

/* 标签 Badge */
.um-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 10px;
  border-radius: 8px;
  font-size: 11px;
  font-weight: 500;
  white-space: nowrap;
}

.um-badge-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  flex-shrink: 0;
}

/* 状态指示点 */
.um-status-dot {
  display: inline-block;
  width: 7px; height: 7px;
  border-radius: 50%;
  margin-right: 6px;
  vertical-align: middle;
}

.um-status-dot.active { background: #34d399; box-shadow: 0 0 6px rgba(52,211,153,0.5); }
.um-status-dot.inactive { background: rgba(255,255,255,0.15); }

/* 操作按钮组 */
.um-actions {
  display: flex;
  gap: 4px;
  align-items: center;
  justify-content: center;
}

/* 空状态 */
.um-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 60px 20px;
  color: rgba(255,255,255,0.25);
  font-size: 13px;
  gap: 8px;
}

.um-empty-icon {
  font-size: 32px;
  opacity: 0.4;
}

/* ===== 通用玻璃拟态模态框 ===== */

.um-overlay {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(6px) saturate(1.2);
  -webkit-backdrop-filter: blur(6px) saturate(1.2);
  animation: umOverlayIn 0.2s ease;
}

@keyframes umOverlayIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

.um-modal {
  background: rgba(15, 23, 42, 0.75);
  backdrop-filter: blur(var(--glass-blur-heavy)) saturate(1.6);
  -webkit-backdrop-filter: blur(var(--glass-blur-heavy)) saturate(1.6);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 20px;
  box-shadow:
    0 24px 80px rgba(0,0,0,0.5),
    0 8px 24px rgba(0,0,0,0.3),
    inset 0 1px 0 rgba(255,255,255,0.08),
    inset 0 -1px 0 rgba(0,0,0,0.15);
  overflow: hidden;
  animation: umModalIn 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
  display: flex;
  flex-direction: column;
}

.um-modal-sm { width: 420px; max-width: 90vw; }
.um-modal-md { width: 560px; max-width: 90vw; }
.um-modal-lg { width: 640px; max-width: 90vw; max-height: 82vh; }

@keyframes umModalIn {
  from { opacity: 0; transform: scale(0.92) translateY(12px); }
  to { opacity: 1; transform: scale(1) translateY(0); }
}

/* 模态框头部 */
.um-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 24px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
  flex-shrink: 0;
}

.um-modal-title {
  font-size: 16px;
  font-weight: 600;
  color: rgba(255,255,255,0.92);
  display: flex;
  align-items: center;
  gap: 10px;
}

.um-modal-title-icon {
  width: 32px;
  height: 32px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  flex-shrink: 0;
}

.um-modal-close {
  width: 30px;
  height: 30px;
  border: none;
  border-radius: 8px;
  background: rgba(255,255,255,0.05);
  color: rgba(255,255,255,0.4);
  font-size: 16px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s;
}

.um-modal-close:hover {
  background: rgba(239,68,68,0.15);
  color: #f87171;
}

/* 模态框主体 */
.um-modal-body {
  padding: 20px 24px;
  overflow-y: auto;
  flex: 1;
  min-height: 0;
}

.um-modal-body::-webkit-scrollbar { width: 4px; }
.um-modal-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 4px; }
.um-modal-body::-webkit-scrollbar-track { background: transparent; }

/* 模态框底部 */
.um-modal-footer {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  padding: 16px 24px;
  border-top: 1px solid rgba(255,255,255,0.06);
  flex-shrink: 0;
}

/* 表单组件 */
.um-form-group {
  margin-bottom: 16px;
}

.um-form-label {
  display: block;
  font-size: 12px;
  font-weight: 500;
  color: rgba(255,255,255,0.5);
  margin-bottom: 6px;
  letter-spacing: 0.2px;
}

.um-form-label-hint {
  font-size: 10px;
  color: rgba(255,255,255,0.25);
  margin-left: 6px;
  font-weight: 400;
}

.um-input,
.um-select {
  width: 100%;
  padding: 10px 14px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
  color: rgba(255,255,255,0.88);
  font-size: 13px;
  font-family: inherit;
  outline: none;
  transition: all 0.2s ease;
}

.um-input::placeholder { color: rgba(255,255,255,0.2); }
.um-select option { background: #0f172a; color: rgba(255,255,255,0.88); }

.um-input:focus,
.um-select:focus {
  border-color: rgba(59,130,246,0.5);
  background: rgba(255,255,255,0.06);
  box-shadow: 0 0 0 3px rgba(59,130,246,0.1),
              inset 0 1px 0 rgba(255,255,255,0.04);
}

.um-input:disabled,
.um-select:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* 表单行（并排） */
.um-form-row {
  display: flex;
  gap: 14px;
}

.um-form-row > .um-form-group {
  flex: 1;
}

/* 分隔标题 */
.um-section-title {
  font-size: 13px;
  font-weight: 600;
  color: rgba(255,255,255,0.7);
  margin: 20px 0 12px;
  display: flex;
  align-items: center;
  gap: 8px;
}

.um-section-title:first-child { margin-top: 0; }

.um-section-title-icon {
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(255,255,255,0.35);
}

/* 玻璃子卡片 */
.um-glass-box {
  padding: 14px 16px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 12px;
}

/* Toggle 开关组件 — 玻璃版 */
.um-toggle-wrapper {
  padding: 12px 14px;
  background: rgba(255,255,255,0.03);
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,0.06);
  transition: border-color 0.2s, background 0.2s;
}

.um-toggle-wrapper.on {
  border-color: rgba(52,211,153,0.25);
  background: rgba(52,211,153,0.04);
}

.um-toggle-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 4px;
}

.um-toggle-label {
  font-size: 12px;
  font-weight: 500;
  color: rgba(255,255,255,0.7);
}

.um-toggle-status {
  font-size: 10px;
  font-weight: 500;
  transition: color 0.2s;
}

.um-toggle-hint {
  font-size: 10px;
  color: rgba(255,255,255,0.25);
  line-height: 1.4;
}

/* Toggle 轨道 */
.um-toggle {
  width: 40px;
  height: 22px;
  border-radius: 11px;
  background: rgba(255,255,255,0.1);
  cursor: pointer;
  position: relative;
  flex-shrink: 0;
  transition: background 0.25s;
  border: none;
  padding: 0;
}

.um-toggle.on {
  background: rgba(52,211,153,0.6);
  box-shadow: 0 0 12px rgba(52,211,153,0.3);
}

.um-toggle-thumb {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: white;
  position: absolute;
  top: 3px;
  left: 3px;
  transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
  box-shadow: 0 1px 3px rgba(0,0,0,0.3);
}

.um-toggle.on .um-toggle-thumb {
  transform: translateX(18px);
}

/* 错误提示 */
.um-error {
  display: none;
  margin-top: 12px;
  padding: 8px 12px;
  background: rgba(239,68,68,0.08);
  border: 1px solid rgba(239,68,68,0.15);
  border-radius: 10px;
  color: rgba(248,113,113,0.9);
  font-size: 12px;
}

.um-error.show { display: flex; }

/* Checkbox 样式 */
.um-checkbox-label {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 0;
  font-size: 12px;
  color: rgba(255,255,255,0.65);
  cursor: pointer;
  transition: color 0.15s;
}

.um-checkbox-label:hover {
  color: rgba(255,255,255,0.85);
}

.um-checkbox-label input[type="checkbox"] {
  appearance: none;
  -webkit-appearance: none;
  width: 16px;
  height: 16px;
  border: 1.5px solid rgba(255,255,255,0.2);
  border-radius: 4px;
  background: rgba(255,255,255,0.04);
  cursor: pointer;
  position: relative;
  flex-shrink: 0;
  transition: all 0.15s;
}

.um-checkbox-label input[type="checkbox"]:checked {
  background: rgba(59,130,246,0.7);
  border-color: rgba(59,130,246,0.8);
  box-shadow: 0 0 8px rgba(59,130,246,0.3);
}

.um-checkbox-label input[type="checkbox"]:checked::after {
  content: '';
  position: absolute;
  left: 4.5px;
  top: 1.5px;
  width: 4px;
  height: 8px;
  border: solid white;
  border-width: 0 1.5px 1.5px 0;
  transform: rotate(45deg);
}

/* 模块分组标签 */
.um-module-label {
  font-size: 11px;
  color: rgba(255,255,255,0.25);
  margin-bottom: 4px;
  padding-left: 4px;
  font-weight: 500;
  letter-spacing: 0.3px;
}

/* KPI 编辑器槽位 */
.um-kpi-slot {
  padding: 12px 14px;
  background: rgba(255,255,255,0.03);
  border-radius: 12px;
  margin-bottom: 8px;
  border-left: 3px solid rgba(255,255,255,0.1);
  transition: border-color 0.2s;
}

.um-kpi-slot-primary { border-left-color: rgba(59,130,246,0.6); }
.um-kpi-slot-success { border-left-color: rgba(16,185,129,0.6); }
.um-kpi-slot-warning { border-left-color: rgba(245,158,11,0.6); }
.um-kpi-slot-profit { border-left-color: rgba(139,92,246,0.6); }

.um-kpi-label {
  font-size: 11px;
  color: rgba(255,255,255,0.3);
  margin-bottom: 8px;
  font-weight: 500;
}

.um-kpi-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.um-kpi-field label {
  font-size: 10px;
  color: rgba(255,255,255,0.25);
  display: block;
  margin-bottom: 3px;
}

.um-kpi-field select {
  width: 100%;
  padding: 6px 10px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 8px;
  color: rgba(255,255,255,0.8);
  font-size: 11px;
  font-family: inherit;
  outline: none;
  transition: border-color 0.2s;
}

.um-kpi-field select:focus {
  border-color: rgba(59,130,246,0.5);
}

.um-kpi-field select option { background: #0f172a; }

.um-kpi-flip {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  gap: 10px;
}

.um-kpi-flip label {
  font-size: 11px;
  color: rgba(255,255,255,0.55);
  display: flex;
  align-items: center;
  gap: 5px;
  cursor: pointer;
}

.um-kpi-flip label input[type="checkbox"] {
  appearance: none;
  -webkit-appearance: none;
  width: 15px;
  height: 15px;
  border: 1.5px solid rgba(255,255,255,0.2);
  border-radius: 4px;
  background: rgba(255,255,255,0.04);
  cursor: pointer;
  position: relative;
  flex-shrink: 0;
  transition: all 0.15s;
}

.um-kpi-flip label input[type="checkbox"]:checked {
  background: rgba(59,130,246,0.7);
  border-color: rgba(59,130,246,0.8);
}

.um-kpi-flip label input[type="checkbox"]:checked::after {
  content: '';
  position: absolute;
  left: 4px;
  top: 1px;
  width: 4px;
  height: 8px;
  border: solid white;
  border-width: 0 1.5px 1.5px 0;
  transform: rotate(45deg);
}

.um-kpi-flip select {
  padding: 5px 8px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 7px;
  color: rgba(255,255,255,0.8);
  font-size: 11px;
  font-family: inherit;
  outline: none;
}

.um-kpi-flip select option { background: #0f172a; }

/* 小号描述文本 */
.um-hint {
  font-size: 10px;
  color: rgba(255,255,255,0.2);
  margin-top: 8px;
  line-height: 1.5;
}

/* 禁用标记 */
.um-locked {
  font-size: 10px;
  color: rgba(255,255,255,0.2);
  font-weight: 400;
}

/* 添加行（货主管理弹窗顶部） */
.um-add-row {
  display: flex;
  gap: 10px;
  margin-bottom: 16px;
}

.um-add-row .um-select { flex: 1; }

/* 货主标签 */
.um-seller-tag {
  display: inline-block;
  padding: 2px 8px;
  margin: 2px;
  background: rgba(59,130,246,0.08);
  color: rgba(96,165,250,0.8);
  border: 1px solid rgba(59,130,246,0.15);
  border-radius: 6px;
  font-size: 11px;
  font-weight: 500;
}

/* 确认弹窗 (confirm/prompt 替代) */
.um-confirm-overlay {
  position: fixed;
  inset: 0;
  z-index: 10001;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,0.6);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

.um-confirm-box {
  background: rgba(15,23,42,0.85);
  backdrop-filter: blur(20px) saturate(1.6);
  -webkit-backdrop-filter: blur(20px) saturate(1.6);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 16px;
  box-shadow: 0 16px 48px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.08);
  padding: 24px;
  width: 360px;
  max-width: 85vw;
  animation: umModalIn 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.um-confirm-title {
  font-size: 15px;
  font-weight: 600;
  color: rgba(255,255,255,0.9);
  margin-bottom: 8px;
}

.um-confirm-message {
  font-size: 13px;
  color: rgba(255,255,255,0.5);
  line-height: 1.5;
  margin-bottom: 16px;
}

.um-confirm-actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
}

.um-confirm-input {
  width: 100%;
  padding: 10px 14px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 10px;
  color: rgba(255,255,255,0.88);
  font-size: 13px;
  font-family: inherit;
  outline: none;
  margin-bottom: 16px;
  transition: border-color 0.2s;
}

.um-confirm-input:focus {
  border-color: rgba(59,130,246,0.5);
  box-shadow: 0 0 0 3px rgba(59,130,246,0.1);
}

.um-confirm-input::placeholder { color: rgba(255,255,255,0.2); }

/* Toast 提示（复用/增强） */
.um-toast {
  position: fixed;
  top: 24px;
  right: 24px;
  z-index: 10002;
  padding: 12px 20px;
  background: rgba(15,23,42,0.85);
  backdrop-filter: blur(16px) saturate(1.5);
  -webkit-backdrop-filter: blur(16px) saturate(1.5);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 12px;
  box-shadow: 0 8px 24px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.06);
  color: rgba(255,255,255,0.85);
  font-size: 13px;
  font-weight: 500;
  animation: umToastIn 0.3s ease;
}

@keyframes umToastIn {
  from { opacity: 0; transform: translateX(20px); }
  to { opacity: 1; transform: translateX(0); }
}

/* ========================================================
   SKU 异常处理页面 — Dark Glassmorphism
   ======================================================== */

/* 页面容器 — 绝对定位填满 main-content */
.page-sku-exception {
  position: absolute;
  top: 24px;
  left: 24px;
  right: 24px;
  bottom: 24px;
  margin: 0;
  padding: 0;
  overflow-y: auto;
  overflow-x: hidden;
  box-sizing: border-box;
  display: none;
  flex-direction: column;
  background: transparent;
}

.page-sku-exception.active {
  display: flex;
}

body.has-sku-exception-active { overflow: hidden; }

/* 内容区撑满 */
.page-sku-exception .se-content {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  padding: 20px 24px 24px;
  gap: 16px;
  overflow-y: auto;
  overflow-x: hidden;
}

/* Tab 切换器 — 复用 um-tabs 玻璃胶囊 */
.se-tabs {
  display: inline-flex;
  gap: 2px;
  padding: 4px;
  background: rgba(255,255,255,0.04);
  backdrop-filter: blur(8px) saturate(1.2);
  -webkit-backdrop-filter: blur(8px) saturate(1.2);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 14px;
  flex-shrink: 0;
}

.se-tab {
  padding: 8px 22px;
  border: none;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  background: transparent;
  color: rgba(255,255,255,0.45);
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  position: relative;
  white-space: nowrap;
}

.se-tab:hover {
  color: rgba(255,255,255,0.7);
  background: rgba(255,255,255,0.04);
}

.se-tab.active {
  background: rgba(255,255,255,0.1);
  backdrop-filter: blur(8px) saturate(1.3);
  -webkit-backdrop-filter: blur(8px) saturate(1.3);
  color: rgba(255,255,255,0.95);
  box-shadow: 0 2px 12px rgba(0,0,0,0.2),
              inset 0 1px 0 rgba(255,255,255,0.08);
}

/* Tab 内容面板容器 */
.se-panel {
  flex: 1;
  min-height: 0;
  display: none;
  flex-direction: column;
  gap: 16px;
}

.se-panel.active {
  display: flex;
}

/* 面板头部栏 — 复用 um-panel-header */
.se-panel-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-shrink: 0;
}

.se-panel-desc {
  font-size: 13px;
  color: rgba(255,255,255,0.4);
  font-weight: 400;
}

/* 筛选工具栏 */
.se-toolbar {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
  flex-shrink: 0;
}

.se-toolbar .um-select {
  width: auto;
  min-width: 120px;
  flex: none;
}

.se-toolbar .um-input {
  flex: 1;
  min-width: 180px;
}

/* 统计卡片行 */
.se-stat-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  flex-shrink: 0;
}

.se-stat-card {
  padding: 16px 20px;
  background: var(--glass-bg);
  backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
  border: 1px solid var(--glass-border);
  border-radius: 14px;
  box-shadow: var(--glass-shadow),
              inset 0 1px 0 var(--glass-highlight);
  transition: transform 0.2s, box-shadow 0.2s;
}

.se-stat-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--glass-shadow-hover),
              inset 0 1px 0 var(--glass-highlight);
}

.se-stat-label {
  font-size: 11px;
  color: rgba(255,255,255,0.35);
  font-weight: 500;
  letter-spacing: 0.3px;
  margin-bottom: 6px;
}

.se-stat-value {
  font-size: 24px;
  font-weight: 700;
  line-height: 1.2;
}

.se-stat-value-warning { color: #fbbf24; text-shadow: 0 0 20px rgba(251,191,36,0.3); }
.se-stat-value-danger { color: #f87171; text-shadow: 0 0 20px rgba(248,113,113,0.3); }
.se-stat-value-primary { color: rgba(255,255,255,0.88); }

/* 待归档列表容器 */
.se-pending-list {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  scrollbar-gutter: stable;
}
.se-pending-list::-webkit-scrollbar { width: 5px; }
.se-pending-list::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 5px; }
.se-pending-list::-webkit-scrollbar-track { background: transparent; }

/* 待归档 — 卡片列表 */
.se-pk-cards {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 4px 0;
}

/* 单张待归档卡片 */
.se-pk-card {
  display: grid;
  grid-template-columns: 36px 1fr auto;
  grid-template-rows: auto auto;
  gap: 0 16px;
  align-items: start;
  padding: 14px 18px;
  background: rgba(255,255,255,0.025);
  border: 1px solid rgba(255,255,255,0.04);
  border-radius: 12px;
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  cursor: default;
}
.se-pk-card:hover {
  background: rgba(255,255,255,0.05);
  border-color: rgba(255,255,255,0.08);
  box-shadow: 0 4px 16px rgba(0,0,0,0.15);
  transform: translateY(-1px);
}

/* 序号 */
.se-pk-idx {
  grid-row: 1 / -1;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 600;
  color: rgba(255,255,255,0.2);
  width: 28px;
  height: 28px;
  border-radius: 8px;
  background: rgba(255,255,255,0.03);
  flex-shrink: 0;
}

/* 商品信息区（左上） */
.se-pk-info {
  grid-column: 2;
  grid-row: 1;
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.se-pk-name {
  color: var(--text-primary, #e0e0e0);
  font-size: 13.5px;
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex-shrink: 1;
  line-height: 1.4;
}
.se-pk-sku {
  font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;
  font-size: 11px;
  color: var(--accent-amber, #f59e0b);
  background: rgba(245, 158, 11, 0.1);
  padding: 2px 8px;
  border-radius: 6px;
  white-space: nowrap;
  flex-shrink: 0;
  letter-spacing: -0.2px;
}
.se-pk-spec {
  font-size: 11px;
  color: rgba(96,165,250,0.8);
  background: rgba(59,130,246,0.1);
  padding: 2px 8px;
  border-radius: 6px;
  white-space: nowrap;
  flex-shrink: 0;
  border: 1px solid rgba(59,130,246,0.12);
}
.se-pk-unit {
  font-size: 11px;
  color: rgba(167,139,250,0.8);
  background: rgba(139,92,246,0.1);
  padding: 2px 8px;
  border-radius: 6px;
  white-space: nowrap;
  flex-shrink: 0;
  border: 1px solid rgba(139,92,246,0.12);
}
.se-pk-conv {
  font-size: 11px;
  color: rgba(251,191,36,0.9);
  background: rgba(251,191,36,0.1);
  padding: 2px 8px;
  border-radius: 6px;
  white-space: nowrap;
  flex-shrink: 0;
  border: 1px solid rgba(251,191,36,0.15);
}
.se-pk-source-tag {
  font-size: 10px;
  padding: 1px 6px;
  border-radius: 4px;
  white-space: nowrap;
  flex-shrink: 0;
}
.se-pk-source-tag.source-sales {
  color: rgba(148,163,184,0.8);
  background: rgba(148,163,184,0.1);
  border: 1px solid rgba(148,163,184,0.15);
}
.se-pk-source-tag.source-stock {
  color: rgba(167,139,250,0.9);
  background: rgba(167,139,250,0.1);
  border: 1px solid rgba(167,139,250,0.15);
}

/* 统计+操作区（右上） */
.se-pk-actions {
  grid-column: 3;
  grid-row: 1 / -1;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 10px;
  flex-shrink: 0;
}
.se-pk-stats {
  display: flex;
  gap: 16px;
  align-items: center;
}
.se-pk-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1px;
}
.se-pk-stat-val {
  font-size: 15px;
  font-weight: 700;
  line-height: 1.3;
}
.se-pk-stat-val.amount { color: #f87171; }
.se-pk-stat-val.count { color: #fbbf24; }
.se-pk-stat-val.qty { color: #60a5fa; }
.se-pk-stat-lbl {
  font-size: 10px;
  color: rgba(255,255,255,0.3);
  letter-spacing: 0.3px;
}

/* 辅助信息行（品牌/均价/日期/换算） */
.se-pk-sub-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 2px 0;
  align-items: center;
  font-size: 11px;
  color: rgba(255,255,255,0.4);
  line-height: 1.5;
}
.se-pk-sub-tag {
  white-space: nowrap;
}
.se-pk-sub-tag.brand {
  color: rgba(192,132,252,0.75);
}
.se-pk-sub-tag.price {
  color: rgba(248,113,113,0.6);
}
.se-pk-sub-tag.date {
  color: rgba(148,163,184,0.55);
}
.se-pk-sub-tag.base {
  color: rgba(96,165,250,0.6);
  font-weight: 600;
}
.se-pk-sub-tag.conv {
  color: rgba(251,191,36,0.5);
  font-size: 10px;
  border: 1px solid rgba(251,191,36,0.15);
  border-radius: 3px;
  padding: 0 4px;
}
.se-pk-sub-sep {
  color: rgba(255,255,255,0.15);
  margin: 0 6px;
  user-select: none;
}

/* 底部标签栏（左下） */
.se-pk-meta {
  grid-column: 2;
  grid-row: 2;
  display: flex;
  align-items: center;
  gap: 8px;
  padding-top: 8px;
  margin-top: 2px;
}
.se-pk-seller-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: rgba(255,255,255,0.45);
  padding: 2px 8px;
  border-radius: 6px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.06);
}
.se-pk-seller-tag svg { opacity: 0.5; flex-shrink: 0; }
.se-pk-platform-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  font-weight: 500;
  padding: 2px 8px;
  border-radius: 6px;
}
.se-pk-platform-tag.mc {
  color: #4ade80;
  background: rgba(74,222,128,0.1);
  border: 1px solid rgba(74,222,128,0.15);
}
.se-pk-platform-tag.kl {
  color: #38bdf8;
  background: rgba(56,189,248,0.1);
  border: 1px solid rgba(56,189,248,0.15);
}
.se-pk-platform-tag.other {
  color: rgba(255,255,255,0.5);
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.08);
}

/* 操作按钮组 */
.se-pk-btns {
  display: flex;
  gap: 6px;
}
.se-pk-btn-archive {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 14px;
  font-size: 12px;
  font-weight: 500;
  color: #fbbf24;
  background: rgba(245,158,11,0.12);
  border: 1px solid rgba(245,158,11,0.2);
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.15s;
  white-space: nowrap;
}
.se-pk-btn-archive:hover { background: rgba(245,158,11,0.22); border-color: rgba(245,158,11,0.35); }
.se-pk-btn-archive svg { flex-shrink: 0; }
.se-pk-btn-ignore {
  display: inline-flex;
  align-items: center;
  padding: 6px 12px;
  font-size: 12px;
  color: rgba(255,255,255,0.35);
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.15s;
  white-space: nowrap;
}
.se-pk-btn-ignore:hover { background: rgba(255,255,255,0.08); color: rgba(255,255,255,0.55); }

/* 空状态 */
.se-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 60px 20px;
  color: rgba(255,255,255,0.25);
  font-size: 13px;
  gap: 8px;
}

.se-empty-icon {
  font-size: 32px;
  opacity: 0.4;
}

/* 分页 */
.se-pagination {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 13px;
  color: rgba(255,255,255,0.4);
  flex-shrink: 0;
}

.se-pagination-info {
  color: rgba(255,255,255,0.35);
  font-size: 12px;
}

/* 搜索结果列表 */
.se-search-results {
  max-height: 200px;
  overflow-y: auto;
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
  margin-bottom: 12px;
}

.se-search-results::-webkit-scrollbar { width: 4px; }
.se-search-results::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 4px; }
.se-search-results::-webkit-scrollbar-track { background: transparent; }

.se-search-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 14px;
  cursor: pointer;
  border-bottom: 1px solid rgba(255,255,255,0.04);
  transition: background 0.15s ease;
  color: rgba(255,255,255,0.75);
  font-size: 13px;
}

.se-search-item:last-child {
  border-bottom: none;
}

.se-search-item:hover {
  background: rgba(255,255,255,0.06);
  color: rgba(255,255,255,0.9);
}

.se-search-item.selected {
  background: rgba(16,185,129,0.08);
  border-color: rgba(16,185,129,0.15);
}

.se-search-item-name {
  font-weight: 500;
  color: rgba(255,255,255,0.85);
}

.se-search-item-sub {
  font-size: 11px;
  color: rgba(255,255,255,0.35);
  margin-top: 2px;
}

.se-search-item-spec {
  font-size: 11px;
  color: rgba(255,255,255,0.4);
  text-align: right;
  flex-shrink: 0;
}

.se-search-empty {
  text-align: center;
  padding: 20px;
  color: rgba(255,255,255,0.25);
  font-size: 12px;
}

/* 信息预览块 */
.se-info-box {
  padding: 14px 16px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 12px;
  margin-bottom: 16px;
  font-size: 13px;
  color: rgba(255,255,255,0.65);
  line-height: 1.6;
}

.se-info-box strong {
  color: rgba(255,255,255,0.8);
  font-weight: 500;
}

.se-info-box code {
  background: rgba(255,255,255,0.06);
  padding: 2px 6px;
  border-radius: 4px;
  font-size: 12px;
  font-family: 'SF Mono', 'Fira Code', monospace;
}

/* 规格选择器 */
.se-spec-selector {
  margin-top: 12px;
  padding: 12px 14px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 10px;
}
.se-spec-selector-title {
  font-size: 11px;
  color: rgba(255,255,255,0.35);
  font-weight: 500;
  margin-bottom: 8px;
  letter-spacing: 0.3px;
}
.se-spec-options {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.se-spec-option {
  padding: 7px 14px;
  border-radius: 8px;
  border: 1px solid rgba(255,255,255,0.1);
  background: rgba(255,255,255,0.04);
  color: rgba(255,255,255,0.6);
  font-size: 13px;
  cursor: pointer;
  transition: all 0.2s ease;
}
.se-spec-option:hover {
  border-color: rgba(96,165,250,0.3);
  background: rgba(96,165,250,0.08);
  color: rgba(255,255,255,0.85);
}
.se-spec-option.active {
  border-color: rgba(96,165,250,0.5);
  background: rgba(96,165,250,0.12);
  color: #60a5fa;
  font-weight: 500;
  box-shadow: 0 0 8px rgba(96,165,250,0.1);
}
.se-spec-option .se-spec-conv {
  font-size: 11px;
  color: rgba(255,255,255,0.3);
  margin-left: 4px;
}

/* 已选商品信息条 */
.se-selected-info {
  margin-top: 12px;
  padding: 10px 14px;
  background: rgba(34,197,94,0.06);
  border: 1px solid rgba(34,197,94,0.15);
  border-radius: 10px;
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: rgba(255,255,255,0.8);
}
.se-selected-info .se-si-icon {
  font-size: 16px;
}
.se-selected-info .se-si-name {
  font-weight: 500;
  color: #4ade80;
}
.se-selected-info .se-si-spec {
  font-size: 12px;
  color: rgba(255,255,255,0.4);
  margin-left: auto;
}
.se-selected-info .se-si-change {
  font-size: 11px;
  color: rgba(96,165,250,0.6);
  cursor: pointer;
  margin-left: 8px;
  text-decoration: underline;
}
.se-selected-info .se-si-change:hover {
  color: rgba(96,165,250,0.9);
}

/* 一键新建商品区域 */
.se-quick-create {
  margin-top: 12px;
  padding: 14px 16px;
  background: rgba(245,158,11,0.04);
  border: 1px dashed rgba(245,158,11,0.2);
  border-radius: 10px;
}
.se-quick-create-title {
  font-size: 12px;
  color: rgba(245,158,11,0.7);
  font-weight: 500;
  margin-bottom: 10px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.se-quick-create-form {
  display: grid;
  grid-template-columns: 1fr 80px 72px auto;
  gap: 8px;
  align-items: end;
}
.se-quick-create-form .um-form-group {
  margin-bottom: 0;
}
.se-quick-create-form .um-input {
  height: 34px;
  font-size: 13px;
}
.se-quick-create-form .um-btn {
  height: 34px;
  font-size: 12px;
  white-space: nowrap;
}
.se-quick-create-hint {
  margin-top: 8px;
  font-size: 11px;
  color: rgba(245,158,11,0.5);
  line-height: 1.4;
}

/* 搜索结果增强 - 规格标签 */
.se-search-item-specs {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 4px;
}
.se-search-item-spec-tag {
  display: inline-block;
  padding: 1px 8px;
  border-radius: 4px;
  font-size: 11px;
  background: rgba(255,255,255,0.06);
  color: rgba(255,255,255,0.4);
  border: 1px solid rgba(255,255,255,0.06);
}
.se-search-item-spec-tag.base {
  background: rgba(96,165,250,0.08);
  color: rgba(96,165,250,0.7);
  border-color: rgba(96,165,250,0.15);
}

/* 待归档列表 - 单位列 */
.se-unit-tag {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 11px;
  background: rgba(139,92,246,0.1);
  color: rgba(167,139,250,0.8);
  border: 1px solid rgba(139,92,246,0.15);
}

/* 待归档列表 - 规格列 */
.se-spec-tag {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 11px;
  background: rgba(59,130,246,0.1);
  color: rgba(96,165,250,0.9);
  border: 1px solid rgba(59,130,246,0.15);
}

/* 预览模态框特殊样式 */
.se-preview-section {
  margin-bottom: 16px;
}

.se-preview-label {
  font-size: 11px;
  color: rgba(255,255,255,0.35);
  font-weight: 500;
  margin-bottom: 6px;
  letter-spacing: 0.3px;
}

.se-preview-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

.se-preview-box {
  padding: 12px 14px;
  border-radius: 10px;
  font-size: 13px;
}

.se-preview-box-red {
  background: rgba(239,68,68,0.06);
  border: 1px solid rgba(239,68,68,0.1);
}

.se-preview-box-green {
  background: rgba(16,185,129,0.06);
  border: 1px solid rgba(16,185,129,0.1);
}

.se-preview-box-amber {
  background: rgba(245,158,11,0.06);
  border: 1px solid rgba(245,158,11,0.1);
}

.se-preview-box-blue {
  background: rgba(59,130,246,0.06);
  border: 1px solid rgba(59,130,246,0.1);
}

.se-preview-box-neutral {
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
}

.se-preview-stat {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  font-size: 13px;
  color: rgba(255,255,255,0.6);
}

.se-preview-stat strong {
  color: rgba(255,255,255,0.9);
  font-weight: 600;
}

/* 状态文字颜色 */
.se-text-warning { color: #fbbf24; }
.se-text-danger { color: #f87171; }
.se-text-success { color: #34d399; }
.se-text-info { color: #60a5fa; }
.se-text-primary { color: rgba(255,255,255,0.88); }
.se-text-secondary { color: rgba(255,255,255,0.45); }
.se-text-muted { color: rgba(255,255,255,0.25); }
.se-text-mono {
  font-family: 'SF Mono', 'Fira Code', monospace;
  font-size: 12px;
}


/* ========================================================
   平台管理 & 货主管理 — 统一组件样式
   ======================================================== */

/* --- 管理区块卡片 --- */
.um-section {
  background: rgba(255,255,255,0.04);
  backdrop-filter: blur(12px) saturate(1.2);
  -webkit-backdrop-filter: blur(12px) saturate(1.2);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 16px;
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.um-section + .um-section {
  margin-top: 0;
}

.um-section-title {
  font-size: 13px;
  font-weight: 600;
  color: rgba(255,255,255,0.7);
  letter-spacing: 0.02em;
  display: flex;
  align-items: center;
  gap: 8px;
}
.um-section-title .um-section-icon {
  width: 28px;
  height: 28px;
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  flex-shrink: 0;
}
.um-section-title .um-section-count {
  margin-left: auto;
  font-size: 11px;
  font-weight: 500;
  color: rgba(255,255,255,0.3);
  background: rgba(255,255,255,0.06);
  padding: 2px 10px;
  border-radius: 20px;
}

/* --- 标签流式布局（平台 / 货主） --- */
.um-tag-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.um-tag {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 14px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
  font-size: 13px;
  font-weight: 500;
  color: rgba(255,255,255,0.75);
  transition: all 0.2s cubic-bezier(0.4,0,0.2,1);
  cursor: default;
}
.um-tag:hover {
  background: rgba(255,255,255,0.1);
  border-color: rgba(255,255,255,0.15);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0,0,0,0.2);
}

/* 货主标签带色块 */
.um-tag-color {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}

/* 标签删除按钮 */
.um-tag-remove {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: none;
  background: rgba(239,68,68,0.08);
  color: rgba(239,68,68,0.6);
  font-size: 13px;
  line-height: 1;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s;
  padding: 0;
  flex-shrink: 0;
}
.um-tag-remove:hover {
  background: rgba(239,68,68,0.2);
  color: #ef4444;
  transform: scale(1.1);
}

/* --- 输入行（添加平台 / 货主 / 映射） --- */
.um-input-row {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.um-input {
  flex: 1;
  min-width: 160px;
  padding: 9px 14px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
  color: rgba(255,255,255,0.85);
  font-size: 13px;
  font-family: inherit;
  transition: all 0.2s cubic-bezier(0.4,0,0.2,1);
  outline: none;
}
.um-input::placeholder {
  color: rgba(255,255,255,0.25);
}
.um-input:focus {
  border-color: rgba(59,130,246,0.5);
  background: rgba(255,255,255,0.07);
  box-shadow: 0 0 0 3px rgba(59,130,246,0.1);
}

.um-select {
  flex: 1;
  min-width: 130px;
  padding: 9px 14px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
  color: rgba(255,255,255,0.85);
  font-size: 13px;
  font-family: inherit;
  transition: all 0.2s cubic-bezier(0.4,0,0.2,1);
  outline: none;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='rgba(255,255,255,0.35)' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  padding-right: 32px;
}
.um-select:focus {
  border-color: rgba(59,130,246,0.5);
  box-shadow: 0 0 0 3px rgba(59,130,246,0.1);
}

/* --- 映射表格 --- */
.um-map-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 12px;
  overflow: hidden;
}
.um-map-table thead tr {
  background: rgba(255,255,255,0.05);
}
.um-map-table th {
  padding: 10px 14px;
  text-align: left;
  font-size: 11px;
  font-weight: 500;
  color: rgba(255,255,255,0.4);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}
.um-map-table td {
  padding: 10px 14px;
  font-size: 13px;
  color: rgba(255,255,255,0.7);
  border-bottom: 1px solid rgba(255,255,255,0.04);
  transition: background 0.15s;
}
.um-map-table tbody tr {
  transition: background 0.15s;
}
.um-map-table tbody tr:hover {
  background: rgba(255,255,255,0.03);
}
.um-map-table tbody tr:last-child td {
  border-bottom: none;
}

/* 映射标签 */
.um-map-badge {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  background: rgba(59,130,246,0.1);
  color: rgba(96,165,250,0.9);
  border-radius: 6px;
  font-size: 12px;
  font-weight: 500;
  border: 1px solid rgba(59,130,246,0.15);
}

/* 映射行删除按钮 */
.um-map-del {
  padding: 4px 10px;
  font-size: 11px;
  font-weight: 500;
  border-radius: 6px;
  cursor: pointer;
  border: 1px solid rgba(239,68,68,0.15);
  background: rgba(239,68,68,0.05);
  color: rgba(239,68,68,0.7);
  transition: all 0.2s;
  white-space: nowrap;
}
.um-map-del:hover {
  background: rgba(239,68,68,0.12);
  border-color: rgba(239,68,68,0.3);
  color: #ef4444;
}

/* 空状态 */
.um-section-empty {
  text-align: center;
  padding: 28px 20px;
  color: rgba(255,255,255,0.25);
  font-size: 13px;
}

/* --- 货主&映射面板滚动容器 --- */
#panel-seller-platform .um-section-wrap {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding-right: 4px;
}
#panel-seller-platform .um-section-wrap::-webkit-scrollbar { width: 4px; }
#panel-seller-platform .um-section-wrap::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.08); border-radius: 4px; }
#panel-seller-platform .um-section-wrap::-webkit-scrollbar-track { background: transparent; }


/* ===== 工作量统计页面 (admin 专属) — Dark Glassmorphism ===== */
.page-workload { padding: 0; }

.wl-container {
    padding: 20px 28px 40px;
    max-width: 100%;
}

/* --- 头部 --- */
.wl-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
    flex-wrap: wrap;
    gap: 14px;
}
.wl-title {
    font-size: 20px;
    font-weight: 700;
    color: var(--text-primary, #f8fafc);
    margin: 0;
    letter-spacing: -0.02em;
    position: relative;
    padding-left: 14px;
}
.wl-title::before {
    content: '';
    position: absolute;
    left: 0;
    top: 4px;
    bottom: 4px;
    width: 4px;
    border-radius: 2px;
    background: linear-gradient(180deg, var(--primary, #3b82f6), var(--purple, #8b5cf6));
}
.wl-controls {
    display: flex;
    align-items: center;
    gap: 2px;
    background: rgba(255,255,255,0.05);
    border-radius: 12px;
    padding: 3px;
    border: 1px solid rgba(255,255,255,0.08);
}
.wl-month-btn {
    width: 34px; height: 34px;
    border: none; border-radius: 9px;
    background: transparent; cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    color: var(--text-secondary, #94a3b8);
    transition: all 0.2s cubic-bezier(0.4,0,0.2,1);
}
.wl-month-btn:hover { background: rgba(255,255,255,0.1); color: var(--text-primary, #f8fafc); transform: scale(1.05); }
.wl-month-btn:active { transform: scale(0.92); }
.wl-month-display {
    position: relative;
    display: flex; align-items: center;
    padding: 6px 16px; font-size: 14px; font-weight: 600;
    color: var(--text-primary, #f8fafc);
    cursor: pointer; border-radius: 9px;
    transition: background 0.15s; user-select: none;
    min-width: 120px; justify-content: center; letter-spacing: 0.02em;
}
.wl-month-display:hover { background: rgba(255,255,255,0.07); }
.wl-month-input-hidden { position: absolute; inset: 0; opacity: 0; cursor: pointer; font-size: 0; width: 100%; height: 100%; }

/* --- 图例 --- */
.wl-legend {
    display: flex; gap: 20px; margin-bottom: 20px; flex-wrap: wrap;
    padding: 10px 18px; background: rgba(255,255,255,0.03);
    border-radius: 12px; border: 1px solid rgba(255,255,255,0.06);
}
.wl-legend-item { display: flex; align-items: center; gap: 7px; font-size: 12px; color: var(--text-secondary, #94a3b8); font-weight: 500; }
.wl-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; box-shadow: 0 0 6px currentColor; }
.wl-dot-perf { background: #22c55e; color: #22c55e; }
.wl-dot-task { background: var(--primary, #3b82f6); color: var(--primary, #3b82f6); }
.wl-dot-check { background: var(--warning, #f59e0b); color: var(--warning, #f59e0b); }
.wl-dot-tool { background: var(--purple, #8b5cf6); color: var(--purple, #8b5cf6); }

/* --- 加载/错误/空 --- */
.wl-loading, .wl-error, .wl-empty { text-align: center; padding: 60px 20px; color: var(--text-secondary, #94a3b8); font-size: 14px; }
.wl-loading { display: flex; flex-direction: column; align-items: center; gap: 14px; }
.wl-spinner { width: 32px; height: 32px; border: 3px solid rgba(255,255,255,0.08); border-top-color: var(--primary, #3b82f6); border-radius: 50%; animation: wl-spin 0.7s cubic-bezier(0.4,0,0.2,1) infinite; }
@keyframes wl-spin { to { transform: rotate(360deg); } }
.wl-error { color: var(--danger, #ef4444); font-size: 14px; line-height: 1.6; }

/* ===== 数据大屏 ===== */
.wl-dashboard {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 16px;
    margin-bottom: 20px;
}
.wl-chart-bar-wrap { grid-column: 1 / 2; }
.wl-chart-pie-wrap { grid-column: 2 / 3; }

.wl-chart-card {
    background: rgba(15,23,42,0.55);
    backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(255,255,255,0.06);
    border-radius: 14px;
    padding: 18px 20px 14px;
    animation: wlFadeIn 0.4s ease both;
}
.wl-chart-bar-wrap { animation-delay: 0.05s; }
.wl-chart-pie-wrap { animation-delay: 0.1s; }

/* ===== 每人独立雷达图网格（与同事卡片对齐）===== */
.wl-radar-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 18px;
    margin-bottom: 24px;
}

.wl-radar-card {
    background: rgba(15,23,42,0.55);
    backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(255,255,255,0.06);
    border-radius: 16px;
    padding: 18px 20px;
    animation: wlFadeIn 0.4s ease both;
    transition: transform 0.3s cubic-bezier(0.4,0,0.2,1), box-shadow 0.3s ease, border-color 0.3s;
}
.wl-radar-card:hover {
    transform: translateY(-4px) scale(1.10);
    box-shadow: 0 8px 32px rgba(0,0,0,0.25);
    border-color: rgba(255,255,255,0.12);
}

.wl-radar-header {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 8px;
}
.wl-radar-name-row {
    display: flex; align-items: center; gap: 10px;
}
.wl-radar-name {
    font-size: 14px; font-weight: 650;
    color: var(--text-primary, #f8fafc);
    letter-spacing: -0.01em;
}
.wl-radar-total {
    font-size: 13px; font-weight: 700;
    color: var(--text-primary, #f8fafc);
    background: rgba(255,255,255,0.06);
    padding: 3px 10px; border-radius: 6px;
    font-variant-numeric: tabular-nums;
}
.wl-radar-box { position: relative; width: 100%; height: 240px; }

.wl-chart-title {
    font-size: 13px; font-weight: 600;
    color: var(--text-secondary, #94a3b8);
    margin: 0 0 12px; letter-spacing: -0.01em;
}
.wl-chart-box { position: relative; width: 100%; }
.wl-chart-bar-wrap .wl-chart-box { height: 220px; }
.wl-chart-pie-wrap .wl-chart-box { height: 220px; }

@keyframes wlFadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }

/* ===== 竖向卡片网格 ===== */
.wl-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 18px;
}

.wl-card-v {
    background: rgba(15,23,42,0.55);
    backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(255,255,255,0.06);
    border-radius: 16px;
    padding: 20px;
    transition: all 0.3s cubic-bezier(0.4,0,0.2,1);
    position: relative;
    overflow: hidden;
    animation: wlFadeIn 0.4s ease both;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

/* 卡片顶部装饰线 */
.wl-card-v::before {
    content: '';
    position: absolute; top: 0; left: 0; right: 0;
    height: 2px; background: transparent; transition: background 0.3s;
}
.wl-card-v:hover {
    border-color: rgba(255,255,255,0.12);
    box-shadow: 0 8px 32px rgba(0,0,0,0.25);
    transform: translateY(-4px) scale(1.10);
}

/* 前三名高亮 */
.wl-card-rank1 { border-color: rgba(245,158,11,0.2); --card-accent: #F59E0B; }
.wl-card-rank1::before { background: linear-gradient(90deg, #F59E0B, #FBBF24, #F59E0B); }
.wl-card-rank1:hover { border-color: rgba(245,158,11,0.35); box-shadow: 0 8px 32px rgba(245,158,11,0.15); }
.wl-card-rank2 { border-color: rgba(148,163,184,0.15); --card-accent: #94A3B8; }
.wl-card-rank2::before { background: linear-gradient(90deg, #94A3B8, #CBD5E1, #94A3B8); }
.wl-card-rank2:hover { border-color: rgba(148,163,184,0.3); box-shadow: 0 8px 32px rgba(148,163,184,0.12); }
.wl-card-rank3 { border-color: rgba(217,119,6,0.15); --card-accent: #D97706; }
.wl-card-rank3::before { background: linear-gradient(90deg, #D97706, #F59E0B, #D97706); }
.wl-card-rank3:hover { border-color: rgba(217,119,6,0.3); box-shadow: 0 8px 32px rgba(217,119,6,0.12); }

/* 其他排名：用每人主题色做顶部装饰条 */
.wl-card-v:not(.wl-card-rank1):not(.wl-card-rank2):not(.wl-card-rank3)::before,
.wl-radar-card:not(.wl-card-rank1):not(.wl-card-rank2):not(.wl-card-rank3)::before {
    background: linear-gradient(90deg, var(--card-accent, #64748b), color-mix(in srgb, var(--card-accent, #64748b) 60%, white));
}

/* 卡片顶部：排名+头像+姓名 */
.wl-v-top {
    display: flex; align-items: center; gap: 12px;
}
.wl-rank {
    width: 30px; height: 30px; border-radius: 9px;
    display: flex; align-items: center; justify-content: center;
    font-size: 13px; font-weight: 700;
    background: rgba(255,255,255,0.06);
    color: var(--text-secondary, #94a3b8);
    flex-shrink: 0; transition: transform 0.2s;
}
.wl-card-v:hover .wl-rank { transform: scale(1.08); }
.wl-rank.is-gold { background: linear-gradient(135deg, rgba(245,158,11,0.25), rgba(245,158,11,0.15)); color: #FBBF24; box-shadow: 0 2px 8px rgba(245,158,11,0.2); }
.wl-rank.is-silver { background: linear-gradient(135deg, rgba(148,163,184,0.2), rgba(148,163,184,0.1)); color: #CBD5E1; box-shadow: 0 2px 8px rgba(148,163,184,0.15); }
.wl-rank.is-bronze { background: linear-gradient(135deg, rgba(217,119,6,0.2), rgba(217,119,6,0.1)); color: #FCD34D; box-shadow: 0 2px 8px rgba(217,119,6,0.15); }

.wl-avatar {
    width: 40px; height: 40px; border-radius: 12px;
    display: flex; align-items: center; justify-content: center;
    color: #fff; font-size: 16px; font-weight: 700;
    flex-shrink: 0; box-shadow: 0 2px 8px rgba(0,0,0,0.2);
    transition: transform 0.2s; letter-spacing: -0.02em;
}
.wl-card-v:hover .wl-avatar { transform: scale(1.06); }

.wl-name { font-size: 15px; font-weight: 650; color: var(--text-primary, #f8fafc); letter-spacing: -0.01em; }

/* 总分 */
.wl-v-score { text-align: center; padding: 4px 0; }
.wl-v-score-num {
    font-size: 38px; font-weight: 800;
    color: var(--text-primary, #f8fafc);
    line-height: 1; letter-spacing: -0.04em;
    font-variant-numeric: tabular-nums;
}
.wl-card-rank1 .wl-v-score-num { color: #FBBF24; }
.wl-v-score-unit { font-size: 11px; color: var(--text-secondary, #94a3b8); margin-left: 2px; font-weight: 500; }

/* 进度条（竖向排列） */
.wl-v-bars { display: flex; flex-direction: column; gap: 8px; flex: 1; }
.wl-v-bar-row { display: flex; align-items: center; gap: 8px; }
.wl-bar-label { width: 30px; font-size: 11px; color: var(--text-secondary, #94a3b8); flex-shrink: 0; text-align: right; font-weight: 500; }
.wl-bar-track { flex: 1; height: 6px; background: rgba(255,255,255,0.06); border-radius: 3px; overflow: hidden; position: relative; }
.wl-bar-fill {
    height: 100%; border-radius: 3px;
    transition: width 0.8s cubic-bezier(0.4,0,0.2,1);
    min-width: 0; position: relative;
}
.wl-bar-fill::after {
    content: '';
    position: absolute; inset: 0; border-radius: inherit;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);
    animation: wlShimmer 2s ease-in-out infinite;
    opacity: 0; transition: opacity 0.3s;
}
.wl-card-v:hover .wl-bar-fill::after { opacity: 1; }
@keyframes wlShimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } }

.wl-bar-perf { background: linear-gradient(90deg, #22c55e, #4ade80); }
.wl-bar-task { background: linear-gradient(90deg, var(--primary, #3b82f6), #60a5fa); }
.wl-bar-check { background: linear-gradient(90deg, var(--warning, #f59e0b), #fbbf24); }
.wl-bar-tool { background: linear-gradient(90deg, var(--purple, #8b5cf6), #a78bfa); }

.wl-bar-value { width: 26px; font-size: 11px; font-weight: 700; color: var(--text-primary, #f8fafc); flex-shrink: 0; text-align: right; font-variant-numeric: tabular-nums; }

/* --- 明细 --- */
.wl-detail-toggle {
    display: flex; align-items: center; justify-content: center;
    gap: 5px; margin-top: 4px; padding-top: 10px;
    border-top: 1px solid rgba(255,255,255,0.06);
    font-size: 11px; font-weight: 500;
    color: var(--text-secondary, #94a3b8);
    cursor: pointer; transition: all 0.2s; user-select: none;
}
.wl-detail-toggle:hover { color: var(--primary, #3b82f6); border-top-color: rgba(59,130,246,0.2); }
.wl-arrow { width: 12px; height: 12px; transition: transform 0.3s cubic-bezier(0.4,0,0.2,1); }
.wl-arrow.is-open { transform: rotate(180deg); }
.wl-detail { margin-top: 10px; }
.wl-detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.wl-detail-grid-v { grid-template-columns: 1fr; }
.wl-detail-section {
    padding: 10px 12px;
    background: rgba(255,255,255,0.03);
    border-radius: 8px; border: 1px solid rgba(255,255,255,0.05);
    animation: wlFadeIn 0.3s ease both;
}
.wl-detail-section h4 { font-size: 10px; font-weight: 700; color: var(--text-secondary, #94a3b8); margin: 0 0 5px; text-transform: uppercase; letter-spacing: 0.06em; }
.wl-detail-section p { margin: 2px 0; font-size: 11px; color: var(--text-secondary, #94a3b8); line-height: 1.5; }
.wl-detail-section strong { color: var(--text-primary, #f8fafc); font-weight: 600; }

.wl-up { color: #22c55e; font-weight: 600; font-size: 11px; }
.wl-flat { color: var(--primary, #3b82f6); font-size: 11px; }
.wl-down { color: var(--danger, #ef4444); font-size: 11px; }

/* --- 响应式 --- */
@media (max-width: 900px) {
    .wl-dashboard { grid-template-columns: 1fr; }
    .wl-chart-bar-wrap { grid-column: 1; grid-row: auto; }
    .wl-chart-pie-wrap { grid-column: 1; grid-row: auto; }
}
@media (max-width: 640px) {
    .wl-grid { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
    .wl-radar-grid { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
    .wl-header { flex-direction: column; align-items: flex-start; }
    .wl-container { padding: 16px 14px 32px; }
    .wl-chart-bar-wrap .wl-chart-box { height: 180px; }
    .wl-chart-pie-wrap .wl-chart-box { height: 180px; }
    .wl-chart-radar-wrap .wl-chart-box { height: 220px; }
}


/* ============================================================
   RA: SKU重分配工单 - 双卡片+粒子流线布局
   ============================================================ */

/* Modal: 更宽的尺寸 */
.um-modal-ra {
    width: 920px;
    max-width: 92vw;
    max-height: 88vh;
    overflow-y: auto;
}

/* 顶部条码区 */
.ra-barcode-section {
    padding: 20px 28px 16px;
    border-bottom: 1px solid rgba(255,255,255,0.05);
    display: flex;
    align-items: center;
    gap: 14px;
    flex-shrink: 0;
}
.ra-barcode-label {
    font-size: 12px;
    font-weight: 500;
    color: rgba(255,255,255,0.4);
    white-space: nowrap;
    letter-spacing: 0.3px;
    text-transform: uppercase;
}
.ra-barcode-input {
    flex: 1;
    max-width: 360px;
    padding: 10px 16px;
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 12px;
    color: rgba(255,255,255,0.9);
    font-size: 14px;
    font-family: 'SF Mono', 'Fira Code', monospace;
    letter-spacing: 0.5px;
    transition: all 0.25s cubic-bezier(0.4,0,0.2,1);
    outline: none;
}
.ra-barcode-input::placeholder { color: rgba(255,255,255,0.18); }
.ra-barcode-input:focus {
    border-color: rgba(96,165,250,0.5);
    background: rgba(255,255,255,0.07);
    box-shadow: 0 0 0 3px rgba(96,165,250,0.1);
}

/* 目标商品下拉搜索 */
.ra-target-dropdown {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    margin-top: 4px;
    max-height: 320px;
    overflow-y: auto;
    background: rgba(30,41,59,0.98);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 12px;
    box-shadow: 0 8px 32px rgba(0,0,0,0.4);
    z-index: 100;
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}
.ra-target-dropdown:empty { display: none; }
.ra-target-dropdown::-webkit-scrollbar { width: 5px; }
.ra-target-dropdown::-webkit-scrollbar-track { background: transparent; }
.ra-target-dropdown::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.12); border-radius: 3px; }

/* 主布局：3列 flex */
.ra-flow {
    display: flex;
    align-items: stretch;
    gap: 0;
    padding: 20px 28px;
    min-height: 220px;
    flex-shrink: 0;
}

/* 卡片容器 */
.ra-card {
    width: 250px;
    min-width: 250px;
    border-radius: 16px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    transition: all 0.35s cubic-bezier(0.4,0,0.2,1);
    position: relative;
}

/* 空状态卡片 */
.ra-card-empty {
    background: rgba(255,255,255,0.02);
    border: 1.5px dashed rgba(255,255,255,0.1);
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 180px;
}
.ra-card-empty .ra-card-icon {
    font-size: 28px;
    opacity: 0.2;
}
.ra-card-empty .ra-card-hint {
    font-size: 12px;
    color: rgba(255,255,255,0.2);
    text-align: center;
    line-height: 1.5;
}

/* 填充状态卡片 */
.ra-card-filled {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    backdrop-filter: blur(8px) saturate(1.2);
    -webkit-backdrop-filter: blur(8px) saturate(1.2);
    box-shadow: 0 4px 24px rgba(0,0,0,0.2), inset 0 1px 0 rgba(255,255,255,0.06);
}
.ra-card-filled.ra-source {
    border-top: 2px solid rgba(248,113,113,0.5);
}
.ra-card-filled.ra-target {
    border-top: 2px solid rgba(96,165,250,0.5);
}

/* 卡片头部色条 */
.ra-card-accent {
    height: 3px;
    flex-shrink: 0;
}
.ra-source .ra-card-accent {
    background: linear-gradient(90deg, rgba(248,113,113,0.6), rgba(248,113,113,0.1));
}
.ra-target .ra-card-accent {
    background: linear-gradient(90deg, rgba(96,165,250,0.1), rgba(96,165,250,0.6));
}

/* 卡片内容 */
.ra-card-content {
    padding: 16px 18px;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 10px;
    overflow-y: auto;
}
.ra-card-tag {
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    padding: 2px 8px;
    border-radius: 4px;
    display: inline-block;
    width: fit-content;
}
.ra-source .ra-card-tag {
    background: rgba(248,113,113,0.12);
    color: rgba(248,113,113,0.7);
}
.ra-target .ra-card-tag {
    background: rgba(96,165,250,0.12);
    color: rgba(96,165,250,0.7);
}
.ra-card-name {
    font-size: 15px;
    font-weight: 600;
    color: rgba(255,255,255,0.9);
    line-height: 1.3;
}
.ra-card-code {
    font-size: 11px;
    font-family: 'SF Mono', 'Fira Code', monospace;
    color: rgba(255,255,255,0.3);
}
.ra-card-section-label {
    font-size: 10px;
    font-weight: 500;
    color: rgba(255,255,255,0.3);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-top: 4px;
}

/* 卡片内的搜索输入 */
.ra-card-search {
    width: 100%;
    padding: 8px 12px;
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 8px;
    color: rgba(255,255,255,0.85);
    font-size: 13px;
    outline: none;
    transition: all 0.2s;
}
.ra-card-search::placeholder { color: rgba(255,255,255,0.18); }
.ra-card-search:focus {
    border-color: rgba(96,165,250,0.4);
    background: rgba(255,255,255,0.06);
}

/* 卡片内搜索结果 */
.ra-card-results {
    max-height: 120px;
    overflow-y: auto;
    border: 1px solid rgba(255,255,255,0.06);
    border-radius: 8px;
    margin-top: 4px;
}
.ra-card-results:empty { display: none; }

/* 卡片底部操作 */
.ra-card-footer {
    padding: 10px 18px;
    border-top: 1px solid rgba(255,255,255,0.04);
    flex-shrink: 0;
}
.ra-card-reset {
    font-size: 11px;
    color: rgba(96,165,250,0.5);
    cursor: pointer;
    background: none;
    border: none;
    padding: 0;
    transition: color 0.15s;
}
.ra-card-reset:hover { color: rgba(96,165,250,0.9); }

/* ===== 粒子动画区（Pipeline） ===== */
.ra-pipeline {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 16px;
    padding: 0 16px;
    min-width: 160px;
    opacity: 0;
    transition: opacity 0.6s ease;
}
.ra-pipeline.active { opacity: 1; }

.ra-pipeline-lane {
    width: 100%;
    position: relative;
    height: 2px;
    display: flex;
    align-items: center;
}
.ra-pipeline-track {
    width: 100%;
    height: 1.5px;
    border-radius: 1px;
    position: relative;
    overflow: visible;
}
.ra-pipeline-track.sales { background: rgba(248,113,113,0.15); }
.ra-pipeline-track.inventory { background: rgba(96,165,250,0.15); }
.ra-pipeline-track.barcode { background: rgba(52,211,153,0.15); }

/* 流线标签 */
.ra-pipeline-labels {
    display: flex;
    justify-content: space-between;
    width: 100%;
    margin-bottom: 2px;
}
.ra-pipeline-lbl {
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.3px;
}
.ra-pipeline-lbl.out { color: rgba(255,255,255,0.2); }
.ra-pipeline-lbl.in { color: rgba(255,255,255,0.2); }

/* 数据类型标签 */
.ra-pipeline-type {
    position: absolute;
    top: -16px;
    left: 50%;
    transform: translateX(-50%);
    font-size: 10px;
    padding: 1px 7px;
    border-radius: 4px;
    white-space: nowrap;
    pointer-events: none;
}
.ra-pipeline-type.sales { background: rgba(248,113,113,0.1); color: rgba(248,113,113,0.6); }
.ra-pipeline-type.inventory { background: rgba(96,165,250,0.1); color: rgba(96,165,250,0.6); }
.ra-pipeline-type.barcode { background: rgba(52,211,153,0.1); color: rgba(52,211,153,0.6); }

/* SVG 粒子 */
.ra-pipeline svg {
    position: absolute;
    top: 50%;
    left: 0;
    width: 100%;
    height: 12px;
    transform: translateY(-50%);
    overflow: visible;
}
.ra-pipeline circle {
    animation: raParticleRight 2.4s linear infinite;
    animation-play-state: paused;
}
.ra-pipeline.active circle { animation-play-state: running; }

@keyframes raParticleRight {
    0% { r: 2; opacity: 0; cx: 0%; }
    10% { opacity: 1; }
    90% { opacity: 1; }
    100% { r: 1.5; opacity: 0; cx: 100%; }
}

/* 方向箭头（中间） */
.ra-pipeline-arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    color: rgba(255,255,255,0.12);
    animation: raArrowPulse 2s ease-in-out infinite;
}
.ra-pipeline-arrow.paused { animation: none; opacity: 0.06; }
@keyframes raArrowPulse {
    0%, 100% { opacity: 0.12; transform: translateX(0); }
    50% { opacity: 0.25; transform: translateX(3px); }
}

/* ===== 底部区域 ===== */
.ra-bottom {
    padding: 0 28px 20px;
    display: flex;
    gap: 16px;
    flex-shrink: 0;
}
.ra-bottom-group {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.ra-bottom-group.date { flex: 0 0 260px; }
.ra-bottom-group.reason { flex: 1; }
.ra-bottom-label {
    font-size: 11px;
    font-weight: 500;
    color: rgba(255,255,255,0.4);
    letter-spacing: 0.2px;
}
.ra-bottom-hint {
    font-size: 10px;
    color: rgba(255,255,255,0.22);
    margin-top: 2px;
}

/* Flatpickr 暗色覆盖（仅 ra-body 内） */
.ra-flatpickr-wrap { position: relative; }
.ra-flatpickr-wrap .flatpickr-input {
    width: 100%;
    padding: 9px 14px;
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 10px;
    color: rgba(255,255,255,0.85);
    font-size: 13px;
    font-family: inherit;
    cursor: pointer;
    transition: all 0.2s;
    outline: none;
}
.ra-flatpickr-wrap .flatpickr-input:focus {
    border-color: rgba(96,165,250,0.5);
    box-shadow: 0 0 0 3px rgba(96,165,250,0.1);
}
.ra-flatpickr-wrap .flatpickr-input::placeholder { color: rgba(255,255,255,0.18); }

.ra-bottom .ra-reason-input {
    width: 100%;
    padding: 9px 14px;
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 10px;
    color: rgba(255,255,255,0.85);
    font-size: 13px;
    font-family: inherit;
    resize: vertical;
    min-height: 38px;
    max-height: 80px;
    outline: none;
    transition: all 0.2s;
}
.ra-bottom .ra-reason-input::placeholder { color: rgba(255,255,255,0.18); }
.ra-bottom .ra-reason-input:focus {
    border-color: rgba(96,165,250,0.5);
    box-shadow: 0 0 0 3px rgba(96,165,250,0.1);
}

/* Flatpickr 日历暗色覆盖 */
.flatpickr-calendar.ra-dark {
    background: rgba(15,23,42,0.95) !important;
    backdrop-filter: blur(20px) saturate(1.4) !important;
    border: 1px solid rgba(255,255,255,0.12) !important;
    border-radius: 12px !important;
    box-shadow: 0 16px 48px rgba(0,0,0,0.5) !important;
    color: rgba(255,255,255,0.8) !important;
}
.flatpickr-calendar.ra-dark .flatpickr-months .flatpickr-month {
    background: transparent !important;
    color: rgba(255,255,255,0.8) !important;
    fill: rgba(255,255,255,0.8) !important;
}
.flatpickr-calendar.ra-dark .flatpickr-current-month .flatpickr-monthDropdown-months {
    background: rgba(255,255,255,0.08) !important;
    color: rgba(255,255,255,0.8) !important;
}
.flatpickr-calendar.ra-dark .flatpickr-current-month input.cur-year {
    background: rgba(255,255,255,0.08) !important;
    color: rgba(255,255,255,0.8) !important;
}
.flatpickr-calendar.ra-dark .flatpickr-weekdays { background: transparent !important; }
.flatpickr-calendar.ra-dark span.flatpickr-weekday {
    color: rgba(255,255,255,0.35) !important;
    font-weight: 500 !important;
}
.flatpickr-calendar.ra-dark .flatpickr-day {
    color: rgba(255,255,255,0.7) !important;
    border: none !important;
    border-radius: 8px !important;
    transition: all 0.15s !important;
}
.flatpickr-calendar.ra-dark .flatpickr-day:hover {
    background: rgba(96,165,250,0.15) !important;
    color: #fff !important;
}
.flatpickr-calendar.ra-dark .flatpickr-day.selected {
    background: rgba(59,130,246,0.85) !important;
    color: #fff !important;
    box-shadow: 0 2px 8px rgba(59,130,246,0.3) !important;
}
.flatpickr-calendar.ra-dark .flatpickr-day.today {
    border: 1px solid rgba(96,165,250,0.4) !important;
    color: #60a5fa !important;
}
.flatpickr-calendar.ra-dark .flatpickr-day.prevMonthDay,
.flatpickr-calendar.ra-dark .flatpickr-day.nextMonthDay {
    color: rgba(255,255,255,0.15) !important;
}
.flatpickr-calendar.ra-dark .flatpickr-months .flatpickr-prev-month svg,
.flatpickr-calendar.ra-dark .flatpickr-months .flatpickr-next-month svg {
    fill: rgba(255,255,255,0.5) !important;
}
.flatpickr-calendar.ra-dark .flatpickr-months .flatpickr-prev-month:hover svg,
.flatpickr-calendar.ra-dark .flatpickr-months .flatpickr-next-month:hover svg {
    fill: rgba(255,255,255,0.9) !important;
}

/* ===== 归档工单专用：橙色 accent 变体 ===== */
.ra-card-filled.pa-archiving {
    border-top: 2px solid rgba(245,158,11,0.5);
}
.pa-archiving .ra-card-accent {
    background: linear-gradient(90deg, rgba(245,158,11,0.6), rgba(245,158,11,0.1));
}
.pa-archiving .ra-card-tag {
    color: #fbbf24;
    background: rgba(245,158,11,0.12);
}

/* 归档源卡片统计 */
.pa-stats {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px 12px;
    margin-top: 10px;
}
.pa-stat-item {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.pa-stat-label {
    font-size: 10px;
    color: rgba(255,255,255,0.3);
}
.pa-stat-value {
    font-size: 13px;
    font-weight: 600;
    color: rgba(255,255,255,0.7);
}
.pa-stat-value.danger { color: #f87171; }
.pa-stat-value.warning { color: #fbbf24; }
.pa-stat-value.info { color: #60a5fa; }

/* 归档一键新建折叠区 */
.pa-quick-create {
    border-top: 1px solid rgba(255,255,255,0.05);
    padding: 0;
}
.pa-qc-toggle {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 28px;
    font-size: 12px;
    color: rgba(255,255,255,0.35);
    cursor: pointer;
    transition: color 0.15s;
    user-select: none;
}
.pa-qc-toggle:hover { color: rgba(255,255,255,0.6); }
.pa-qc-toggle .pa-qc-arrow {
    font-size: 10px;
    transition: transform 0.2s;
}
.pa-qc-toggle.open .pa-qc-arrow { transform: rotate(90deg); }
.pa-qc-body {
    display: none;
    padding: 0 28px 16px;
    gap: 10px;
}
.pa-qc-body.open { display: grid; grid-template-columns: 2fr 1fr 1fr auto; align-items: end; }
.pa-qc-body input {
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 8px;
    padding: 8px 10px;
    font-size: 12px;
    color: rgba(255,255,255,0.85);
    outline: none;
}
.pa-qc-body input::placeholder { color: rgba(255,255,255,0.2); }
.pa-qc-body input:focus { border-color: rgba(245,158,11,0.4); }
.pa-qc-btn {
    padding: 8px 14px;
    background: rgba(245,158,11,0.15);
    border: 1px solid rgba(245,158,11,0.25);
    border-radius: 8px;
    color: #fbbf24;
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.15s;
    white-space: nowrap;
}
.pa-qc-btn:hover { background: rgba(245,158,11,0.25); }
.pa-qc-btn:disabled { opacity: 0.5; cursor: not-allowed; }

/* ===== 库存影响预览（归档+迁移共用） ===== */
.stock-preview-box {
    margin-top: 8px;
    padding: 10px 12px;
    border-radius: 10px;
}
/* 源库存展示（默认红色/源卡片用） */
.sp-source-stock {
    background: rgba(248,113,113,0.06);
    border: 1px solid rgba(248,113,113,0.15);
}
.sp-source-stock .sp-stock-value { color: #f87171; }
.sp-source-stock .sp-stock-hint { background: rgba(248,113,113,0.08); color: rgba(248,113,113,0.5); }
/* 正数绿色覆盖 */
.sp-stock-positive .sp-stock-value { color: #4ade80; }
.sp-stock-positive .sp-stock-hint { background: rgba(74,222,128,0.08); color: rgba(74,222,128,0.5); }
/* 零值灰色 */
.sp-stock-zero .sp-stock-value { color: rgba(255,255,255,0.45); }
.sp-stock-zero .sp-stock-hint { background: rgba(255,255,255,0.05); color: rgba(255,255,255,0.3); }

.sp-stock-label {
    font-size: 10px;
    color: rgba(255,255,255,0.35);
    margin-bottom: 6px;
    display: flex;
    align-items: center;
    gap: 4px;
}
.sp-stock-number {
    display: flex;
    align-items: baseline;
    gap: 6px;
}
.sp-stock-number .sp-stock-value {
    font-size: 22px;
    font-weight: 600;
}
.sp-stock-number .sp-stock-unit {
    font-size: 12px;
    color: rgba(255,255,255,0.45);
}
.sp-stock-hint {
    margin-top: 6px;
    padding: 4px 8px;
    border-radius: 4px;
    font-size: 11px;
}

/* 目标预览表 */
.sp-impact-table {
    background: rgba(96,165,250,0.06);
    border: 1px solid rgba(96,165,250,0.15);
}
.sp-impact-title {
    font-size: 10px;
    color: rgba(255,255,255,0.35);
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 4px;
}
.sp-impact-header {
    display: grid;
    grid-template-columns: 56px 1fr 1fr;
    font-size: 10px;
    color: rgba(255,255,255,0.3);
    padding: 3px 0;
    border-bottom: 1px solid rgba(255,255,255,0.06);
    margin-bottom: 6px;
}
.sp-impact-row {
    display: grid;
    grid-template-columns: 56px 1fr 1fr;
    align-items: center;
    padding: 5px 0;
    border-radius: 6px;
    margin-bottom: 3px;
}
.sp-impact-row.active {
    background: rgba(96,165,250,0.08);
}
.sp-impact-row.active .sp-i-spec { color: rgba(255,255,255,0.85); font-weight: 500; }
.sp-impact-row:not(.active) .sp-i-spec { color: rgba(255,255,255,0.42); }
.sp-impact-row:not(.active) .sp-i-current,
.sp-impact-row:not(.active) .sp-i-after { color: rgba(255,255,255,0.38); font-size: 12px; }
.sp-i-current { text-align: right; font-size: 13px; color: rgba(255,255,255,0.6); }
.sp-i-after { text-align: right; font-size: 13px; font-weight: 600; color: #f87171; }
.sp-i-op-unit { font-size: 11px; font-weight: 400; color: rgba(248,113,113,0.6); margin-left: 4px; }
.sp-final-stock {
    margin-top: 10px;
    padding: 8px 12px;
    background: rgba(59,130,246,0.08);
    border-left: 3px solid #3b82f6;
    border-radius: 6px;
    font-size: 13px;
    color: rgba(255,255,255,0.8);
}
.sp-final-val { color: #3b82f6; font-weight: 600; margin-left: 4px; }
.sp-final-formula { margin-left: 6px; font-variant-numeric: tabular-nums; }
.sp-impact-note {
    margin-top: 8px;
    padding: 6px 8px;
    background: rgba(245,158,11,0.06);
    border-radius: 6px;
    font-size: 11px;
    display: flex;
    align-items: center;
    gap: 6px;
    color: rgba(245,158,11,0.75);
}

/* 商品管理：待归档标识 */
.pm-tag-pending {
    display: inline-block;
    padding: 1px 6px;
    border-radius: 4px;
    font-size: 10px;
    font-weight: 500;
    background: rgba(245,158,11,0.12);
    color: #fbbf24;
    border: 1px solid rgba(245,158,11,0.2);
    margin-left: 4px;
    vertical-align: middle;
    animation: pmPendingPulse 2s ease-in-out infinite;
}
@keyframes pmPendingPulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.6; }
}

/* 归档搜索面板（正常文档流，展开在双卡片下方） */
.pa-search-panel {
    margin: 0 28px;
    background: rgba(22, 22, 30, 0.97);
    backdrop-filter: blur(16px) saturate(1.3);
    -webkit-backdrop-filter: blur(16px) saturate(1.3);
    border: 1px solid rgba(96,165,250,0.15);
    border-radius: 16px;
    box-shadow: 0 8px 32px rgba(0,0,0,0.4), 0 0 0 1px rgba(96,165,250,0.05);
    overflow: hidden;
    animation: paPanelIn 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes paPanelIn {
    from { opacity: 0; transform: translateY(-8px); }
    to { opacity: 1; transform: translateY(0); }
}
.pa-search-panel-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 18px;
    border-bottom: 1px solid rgba(255,255,255,0.05);
}
.pa-search-panel-header .pa-sp-title {
    font-size: 11px;
    font-weight: 600;
    color: rgba(255,255,255,0.35);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.pa-search-panel-header .pa-sp-count {
    font-size: 11px;
    color: rgba(255,255,255,0.25);
}
.pa-search-panel-list {
    max-height: 280px;
    overflow-y: auto;
    padding: 6px;
    scrollbar-gutter: stable;
}
.pa-search-panel-list::-webkit-scrollbar { width: 4px; }
.pa-search-panel-list::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.08); border-radius: 4px; }

/* 搜索结果项 */
.pa-sp-item {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 12px 14px;
    border-radius: 10px;
    cursor: pointer;
    transition: all 0.15s;
    border: 1px solid transparent;
}
.pa-sp-item:hover {
    background: rgba(96,165,250,0.08);
    border-color: rgba(96,165,250,0.12);
}
.pa-sp-item-icon {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: rgba(96,165,250,0.1);
    border: 1px solid rgba(96,165,250,0.15);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    flex-shrink: 0;
    color: rgba(96,165,250,0.6);
}
.pa-sp-item-body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.pa-sp-item-name {
    font-size: 13.5px;
    font-weight: 600;
    color: rgba(255,255,255,0.9);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.3;
}
.pa-sp-item-meta {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
.pa-sp-item-tag {
    font-size: 11px;
    color: rgba(255,255,255,0.4);
    display: inline-flex;
    align-items: center;
    gap: 3px;
}
.pa-sp-item-tag code {
    font-family: 'SF Mono', 'Menlo', monospace;
    font-size: 11px;
    color: rgba(96,165,250,0.6);
    background: rgba(96,165,250,0.08);
    padding: 0 5px;
    border-radius: 4px;
}
.pa-sp-item-tag.spec-count {
    color: rgba(167,139,250,0.6);
}
.pa-sp-item-check {
    font-size: 14px;
    opacity: 0;
    transition: opacity 0.15s;
    flex-shrink: 0;
    color: #34d399;
}
.pa-sp-item:hover .pa-sp-item-check { opacity: 0.6; }

/* ======================== 销售出库页面 — Premium Dashboard ======================== */

/* --- 页面容器 --- */
#page-bills .manage-section {
    display: flex;
    flex-direction: column;
    gap: 16px;
    animation: billsFadeIn 0.4s ease;
}
@keyframes billsFadeIn {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
}

/* --- 顶部工具栏 --- */
.bills-toolbar {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
.bills-toolbar .btn-primary {
    background: linear-gradient(135deg, var(--primary), #6366f1);
    border: none;
    color: white;
    font-size: 13px;
    font-weight: 600;
    padding: 9px 22px;
    border-radius: 10px;
    cursor: pointer;
    transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 2px 12px rgba(59, 130, 246, 0.25);
    letter-spacing: 0.2px;
}
.bills-toolbar .btn-primary:hover {
    box-shadow: 0 4px 20px rgba(59, 130, 246, 0.4);
    transform: translateY(-1px);
}
.bills-toolbar .btn-primary:active {
    transform: translateY(0);
    box-shadow: 0 1px 6px rgba(59, 130, 246, 0.2);
}
.bills-toolbar .btn-ghost {
    font-size: 13px;
    padding: 9px 16px;
    background: var(--glass-bg);
    backdrop-filter: blur(8px);
    color: var(--text-secondary);
    border: 1px solid var(--glass-border);
    border-radius: 10px;
    cursor: pointer;
    transition: all 0.2s;
    font-weight: 500;
}
.bills-toolbar .btn-ghost:hover {
    background: var(--glass-bg-hover);
    border-color: var(--glass-border-hover);
    color: var(--text-primary);
}
.bills-result-count {
    margin-left: auto;
    font-size: 12px;
    color: var(--text-muted);
    font-weight: 500;
    font-variant-numeric: tabular-nums;
}

/* --- 筛选栏 --- */
.bills-filter-bar {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 18px;
    background: var(--glass-bg);
    backdrop-filter: blur(12px);
    border-radius: 14px;
    border: 1px solid var(--glass-border);
    flex-wrap: wrap;
    box-shadow: var(--glass-shadow);
}
.bills-filter-group {
    display: flex;
    align-items: center;
    gap: 8px;
}
.bills-filter-label {
    font-size: 12px;
    color: var(--text-muted);
    font-weight: 600;
    white-space: nowrap;
    letter-spacing: 0.3px;
}
.bills-filter-sep {
    color: var(--text-muted);
    font-size: 12px;
    opacity: 0.4;
}
.bills-filter-divider {
    width: 1px;
    height: 20px;
    background: rgba(255, 255, 255, 0.06);
    margin: 0 4px;
}
.bills-input {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.08);
    color: var(--text-primary);
    padding: 7px 12px;
    border-radius: 8px;
    font-size: 13px;
    outline: none;
    transition: all 0.2s;
    width: 130px;
}
.bills-input:focus {
    border-color: rgba(59, 130, 246, 0.5);
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.08);
    background: rgba(255, 255, 255, 0.07);
}
.bills-input::placeholder {
    color: var(--text-muted);
    opacity: 0.5;
    font-size: 12px;
}
.bills-input-search {
    flex: 1;
    min-width: 160px;
}
.bills-select {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.08);
    color: var(--text-primary);
    padding: 7px 28px 7px 12px;
    border-radius: 8px;
    font-size: 13px;
    outline: none;
    transition: all 0.2s;
    cursor: pointer;
    appearance: none;
    -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2394a3b8' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
}
.bills-select option {
    background: #1e293b;
    color: #e2e8f0;
}
.bills-select:focus {
    border-color: rgba(59, 130, 246, 0.5);
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.08);
}
.bills-select:hover {
    border-color: rgba(255, 255, 255, 0.14);
}
.bills-filter-clear {
    padding: 6px 14px;
    background: rgba(239, 68, 68, 0.06);
    color: #f87171;
    border: 1px solid rgba(239, 68, 68, 0.12);
    border-radius: 8px;
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s;
    white-space: nowrap;
}
.bills-filter-clear:hover {
    background: rgba(239, 68, 68, 0.12);
    border-color: rgba(239, 68, 68, 0.22);
}

/* ===== 商家数据导入日历面板（玻璃卡片） ===== */
.import-calendar-card {
    background: var(--glass-bg);
    backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
    -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(1.4);
    border: 1px solid var(--glass-border);
    border-radius: 16px;
    margin-bottom: 18px;
    overflow: hidden;
    box-shadow: var(--glass-shadow),
                inset 0 1px 0 var(--glass-highlight);
    transition: border-color 300ms ease, box-shadow 300ms ease;
}
.import-calendar-card:hover {
    border-color: var(--glass-border-hover);
}

/* 日历头部 */
.calendar-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 20px 10px;
    border-bottom: 1px solid rgba(255,255,255,0.06);
}
.calendar-title-row {
    display: flex;
    align-items: center;
    gap: 8px;
}
.calendar-icon {
    font-size: 18px;
}
.calendar-title {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
    letter-spacing: 0.3px;
}
.calendar-subtitle {
    font-size: 11px;
    color: var(--text-muted);
    margin-left: 6px;
    padding: 2px 8px;
    background: rgba(99,102,241,0.08);
    border-radius: 10px;
    font-weight: 500;
}
.calendar-refresh-btn {
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 8px;
    cursor: pointer;
    font-size: 14px;
    transition: all 0.2s;
    color: var(--text-secondary);
}
.calendar-refresh-btn:hover {
    background: rgba(255,255,255,0.1);
    border-color: rgba(255,255,255,0.15);
    transform: rotate(180deg);
}

/* 日历主体 */
.calendar-body {
    padding: 12px 20px 16px;
    overflow-x: auto;
}
.calendar-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 28px 0;
    color: var(--text-muted);
    font-size: 13px;
}
.calendar-loading-spinner {
    width: 18px;
    height: 18px;
    border: 2px solid rgba(255,255,255,0.1);
    border-top-color: var(--primary);
    border-radius: 50%;
    animation: calendar-spin 0.7s linear infinite;
}
@keyframes calendar-spin { to { transform: rotate(360deg); } }

/* 日历网格 */
.calendar-grid {
    min-width: 100%;
}
.calendar-row-labels {
    display: grid;
    gap: 6px;
    margin-bottom: 8px;
}
.calendar-label-cell {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 4px 0;
    font-size: 12px;
    color: var(--text-secondary);
    font-weight: 500;
}
.calendar-seller-badge {
    font-size: 11px;
    padding: 1px 7px;
    border-radius: 5px;
    font-weight: 600;
    white-space: nowrap;
    letter-spacing: 0.2px;
}
.badge-meicai { background: rgba(59,130,246,0.14); color: #60a5fa; }
.badge-kuaima { background: rgba(245,158,11,0.14); color: #fbbf24; }
.badge-other   { background: rgba(148,163,184,0.14); color: #94a3b8; }

.calendar-week-grid {
    display: grid;
    grid-template-columns: 90px repeat(14, 1fr);
    gap: 4px;
}
.calendar-label-spacer {
    /* Empty placeholder to align header columns with data row label column */
}
.calendar-day-header {
    text-align: center;
    font-size: 10px;
    color: var(--text-muted);
    font-weight: 600;
    padding-bottom: 6px;
    position: relative;
}
.calendar-day-header.today {
    color: var(--primary);
}
.calendar-day-header.today::after {
    content: '';
    position: absolute;
    bottom: 2px;
    left: 50%;
    transform: translateX(-50%);
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: var(--primary);
}
.calendar-day-header .weekday {
    font-size: 9px;
    opacity: 0.5;
    display: block;
    margin-top: 1px;
    font-weight: 400;
}

.calendar-data-rows {
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.calendar-data-row {
    display: grid;
    grid-template-columns: 90px repeat(14, 1fr);
    gap: 4px;
    align-items: center;
}

/* ===== 日历格子（双色方案：支持单平台纯色 + 双平台拼色） ===== */
.cal-cell {
    aspect-ratio: 1.55;
    border-radius: 5px;
    cursor: pointer;
    position: relative;
    transition: all 0.22s cubic-bezier(.34,1.56,.64,1);
    font-size: 9px;
    font-weight: 600;
    min-height: 26px;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
}
/* 空格 */
.cal-cell.empty {
    background: rgba(255,255,255,0.02);
    border: 1px dashed rgba(255,255,255,0.05);
    cursor: default;
}

/* 美菜 — 绿色系 */
.cal-cell.single-meicai {
    background: rgba(34,197,94,0.18);
    border: 1px solid rgba(34,197,94,0.40);
    color: #86efac;
}
.cal-cell.single-meicai:hover {
    transform: scale(1.2) translateY(-1px);
    background: rgba(34,197,94,0.30);
    border-color: rgba(34,197,94,0.60);
    box-shadow: 0 2px 14px rgba(34,197,94,0.25);
    z-index: 5;
}

/* 快驴 — 蓝色系 */
.cal-cell.single-kuaima {
    background: rgba(59,130,246,0.18);
    border: 1px solid rgba(59,130,246,0.40);
    color: #93c5fd;
}
.cal-cell.single-kuaima:hover {
    transform: scale(1.2) translateY(-1px);
    background: rgba(59,130,246,0.30);
    border-color: rgba(59,130,246,0.60);
    box-shadow: 0 2px 14px rgba(59,130,246,0.25);
    z-index: 5;
}

/* ★★★ 双平台同日 — 左蓝右琥珀拼色格 ★★★ */
.cal-cell.dual {
    border: none;
    background-image: linear-gradient(
        to right,
        rgba(59,130,246,0.18) 0%, rgba(59,130,246,0.18) 49%,
        rgba(245,158,11,0.18) 51%, rgba(245,158,11,0.18) 100%
    );
    border-image: linear-gradient(to right, rgba(59,130,246,0.40), rgba(245,158,11,0.40)) 1;
}
.cal-cell.dual::before {
    content: '';
    position: absolute;
    left: 50%;
    top: 0;
    bottom: 0;
    width: 0;
    border-left: 1px dashed rgba(255,255,255,0.15);
    z-index: 1;
}
.cal-cell.dual:hover {
    transform: scale(1.22) translateY(-2px);
    box-shadow: 0 4px 20px rgba(99,102,241,0.2);
    z-index: 5;
}
/* 拼色格左右两半 */
.cal-cell.dual .cell-half {
    position: absolute;
    top: 0; bottom: 0;
    width: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 10px;
    font-weight: 700;
    transition: all 0.2s;
    z-index: 2;
}
.cal-cell.dual .cell-half.left { left: 0; color: #93c5fd; }
.cal-cell.dual .cell-half.right { right: 0; color: #fcd34d; }
.cal-cell.dual:hover .cell-half.left { background: rgba(59,130,246,0.25); }
.cal-cell.dual:hover .cell-half.right { background: rgba(245,158,11,0.25); }

/* 今日标记 */
.cal-cell.is-today { box-shadow: 0 0 0 1.5px var(--primary); }

/* Tooltip */
.cal-cell .cell-tooltip {
    display: none;
    position: absolute;
    bottom: calc(100% + 8px);
    left: 50%;
    transform: translateX(-50%);
    background: rgba(30,41,59,0.96);
    backdrop-filter: blur(12px);
    border: 1px solid rgba(255,255,255,0.12);
    border-radius: 10px;
    padding: 10px 14px;
    font-size: 12px;
    white-space: nowrap;
    z-index: 100;
    pointer-events: none;
    box-shadow: 0 8px 32px rgba(0,0,0,0.45);
    line-height: 1.65;
    color: var(--text-primary);
    min-width: 200px;
}
.cal-cell .cell-tooltip::after {
    content: '';
    position: absolute;
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    border: 6px solid transparent;
    border-top-color: rgba(255,255,255,0.10);
}
.cal-cell:hover .cell-tooltip { display: block; }
.tt-row { display: flex; justify-content: space-between; gap: 16px; }
.tt-lbl { color: var(--text-muted); }
.tt-val { font-weight: 600; color: var(--text-primary); }
.tt-val.mc { color: #86efac; }
.tt-val.km { color: #93c5fd; }
.tt-divider { height: 1px; background: rgba(255,255,255,0.06); margin: 5px 0; }


/* 图例 */
.calendar-legend {
    display: flex;
    align-items: center;
    gap: 18px;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid rgba(255,255,255,0.05);
    flex-wrap: wrap;
}
.legend-item {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    color: var(--text-muted);
}
.legend-dot { border-radius: 3px; overflow: hidden; display: inline-flex; }
.ld-single-mc { width: 12px; height: 12px; background: rgba(34,197,94,0.18); border: 1px solid rgba(34,197,94,0.40); }
.ld-single-km { width: 12px; height: 12px; background: rgba(59,130,246,0.18); border: 1px solid rgba(59,130,246,0.40); }
.ld-dual { width: 12px; height: 12px; background-image: linear-gradient(to right, rgba(34,197,94,0.18)50%,rgba(59,130,246,0.18)50%); border: 1px solid rgba(255,255,255,0.1); }
.ld-empty { width: 12px; height: 12px; background: rgba(255,255,255,0.03); border: 1px dashed rgba(255,255,255,0.1); }
.ld-today { width: 6px; height: 6px; border-radius: 50%; background: var(--primary); border: none; }

/* 日历翻页按钮 */
.calendar-header-actions {
    display: flex;
    align-items: center;
    gap: 6px;
}
.calendar-nav-btn {
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 8px;
    cursor: pointer;
    font-size: 11px;
    color: var(--text-secondary);
    transition: all 0.2s;
}
.calendar-nav-btn:hover {
    background: rgba(99,102,241,0.12);
    border-color: rgba(99,102,241,0.3);
    color: var(--primary);
}

/* 标题组（标题+副标题竖排） */
.calendar-title-group {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

/* 有数据格子 — 统一绿色调填充 */
.cal-cell.has-data {
    background: rgba(34,197,94,0.12);
    border: 1px solid rgba(34,197,94,0.25);
    position: relative;
    transition: all 0.18s cubic-bezier(.34,1.56,.64,1);
}
.cal-cell.has-data:hover {
    background: rgba(34,197,94,0.22);
    border-color: rgba(34,197,94,0.5);
    transform: scale(1.15);
    z-index: 3;
    box-shadow: 0 4px 16px rgba(34,197,94,0.20);
}
.check-mark {
    font-size: 14px;
    font-weight: 700;
    color: #22c55e;
}

/* 格子底部平台指示小点 */
.cell-platform-dots {
    position: absolute;
    bottom: 3px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 3px;
    pointer-events: none;
}
.plat-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    flex-shrink: 0;
}

/* 图例 — 有数据 */
.ld-has-data { width: 12px; height: 12px; background: rgba(34,197,94,0.15); border: 1px solid rgba(34,197,94,0.35); border-radius: 3px; }

/* --- KPI 统计卡片 --- */
.bills-kpi-bar {
    display: grid;
    grid-template-columns: 1.2fr 0.8fr 0.8fr 1fr;
    gap: 14px;
}
.bills-kpi-item {
    position: relative;
    border-radius: 16px;
    padding: 18px 20px;
    display: flex;
    align-items: center;
    gap: 14px;
    overflow: hidden;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    cursor: default;
    border: 1px solid rgba(255, 255, 255, 0.06);
}
.bills-kpi-item:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 30px rgba(0, 0, 0, 0.25);
}
/* 每色主题渐变背景 */
.bills-kpi-item.blue {
    background: linear-gradient(135deg, rgba(59, 130, 246, 0.08), rgba(59, 130, 246, 0.03));
}
.bills-kpi-item.blue:hover {
    background: linear-gradient(135deg, rgba(59, 130, 246, 0.12), rgba(59, 130, 246, 0.05));
    box-shadow: 0 8px 30px rgba(59, 130, 246, 0.1);
    border-color: rgba(59, 130, 246, 0.15);
}
.bills-kpi-item.green {
    background: linear-gradient(135deg, rgba(16, 185, 129, 0.08), rgba(16, 185, 129, 0.03));
}
.bills-kpi-item.green:hover {
    background: linear-gradient(135deg, rgba(16, 185, 129, 0.12), rgba(16, 185, 129, 0.05));
    box-shadow: 0 8px 30px rgba(16, 185, 129, 0.1);
    border-color: rgba(16, 185, 129, 0.15);
}
.bills-kpi-item.amber {
    background: linear-gradient(135deg, rgba(245, 158, 11, 0.08), rgba(245, 158, 11, 0.03));
}
.bills-kpi-item.amber:hover {
    background: linear-gradient(135deg, rgba(245, 158, 11, 0.12), rgba(245, 158, 11, 0.05));
    box-shadow: 0 8px 30px rgba(245, 158, 11, 0.1);
    border-color: rgba(245, 158, 11, 0.15);
}
.bills-kpi-item.purple {
    background: linear-gradient(135deg, rgba(139, 92, 246, 0.08), rgba(139, 92, 246, 0.03));
}
.bills-kpi-item.purple:hover {
    background: linear-gradient(135deg, rgba(139, 92, 246, 0.12), rgba(139, 92, 246, 0.05));
    box-shadow: 0 8px 30px rgba(139, 92, 246, 0.1);
    border-color: rgba(139, 92, 246, 0.15);
}
/* 右下角光晕装饰 */
.bills-kpi-item::after {
    content: '';
    position: absolute;
    width: 80px; height: 80px;
    border-radius: 50%;
    bottom: -20px; right: -20px;
    opacity: 0.06;
    filter: blur(20px);
    transition: opacity 0.3s;
}
.bills-kpi-item.blue::after { background: #3b82f6; }
.bills-kpi-item.green::after { background: #10b981; }
.bills-kpi-item.amber::after { background: #f59e0b; }
.bills-kpi-item.purple::after { background: #8b5cf6; }
.bills-kpi-item:hover::after { opacity: 0.12; }

.bills-kpi-icon {
    width: 42px; height: 42px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    flex-shrink: 0;
}
.bills-kpi-icon.blue { background: rgba(59, 130, 246, 0.12); }
.bills-kpi-icon.green { background: rgba(16, 185, 129, 0.12); }
.bills-kpi-icon.amber { background: rgba(245, 158, 11, 0.12); }
.bills-kpi-icon.purple { background: rgba(139, 92, 246, 0.12); }

.bills-kpi-content {
    flex: 1;
    min-width: 0;
}
.bills-kpi-value {
    font-size: 20px;
    font-weight: 700;
    line-height: 1.2;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.3px;
}
.bills-kpi-value.blue { color: #60a5fa; }
.bills-kpi-value.green { color: #34d399; }
.bills-kpi-value.amber { color: #fbbf24; }
.bills-kpi-value.purple { color: #a78bfa; }

.bills-kpi-label {
    font-size: 11px;
    color: var(--text-muted);
    margin-top: 4px;
    font-weight: 500;
    letter-spacing: 0.3px;
}

/* --- 数据表格容器 --- */
.bills-table-wrap {
    border-radius: 16px;
    overflow: hidden;
    background: var(--glass-bg);
    backdrop-filter: blur(8px);
    border: 1px solid var(--glass-border);
    box-shadow: var(--glass-shadow);
}
.bills-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}
.bills-table thead th {
    padding: 12px 16px;
    text-align: left;
    font-size: 11px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.4);
    letter-spacing: 0.4px;
    background: rgba(255, 255, 255, 0.02);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    white-space: nowrap;
    position: sticky;
    top: 0;
    z-index: 1;
}
.bills-table tbody tr {
    border-bottom: 1px solid rgba(255, 255, 255, 0.03);
    transition: all 0.15s;
    position: relative;
}
.bills-table tbody tr:last-child {
    border-bottom: none;
}
.bills-table tbody tr:hover {
    background: rgba(59, 130, 246, 0.04);
}
/* 行 hover 时显示左侧 accent */
.bills-table tbody tr::before {
    content: '';
    position: absolute;
    left: 0; top: 8px; bottom: 8px;
    width: 3px;
    border-radius: 0 3px 3px 0;
    background: var(--primary);
    opacity: 0;
    transition: opacity 0.2s;
}
.bills-table tbody tr:hover::before {
    opacity: 0.6;
}
.bills-table tbody td {
    padding: 13px 16px;
    color: var(--text-primary);
    vertical-align: middle;
}
/* 列样式 */
.bills-table .col-date {
    white-space: nowrap;
    color: var(--text-secondary);
    font-size: 12px;
    font-variant-numeric: tabular-nums;
    font-weight: 500;
}
.bills-table .col-date.is-today {
    color: #60a5fa;
}
.bills-table .col-filename {
    max-width: 280px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.92);
    font-size: 13px;
}
.bills-table .col-amount {
    font-weight: 700;
    color: #60a5fa;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    font-size: 14px;
    letter-spacing: -0.2px;
}
.bills-table .col-stat {
    color: var(--text-secondary);
    font-variant-numeric: tabular-nums;
    font-size: 12px;
}
.bills-table .col-merchant {
    max-width: 160px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--text-secondary);
    font-size: 12px;
}
.bills-table .col-time {
    color: var(--text-muted);
    font-size: 11px;
    white-space: nowrap;
}
.bills-table .col-actions {
    white-space: nowrap;
    text-align: right;
}

/* 平台标签 */
.bill-plat-tag {
    display: inline-block;
    padding: 3px 10px;
    border-radius: 6px;
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
    letter-spacing: 0.3px;
}
.bill-plat-tag.mc { background: rgba(16, 185, 129, 0.1); color: #34d399; }
.bill-plat-tag.kl { background: rgba(59, 130, 246, 0.1); color: #60a5fa; }
.bill-plat-tag.other { background: rgba(245, 158, 11, 0.1); color: #fbbf24; }

/* 操作按钮 */
.bills-btn-view,
.bills-btn-del {
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s;
    border: 1px solid transparent;
}
.bills-btn-view {
    background: rgba(59, 130, 246, 0.08);
    color: #60a5fa;
    border-color: rgba(59, 130, 246, 0.15);
}
.bills-btn-view:hover {
    background: rgba(59, 130, 246, 0.16);
    border-color: rgba(59, 130, 246, 0.3);
    box-shadow: 0 2px 8px rgba(59, 130, 246, 0.15);
}
.bills-btn-del {
    background: rgba(239, 68, 68, 0.04);
    color: #f87171;
    border-color: rgba(239, 68, 68, 0.1);
    margin-left: 4px;
}
.bills-btn-del:hover {
    background: rgba(239, 68, 68, 0.1);
    border-color: rgba(239, 68, 68, 0.2);
}

/* 空状态 */
.bills-empty {
    text-align: center;
    padding: 64px 20px;
}
.bills-empty-icon { font-size: 48px; margin-bottom: 14px; opacity: 0.6; }
.bills-empty-text { color: var(--text-secondary); font-size: 14px; margin-bottom: 6px; font-weight: 500; }
.bills-empty-hint { color: var(--text-muted); font-size: 12px; }

/* 加载状态 */
.bills-loading {
    text-align: center;
    padding: 60px 20px;
}
.bills-loading-spinner {
    width: 32px; height: 32px;
    border: 3px solid rgba(255,255,255,0.06);
    border-top-color: var(--primary);
    border-radius: 50%;
    animation: billsSpin 0.8s linear infinite;
    margin: 0 auto 14px;
}
@keyframes billsSpin {
    to { transform: rotate(360deg); }
}
.bills-loading-text { color: var(--text-muted); font-size: 13px; }

/* 表格滚动容器 */
.bills-scroll {
    max-height: calc(100vh - 370px);
    overflow-y: auto;
    overflow-x: auto;
}
.bills-scroll::-webkit-scrollbar { width: 6px; height: 6px; }
.bills-scroll::-webkit-scrollbar-track { background: transparent; }
.bills-scroll::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.06); border-radius: 3px; }
.bills-scroll::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.12); }

/* flatpickr 暗色覆盖 */
.bills-filter-bar .flatpickr-input {
    background: rgba(255, 255, 255, 0.05) !important;
    border: 1px solid rgba(255, 255, 255, 0.08) !important;
    color: var(--text-primary) !important;
    box-shadow: none !important;
    width: 130px;
}
.bills-filter-bar .flatpickr-input:focus {
    border-color: rgba(59, 130, 246, 0.5) !important;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.08) !important;
    background: rgba(255, 255, 255, 0.07) !important;
}

/* ===== 出库单明细弹窗 — Glassmorphism ===== */
#bill-detail-modal {
    background: rgba(0, 0, 0, 0) !important;
    backdrop-filter: blur(0) !important;
    -webkit-backdrop-filter: blur(0) !important;
    transition: background 0.25s ease;
    padding: 24px !important;
}
#bill-detail-modal.bd-active {
    background: rgba(0, 0, 0, 0.55) !important;
    backdrop-filter: blur(8px) saturate(1.2) !important;
    -webkit-backdrop-filter: blur(8px) saturate(1.2) !important;
}

.bd-card {
    background: rgba(15, 23, 42, 0.65);
    backdrop-filter: blur(var(--glass-blur-heavy)) saturate(1.6);
    -webkit-backdrop-filter: blur(var(--glass-blur-heavy)) saturate(1.6);
    border-radius: 20px;
    border: 1px solid rgba(255, 255, 255, 0.1);
    box-shadow: 0 24px 80px rgba(0, 0, 0, 0.5),
                0 0 0 1px rgba(255, 255, 255, 0.04),
                inset 0 1px 0 rgba(255, 255, 255, 0.08);
    max-width: 1140px;
    width: 96%;
    max-height: 92vh;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    animation: bd-cardIn 0.35s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    transform: translateY(20px) scale(0.97);
    opacity: 0;
}
@keyframes bd-cardIn {
    to { transform: translateY(0) scale(1); opacity: 1; }
}

/* 顶部渐变装饰线 */
.bd-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: linear-gradient(90deg, #3b82f6, #8b5cf6, #10b981, transparent);
    border-radius: 20px 20px 0 0;
}

/* Header */
.bd-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 24px 28px 0;
    flex-shrink: 0;
    position: relative;
}
.bd-title {
    font-size: 17px;
    font-weight: 600;
    color: var(--text-primary);
    display: flex;
    align-items: center;
    gap: 10px;
}
.bd-title-icon {
    width: 32px; height: 32px;
    border-radius: 8px;
    background: linear-gradient(135deg, rgba(59,130,246,0.2), rgba(139,92,246,0.15));
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    flex-shrink: 0;
}
.bd-close {
    width: 36px; height: 36px;
    border-radius: 10px;
    border: 1px solid rgba(255,255,255,0.08);
    background: rgba(255,255,255,0.04);
    color: var(--text-secondary);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    transition: all 0.2s;
    flex-shrink: 0;
}
.bd-close:hover {
    background: rgba(239,68,68,0.12);
    border-color: rgba(239,68,68,0.25);
    color: #f87171;
    transform: rotate(90deg);
}

/* Body (scrollable) */
.bd-body {
    flex: 1;
    overflow-y: auto;
    padding: 20px 28px 24px;
}
.bd-body::-webkit-scrollbar { width: 5px; }
.bd-body::-webkit-scrollbar-track { background: transparent; }
.bd-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.08); border-radius: 10px; }
.bd-body::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.14); }

/* Summary KPI 卡片 */
.bd-summary {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin-bottom: 16px;
}
.bd-stat {
    position: relative;
    text-align: center;
    padding: 16px 12px;
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.06);
    border-radius: 14px;
    transition: all 0.25s ease;
    overflow: hidden;
}
.bd-stat:hover {
    background: rgba(255,255,255,0.06);
    border-color: rgba(255,255,255,0.12);
    transform: translateY(-2px);
    box-shadow: 0 8px 24px rgba(0,0,0,0.2);
}
.bd-stat::after {
    content: '';
    position: absolute;
    bottom: 0; left: 20%; right: 20%;
    height: 2px;
    border-radius: 2px 2px 0 0;
    opacity: 0.6;
}
.bd-stat.blue::after { background: var(--primary); }
.bd-stat.green::after { background: var(--success); }
.bd-stat.amber::after { background: var(--warning); }
.bd-stat.purple::after { background: var(--purple); }

.bd-stat-value {
    font-size: 20px;
    font-weight: 700;
    margin-bottom: 4px;
    font-variant-numeric: tabular-nums;
}
.bd-stat.blue .bd-stat-value { color: #60a5fa; }
.bd-stat.green .bd-stat-value { color: #34d399; }
.bd-stat.amber .bd-stat-value { color: #fbbf24; }
.bd-stat.purple .bd-stat-value { color: #a78bfa; }

.bd-stat-label {
    font-size: 11px;
    color: var(--text-secondary);
    font-weight: 500;
    letter-spacing: 0.3px;
}

/* 视图操作栏 */
.bd-toolbar {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 16px;
}
.bd-toolbar-label {
    font-size: 12px;
    color: var(--text-secondary);
    font-weight: 500;
}
.bd-toolbar select {
    padding: 6px 28px 6px 10px;
    background: rgba(255,255,255,0.04);
    color: var(--text-primary);
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 8px;
    font-size: 12px;
    cursor: pointer;
    outline: none;
    transition: all 0.2s;
    appearance: none;
    -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2394a3b8' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
}
.bd-toolbar select:hover {
    border-color: rgba(255,255,255,0.16);
    background-color: rgba(255,255,255,0.06);
}
.bd-toolbar select:focus {
    border-color: rgba(59,130,246,0.5);
    box-shadow: 0 0 0 2px rgba(59,130,246,0.1);
}
.bd-toolbar-btn {
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s;
    border: 1px solid;
    white-space: nowrap;
}
.bd-toolbar-btn.purple {
    background: rgba(139,92,246,0.08);
    color: #a78bfa;
    border-color: rgba(139,92,246,0.18);
}
.bd-toolbar-btn.purple:hover {
    background: rgba(139,92,246,0.16);
    border-color: rgba(139,92,246,0.3);
}
.bd-toolbar-btn.green {
    background: rgba(16,185,129,0.08);
    color: #34d399;
    border-color: rgba(16,185,129,0.18);
}
.bd-toolbar-btn.green:hover {
    background: rgba(16,185,129,0.16);
    border-color: rgba(16,185,129,0.3);
}

/* 数据表格容器 */
.bd-table-wrap {
    max-height: 460px;
    overflow: auto;
    background: rgba(255,255,255,0.02);
    border: 1px solid rgba(255,255,255,0.06);
    border-radius: 14px;
    scrollbar-width: thin;
    scrollbar-color: rgba(255,255,255,0.08) transparent;
}
.bd-table-wrap::-webkit-scrollbar { width: 5px; height: 5px; }
.bd-table-wrap::-webkit-scrollbar-track { background: transparent; }
.bd-table-wrap::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.08); border-radius: 10px; }
.bd-table-wrap::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.15); }

.bd-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}
.bd-table thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    padding: 10px 10px;
    text-align: left;
    font-size: 11px;
    font-weight: 600;
    color: rgba(255,255,255,0.5);
    text-transform: uppercase;
    letter-spacing: 0.4px;
    background: rgba(10, 15, 30, 0.9);
    backdrop-filter: blur(6px);
    border-bottom: 1px solid rgba(255,255,255,0.06);
    white-space: nowrap;
    max-width: 150px;
    overflow: hidden;
    text-overflow: ellipsis;
}
.bd-table tbody tr {
    transition: background 0.15s;
}
.bd-table tbody tr:nth-child(even) {
    background: rgba(255,255,255,0.015);
}
.bd-table tbody tr:hover {
    background: rgba(255,255,255,0.04);
}
.bd-table tbody td {
    padding: 8px 10px;
    color: rgba(255,255,255,0.78);
    border-bottom: 1px solid rgba(255,255,255,0.03);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 150px;
}
.bd-table td.bd-idx {
    color: rgba(255,255,255,0.25);
    font-size: 10px;
    width: 36px;
    text-align: center;
}
.bd-table td.bd-empty {
    color: rgba(255,255,255,0.2);
}

/* 表格底部信息 */
.bd-table-info {
    padding: 10px 14px;
    font-size: 11px;
    color: var(--text-muted);
    text-align: right;
    border-top: 1px solid rgba(255,255,255,0.04);
}

/* 底部 Footer */
.bd-footer {
    display: flex;
    gap: 12px;
    padding: 16px 28px 20px;
    flex-shrink: 0;
}
.bd-btn-close {
    flex: 1;
    padding: 11px;
    background: rgba(255,255,255,0.04);
    color: var(--text-secondary);
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 10px;
    cursor: pointer;
    font-size: 14px;
    font-weight: 500;
    transition: all 0.2s;
}
.bd-btn-close:hover {
    background: rgba(255,255,255,0.08);
    border-color: rgba(255,255,255,0.15);
    color: var(--text-primary);
}

/* 加载/空/错误状态 */
.bd-status {
    text-align: center;
    padding: 48px 20px;
    color: var(--text-secondary);
    font-size: 14px;
}
.bd-status.error { color: #f87171; }

/* ===== Toast 动画（Common.toast） ===== */
@keyframes toastIn { from { opacity:0;transform:translateX(40px); } to { opacity:1;transform:translateX(0); } }
@keyframes toastOut { from { opacity:1;transform:translateX(0); } to { opacity:0;transform:translateX(40px); } }

/* ===== 商机挖掘卡片 & Tab ===== */
.opp-summary-card {
    background: var(--bg-card);
    border: 1px solid var(--glass-border);
    border-radius: 12px;
    padding: 16px;
    display: flex;
    align-items: center;
    gap: 12px;
    transition: border-color 0.2s;
}
.opp-summary-card:hover { border-color: rgba(59,130,246,0.3); }
.opp-sc-icon { font-size: 28px; flex-shrink: 0; }
.opp-sc-text { min-width: 0; }
.opp-sc-label { font-size: 11px; color: var(--text-muted); margin-bottom: 4px; }
.opp-sc-value { font-size: 15px; font-weight: 700; color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.opp-sc-sub { font-size: 12px; color: var(--text-secondary); margin-top: 2px; }

.opp-tab {
    padding: 10px 20px;
    font-size: 13px;
    font-weight: 600;
    color: var(--text-muted);
    background: transparent;
    border: none;
    border-bottom: 2px solid transparent;
    cursor: pointer;
    transition: all 0.2s;
    margin-bottom: -2px;
}
.opp-tab:hover { color: var(--text-primary); }
.opp-tab.active { color: #3b82f6; border-bottom-color: #3b82f6; }

.opp-tab-panel { display: none; }
.opp-tab-panel.active { display: block; }

.opp-detail-row td { padding: 0 !important; border-bottom: 2px solid rgba(59,130,246,0.15) !important; }
/* ── Detail panel：玻璃底 + 内边距 + 子表格统一规范 ── */
.opp-detail-panel { padding: 22px 24px; background: linear-gradient(135deg, rgba(255,255,255,0.04) 0%, rgba(0,0,0,0.1) 100%); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border-top: 1px solid rgba(255,255,255,0.06); }
.opp-detail-panel h4 { font-size: 13px; font-weight: 600; color: var(--text-primary); margin: 0 0 10px 0; }
/* 详情内子表格 */
.opp-detail-table { width: 100%; border-collapse: collapse; table-layout: fixed; border-radius: 10px; overflow: hidden; }
.opp-detail-table thead th { padding: 8px 10px; font-size: 11px; font-weight: 600; color: var(--text-muted); background: rgba(255,255,255,0.04); border-bottom: 1px solid rgba(255,255,255,0.08); }
.opp-detail-table tbody td { padding: 8px 10px; font-size: 13px; border-bottom: 1px solid rgba(255,255,255,0.03); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.opp-detail-table tbody tr:nth-child(even) { background: rgba(255,255,255,0.015); }
.opp-detail-table tbody tr:hover { background: rgba(59,130,246,0.04); }
/* 分页 */
.opp-page-nav { display: flex; justify-content: center; gap: 5px; margin-top: 14px; }
.opp-page-nav button { padding: 5px 10px; border: 1px solid rgba(255,255,255,0.1); border-radius: 6px; font-size: 12px; color: var(--text-secondary); background: transparent; cursor: pointer; transition: all 0.15s; }
.opp-page-nav button:hover { border-color: var(--primary); color: var(--text-primary); }
.opp-page-nav button.active { background: rgba(59,130,246,0.25); color: #fff; border-color: var(--primary); }
/** 详情内图表容器 */
.opp-detail-chart { min-height: 200px; position: relative; margin: 12px 0; }
.opp-detail-chart h4 { font-size: 13px; font-weight: 600; color: var(--text-primary); margin: 0 0 8px 0; }
.opp-detail-chart canvas { max-height: 240px; }
/* 旧样式兼容 */
.opp-detail-wh h4 { font-size: 12px; color: var(--text-muted); margin: 0 0 8px 0; }
.opp-detail-wh table { width: 100%; border-collapse: collapse; }
.opp-detail-wh th { font-size: 10px; color: var(--text-muted); padding: 4px 8px; border-bottom: 1px solid rgba(255,255,255,0.04); text-align: left; }
.opp-detail-wh td { font-size: 12px; padding: 4px 8px; border-bottom: 1px solid rgba(255,255,255,0.02); }

/* ===== 商品心得笔记 ===== */
/* 小卡片 —— SKU网格内 */
.note-mini-card {
  grid-column: 1 / -1;
  display: flex; align-items: center; gap: 12px;
  padding: 12px 14px; border-radius: 10px; cursor: pointer;
  background: rgba(99,102,241,0.04);
  border: 1px solid rgba(99,102,241,0.08);
  border-left: 3px solid #6366f1;
  transition: all 0.3s cubic-bezier(0.4,0,0.2,1);
}
.note-mini-card:hover {
  background: rgba(99,102,241,0.08);
  border-color: rgba(99,102,241,0.15);
  transform: translateY(-1px);
  box-shadow: 0 4px 16px rgba(99,102,241,0.08);
}
.note-mini-icon svg { color: #818cf8; }
.note-mini-body { flex: 1; min-width: 0; }
.note-mini-title { font-size: 12px; font-weight: 600; color: #a5b4fc; margin-bottom: 2px; }
.note-mini-sub { font-size: 11px; color: rgba(255,255,255,0.35); }
.note-mini-arrow { font-size: 16px; color: rgba(255,255,255,0.2); transition: transform 0.2s; }
.note-mini-card:hover .note-mini-arrow { transform: translateX(3px); color: #818cf8; }

/* 大卡片 Overlay */
.notes-overlay {
  position: fixed; inset: 0; background: rgba(0,0,0,0.55);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  display: none; align-items: center; justify-content: center;
  z-index: 9999; opacity: 0; transition: opacity 0.3s;
}
.notes-overlay.notes-open { display: flex; opacity: 1; }
.notes-card {
  background: linear-gradient(135deg, rgba(15,23,42,0.98), rgba(30,41,59,0.98));
  backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px);
  border: 1px solid rgba(99,102,241,0.12); border-radius: 20px;
  width: 92vw; max-width: 760px; height: 85vh; max-height: 700px;
  display: flex; flex-direction: column;
  box-shadow: 0 24px 80px rgba(0,0,0,0.5), 0 0 0 1px rgba(99,102,241,0.05);
  animation: notesScaleIn 0.35s cubic-bezier(0.4,0,0.2,1) both;
}
@keyframes notesScaleIn {
  from { opacity: 0; transform: scale(0.85) translateY(20px); }
  to { opacity: 1; transform: scale(1) translateY(0); }
}

/* 头部 */
.notes-card-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 20px 24px 14px; border-bottom: 1px solid rgba(255,255,255,0.06);
}
.notes-card-header h2 {
  font-size: 17px; font-weight: 600; color: #e2e8f0; margin: 0;
  display: flex; align-items: center; gap: 8px;
}
.notes-close-btn {
  width: 32px; height: 32px; border-radius: 8px; border: none;
  background: rgba(255,255,255,0.06); color: rgba(255,255,255,0.5);
  font-size: 16px; cursor: pointer; transition: all 0.2s;
  display: flex; align-items: center; justify-content: center;
}
.notes-close-btn:hover { background: rgba(239,68,68,0.15); color: #f87171; }

/* 输入栏 */
.notes-input-bar {
  display: flex; gap: 8px; padding: 14px 24px;
  border-bottom: 1px solid rgba(255,255,255,0.04);
  background: rgba(99,102,241,0.03);
}
.notes-new-input {
  flex: 1; padding: 10px 14px; background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.08); border-radius: 10px;
  color: #e2e8f0; font-size: 13px; outline: none;
  transition: all 0.2s;
}
.notes-new-input:focus { border-color: #6366f1; box-shadow: 0 0 0 3px rgba(99,102,241,0.1); }
.notes-new-input::placeholder { color: rgba(255,255,255,0.3); }
.notes-send-btn {
  padding: 10px 20px; background: linear-gradient(135deg, #6366f1, #4f46e5);
  color: #fff; border: none; border-radius: 10px; font-size: 13px;
  font-weight: 500; cursor: pointer; transition: all 0.2s;
  box-shadow: 0 2px 8px rgba(99,102,241,0.3);
}
.notes-send-btn:hover { transform: translateY(-1px); box-shadow: 0 4px 16px rgba(99,102,241,0.4); }

/* Body */
.notes-body {
  flex: 1; overflow-y: auto; padding: 16px 24px;
}
.notes-body::-webkit-scrollbar { width: 4px; }
.notes-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.08); border-radius: 2px; }

/* 日期分组 */
.notes-day-group { margin-bottom: 20px; }
.notes-day-header {
  font-size: 11px; font-weight: 600; color: rgba(255,255,255,0.3);
  text-transform: uppercase; letter-spacing: 0.5px;
  padding: 6px 0; border-bottom: 1px solid rgba(255,255,255,0.04); margin-bottom: 8px;
}

/* 心得条目 */
.notes-item {
  background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.04);
  border-radius: 12px; padding: 14px 16px; margin-bottom: 8px;
  transition: all 0.2s;
}
.notes-item:hover { background: rgba(255,255,255,0.05); }
.notes-item-head {
  display: flex; align-items: center; gap: 8px; margin-bottom: 8px;
}
.notes-author { font-size: 12px; font-weight: 600; color: #a5b4fc; }
.notes-time { font-size: 11px; color: rgba(255,255,255,0.3); }
.notes-actions { margin-left: auto; display: flex; gap: 4px; }
.notes-action-btn {
  background: none; border: none; cursor: pointer; font-size: 12px;
  padding: 2px 4px; border-radius: 4px; opacity: 0.5; transition: all 0.15s;
}
.notes-action-btn:hover { opacity: 1; background: rgba(255,255,255,0.08); }
.notes-item:hover .notes-action-btn { opacity: 0.7; }
.notes-content {
  font-size: 13px; color: rgba(255,255,255,0.7); line-height: 1.6;
  white-space: pre-wrap; word-break: break-word;
}
.notes-footer { margin-top: 8px; }
.notes-comment-toggle {
  background: none; border: none; color: rgba(255,255,255,0.4);
  font-size: 11px; cursor: pointer; padding: 2px 6px; border-radius: 4px;
  transition: all 0.15s;
}
.notes-comment-toggle:hover { color: #a5b4fc; background: rgba(99,102,241,0.08); }

/* 评论区 */
.notes-comments { margin-top: 8px; margin-left: 16px; padding-left: 16px; border-left: 1px solid rgba(99,102,241,0.12); }
.notes-comment-loading, .notes-comment-empty, .notes-comment-error {
  font-size: 11px; color: rgba(255,255,255,0.25); padding: 6px 0;
}
.notes-comment-item {
  background: rgba(255,255,255,0.02); border-radius: 8px; padding: 8px 10px;
  margin-bottom: 4px;
}
.notes-comment-author { font-size: 11px; font-weight: 600; color: #93c5fd; margin-right: 6px; }
.notes-comment-time { font-size: 10px; color: rgba(255,255,255,0.25); }
.notes-comment-text { font-size: 12px; color: rgba(255,255,255,0.55); margin-top: 3px; line-height: 1.5; }
.notes-comment-input-wrap { display: flex; gap: 6px; margin-top: 8px; }
.notes-comment-input {
  flex: 1; padding: 7px 10px; background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.08); border-radius: 8px;
  color: #e2e8f0; font-size: 12px; outline: none;
}
.notes-comment-input:focus { border-color: rgba(99,102,241,0.4); }
.notes-comment-send {
  padding: 7px 14px; background: rgba(99,102,241,0.15); color: #a5b4fc;
  border: 1px solid rgba(99,102,241,0.2); border-radius: 8px;
  font-size: 12px; cursor: pointer; transition: all 0.15s;
}
.notes-comment-send:hover { background: rgba(99,102,241,0.25); }

/* 空状态 */
.notes-empty { text-align: center; padding: 60px 24px; }
.notes-empty-icon { font-size: 40px; margin-bottom: 12px; opacity: 0.4; }
.notes-empty-title { font-size: 14px; font-weight: 600; color: rgba(255,255,255,0.25); margin-bottom: 6px; }
.notes-empty-text { font-size: 12px; color: rgba(255,255,255,0.15); }

/* 筛选栏 */
.notes-filter-bar {
  display: flex; gap: 6px; padding: 10px 24px; border-top: 1px solid rgba(255,255,255,0.04);
  flex-wrap: wrap; background: rgba(0,0,0,0.1);
}
.notes-filter-btn {
  padding: 4px 12px; border-radius: 6px; font-size: 11px;
  background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.06);
  color: rgba(255,255,255,0.4); cursor: pointer; transition: all 0.15s;
}
.notes-filter-btn:hover { background: rgba(255,255,255,0.08); color: rgba(255,255,255,0.7); }
.notes-filter-btn.active {
  background: rgba(99,102,241,0.15); color: #a5b4fc;
  border-color: rgba(99,102,241,0.3);
}

/* 响应式 */
@media (max-width: 640px) {
  .notes-card { width: 96vw; height: 90vh; border-radius: 16px; }
  .notes-card-header { padding: 14px 16px 10px; }
  .notes-input-bar { padding: 10px 16px; }
  .notes-body { padding: 10px 14px; }
  .notes-filter-bar { padding: 8px 14px; }
}
