/* ==================== KOC企划部工作系统 - 专业版设计系统 ==================== */

/* ==================== Reset & Base ==================== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  /* 主色系 */
  --primary: #2563eb;
  --primary-hover: #1d4ed8;
  --primary-light: #eff6ff;
  --primary-subtle: #dbeafe;
  
  /* 功能色 */
  --success: #059669;
  --success-light: #ecfdf5;
  --warning: #d97706;
  --warning-light: #fffbeb;
  --danger: #dc2626;
  --danger-light: #fef2f2;
  --info: #0891b2;
  --info-light: #ecfeff;

  /* 中性色 */
  --bg: #f1f5f9;
  --bg-alt: #e2e8f0;
  --card-bg: #ffffff;
  --text: #0f172a;
  --text-secondary: #475569;
  --text-muted: #94a3b8;
  --border: #e2e8f0;
  --border-light: #f1f5f9;

  /* 侧边栏 */
  --sidebar-bg: #0f172a;
  --sidebar-bg-hover: #1e293b;
  --sidebar-active-bg: rgba(37, 99, 235, 0.15);
  --sidebar-text: #94a3b8;
  --sidebar-text-active: #e2e8f0;
  --sidebar-accent: #3b82f6;

  /* 圆角 */
  --radius-sm: 6px;
  --radius: 10px;
  --radius-lg: 16px;
  --radius-xl: 20px;

  /* 阴影 */
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.04);
  --shadow: 0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.06);
  --shadow-md: 0 4px 6px -1px rgba(0,0,0,0.08), 0 2px 4px -2px rgba(0,0,0,0.04);
  --shadow-lg: 0 10px 15px -3px rgba(0,0,0,0.08), 0 4px 6px -4px rgba(0,0,0,0.03);
  --shadow-xl: 0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.04);

  /* 过渡 */
  --transition-fast: 0.15s ease;
  --transition: 0.25s ease;
  --transition-slow: 0.35s cubic-bezier(0.4, 0, 0.2, 1);
}

body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Helvetica Neue", sans-serif;
  background: var(--bg);
  color: var(--text);
  line-height: 1.6;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* ==================== Layout ==================== */
#app { display: flex; min-height: 100vh; }

/* ==================== Sidebar - 专业深色侧边栏 ==================== */
.sidebar {
  width: 170px;
  background: var(--sidebar-bg);
  display: flex;
  flex-direction: column;
  position: fixed;
  top: 0; left: 0; bottom: 0;
  z-index: 100;
  overflow-y: auto;
  overflow-x: hidden;
  box-shadow: 4px 0 24px rgba(0,0,0,0.12);
}

.sidebar::-webkit-scrollbar { width: 4px; }
.sidebar::-webkit-scrollbar-track { background: transparent; }
.sidebar::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 4px; }

.sidebar-header {
  padding: 28px 20px 20px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
  background: linear-gradient(180deg, rgba(37,99,235,0.08) 0%, transparent 100%);
}

.logo {
  font-size: 22px;
  font-weight: 800;
  color: #ffffff;
  letter-spacing: 3px;
  text-transform: uppercase;
  line-height: 1.2;
}

.logo-sub {
  font-size: 11px;
  color: var(--sidebar-text);
  display: block;
  margin-top: 4px;
  letter-spacing: 2px;
  text-transform: uppercase;
  font-weight: 500;
}

/* 用户信息条 */
.user-bar {
  padding: 16px 20px;
  margin: 12px 14px 0;
  background: rgba(255,255,255,0.04);
  border-radius: var(--radius);
  border: 1px solid rgba(255,255,255,0.06);
}

.user-name {
  color: #f1f5f9;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.3;
}
.user-role {
  color: var(--sidebar-accent);
  font-size: 11px;
  margin-top: 3px;
  font-weight: 500;
  letter-spacing: 0.5px;
}

/* 导航菜单 */
.nav-menu { padding: 16px 12px; flex: 1; }

.nav-group-label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: #cbd5e1;
  padding: 16px 12px 8px;
  font-weight: 700;
}

/* ★ 主管菜单可折叠组 */
.nav-group-header {
  display: flex; align-items: center; gap: 8px;
  padding: 14px 12px 6px; cursor: pointer;
  user-select: none; transition: opacity .15s;
}
.nav-group-header:hover { opacity: .85; }
.nav-group-toggle {
  font-size: 9px; color: #64748b;
  transition: transform .2s ease; display: inline-block;
}
.nav-group-header.expanded .nav-group-toggle { transform: rotate(90deg); }
.nav-group-header .nav-group-label {
  padding: 0; font-size: 11px; letter-spacing: 1.5px;
  color: #cbd5e1; font-weight: 700;
}
.nav-group-items { overflow: hidden; }
.nav-group-items.collapsed { display: none; }

.nav-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 14px;
  color: var(--sidebar-text);
  text-decoration: none;
  font-size: 13.5px;
  font-weight: 500;
  transition: all var(--transition-fast);
  border-radius: var(--radius-sm);
  margin: 2px 0;
  position: relative;
}

/* 菜单项副标题（如"工具"小字） */
.nav-sub {
  font-size: 10.5px;
  font-weight: 400;
  color: var(--sidebar-text-muted, rgba(255,255,255,0.45));
  background: rgba(255,255,255,0.08);
  padding: 1px 6px;
  border-radius: 8px;
  margin-left: 2px;
  letter-spacing: 0.5px;
  vertical-align: middle;
}

.nav-item::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 3px;
  height: 0;
  background: var(--sidebar-accent);
  border-radius: 0 2px 2px 0;
  transition: height var(--transition);
}

.nav-item:hover {
  background: var(--sidebar-bg-hover);
  color: var(--sidebar-text-active);
}

.nav-item.active {
  background: var(--sidebar-active-bg);
  color: #ffffff;
  font-weight: 600;
}
.nav-item.active::before { height: 20px; }

/* 侧边栏底部 */
.sidebar-footer {
  padding: 16px 14px;
  border-top: 1px solid rgba(255,255,255,0.06);
  margin-top: auto;
}

/* ==================== Main Content ==================== */
.main-content {
  margin-left: 170px;
  flex: 1;
  padding: 28px 30px;
  max-width: calc(100vw - 170px);
  min-height: 100vh;
}

/* ==================== Page Header ==================== */
.page-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 18px;
}
.page-header .page-header-left { min-width: 0; flex: 1; }
.page-header .page-header-right { display: flex; gap: 8px; align-items: center; flex-shrink: 0; }

/* 实时同步指示点（博主登记页：运营抢单后自动显示） */
.live-dot {
  width: 10px; height: 10px; border-radius: 50%;
  background: #cbd5e1;
  box-shadow: 0 0 0 0 rgba(16,185,129,0.5);
  transition: background 0.25s, box-shadow 0.25s;
  flex-shrink: 0;
}
.live-dot.live-dot-on {
  background: #10b981;
  box-shadow: 0 0 0 5px rgba(16,185,129,0.18);
  animation: livePulse 1.5s ease-out;
}
@keyframes livePulse {
  0%   { box-shadow: 0 0 0 0 rgba(16,185,129,0.45); }
  100% { box-shadow: 0 0 0 8px rgba(16,185,129,0); }
}

/* 成员筛选器（组长用） */
.member-filter-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  background: var(--primary-light, #eff6ff);
  border: 1px solid var(--primary-subtle, #dbeafe);
  border-radius: var(--radius-md, 10px);
  margin-bottom: 14px;
}
.member-filter-bar label {
  font-size: 13px;
  font-weight: 600;
  color: var(--primary, #2563eb);
  white-space: nowrap;
  margin: 0;
}
.member-filter-bar select {
  min-width: 200px;
  max-width: 320px;
  padding: 6px 28px 6px 10px;
  font-size: 13.5px;
  border-radius: 6px;
  border: 1px solid var(--primary-subtle, #dbeafe);
  background: #fff;
  height: 34px;
  margin: 0;
}

/* 只读预览横幅 */
.readonly-banner {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  background: linear-gradient(135deg, #fff7ed 0%, #ffedd5 100%);
  border: 1px solid #fdba74;
  border-radius: var(--radius-md, 10px);
  color: #9a3412;
  font-size: 13.5px;
  margin-bottom: 16px;
  line-height: 1.5;
}
.readonly-banner .readonly-icon {
  flex-shrink: 0;
  font-size: 18px;
}
.readonly-banner strong { color: #c2410c; font-weight: 700; }

.page-title {
  font-size: 26px;
  font-weight: 800;
  color: var(--text);
  letter-spacing: -0.5px;
}

.page-subtitle {
  font-size: 14px;
  color: var(--text-muted);
  margin-top: 4px;
  font-weight: 400;
}

/* ==================== Cards ==================== */
.card {
  background: var(--card-bg);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border-light);
  padding: 24px;
  margin-bottom: 20px;
  transition: box-shadow var(--transition);
}
.card:hover { box-shadow: var(--shadow-md); }

.card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 20px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--border-light);
}

.card-title {
  font-size: 16px;
  font-weight: 700;
  color: var(--text);
  display: flex;
  align-items: center;
  gap: 8px;
}

.card-title::before {
  content: '';
  width: 4px;
  height: 18px;
  background: var(--primary);
  border-radius: 2px;
}

/* ==================== Stats Grid - 现代数据卡片 ==================== */
.stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 20px;
  margin-bottom: 28px;
}

.stat-card {
  background: var(--card-bg);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border-light);
  padding: 24px;
  position: relative;
  overflow: hidden;
  transition: all var(--transition);
}
.stat-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}

.stat-card::after {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  width: 100px;
  height: 100px;
  border-radius: 50%;
  opacity: 0.04;
  transform: translate(30%, -30%);
}

.stat-card:nth-child(1)::after { background: var(--primary); }
.stat-card:nth-child(2)::after { background: var(--success); }
.stat-card:nth-child(3)::after { background: var(--warning); }
.stat-card:nth-child(4)::after { background: var(--danger); }
.stat-card:nth-child(5)::after { background: var(--info); }

.stat-label {
  font-size: 13px;
  color: var(--text-secondary);
  margin-bottom: 10px;
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: 6px;
}

.stat-value {
  font-size: 32px;
  font-weight: 800;
  color: var(--text);
  letter-spacing: -1px;
  line-height: 1.1;
}

.stat-value.blue { color: var(--primary); }
.stat-value.green { color: var(--success); }
.stat-value.red { color: var(--danger); }
.stat-value.orange { color: var(--warning); }

.stat-sub {
  font-size: 12px;
  color: var(--text-muted);
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid var(--border-light);
}

/* ==================== Tables ==================== */
.table-wrapper {
  overflow-x: auto;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  background: var(--card-bg);
  border: 1px solid var(--border-light);
}
/* 横向滚动条 */
.table-wrapper::-webkit-scrollbar { height: 18px; }
.table-wrapper::-webkit-scrollbar-track { background: #f1f5f9; border-radius: 6px; }
.table-wrapper::-webkit-scrollbar-thumb { background: #94a3b8; border-radius: 6px; }
.table-wrapper::-webkit-scrollbar-thumb:hover { background: #475569; }

table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

thead {
  background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
}

th {
  padding: 11px 14px;
  text-align: left;
  font-weight: 600;
  color: var(--text-secondary);
  font-size: 12px;
  white-space: nowrap;
  border-bottom: 2px solid var(--border);
  position: sticky;
  top: 0;
  z-index: 1;
}

td {
  padding: 9px 14px;
  border-bottom: 1px solid var(--border-light);
  color: var(--text);
  vertical-align: middle;
  white-space: nowrap;
}

tr:hover > td, tr:hover > th { background: #fafbff; }
tr:last-child > td { border-bottom: none; }

td a {
  color: var(--primary);
  text-decoration: none;
  font-weight: 500;
}
td a:hover { text-decoration: underline; }

/* 数字单元格 */
td.num, th.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

/* ==================== Forms ==================== */
.form-group { margin-bottom: 16px; }
.form-label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  margin-bottom: 6px;
  color: var(--text-secondary);
}

.form-input, .form-select, .form-textarea {
  width: 100%;
  padding: 10px 14px;
  border: 1.5px solid var(--border);
  border-radius: var(--radius-sm);
  font-size: 14px;
  font-family: inherit;
  transition: all var(--transition-fast);
  background: #ffffff;
  color: var(--text);
}

.form-input:focus, .form-select:focus, .form-textarea:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(37,99,235,0.1);
}

.form-input::placeholder { color: var(--text-muted); }

.form-textarea { resize: vertical; min-height: 72px; }

.form-inline {
  display: flex;
  gap: 14px;
  align-items: flex-end;
  flex-wrap: wrap;
}
.form-inline .form-group { margin-bottom: 0; }

/* ==================== Buttons ==================== */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 9px 18px;
  border: none;
  border-radius: var(--radius-sm);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all var(--transition-fast);
  white-space: nowrap;
  letter-spacing: 0.2px;
}

.btn-primary {
  background: var(--primary);
  color: #fff;
  box-shadow: 0 1px 2px rgba(37,99,235,0.3);
}
.btn-primary:hover {
  background: var(--primary-hover);
  box-shadow: 0 2px 4px rgba(37,99,235,0.35);
  transform: translateY(-1px);
}
.btn-primary:active { transform: translateY(0); }

.btn-success {
  background: var(--success);
  color: #fff;
  box-shadow: 0 1px 2px rgba(5,150,105,0.3);
}
.btn-success:hover { background: #047857; transform: translateY(-1px); }

.btn-danger {
  background: var(--danger);
  color: #fff;
  box-shadow: 0 1px 2px rgba(220,38,38,0.3);
}
.btn-danger:hover { background: #b91c1c; transform: translateY(-1px); }

.btn-warning {
  background: var(--warning);
  color: #fff;
  box-shadow: 0 1px 2px rgba(217,119,6,0.3);
}
.btn-warning:hover { background: #b45309; transform: translateY(-1px); }

/* 博主登记"接收运营"字段：智能高亮 */
.reg-received-by.has-recv {
  background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);
  color: #047857;
  font-weight: 600;
  padding: 6px 10px;
  border-radius: 6px;
  box-shadow: inset 0 0 0 1px rgba(16,185,129,0.25);
  position: relative;
}
.reg-received-by.has-recv::before {
  content: '✓';
  display: inline-block;
  width: 14px;
  height: 14px;
  line-height: 14px;
  text-align: center;
  background: #10b981;
  color: #fff;
  border-radius: 50%;
  font-size: 9px;
  margin-right: 6px;
  font-weight: 700;
  vertical-align: 1px;
}
.reg-received-by.has-recv.is-pending {
  background: linear-gradient(135deg, #fef3e2 0%, #fde5c2 100%);
  color: #b45309;
  box-shadow: inset 0 0 0 1px rgba(217,119,6,0.25);
}
.reg-received-by.has-recv.is-pending::before {
  content: '⏱';
  background: #f59e0b;
}

/* 控评组：无效退回 / 抢错退回 双按钮横排（柔和色系） */
.ops-work-actions {
  vertical-align: middle !important;
  text-align: center;
  padding: 6px !important;
  min-width: 130px;
}
.ops-work-actions > .ops-cell-flex {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  min-height: 32px;
  height: 100%;
}
.inv-btn {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  height: 32px !important;
  min-height: 32px !important;
  max-height: 32px !important;
  line-height: 1 !important;
  padding: 0 14px !important;
  font-size: 12.5px !important;
  font-weight: 500;
  border-radius: 6px;
  letter-spacing: 0.2px;
  box-shadow: 0 1px 2px rgba(220,38,38,0.18);
  box-sizing: border-box;
  transition: all 0.15s;
}
.inv-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 3px 8px rgba(220,38,38,0.32);
  filter: brightness(1.05);
}
.ops-act-btns {
  display: inline-flex;
  flex-direction: row;
  gap: 6px;
  align-items: center;
  justify-content: center;
  flex-wrap: nowrap;
  white-space: nowrap;
}
.ops-act-btns .btn {
  font-weight: 500;
  font-size: 12px;
  letter-spacing: 0.2px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 3px;
  /* 与「+ 上传截图」(.btn 默认高 32px / line-height 1.4) 视觉对齐 */
  height: 32px;
  line-height: 1;
  padding: 0 12px;
  box-shadow: 0 1px 2px rgba(0,0,0,0.04);
  transition: all 0.15s;
  border: 1px solid transparent;
  flex-shrink: 0;
  border-radius: 6px;
}
.ops-act-btns .btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 3px 8px rgba(0,0,0,0.1);
  filter: none;
}
/* 无效退回 — 浅红/玫红调，文字红，背景白，hover 才上色 */
.co-return-inv {
  background: #fef2f2 !important;
  color: #b91c1c !important;
  border-color: #fecaca !important;
}
.co-return-inv:hover {
  background: #fee2e2 !important;
  color: #991b1b !important;
  border-color: #fca5a5 !important;
}
/* 抢错退回 — 浅黄/琥珀调，文字琥珀，背景白，hover 才上色 */
.co-return-wrong {
  background: #fffbeb !important;
  color: #b45309 !important;
  border-color: #fde68a !important;
}
.co-return-wrong:hover {
  background: #fef3c7 !important;
  color: #92400e !important;
  border-color: #fcd34d !important;
}
/* 主管退回 — 靛蓝调（管理动作），与「无效退回」红、「抢错退回」琥珀区分 */
.co-return-sup {
  background: #eef2ff !important;
  color: #4338ca !important;
  border-color: #c7d2fe !important;
}
.co-return-sup:hover {
  background: #e0e7ff !important;
  color: #3730a3 !important;
  border-color: #a5b4fc !important;
}

/* 运营组控评下单：三按钮（重新编辑、重新发布、删除） */
.co-edit-btn {
  background: linear-gradient(135deg, #6366f1, #8b5cf6) !important;
  color: #fff !important;
  border: none !important;
  font-weight: 600;
  box-shadow: 0 1px 3px rgba(99,102,241,0.3);
}
.co-edit-btn:hover {
  background: linear-gradient(135deg, #4f46e5, #7c3aed) !important;
  transform: translateY(-1px);
  box-shadow: 0 4px 10px rgba(99,102,241,0.4);
  filter: brightness(1.05);
}
.co-repub-btn {
  background: linear-gradient(135deg, #10b981, #059669) !important;
  color: #fff !important;
  border: none !important;
  font-weight: 600;
  box-shadow: 0 1px 3px rgba(16,185,129,0.3);
}
.co-repub-btn:hover {
  background: linear-gradient(135deg, #059669, #047857) !important;
  transform: translateY(-1px);
  box-shadow: 0 4px 10px rgba(16,185,129,0.4);
  filter: brightness(1.05);
}

.btn-outline {
  background: #fff;
  color: var(--primary);
  border: 1.5px solid var(--border);
}
.btn-outline:hover {
  background: var(--primary-light);
  border-color: var(--primary);
}

.btn-ghost {
  background: transparent;
  color: var(--text-secondary);
  border: 1px solid transparent;
}
.btn-ghost:hover {
  background: var(--bg);
  color: var(--text);
}

.btn-sm { padding: 6px 12px; font-size: 12px; }
.btn-lg { padding: 12px 24px; font-size: 15px; }

.btn-group { display: flex; gap: 8px; }

/* ==================== Modal ==================== */
.modal-overlay {
  display: none;
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(15,23,42,0.55);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  z-index: 1000;
  align-items: center;
  justify-content: center;
  animation: fadeIn 0.2s ease;
}

.modal-overlay.active { display: flex; }

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

.modal {
  background: #fff;
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-xl);
  width: 92%;
  max-width: 720px;
  max-height: 88vh;
  overflow-y: auto;
  padding: 32px;
  animation: slideUp 0.25s ease;
}

@keyframes slideUp {
  from { opacity: 0; transform: translateY(16px) scale(0.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

.modal-lg { max-width: 960px; }

.modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 24px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--border-light);
}

.modal-title {
  font-size: 19px;
  font-weight: 700;
  color: var(--text);
}

.modal-close {
  background: var(--bg);
  border: 1.5px solid var(--border);
  font-size: 28px;
  cursor: pointer;
  color: var(--text-secondary);
  width: 46px;
  height: 46px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all var(--transition-fast);
  font-weight: 300;
  line-height: 1;
  flex-shrink: 0;
}
.modal-close:hover {
  background: var(--danger);
  color: #fff;
  border-color: var(--danger);
  transform: rotate(90deg) scale(1.08);
  box-shadow: 0 4px 12px rgba(220,38,38,0.3);
}

.modal-footer {
  margin-top: 24px;
  padding-top: 20px;
  border-top: 1px solid var(--border-light);
  display: flex;
  justify-content: flex-end;
  gap: 10px;
}

/* ==================== Tabs ==================== */
.tabs {
  display: flex;
  gap: 0;
  border-bottom: 2px solid var(--border-light);
  margin-bottom: 20px;
  background: var(--card-bg);
  border-radius: var(--radius) var(--radius) 0 0;
  padding: 0 4px;
}

.tab {
  padding: 11px 22px;
  border: none;
  background: none;
  font-size: 13.5px;
  font-weight: 500;
  color: var(--text-secondary);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  transition: all var(--transition-fast);
  position: relative;
}
.tab:hover { color: var(--text); background: rgba(0,0,0,0.02); }
.tab.active {
  color: var(--primary);
  border-bottom-color: var(--primary);
  font-weight: 700;
}

/* ==================== Pagination ==================== */
/* ==================== 分页栏（v2：精致胶囊样式 + SVG图标） ==================== */
.pagination {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 6px 12px;
  margin: 14px 0 6px;
  font-size: 12px;
  background: linear-gradient(135deg, #f5f3ff 0%, #eef2ff 50%, #f0f9ff 100%);
  border: 1px solid rgba(99,102,241,0.18);
  border-radius: 12px;
  box-shadow:
    0 1px 2px rgba(15,23,42,0.04),
    0 4px 14px -6px rgba(99,102,241,0.18),
    inset 0 1px 0 rgba(255,255,255,0.7);
  min-height: 38px;
  flex-wrap: nowrap;
}
.pagination > * { flex-shrink: 0; }
.pagination .pg-left, .pagination .pg-right { display:flex; align-items:center; gap:6px; }
.pagination .pg-center { flex: 1 1 auto; text-align:center; min-width:0; }

/* ── 每页条数下拉 ── */
.pagination select,
.pagination .form-input {
  font-size: 12px !important;
  height: 28px;
  padding: 0 22px 0 10px !important;
  border-radius: 8px;
  border: 1px solid rgba(99,102,241,0.22);
  background: #fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='%236366f1'><path d='M3 5l3 3 3-3z'/></svg>") no-repeat right 5px center / 10px;
  color: #4338ca;
  font-weight: 600;
  letter-spacing: 0.2px;
  transition: all 0.18s ease;
  width: 84px;
  min-width: 84px;
  max-width: 84px;
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
}
.pagination select:hover,
.pagination .form-input:hover {
  border-color: #6366f1;
  box-shadow: 0 0 0 3px rgba(99,102,241,0.1);
}
.pagination select:focus,
.pagination .form-input:focus {
  outline: none;
  border-color: #6366f1;
  box-shadow: 0 0 0 3px rgba(99,102,241,0.18);
}

/* ── 中央信息胶囊 ── */
.pagination .pg-info {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  color: #475569;
  font-weight: 500;
  white-space: nowrap;
  background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
  border: 1px solid rgba(99,102,241,0.16);
  border-radius: 999px;
  padding: 3px 14px 3px 12px;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.8),
    0 1px 2px rgba(15,23,42,0.04);
  letter-spacing: 0.2px;
}
.pagination .pg-info-cur {
  color: #4f46e5;
  font-weight: 700;
  font-size: 13px;
  font-family: 'SF Mono', Menlo, Consolas, monospace;
  min-width: 14px;
  text-align: center;
}
.pagination .pg-info-sep {
  color: #cbd5e1;
  font-weight: 400;
  margin: 0 1px;
}
.pagination .pg-info-total {
  color: #475569;
  font-weight: 600;
  font-size: 12px;
  font-family: 'SF Mono', Menlo, Consolas, monospace;
}
.pagination .pg-info-label {
  color: #64748b;
  margin-left: 6px;
}
.pagination .pg-info-label b {
  color: #1e293b;
  font-weight: 700;
}

/* ── 右区操作胶囊（翻页 + 跳转 整合） ── */
.pagination .pg-right {
  background: #fff;
  border: 1px solid rgba(99,102,241,0.2);
  border-radius: 10px;
  padding: 2px;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.7),
    0 1px 2px rgba(15,23,42,0.04);
}
.pagination .pg-btn {
  font-size: 13px;
  width: 30px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  background: transparent;
  border: none;
  color: #4f46e5;
  cursor: pointer;
  transition: all 0.18s ease;
  padding: 0;
}
.pagination .pg-btn svg {
  width: 14px;
  height: 14px;
  display: block;
}
.pagination .pg-btn:hover:not(:disabled) {
  background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
  color: #fff;
  box-shadow: 0 3px 10px -2px rgba(99,102,241,0.4);
  transform: translateY(-1px);
}
.pagination .pg-btn:active:not(:disabled) {
  transform: translateY(0);
  box-shadow: 0 1px 2px rgba(99,102,241,0.3);
}
.pagination .pg-btn:disabled {
  opacity: 0.32;
  cursor: not-allowed;
}

/* ── 跳转输入组 ── */
.pagination .pg-jump {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 0 6px;
  height: 28px;
  border-left: 1px solid rgba(99,102,241,0.15);
  border-right: 1px solid rgba(99,102,241,0.15);
  margin: 0 2px;
  color: #64748b;
  font-size: 12px;
  font-weight: 500;
}
.pagination .pg-jump-pre,
.pagination .pg-jump-post {
  color: #94a3b8;
  font-weight: 500;
  user-select: none;
}
.pagination .pg-jump-inp {
  width: 44px !important;
  min-width: 0 !important;
  max-width: 44px !important;
  height: 24px !important;
  padding: 0 4px !important;
  text-align: center;
  font-size: 12.5px;
  font-weight: 700;
  color: #4f46e5;
  font-family: 'SF Mono', Menlo, Consolas, monospace;
  background: #f8fafc;
  border: 1px solid rgba(99,102,241,0.2);
  border-radius: 6px;
  transition: all 0.18s ease;
}
.pagination .pg-jump-inp:hover {
  border-color: #6366f1;
  background: #fff;
}
.pagination .pg-jump-inp:focus {
  outline: none;
  border-color: #6366f1;
  background: #fff;
  box-shadow: 0 0 0 3px rgba(99,102,241,0.15);
}

/* ==================== 表格底部留出空间 + 横向滚动条固定到分页栏上方 ==================== */
/* 关键：让 .table-wrapper 自身粘在视口底部（分页栏上方），
   横向滚动条始终可见，不随页面滚动消失 */
.table-wrapper {
  position: sticky;
  bottom: 48px;  /* 贴合分页栏，与分页栏一起吸底 */
  background: #fff;
  box-shadow: 0 -2px 8px rgba(15,23,42,0.04);
  z-index: 9;
  padding-bottom: 0;  /* 还原：无 padding-bottom，依赖 sticky 行为 */
}

/* 当卡片后面紧跟分页栏时，移除卡片底部间距，让表格下沿与分页栏视觉相连、共同吸底 */
.card:has(+ .pagination) {
  margin-bottom: 0;
}
.card:has(+ .pagination) .table-wrapper {
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
  border-bottom-color: transparent;
}
.card + .pagination {
  margin-top: 0;
  border-top-left-radius: 0;
  border-top-right-radius: 0;
  border-top-color: transparent;
}

/* ==================== Filters (高级感风格) ==================== */
.filters {
  display: flex;
  gap: 16px;
  align-items: flex-end;
  margin-bottom: 20px;
  flex-wrap: wrap;
  padding: 16px 22px;
  background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
  border-radius: 12px;
  border: 1px solid #e6e9f0;
  border-left: 4px solid #6366f1;
  box-shadow: 0 4px 14px rgba(15,23,42,.06), 0 1px 3px rgba(15,23,42,.04);
}
/* 查询/重置 按钮组：推到筛选框最右侧，视觉收口 */
.filters .filter-actions { margin-left: auto; display: flex; gap: 8px; align-items: flex-end; }
/* ★ v20260725+：博主登记筛选两行布局——更紧凑、更质感 */
.filters .reg-filter-row { display: flex; flex-wrap: wrap; gap: 12px 14px; align-items: flex-end; padding: 8px 12px; }
.filters .reg-filter-row + .reg-filter-row { border-top: 1px dashed rgba(99,102,241,0.12); margin-top: 4px; }
.filters .reg-filter-actions { margin-left: auto; display: flex; gap: 8px; align-items: flex-end; padding-bottom: 4px; }
/* 筛选区容器：浅色背景 + 圆角 + 微阴影，视觉有质感 */
#regFilters, #opsFilters, #unFilters, #blackFilters, #coFilters, #mgrFilters, #doneFilters { background: linear-gradient(180deg, rgba(248,250,252,0.6), rgba(241,245,249,0.4)); border-radius: 10px; padding: 4px 6px; box-shadow: inset 0 1px 0 rgba(255,255,255,0.7); }
.filters .form-group { margin-bottom: 0; }
.filters .form-group .form-label {
  font-size: 12.5px;
  color: #4b5563;
  font-weight: 600;
  margin-bottom: 5px;
  display: block;
  letter-spacing: .2px;
}
.filters .form-input,
.filters .form-select {
  font-size: 13.5px;
  border-color: #d1d9e6;
  border-radius: 8px;
  background: #fafbfc;
  padding: 8px 12px;
  transition: all .2s ease;
  min-width: 120px;
}
.filters .form-input:focus,
.filters .form-select:focus {
  border-color: #6366f1;
  box-shadow: 0 0 0 3px rgba(99,102,241,.12);
  background: #fff;
  outline: none;
}
.filters button.btn {
  font-size: 13.5px;
  padding: 8px 20px;
  border-radius: 8px;
  font-weight: 600;
  color: #fff;
  background: #4f46e5;
  border-color: #4f46e5;
  box-shadow: 0 1px 3px rgba(79,70,229,.25);
  transition: all .15s ease;
  min-width: 64px; /* 查询/重置等按钮宽度一致 */
}
.filters button.btn:hover { background: #4338ca; box-shadow: 0 2px 6px rgba(79,70,229,.35); }

/* === 精致日期筛选：左侧 input + 右侧快速日期按钮组 === */
.date-pill-group{display:inline-flex;align-items:stretch;border:1.5px solid #d1d9e6;border-radius:8px;overflow:hidden;background:#fafbfc;box-shadow:0 1px 2px rgba(15,23,42,.04);transition:all .2s ease;}
.date-pill-group:focus-within{border-color:#6366f1;box-shadow:0 0 0 3px rgba(99,102,241,.12);background:#fff;}
.date-pill-group input[type="date"]{border:none;background:transparent;padding:8px 12px;font-size:13.5px;font-family:inherit;color:var(--text);min-width:140px;outline:none;cursor:pointer;}
.date-pill-group input[type="date"]:focus{outline:none;}
.date-pill-group input[type="date"]::-webkit-calendar-picker-indicator{opacity:.5;cursor:pointer;filter:invert(0.4);transition:opacity .15s;}
.date-pill-group input[type="date"]:hover::-webkit-calendar-picker-indicator{opacity:.9;}
.date-quick-btns{display:flex;gap:0;border-left:1px solid #d1d9e6;}
.date-quick-btns button{padding:0 11px;border:none;background:transparent;font-size:12.5px;color:#4f46e5;font-weight:600;cursor:pointer;transition:all .15s;font-family:inherit;white-space:nowrap;}
.date-quick-btns button:hover{background:#eef2ff;color:#4338ca;}
.date-quick-btns button.active{background:#6366f1;color:#fff;}
.date-quick-btns button:not(:last-child){border-right:1px solid #e5e7eb;}
/* 重置/次要操作按钮：白色底+边框，保持与主按钮同高 */
.filters button.btn.btn-outline {
  background: #fff;
  color: var(--primary);
  border: 1.5px solid var(--primary);
  box-shadow: none;
}
.filters button.btn.btn-outline:hover { background: #eef2ff; box-shadow: none; }

/* ==================== 代发布筛选卡 v2 (有质感设计) ==================== */
.pp-filter-card {
  background: linear-gradient(180deg, #ffffff 0%, #fafbff 100%);
  border-radius: 12px;
  border: 1px solid #e8ecf5;
  border-left: 3px solid var(--primary);
  box-shadow: 0 2px 10px rgba(15,23,42,.04), 0 1px 2px rgba(15,23,42,.02);
  margin-bottom: 14px;
  overflow: hidden;
  transition: box-shadow .25s ease;
}
.pp-filter-card:hover { box-shadow: 0 4px 16px rgba(15,23,42,.06), 0 1px 3px rgba(15,23,42,.03); }
.pp-filter-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 7px 14px;
  border-bottom: 1px solid #f1f5fa;
  background: linear-gradient(90deg, rgba(37,99,235,.04) 0%, rgba(37,99,235,0) 60%);
}
.pp-filter-header-left { display: flex; align-items: center; gap: 10px; }
.pp-filter-header-icon {
  width: 30px; height: 30px; border-radius: 9px;
  background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
  color: var(--primary);
  display: flex; align-items: center; justify-content: center;
  font-size: 15px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.8);
}
.pp-filter-header-title {
  font-size: 14.5px; font-weight: 700; color: var(--text);
  letter-spacing: .3px;
}
.pp-filter-header-sub {
  font-size: 12px; color: var(--text-muted); font-weight: 500;
  margin-left: 4px;
}
.pp-filter-header-count {
  font-size: 12.5px; color: var(--text-secondary);
  background: #f1f5f9; padding: 4px 12px; border-radius: 999px;
  font-weight: 600; letter-spacing: .2px;
  display: inline-flex; align-items: center; gap: 5px;
}
.pp-filter-header-count::before {
  content: ''; width: 6px; height: 6px; border-radius: 50%;
  background: var(--success); box-shadow: 0 0 0 3px rgba(5,150,105,.15);
}
.pp-filter-body { padding: 9px 14px 10px; }
.pp-filter-row {
  display: flex; flex-wrap: wrap; gap: 8px 10px; align-items: flex-end;
}
.pp-filter-row + .pp-filter-row {
  margin-top: 8px; padding-top: 8px;
  border-top: 1px dashed #e8ecf5;
}
.pp-filter-item {
  display: flex; flex-direction: column; gap: 3px; min-width: 112px;
}
.pp-filter-item-label {
  font-size: 11px; color: var(--text-secondary); font-weight: 600;
  display: flex; align-items: center; gap: 4px;
  letter-spacing: .3px;
}
.pp-filter-item-label .pp-i {
  font-size: 11.5px; opacity: .55; line-height: 1;
}
.pp-filter-input,
.pp-filter-select {
  height: 30px; padding: 0 9px;
  border: 1.5px solid #e2e8f0; border-radius: 8px;
  background: #fff; font-size: 12.5px; color: var(--text);
  transition: all .2s ease; outline: none;
  font-family: inherit; min-width: 112px;
  box-shadow: inset 0 1px 2px rgba(15,23,42,.02);
}
.pp-filter-select { padding-right: 28px; cursor: pointer; }
.pp-filter-input:hover,
.pp-filter-select:hover { border-color: #c7d2fe; }
.pp-filter-input:focus,
.pp-filter-select:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(37,99,235,.12), inset 0 1px 2px rgba(15,23,42,.02);
  background: #fff;
}
.pp-filter-input::placeholder { color: #cbd5e1; font-weight: 400; }
.pp-filter-actions {
  display: flex; gap: 10px; align-items: center;
  margin-left: auto;
}
.pp-btn {
  height: 30px; padding: 0 13px; border-radius: 8px;
  font-size: 12.5px; font-weight: 600; cursor: pointer; border: none;
  display: inline-flex; align-items: center; gap: 6px;
  transition: all .18s ease; font-family: inherit; letter-spacing: .4px;
  white-space: nowrap;
}
.pp-btn-primary {
  background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%);
  color: #fff;
  box-shadow: 0 2px 6px rgba(37,99,235,.25), inset 0 1px 0 rgba(255,255,255,.15);
}
.pp-btn-primary:hover {
  box-shadow: 0 4px 14px rgba(37,99,235,.35), inset 0 1px 0 rgba(255,255,255,.15);
  transform: translateY(-1px);
}
.pp-btn-primary:active { transform: translateY(0); }
.pp-btn-ghost {
  background: #fff; color: var(--text-secondary);
  border: 1.5px solid #e2e8f0;
}
.pp-btn-ghost:hover {
  border-color: var(--primary); color: var(--primary); background: var(--primary-light);
}
.pp-filter-row-actions {
  display: flex; gap: 10px; align-items: flex-end;
  margin-left: auto; padding-bottom: 1px;
}
.pp-filter-header-actions { display: flex; gap: 8px; align-items: center; }
.pp-btn-blank {
  background: #fff; color: #4f46e5;
  border: 1.5px dashed #c7d2fe;
  box-shadow: none;
}
.pp-btn-blank:hover {
  background: #eef2ff; border-color: #818cf8; color: #4338ca;
  box-shadow: 0 2px 8px rgba(99,102,241,.18);
  transform: translateY(-1px);
}

/* ★ 代发布操作按钮行（筛选栏下方） */
.proxy-action-bar {
  display: flex; gap: 12px; align-items: center; flex-wrap: wrap;
  margin-bottom: 14px;
}
/* 第三个按钮：快速获取文案 —— 青绿渐变，与蓝/靛区分 */
.pp-btn-pick {
  background: linear-gradient(135deg, #059669 0%, #047857 100%);
  color: #fff;
  box-shadow: 0 2px 6px rgba(5,150,105,.25), inset 0 1px 0 rgba(255,255,255,.15);
}
.pp-btn-pick:hover {
  box-shadow: 0 4px 14px rgba(5,150,105,.35), inset 0 1px 0 rgba(255,255,255,.15);
  transform: translateY(-1px);
}
.pp-btn-pick:active { transform: translateY(0); }

/* ★ 快速获取文案弹窗 */
.qc-modal { display: flex; flex-direction: column; gap: 14px; }
.qc-tip {
  font-size: 12.5px; color: var(--text-secondary);
  background: #ecfdf5; border: 1px solid #a7f3d0;
  padding: 8px 12px; border-radius: 9px; line-height: 1.5;
}
.qc-result { margin-top: 2px; border-top: 1px dashed #e2e8f0; padding-top: 14px; }
.qc-result-head { display: flex; flex-direction: column; gap: 6px; margin-bottom: 10px; }
.qc-reset { font-size: 12px; color: #b45309; background: #fffbeb; border: 1px solid #fde68a; padding: 5px 10px; border-radius: 8px; }
.qc-remain { font-size: 12.5px; color: var(--text-secondary); font-weight: 600; }
.qc-cover { max-width: 100%; max-height: 240px; border-radius: 10px; margin-bottom: 10px; display: block; }
.qc-cover-empty { width: 100%; height: 120px; display: flex; align-items: center; justify-content: center; background: #f8fafc; color: #94a3b8; font-size: 14px; border: 1px dashed #e2e8f0; }
.qc-title { font-size: 16px; font-weight: 700; color: var(--text); margin-bottom: 8px; }
.qc-body {
  font-size: 13.5px; line-height: 1.7; color: var(--text);
  white-space: pre-wrap; word-break: break-word;
  max-height: 320px; overflow: auto;
  background: #f8fafc; border: 1px solid #eef2f7; border-radius: 10px;
  padding: 12px 14px; margin-bottom: 12px;
}
.qc-actions { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }
.qc-actions .btn { min-width: 110px; }
.qc-confirmed {
  background: #ecfdf5; color: #15803d; border: 1px solid #86efac;
  cursor: default; opacity: 0.95;
}

/* ★ 代发布看板（分发组全员共享） */
.proxy-kanban {
  /* spacer handled by inline margin-bottom */
}
.pp-kanban-title-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 18px;
  background: linear-gradient(135deg, #1e293b 0%, #334155 60%, #475569 100%);
  border-radius: 12px;
  margin-bottom: 10px;
  flex-wrap: wrap;
  gap: 10px;
  position: relative;
  overflow: hidden;
}
.pp-kanban-title-bar::before {
  content: '';
  position: absolute;
  top: -50%; right: -10%;
  width: 200px; height: 200px;
  background: radial-gradient(circle, rgba(99,102,241,.18) 0%, transparent 70%);
  pointer-events: none;
}
.pp-kanban-title-left {
  display: flex;
  align-items: center;
  gap: 10px;
  position: relative;
  z-index: 1;
}
.pp-kanban-title-icon {
  font-size: 18px;
  filter: drop-shadow(0 1px 2px rgba(0,0,0,.2));
}
.pp-kanban-title-text {
  font-size: 15px;
  font-weight: 700;
  color: #f8fafc;
  letter-spacing: .5px;
}
.pp-kanban-title-sub {
  font-size: 11.5px;
  color: #94a3b8;
  letter-spacing: .3px;
}
.pp-kanban-title-right { position: relative; z-index: 1; }
.pp-kanban-badge {
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  padding: 5px 12px;
  background: rgba(59,130,246,.18);
  border: 1px solid rgba(99,102,241,.35);
  border-radius: 999px;
  color: #dbeafe;
  font-size: 11.5px;
  font-weight: 500;
  letter-spacing: .3px;
  backdrop-filter: blur(4px);
}
.pp-kanban-badge strong {
  color: #ffffff;
  font-weight: 800;
  font-size: 14px;
  letter-spacing: 0;
  text-shadow: 0 1px 2px rgba(0,0,0,.2);
}

/* ★ 看板卡片：小巧 + 紧凑 + 有质感 */
.pp-kanban-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(158px, 1fr));
  gap: 8px;
  background: transparent;
  border-radius: 0;
  overflow: visible;
}
.pp-kanban-card {
  background: linear-gradient(180deg, #ffffff 0%, #fafbfc 100%);
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  position: relative;
  cursor: pointer;
  transition: all .22s cubic-bezier(.4, 0, .2, 1);
  min-height: 78px;
  overflow: hidden;
}
.pp-kanban-card::after {
  /* 悬停时浮起的微光扫过效果 */
  content: '';
  position: absolute;
  top: 0; left: -100%;
  width: 100%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.5), transparent);
  transition: left .55s ease;
  pointer-events: none;
}
.pp-kanban-card:hover {
  background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
  border-color: rgba(99,102,241,.3);
  transform: translateY(-2px);
  z-index: 2;
  box-shadow: 0 6px 18px rgba(15,23,42,.08), 0 2px 4px rgba(99,102,241,.1);
}
.pp-kanban-card:hover::after { left: 100%; }
.pp-kanban-card:active { transform: translateY(0); }
.pp-kanban-card.is-cold { opacity: .65; }
.pp-kanban-card.is-cold:hover { opacity: .9; }
.pp-kanban-card.is-selected {
  border-color: #6366f1;
  box-shadow: 0 0 0 3px rgba(99,102,241,.18), 0 6px 18px rgba(99,102,241,.12);
  background: linear-gradient(180deg, #f5f3ff 0%, #ede9fe 100%);
}

/* 顶部 3px 渐变条：默认全宽、低调 */
.pp-kanban-card-accent {
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 2px;
  opacity: .85;
  transition: opacity .2s, height .2s;
}
.pp-kanban-card:hover .pp-kanban-card-accent {
  opacity: 1;
  height: 3px;
}

/* ★ 单行布局：排名 chip + 项目名 + 数字 */
.pp-kanban-card-body {
  padding: 10px 12px 8px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.pp-kanban-card-row1 {
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
}
.pp-kanban-card-icon {
  width: 20px;
  height: 20px;
  border-radius: 5px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  flex-shrink: 0;
  letter-spacing: 0;
  box-shadow: 0 1px 2px rgba(0,0,0,.12);
}
.pp-kanban-card-name {
  font-size: 12.5px;
  font-weight: 600;
  color: #0f172a;
  line-height: 1.3;
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  letter-spacing: .1px;
}
/* 数字 + 单位 chip */
.pp-kanban-card-stat {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-top: 2px;
  margin-left: 27px; /* 与 icon 对齐 */
}
.pp-kanban-card-count {
  font-size: 22px;
  font-weight: 800;
  color: #0f172a;
  line-height: 1;
  letter-spacing: -.5px;
  font-variant-numeric: tabular-nums;
}
.pp-kanban-card-unit {
  font-size: 11px;
  color: #94a3b8;
  font-weight: 500;
  margin-left: 2px;
}
.pp-kanban-card-pub {
  font-size: 10.5px;
  color: #64748b;
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  gap: 3px;
}
.pp-kanban-card-pub::before {
  content: '';
  display: inline-block;
  width: 5px; height: 5px;
  border-radius: 50%;
  background: #10b981;
}
/* 进度条：底部细线 */
.pp-kanban-card-bar {
  height: 3px;
  background: rgba(226,232,240,.6);
  border-radius: 0 0 0 0;
  margin: 4px 0 0;
  overflow: hidden;
  position: relative;
}
.pp-kanban-card-bar-fill {
  height: 100%;
  border-radius: 0;
  transition: width .6s cubic-bezier(.4, 0, .2, 1);
}

/* tag 简化：只在 cold 时显示「待分配」+ 单独 corner 标记 */
.pp-kanban-card-corner {
  position: absolute;
  top: 6px; right: 6px;
  width: 18px; height: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 5px;
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 0;
  background: #fef2f2;
  color: #dc2626;
  z-index: 1;
}
.pp-kanban-card-corner.is-cold {
  background: #f1f5f9;
  color: #94a3b8;
}

/* ==================== 代发布弹窗 v2 (有质感设计) ==================== */
/* ★ 分发人信息卡 */
.pp-author-card {
  display: flex; align-items: center; gap: 14px;
  padding: 14px 18px;
  margin-bottom: 22px;
  background: linear-gradient(135deg, #f0f7ff 0%, #e6efff 100%);
  border: 1px solid #d6e4ff;
  border-radius: 12px;
  box-shadow: 0 1px 3px rgba(37,99,235,.06), inset 0 1px 0 rgba(255,255,255,.7);
  position: relative; overflow: hidden;
}
.pp-author-card::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0;
  width: 3px; background: linear-gradient(180deg, #2563eb, #6366f1);
  border-radius: 3px 0 0 3px;
}
.pp-author-avatar {
  width: 40px; height: 40px; border-radius: 50%;
  background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
  color: #fff; font-weight: 700; font-size: 15px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  box-shadow: 0 2px 6px rgba(37,99,235,.25), inset 0 1px 0 rgba(255,255,255,.2);
  letter-spacing: -.5px;
}
.pp-author-info { flex: 1; min-width: 0; }
.pp-author-label {
  font-size: 11.5px; color: #64748b; font-weight: 600;
  letter-spacing: .3px; margin-bottom: 2px;
}
.pp-author-name {
  font-size: 15.5px; font-weight: 700; color: #0f172a;
  letter-spacing: .2px;
}
.pp-author-badge {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 11px; border-radius: 999px;
  background: rgba(255,255,255,.85); border: 1px solid #d6e4ff;
  font-size: 12px; color: var(--primary); font-weight: 600;
  letter-spacing: .2px; white-space: nowrap;
  box-shadow: 0 1px 2px rgba(37,99,235,.05);
}
.pp-author-badge-dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: #10b981; box-shadow: 0 0 0 3px rgba(16,185,129,.2);
  animation: pulse-dot 2s ease-in-out infinite;
}
@keyframes pulse-dot {
  0%, 100% { box-shadow: 0 0 0 3px rgba(16,185,129,.2); }
  50% { box-shadow: 0 0 0 6px rgba(16,185,129,.1); }
}
/* ★ 弹窗内表单 label + icon */
.pp-form-group { margin-bottom: 16px; }
.pp-form-group:last-child { margin-bottom: 0; }
.pp-form-label {
  display: flex; align-items: center; gap: 6px;
  font-size: 13px; font-weight: 600; color: var(--text-secondary);
  margin-bottom: 6px; letter-spacing: .2px;
}
.pp-form-label .pp-form-icon {
  font-size: 13px; opacity: .65; line-height: 1;
}
.pp-form-label .pp-form-required {
  color: #ef4444; font-weight: 700; font-size: 14px;
  margin-left: 2px; line-height: 1;
}
.pp-form-input,
.pp-form-select {
  width: 100%; height: 40px;
  padding: 0 14px;
  border: 1.5px solid #e2e8f0; border-radius: 10px;
  background: #fff; font-size: 14px; color: var(--text);
  transition: all .2s ease; outline: none;
  font-family: inherit;
  box-shadow: inset 0 1px 2px rgba(15,23,42,.02);
}
.pp-form-select { padding-right: 32px; cursor: pointer; appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M2.5 4.5L6 8l3.5-3.5z'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 12px center; background-size: 12px;
}
.pp-form-input:hover,
.pp-form-select:hover { border-color: #c7d2fe; }
.pp-form-input:focus,
.pp-form-select:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(37,99,235,.12), inset 0 1px 2px rgba(15,23,42,.02);
  background: #fff;
}
.pp-form-input::placeholder { color: #cbd5e1; font-weight: 400; }
/* ★ 弹窗标题区强化 */
.modal-title {
  display: flex; align-items: center; gap: 10px;
}
.modal-title-icon {
  width: 30px; height: 30px; border-radius: 9px;
  background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
  color: var(--primary);
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 15px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.8);
}

/* ==================== 代发布表格 v2 (有质感设计) ==================== */
/* 表格整体质感升级 */
#proxyTable { border-collapse: separate; border-spacing: 0; }
#proxyTable thead th {
  background: linear-gradient(180deg, #f8fafc 0%, #eef2f7 100%);
  color: #475569; font-size: 12.5px; font-weight: 700;
  letter-spacing: .4px; padding: 12px 10px;
  border-bottom: 1.5px solid #e2e8f0;
  position: sticky; top: 0; z-index: 1;
}
#proxyTable thead th:first-child { border-top-left-radius: 10px; }
#proxyTable thead th:last-child { border-top-right-radius: 10px; }
#proxyTable tbody td {
  padding: 10px 10px; font-size: 13px;
  border-bottom: 1px solid #f1f5f9;
  vertical-align: middle;
}
#proxyTable tbody tr { transition: background .15s ease; }
#proxyTable tbody tr:nth-child(even) { background: rgba(248,250,252,.5); }
#proxyTable tbody tr:hover { background: #eff6ff !important; }
#proxyTable tbody tr:hover td { border-bottom-color: #dbeafe; }

/* 紧凑型输入框（不破坏布局） */
#proxyTable .form-input.cell-input,
#proxyTable .form-select.cell-input {
  height: 32px; padding: 0 10px; font-size: 13px;
  border-radius: 7px; border-width: 1.5px;
  background: #fff; min-width: 90px;
}

/* ★ 快捷日期筛选器 v2 */
.pp-quick-date {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 14px;
  padding: 10px 14px;
  background: linear-gradient(180deg, #f8faff 0%, #f1f5fb 100%);
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.7);
}
.pp-quick-date-head {
  display: flex; flex-direction: column; gap: 1px; flex-shrink: 0;
  padding-right: 10px;
  border-right: 1px dashed #dbe4f0;
}
.pp-quick-date-title {
  font-size: 13px; font-weight: 700; color: var(--text);
  letter-spacing: .3px;
  display: flex; align-items: center; gap: 5px;
}
.pp-quick-date-title .pp-i { font-size: 13px; opacity: .7; }
.pp-quick-date-sub {
  font-size: 11.5px; color: var(--text-muted);
  letter-spacing: .2px;
}
.pp-quick-date-ctrl {
  display: flex; align-items: stretch;
  border: 1.5px solid #e2e8f0; border-radius: 9px;
  background: #fff; overflow: hidden;
  flex: 1; min-width: 0;
  box-shadow: 0 1px 2px rgba(15,23,42,.04);
  transition: all .2s ease;
}
.pp-quick-date-ctrl:focus-within {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(37,99,235,.12);
}
.pp-quick-date-input {
  border: none; background: transparent; outline: none;
  padding: 6px 12px; font-size: 13px; color: var(--text);
  font-family: inherit; cursor: pointer;
  min-width: 130px; max-width: 170px;
}
.pp-quick-date-input::-webkit-calendar-picker-indicator {
  opacity: .5; cursor: pointer; filter: invert(.4);
  transition: opacity .15s;
}
.pp-quick-date-input:hover::-webkit-calendar-picker-indicator { opacity: .9; }
.pp-quick-pills {
  display: flex; border-left: 1px solid #e5e7eb;
}
.pp-quick-pill {
  padding: 0 12px; border: none; background: transparent;
  font-size: 12px; font-weight: 600; color: #475569;
  cursor: pointer; transition: all .18s ease;
  font-family: inherit; letter-spacing: .3px; white-space: nowrap;
}
.pp-quick-pill + .pp-quick-pill { border-left: 1px solid #e5e7eb; }
.pp-quick-pill:hover { background: #eff6ff; color: #1d4ed8; }
.pp-quick-pill.active {
  background: linear-gradient(135deg, #2563eb, #1d4ed8);
  color: #fff;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.18);
}

/* ★ 发布链接单元格 v2：上下两行布局 */
.pp-link-cell { min-width: 240px; padding: 6px 10px !important; }
.pp-link-input {
  width: 100%; height: 32px; padding: 0 12px;
  border: 1.5px solid #e2e8f0; border-radius: 7px;
  background: #fff; font-size: 13px; color: var(--text);
  transition: all .2s ease; outline: none;
  font-family: 'JetBrains Mono', 'Consolas', monospace;
}
.pp-link-input:hover { border-color: #c7d2fe; }
.pp-link-input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(37,99,235,.12); }
.pp-link-input::placeholder { color: #cbd5e1; font-weight: 400; font-family: inherit; }
.pp-link-status {
  margin-top: 5px; font-size: 11.5px; line-height: 1.5;
  display: flex; align-items: center; gap: 5px;
  color: var(--text-muted);
}
.pp-link-status.is-empty { color: #94a3b8; }
.pp-link-status.is-ready { color: #d97706; }
.pp-link-status.is-published { color: #059669; font-weight: 600; }
.pp-link-status-dot {
  width: 6px; height: 6px; border-radius: 50%; background: currentColor;
}
.pp-link-status.is-empty .pp-link-status-dot { background: #cbd5e1; }
.pp-link-status.is-ready .pp-link-status-dot { background: #f59e0b; box-shadow: 0 0 0 3px rgba(245,158,11,.18); }
.pp-link-status.is-published .pp-link-status-dot { background: #10b981; box-shadow: 0 0 0 3px rgba(16,185,129,.2); animation: pulse-dot 2s ease-in-out infinite; }

/* ★ 操作按钮升级 */
.pp-actions { display: inline-flex; gap: 6px; align-items: center; white-space: nowrap; }
.pp-btn-sm {
  display: inline-flex; align-items: center; justify-content: center; gap: 3px;
  height: 24px; padding: 0 8px; border-radius: 6px;
  font-size: 11.5px; font-weight: 600; cursor: pointer;
  border: 1.5px solid transparent; transition: all .18s ease;
  font-family: inherit; letter-spacing: .2px;
  line-height: 1;
}
.pp-btn-sm:disabled { opacity: .55; cursor: not-allowed; }
.pp-btn-refresh {
  background: linear-gradient(135deg, #3b82f6, #2563eb); color: #fff;
  box-shadow: 0 1px 2px rgba(37,99,235,.2);
  min-width: 52px;
}
.pp-btn-refresh:hover:not(:disabled) { box-shadow: 0 2px 6px rgba(37,99,235,.3); transform: translateY(-1px); }
.pp-btn-publish {
  background: linear-gradient(135deg, #10b981, #059669); color: #fff;
  box-shadow: 0 1px 3px rgba(16,185,129,.25);
}
.pp-btn-publish:hover:not(:disabled) { box-shadow: 0 3px 8px rgba(16,185,129,.35); transform: translateY(-1px); }
.pp-btn-delete {
  background: #fff; color: #dc2626; border-color: #fecaca;
  min-width: 52px;
}
.pp-btn-delete:hover { background: #fef2f2; border-color: #fca5a5; }

/* 复用 .reg-switch 风格做 toggle（确认发布 + 是否结算） */
#proxyTable .reg-toggle-cell { padding: 6px !important; }
#proxyTable .pp-toggle-label {
  display: block; font-size: 11px; color: var(--text-muted);
  font-weight: 600; letter-spacing: .2px; margin-bottom: 4px;
  text-align: center;
}
#proxyTable .pp-toggle-on-text { color: #6366f1; }

/* 系统判定 cell 紧凑 */
#proxyTable .ops-sys-judge { font-size: 12px; padding: 3px 8px; }

/* ==================== 文案库卡片设计 ==================== */
.cl-filter-bar {
  display: flex; gap: 10px; flex-wrap: wrap; align-items: center;
  margin-bottom: 22px;
  padding: 14px 18px;
  background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
  border-radius: 12px;
  border: 1px solid #e6e9f0;
  box-shadow: 0 2px 8px rgba(15,23,42,.03);
}
.cl-filter-bar .pp-filter-input,
.cl-filter-bar .pp-filter-select { margin: 0; }
/* ★ 批量操作栏（主管） */
.cl-batch-bar {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; flex-wrap: wrap;
  margin-bottom: 16px; padding: 10px 14px;
  background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
  border-radius: 10px; border: 1px solid #e2e8f0;
  box-shadow: 0 1px 4px rgba(15,23,42,.04);
}
.cl-batch-left { display:flex; align-items:center; gap:10px; font-size:13px; color:#475569; }
.cl-batch-count { font-weight:600; color:#0f172a; min-width:64px; }
.cl-batch-link { background:none; border:none; color:#64748b; font-size:12.5px; cursor:pointer; padding:2px 6px; border-radius:4px; }
.cl-batch-link:hover { color:#0f172a; background:#f1f5f9; }
.cl-batch-right { display:flex; align-items:center; gap:8px; }
.cl-batch-btn {
  display:inline-flex; align-items:center; gap:5px;
  padding: 7px 14px; border-radius: 7px; border: 1px solid transparent;
  font-size: 12.5px; font-weight: 500; cursor: pointer; white-space: nowrap;
  transition: all .15s;
}
.cl-batch-btn:disabled { opacity: .5; cursor: not-allowed; }
.cl-batch-btn-del { background: #fef2f2; color: #991b1b; border-color: #fecaca; }
.cl-batch-btn-del:hover:not(:disabled) { background: #fee2e2; border-color: #fca5a5; }
.cl-batch-btn-channel { background: #eff6ff; color: #1e40af; border-color: #bfdbfe; }
.cl-batch-btn-channel:hover:not(:disabled) { background: #dbeafe; border-color: #93c5fd; }
.cl-batch-btn-ghost { background: #f8fafc; color: #475569; border-color: #e2e8f0; }
.cl-batch-btn-ghost:hover:not(:disabled) { background: #f1f5f9; border-color: #cbd5e1; }
/* ★ 渠道库标签栏 + 导入按钮 */
.cl-tab-bar {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin-bottom: 16px;
}
.cl-tab-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 9px 18px; border-radius: 9px; border: 1px solid #e2e8f0;
  background: #fff; color: #475569; font-size: 13.5px; font-weight: 600; cursor: pointer;
  transition: all .15s;
}
.cl-tab-btn:hover { border-color: #c7d2fe; color: #4338ca; }
.cl-tab-btn.active {
  background: linear-gradient(180deg,#6366f1,#4f46e5); color: #fff; border-color: #4f46e5;
  box-shadow: 0 2px 8px rgba(79,70,229,.25);
}
.cl-import-btn {
  display: inline-flex; align-items: center; gap: 6px;
  margin-left: auto;
  padding: 9px 16px; border-radius: 9px; border: 1px dashed #16a34a;
  background: #f0fdf4; color: #15803d; font-size: 13.5px; font-weight: 600; cursor: pointer;
  transition: all .15s;
}
.cl-import-btn:hover { background: #dcfce7; border-color: #22c55e; }
.cl-platform-pill {
  display: inline-block; padding: 3px 10px; border-radius: 999px; font-size: 12px; font-weight: 600;
  background: #eef2ff; color: #4338ca; border: 1px solid #e0e7ff; white-space: nowrap;
}
.cl-batch-all { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; color: #475569; cursor: pointer; user-select: none; }
.cl-batch-hint { font-size: 12px; color: #94a3b8; margin-left: auto; }
.cl-row-check, #clSelectAll, #chSelectAllHead { width: 16px; height: 16px; cursor: pointer; accent-color: #6366f1; }
/* ★ 表格视图（几千篇文案专用） */
.cl-grid {
  background: #fff;
  border-radius: 14px;
  border: 1px solid #e8ecf5;
  overflow: hidden;
  margin-bottom: 24px;
  box-shadow: 0 1px 4px rgba(15,23,42,.04);
}
.cl-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13.5px;
  table-layout: fixed;
}
.cl-table thead th {
  background: linear-gradient(180deg,#f8fafc,#f1f5f9);
  padding: 12px 14px;
  text-align: left;
  font-weight: 700;
  color: #334155;
  font-size: 12.5px;
  border-bottom: 1.5px solid #e2e8f0;
  position: sticky;
  top: 0;
  z-index: 2;
  vertical-align: middle;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.cl-row {
  transition: background .15s;
  border-bottom: 1px solid #f1f5f9;
}
.cl-row:hover {
  background: #f8fafc;
}
.cl-row td {
  padding: 12px 14px;
  vertical-align: middle;
  color: #1e293b;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.cl-row:last-child td {
  border-bottom: none;
}
.cl-cell-num {
  font-family: 'SFMono-Regular',Consolas,monospace;
  font-weight: 600;
  color: #94a3b8;
  font-size: 12px;
}
.cl-ch-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  background: #dcfce7;
  color: #15803d;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.5;
}
.cl-ch-time {
  font-size: 11px;
}
.cl-row-title {
  font-weight: 600;
  color: #0f172a;
  font-size: 14px;
  line-height: 1.4;
  display: -webkit-box;
  width: 100%;
  max-width: none;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: normal;
}
.cl-row-preview {
  margin-top: 4px;
  font-size: 12px;
  color: #94a3b8;
  line-height: 1.5;
  display: -webkit-box;
  width: 100%;
  max-width: none;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: normal;
}
.cl-title-cell {
  width: 260px;
  max-width: 260px;
  overflow: hidden;
}
.cl-tag-cell {
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
}
.cl-tag-pill {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 500;
  background: #f1f5f9;
  color: #475569;
  white-space: nowrap;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
}
.cl-tag-pill.cl-tag-project {
  background: linear-gradient(135deg,#dbeafe,#bfdbfe);
  color: #1e40af;
  font-weight: 600;
}
.cl-tag-pill.cl-tag-category {
  background: linear-gradient(135deg,#fed7aa,#fdba74);
  color: #9a3412;
  font-weight: 600;
}
.cl-tag-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  max-width: 140px;
}
.cl-tag-mini {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  background: #eef2ff;
  color: #4338ca;
  white-space: nowrap;
}
.cl-tag-mini.cl-tag-more {
  background: #f1f5f9;
  color: #64748b;
}
.cl-row-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: 1px solid #e2e8f0;
  background: #fff;
  border-radius: 6px;
  cursor: pointer;
  font-size: 13px;
  color: #475569;
  transition: all .15s;
}
.cl-row-btn:hover {
  background: #f8fafc;
  border-color: #cbd5e1;
  color: #0f172a;
}
.cl-row-btn-del:hover {
  background: #fef2f2;
  border-color: #fecaca;
  color: #dc2626;
}
/* ★ 详情按钮：放在分类字段后单独成列，要有质感——渐变 + 阴影 + hover 微抬升 */
.cl-detail-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 6px 10px;
  border: none;
  border-radius: 7px;
  background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
  color: #ffffff;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .3px;
  cursor: pointer;
  box-shadow: 0 1px 2px rgba(99, 102, 241, .2), 0 1px 4px rgba(99, 102, 241, .18);
  transition: all .18s cubic-bezier(.4, 0, .2, 1);
  position: relative;
  overflow: hidden;
  white-space: nowrap;
}
.cl-detail-btn::before {
  content: '';
  position: absolute;
  top: 0; left: -100%;
  width: 100%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.25), transparent);
  transition: left .4s ease;
}
.cl-detail-btn:hover {
  background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);
  box-shadow: 0 4px 12px rgba(99, 102, 241, .35), 0 2px 4px rgba(99, 102, 241, .2);
  transform: translateY(-1px);
}
.cl-detail-btn:hover::before {
  left: 100%;
}
.cl-detail-btn:active {
  transform: translateY(0);
  box-shadow: 0 1px 2px rgba(99, 102, 241, .25);
}
.cl-detail-btn-icon {
  font-size: 13px;
  filter: drop-shadow(0 1px 1px rgba(0,0,0,.15));
}
.cl-detail-btn-label {
  font-size: 12px;
  line-height: 1;
}

/* ============== 文案库详情弹窗：结构化展示 ============== */
.cl-detail { font-family: inherit; }
.cl-detail-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 16px;
  padding: 12px 16px;
  background: linear-gradient(135deg, #f8fafc, #f1f5f9);
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  flex-wrap: wrap;
  gap: 10px;
}
.cl-detail-meta {
  font-size: 12.5px;
  color: #475569;
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  align-items: center;
}
.cl-detail-meta-item { display: inline-flex; align-items: center; gap: 4px; }
.cl-detail-meta-id {
  font-family: monospace;
  font-weight: 600;
  color: #6366f1;
  padding: 2px 8px;
  background: #eef2ff;
  border-radius: 4px;
}
.cl-detail-copy-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 14px;
  border: none;
  border-radius: 8px;
  background: linear-gradient(135deg, #10b981, #059669);
  color: #ffffff;
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  box-shadow: 0 2px 6px rgba(16, 185, 129, .25);
  transition: all .18s cubic-bezier(.4, 0, .2, 1);
  white-space: nowrap;
}
.cl-detail-copy-btn:hover {
  background: linear-gradient(135deg, #059669, #047857);
  box-shadow: 0 4px 12px rgba(16, 185, 129, .35);
  transform: translateY(-1px);
}
.cl-detail-copy-btn:active { transform: translateY(0); }

.cl-detail-cover {
  width: 100%;
  max-height: 360px;
  object-fit: contain;
  border-radius: 10px;
  margin-bottom: 12px;
  background: #f1f5f9;
}

/* ★ 封面区按钮组（下载 + 复制图片）—— 质感设计 */
.cl-detail-cover-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  align-items: center;
  margin-bottom: 18px;
}
.cl-detail-source-link {
  font-size: 12px;
  color: #94a3b8;
  margin-top: 6px;
  display: inline-block;
}

/* ★ 通用 CTA 按钮：三种变体（download 蓝、copyimg 紫、copytext 绿）—— 全部渐变 + 阴影 + hover 上抬 */
.cl-detail-cta-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  border: none;
  border-radius: 8px;
  color: #ffffff;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: .3px;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: all .18s cubic-bezier(.4, 0, .2, 1);
  position: relative;
  overflow: hidden;
}
.cl-detail-cta-btn::before {
  content: '';
  position: absolute;
  top: 0; left: -100%;
  width: 100%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.25), transparent);
  transition: left .45s ease;
}
.cl-detail-cta-btn:hover::before { left: 100%; }
.cl-detail-cta-btn:active { transform: translateY(0) !important; }
.cl-detail-cta-icon { font-size: 14px; line-height: 1; filter: drop-shadow(0 1px 1px rgba(0,0,0,.12)); }
.cl-detail-cta-label { line-height: 1; }

/* 下载：蓝 → 深蓝 */
.cl-detail-cta-download {
  background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
  box-shadow: 0 2px 6px rgba(59, 130, 246, .3);
}
.cl-detail-cta-download:hover {
  background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%);
  box-shadow: 0 6px 16px rgba(59, 130, 246, .4);
  transform: translateY(-1px);
}
/* 复制图片：紫 → 深紫 */
.cl-detail-cta-copyimg {
  background: linear-gradient(135deg, #8b5cf6 0%, #6d28d9 100%);
  box-shadow: 0 2px 6px rgba(139, 92, 246, .3);
}
.cl-detail-cta-copyimg:hover {
  background: linear-gradient(135deg, #7c3aed 0%, #5b21b6 100%);
  box-shadow: 0 6px 16px rgba(139, 92, 246, .4);
  transform: translateY(-1px);
}
/* 复制文本：绿 → 深绿 */
.cl-detail-cta-copytext {
  background: linear-gradient(135deg, #10b981 0%, #059669 100%);
  box-shadow: 0 2px 6px rgba(16, 185, 129, .3);
}
.cl-detail-cta-copytext:hover {
  background: linear-gradient(135deg, #059669 0%, #047857 100%);
  box-shadow: 0 6px 16px rgba(16, 185, 129, .4);
  transform: translateY(-1px);
}
/* 状态：成功 */
.cl-detail-cta-done {
  background: linear-gradient(135deg, #16a34a, #15803d) !important;
  box-shadow: 0 0 0 4px rgba(16, 185, 129, .15), 0 2px 8px rgba(16, 185, 129, .35) !important;
  transform: scale(1.02);
}
/* 状态：失败 */
.cl-detail-cta-fail {
  background: linear-gradient(135deg, #f43f5e, #be123c) !important;
  box-shadow: 0 0 0 4px rgba(244, 63, 94, .12), 0 2px 8px rgba(244, 63, 94, .3) !important;
}
/* 编辑：靛蓝 */
.cl-detail-cta-edit {
  background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);
  box-shadow: 0 2px 6px rgba(99, 102, 241, .3);
}
.cl-detail-cta-edit:hover {
  background: linear-gradient(135deg, #4f46e5 0%, #4338ca 100%);
  box-shadow: 0 6px 16px rgba(99, 102, 241, .4);
  transform: translateY(-1px);
}
/* 保存编辑：青绿 */
.cl-detail-cta-save-edit {
  background: linear-gradient(135deg, #06b6d4 0%, #0891b2 100%);
  box-shadow: 0 2px 6px rgba(6, 182, 212, .3);
}
.cl-detail-cta-save-edit:hover {
  background: linear-gradient(135deg, #0891b2 0%, #0e7490 100%);
  box-shadow: 0 6px 16px rgba(6, 182, 212, .4);
  transform: translateY(-1px);
}
/* 取消编辑：灰 */
.cl-detail-cta-cancel-edit {
  background: linear-gradient(135deg, #94a3b8 0%, #64748b 100%);
  box-shadow: 0 2px 6px rgba(148, 163, 184, .3);
}
.cl-detail-cta-cancel-edit:hover {
  background: linear-gradient(135deg, #64748b 0%, #475569 100%);
  box-shadow: 0 6px 16px rgba(148, 163, 184, .4);
  transform: translateY(-1px);
}

/* ★ 文案正文下方的操作行：快捷键提示 + 一键复制全文（移下来）============ */
.cl-detail-text-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  margin: -4px 0 22px;
  padding: 10px 14px;
  background: linear-gradient(135deg, #f0fdf4, #ecfdf5);
  border: 1px dashed #6ee7b7;
  border-radius: 10px;
}
.cl-detail-hotkey-hint {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12.5px;
  color: #047857;
  flex-wrap: wrap;
}
.cl-detail-hotkey-label {
  font-weight: 600;
  margin-right: 4px;
}
.cl-detail-hotkey-tip { color: #065f46; }
.cl-kbd {
  display: inline-block;
  padding: 2px 8px;
  font-family: 'JetBrains Mono', 'Consolas', monospace;
  font-size: 12px;
  font-weight: 600;
  color: #064e3b;
  background: #ffffff;
  border: 1px solid #86efac;
  border-bottom-width: 2px;
  border-radius: 5px;
  box-shadow: 0 1px 0 rgba(0,0,0,.04);
  min-width: 18px;
  text-align: center;
  line-height: 1.4;
}
.cl-kbd-plus {
  font-size: 13px;
  font-weight: 600;
  color: #047857;
  margin: 0 -1px;
}

.cl-detail-title {
  font-size: 22px;
  font-weight: 700;
  color: #0f172a;
  line-height: 1.4;
  letter-spacing: .3px;
  padding: 14px 18px;
  margin-bottom: 16px;
  background: linear-gradient(135deg, #eef2ff, #f5f3ff);
  border-left: 4px solid #6366f1;
  border-radius: 8px;
  word-break: break-word;
}

.cl-detail-section {
  margin-bottom: 18px;
}
.cl-detail-label {
  font-size: 12px;
  font-weight: 600;
  color: #64748b;
  text-transform: uppercase;
  letter-spacing: .8px;
  margin-bottom: 8px;
  padding-bottom: 6px;
  border-bottom: 1px dashed #e2e8f0;
}
.cl-detail-text {
  padding: 14px 18px;
  background: #fafbfc;
  border: 1.5px solid #e2e8f0;
  border-radius: 10px;
  font-size: 14.5px;
  line-height: 1.85;
  color: #1e293b;
  white-space: pre-wrap;
  word-break: break-word;
  max-height: 480px;
  overflow-y: auto;
  font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif;
}

/* 空状态（无文字） */
.cl-detail-empty {
  padding: 24px 20px;
  background: linear-gradient(135deg, #fef9c3, #fef3c7);
  border: 1.5px dashed #f59e0b;
  border-radius: 10px;
  display: flex;
  align-items: center;
  gap: 14px;
}
.cl-detail-empty-icon { font-size: 28px; flex-shrink: 0; }
.cl-detail-empty-text { flex: 1; }
.cl-detail-empty-mini {
  padding: 10px 14px;
  background: #f8fafc;
  border: 1px dashed #cbd5e1;
  border-radius: 8px;
  font-size: 12.5px;
  color: #94a3b8;
  font-style: italic;
}

/* 手动标签 chips */
.cl-detail-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.cl-detail-tag-chip {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  font-size: 12.5px;
  color: #6366f1;
  background: #eef2ff;
  border: 1px solid #c7d2fe;
  border-radius: 14px;
  font-weight: 500;
}

/* 飞书来源 */
.cl-detail-feishu {
  margin-top: 14px;
  padding: 10px 14px;
  background: #f0fdf4;
  border: 1px solid #bbf7d0;
  border-radius: 8px;
  font-size: 13px;
}
.cl-detail-feishu a { color: #059669; text-decoration: none; font-weight: 500; }
.cl-detail-feishu a:hover { text-decoration: underline; }

/* Hidden textarea：用于 Ctrl/Cmd+Shift+C 快捷键，视觉上不可见 */
.cl-detail-hidden-ta {
  position: absolute;
  left: -9999px;
  top: 0;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

/* ★ 文案库详情：信息条网格（项目/分类/标签/上传时间/编号） */
.cl-detail-info-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 10px;
  margin-bottom: 16px;
}
.cl-detail-info-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 10px 12px;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
}
.cl-detail-info-label {
  font-size: 11.5px;
  color: #94a3b8;
  font-weight: 500;
}
.cl-detail-info-value {
  font-size: 13px;
  color: #334155;
  font-weight: 600;
  word-break: break-word;
}
.cl-detail-info-id {
  font-family: monospace;
  color: #6366f1;
}

/* ★ 封面预览区 */
.cl-detail-preview-box {
  margin-bottom: 14px;
  border-radius: 12px;
  overflow: hidden;
  background: #f1f5f9;
  border: 1px solid #e2e8f0;
}
.cl-detail-preview-media {
  width: 100%;
  max-height: 360px;
  object-fit: contain;
  display: block;
  background: #0f172a;
}
.cl-detail-preview-empty {
  padding: 48px 20px;
  text-align: center;
  color: #94a3b8;
  font-size: 14px;
}

/* ★ 正文合并区（标题+内容+话题不拆分；长内容滚动，不截断） */
.cl-detail-body {
  padding: 14px 16px;
  background: #fafbfc;
  border: 1.5px solid #e2e8f0;
  border-radius: 10px;
  font-size: 14.5px;
  line-height: 1.75;
  color: #1e293b;
  max-height: 55vh;
  overflow-y: auto;
  font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif;
}
.cl-detail-body-p {
  margin: 0 0 6px;
  word-break: break-word;
  white-space: pre-wrap;
}
.cl-detail-body-p:last-child { margin-bottom: 0; }
.cl-detail-body-title {
  display: block;
  font-size: 18px;
  font-weight: 700;
  color: #0f172a;
  margin-bottom: 8px;
  line-height: 1.4;
}

/* ★ 底部操作栏：一键复制 + 确认使用 */
.cl-detail-actions-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 18px;
  padding: 12px 14px;
  background: linear-gradient(135deg, #f8fafc, #f1f5f9);
  border: 1px solid #e2e8f0;
  border-radius: 10px;
}

/* 确认使用：琥珀/橙色系 */
.cl-detail-cta-use {
  background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
  box-shadow: 0 2px 6px rgba(245, 158, 11, .3);
}
.cl-detail-cta-use:hover {
  background: linear-gradient(135deg, #d97706 0%, #b45309 100%);
  box-shadow: 0 6px 16px rgba(245, 158, 11, .4);
  transform: translateY(-1px);
}
.cl-detail-cta-use:disabled {
  cursor: not-allowed;
  opacity: .85;
}

/* 响应式：小屏时底部按钮撑满 */
@media (max-width: 480px) {
  .cl-detail-actions-footer { flex-direction: column; align-items: stretch; }
  .cl-detail-actions-footer .cl-detail-cta-btn { justify-content: center; }
}

  overflow: hidden;
  transition: transform .2s ease, box-shadow .2s ease;
  cursor: pointer;
  box-shadow: 0 1px 3px rgba(15,23,42,.04);
  position: relative;
}
.cl-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 24px rgba(15,23,42,.08), 0 2px 4px rgba(15,23,42,.04);
}
.cl-card-cover {
  position: relative; height: 160px; background: linear-gradient(135deg, #f1f5f9, #e2e8f0);
  overflow: hidden;
}
.cl-card-img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
.cl-card-placeholder {
  width: 100%; height: 100%; display: flex; align-items: center; justify-content: center;
  font-size: 48px; color: #94a3b8;
}
.cl-badge { 
  position: absolute; top: 10px; left: 10px;
  padding: 4px 10px; border-radius: 6px; font-size: 11px; font-weight: 700;
  letter-spacing: .2px; pointer-events: none;
}
.cl-badge-project {
  background: linear-gradient(135deg, rgba(37,99,235,.9), rgba(99,102,241,.9));
  color: #fff; box-shadow: 0 2px 6px rgba(37,99,235,.25);
}
.cl-card-body { padding: 14px 16px; }
.cl-card-title {
  font-size: 15px; font-weight: 700; color: #0f172a;
  margin-bottom: 6px; line-height: 1.4;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden;
}
.cl-card-preview {
  font-size: 13px; color: #64748b; line-height: 1.6;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; margin-bottom: 10px;
}
.cl-card-tags { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 10px; }
.cl-tag {
  padding: 2px 9px; border-radius: 999px; background: #eef2ff;
  color: #4f46e5; font-size: 11px; font-weight: 600; letter-spacing: .2px;
}
.cl-card-meta {
  display: flex; justify-content: space-between;
  font-size: 11.5px; color: #94a3b8; border-top: 1px solid #f1f5f9;
  padding-top: 10px;
}
.cl-card-actions {
  position: absolute; top: 10px; right: 10px; display: flex; gap: 4px; opacity: 0;
  transition: opacity .2s ease;
}
.cl-card:hover .cl-card-actions { opacity: 1; }
.cl-btn-icon {
  width: 30px; height: 30px; border-radius: 7px; border: 1px solid rgba(255,255,255,.3);
  background: rgba(255,255,255,.9); color: #475569; font-size: 14px;
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  transition: all .15s; backdrop-filter: blur(4px);
}
.cl-btn-icon:hover { background: #fff; box-shadow: 0 2px 6px rgba(15,23,42,.15); }
.cl-btn-del:hover { background: #fef2f2; color: #dc2626; border-color: #fecaca; }

/* ★ 文案库：项目/分类/标签 顶部区 */
.cl-meta-section {
  background: linear-gradient(180deg, #fffbf0 0%, #fff7e6 100%);
  border: 1.5px solid #fde68a; border-radius: 12px;
  padding: 16px 18px; margin-bottom: 20px;
  box-shadow: 0 2px 6px rgba(217,119,6,.06);
}
.cl-meta-row { display: flex; gap: 14px; margin-bottom: 10px; flex-wrap: wrap; }
.cl-meta-row:last-child { margin-bottom: 0; }
.cl-meta-item { flex: 1; min-width: 200px; display: flex; flex-direction: column; gap: 5px; }
.cl-meta-label {
  font-size: 12.5px; color: #92400e; font-weight: 700;
  letter-spacing: .2px;
}
.cl-meta-section .cl-input { border-color: #fde68a; }
.cl-meta-section .cl-input:hover { border-color: #f59e0b; }
.cl-meta-section .cl-input:focus { border-color: #d97706; box-shadow: 0 0 0 3px rgba(217,119,6,.15); }
.cl-tag-chips {
  display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; min-height: 4px;
}
.cl-tag-chip {
  display: inline-flex; align-items: center;
  padding: 3px 10px; background: #eef2ff; color: #4f46e5;
  border-radius: 999px; font-size: 12px; font-weight: 600;
}
/* 分类 badge */
.cl-badge-category {
  top: 10px; right: 10px;
  background: linear-gradient(135deg, rgba(245,158,11,.95), rgba(217,119,6,.95));
  color: #fff; box-shadow: 0 2px 6px rgba(245,158,11,.3);
}

/* ★ 浏览器推送书签工具 */
.cl-bkmk-box {
  user-select: none;
}
.cl-bookmarklet {
  display: inline-block;
  padding: 12px 28px;
  background: linear-gradient(135deg, #2563eb, #1d4ed8);
  color: #fff !important;
  border-radius: 10px;
  font-size: 14.5px;
  font-weight: 700;
  letter-spacing: .5px;
  text-decoration: none !important;
  cursor: grab;
  box-shadow: 0 4px 12px rgba(37,99,235,.35);
  transition: transform .15s, box-shadow .15s;
  user-select: none;
}
.cl-bookmarklet:hover { transform: translateY(-1px); box-shadow: 0 6px 16px rgba(37,99,235,.45); color: #fff !important; }
.cl-bookmarklet:active { cursor: grabbing; transform: scale(.97); }

/* ==================== 文案库弹窗 v2（极简四段式） ==================== */
.cl-modal { padding: 4px 2px; }
.cl-section { margin-bottom: 18px; }
.cl-section-label {
  display: flex; align-items: center; gap: 8px;
  font-size: 14px; font-weight: 700; color: var(--text);
  margin-bottom: 10px; letter-spacing: .2px;
}
.cl-section-num {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; border-radius: 50%;
  background: linear-gradient(135deg, #2563eb, #6366f1);
  color: #fff; font-size: 12px; font-weight: 700;
  box-shadow: 0 2px 4px rgba(37,99,235,.2);
}

/* 封面拖入区 */
.cl-drop-zone {
  position: relative;
  border: 2px dashed #c7d2fe; border-radius: 12px;
  background: linear-gradient(180deg, #f8faff 0%, #f1f5fb 100%);
  min-height: 160px; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 24px 16px;
  transition: all .2s ease;
}
.cl-drop-zone:hover { border-color: #6366f1; background: linear-gradient(180deg, #eef2ff 0%, #e0e7ff 100%); }
.cl-drop-zone.dragging { border-color: #2563eb; background: #dbeafe; transform: scale(1.01); }
.cl-cover-preview { display: flex; align-items: center; justify-content: center; margin-bottom: 8px; position: relative; max-width:100%; }
.cl-cover-preview img, .cl-cover-preview video { box-shadow: 0 4px 12px rgba(15,23,42,.12); }
.cl-cover-clear {
  position: absolute; top: -8px; right: -8px;
  width: 26px; height: 26px; border-radius: 50%;
  background: #dc2626; color: #fff; border: 2px solid #fff;
  font-size: 14px; line-height: 1; cursor: pointer;
  box-shadow: 0 2px 6px rgba(220,38,38,.35);
}
.cl-cover-clear:hover { background: #b91c1c; transform: scale(1.1); }
.cl-drop-hint { text-align: center; }
.cl-drop-icon { font-size: 36px; margin-bottom: 8px; opacity: .8; }
.cl-drop-title { font-size: 14px; font-weight: 600; color: var(--text); margin-bottom: 4px; }
.cl-drop-sub { font-size: 12px; color: var(--text-muted); margin-bottom: 10px; }
.cl-btn-pick {
  padding: 6px 18px; border: 1.5px solid #6366f1; border-radius: 8px;
  background: #fff; color: var(--primary); font-size: 13px; font-weight: 600;
  cursor: pointer; transition: all .15s;
}
.cl-btn-pick:hover { background: #eef2ff; border-color: var(--primary); }

/* 文字区 */
.cl-textarea { transition: border-color .2s, box-shadow .2s; }
.cl-textarea:focus { border-color: var(--primary) !important; box-shadow: 0 0 0 3px rgba(37,99,235,.12) !important; }

/* 飞书/Word 控制区 */
.cl-feishu-controls {
  display: flex; gap: 8px; margin-bottom: 8px; flex-wrap: wrap;
}
.cl-feishu-controls .cl-input { flex: 1; min-width: 240px; }
.cl-input {
  width: 100%; height: 38px; padding: 0 12px;
  border: 1.5px solid #e2e8f0; border-radius: 9px;
  background: #fff; font-size: 13.5px; color: var(--text);
  transition: all .2s ease; outline: none; font-family: inherit;
}
.cl-input:hover { border-color: #c7d2fe; }
.cl-input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(37,99,235,.12); }
.cl-input::placeholder { color: #cbd5e1; }
.cl-btn-primary {
  height: 38px; padding: 0 16px; border: none; border-radius: 9px;
  background: linear-gradient(135deg, #2563eb, #1d4ed8); color: #fff;
  font-size: 13px; font-weight: 600; cursor: pointer;
  transition: all .18s ease; white-space: nowrap;
  box-shadow: 0 2px 4px rgba(37,99,235,.2);
}
.cl-btn-primary:hover:not(:disabled) { box-shadow: 0 4px 10px rgba(37,99,235,.35); transform: translateY(-1px); }
.cl-btn-primary:disabled { opacity: .5; cursor: not-allowed; }
.cl-btn-outline {
  height: 38px; padding: 0 16px; border: 1.5px solid #e2e8f0; border-radius: 9px;
  background: #fff; color: var(--text-secondary);
  font-size: 13px; font-weight: 600; cursor: pointer;
  transition: all .18s ease; white-space: nowrap;
}
.cl-btn-outline:hover:not(:disabled) { border-color: var(--primary); color: var(--primary); background: var(--primary-light); }
.cl-btn-outline:disabled { opacity: .5; cursor: not-allowed; }
.cl-import-status { font-size: 12.5px; line-height: 1.5; margin-top: 6px; min-height: 18px; }

/* 高级选项 */
.cl-adv-toggle {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 12px; background: transparent;
  border: 1px dashed #cbd5e1; border-radius: 8px;
  color: var(--text-muted); font-size: 12.5px; font-weight: 600;
  cursor: pointer; transition: all .15s;
}
.cl-adv-toggle:hover { color: var(--primary); border-color: var(--primary); background: var(--primary-light); }
.cl-adv-content {
  margin-top: 12px; padding: 16px;
  background: linear-gradient(180deg, #f8faff 0%, #f1f5fb 100%);
  border-radius: 10px; border: 1px solid #e6e9f0;
}
.cl-adv-row { display: flex; gap: 12px; margin-bottom: 10px; flex-wrap: wrap; }
.cl-adv-row:last-child { margin-bottom: 0; }
.cl-adv-item { flex: 1; min-width: 200px; display: flex; flex-direction: column; gap: 4px; }
.cl-adv-label { font-size: 12px; color: var(--text-secondary); font-weight: 600; }

/* ==================== Alerts ==================== */
.alert {
  padding: 12px 18px;
  border-radius: var(--radius-sm);
  font-size: 13.5px;
  margin-bottom: 16px;
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: 8px;
}
.alert-success { background: var(--success-light); color: #065f46; border: 1px solid #a7f3d0; }
.alert-error { background: var(--danger-light); color: #991b1b; border: 1px solid #fecaca; }

/* ==================== Badges ==================== */
.badge {
  display: inline-flex;
  align-items: center;
  padding: 4px 12px;
  border-radius: 8px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.3px;
  white-space: nowrap;          /* 文字不换行，始终横排 */
  max-width: none;             /* 不截断 */
}
/* ── 控评状态 badge：三种质感配色 ── */
.badge-submitted {
  background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
  color: #1d4ed8;
  border: 1px solid #bfdbfe;
  box-shadow: 0 1px 2px rgba(37,99,235,0.08);
}
.badge-claimed {
  background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%);
  color: #b45309;
  border: 1px solid #fde68a;
  box-shadow: 0 1px 2px rgba(217,119,6,0.08);
}
.badge-completed {
  background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);
  color: #047857;
  border: 1px solid #a7f3d0;
  box-shadow: 0 1px 2px rgba(5,150,105,0.08);
}
.badge-dispatched {
  background: linear-gradient(135deg, #f5f3ff 0%, #ede9fe 100%);
  color: #6d28d9;
  border: 1px solid #ddd6fe;
  box-shadow: 0 1px 2px rgba(124,58,237,0.08);
}
/* 兼容旧 badge 类名 */
.badge-new { background: var(--primary-subtle); color: var(--primary); }
.badge-proxy { background: #ede9fe; color: #6d28d9; }
.badge-old { background: var(--bg); color: var(--text-secondary); }
.badge-danger { background: var(--danger-light); color: var(--danger); }
.badge-success { background: var(--success-light); color: var(--success); }
.badge-warning { background: var(--warning-light); color: var(--warning); }

/* ==================== 关键词分析（抖音指数）==================== */
.kw-index-table th, .kw-index-table td { text-align: center; vertical-align: middle; }
.kw-index-table td:first-child { text-align: left; }
.kw-index-table .kw-num { font-variant-numeric: tabular-nums; font-weight: 700; font-size: 14px; color: #1e293b; }
.kw-index-table td:first-child strong { font-size: 14px; }
.kw-spark { position: relative; min-width: 200px; }
.kw-bar { position: absolute; left: 0; top: 50%; transform: translateY(-50%); height: 24px; background: linear-gradient(90deg, rgba(99,102,241,0.10), rgba(99,102,241,0.04)); border-radius: 6px; z-index: 0; }
.kw-spark svg { position: relative; z-index: 1; }

/* ==================== Empty State ==================== */
.empty-state {
  text-align: center;
  padding: 56px 20px;
  color: var(--text-muted);
}
.empty-state svg { margin-bottom: 16px; opacity: 0.25; }
.empty-state p { font-size: 15px; font-weight: 500; }

/* ==================== Quick Actions ==================== */
.quick-actions {
  display: flex;
  gap: 10px;
  margin-bottom: 18px;
  flex-wrap: wrap;
}

/* ==================== Monthly Grid (月度业绩) ==================== */
.monthly-grid-wrapper { overflow-x: auto; border-radius: var(--radius-lg); border: 1px solid var(--border-light); }

.monthly-grid {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}
.monthly-grid th, .monthly-grid td {
  padding: 7px 12px;
  border: 1px solid #e8e8e8;
  text-align: center;
  min-width: 60px;
}
.monthly-grid .date-col { min-width: 90px; text-align: left; font-weight: 600; }
.monthly-grid .group-header { background: linear-gradient(180deg, #eff6ff 0%, #dbeafe 100%); font-weight: 700; color: var(--primary); }
.monthly-grid .sub-header { background: #f0f4ff; font-weight: 600; }
.monthly-grid .data-cell { font-weight: 600; }

/* ==================== 月度业绩 - 按归属人分组卡片 ==================== */
.perf-owner { background: var(--card-bg); border: 1px solid var(--border-light); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: 18px 20px; margin-bottom: 18px; }
.perf-owner-mine { border: 2px solid #6366f1; background: linear-gradient(180deg, #f5f7ff 0%, #ffffff 60%); }
.perf-owner-head { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 14px; }
.perf-owner-head h3 { margin: 0; font-size: 17px; color: var(--text-primary); }
.perf-owner-title-block { flex: 1; }
.perf-encourage { margin: 4px 0 0; font-size: 13px; color: #6366f1; line-height: 1.5; opacity: 0.9; }
.perf-badge { font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 12px; background: #eef2ff; color: #4338ca; }
.perf-badge-mine { background: #6366f1; color: #fff; }
.perf-combos { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; }
.perf-combo { border: 1px solid var(--border-light); border-radius: 8px; overflow: hidden; }
.perf-combo-title { background: #f0f4ff; padding: 8px 12px; font-weight: 600; }
.perf-line { color: var(--primary); }
.perf-doctor { color: var(--text-secondary); font-weight: 500; margin-left: 4px; }
.perf-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.perf-table th, .perf-table td { padding: 8px 16px; border-bottom: 1px solid #eef0f4; text-align: left; }
.perf-table th.num, .perf-table td.num { text-align: right; }
.perf-table thead th { background: #fafbfc; font-weight: 600; color: var(--text-secondary); }
.perf-table tfoot td { font-weight: 700; background: #f7f9ff; border-top: 2px solid #e0e7ff; border-bottom: none; }

/* ==================== 月度业绩 - 主管按项目分组（可折叠） ==================== */
.perf-project { transition: box-shadow .15s ease; }
.perf-project-head { cursor: pointer; user-select: none; margin-bottom: 0; }
.perf-project-head:hover { background: linear-gradient(180deg, #f8fafc 0%, #ffffff 100%); border-radius: var(--radius-lg); }
.perf-project-head .collapse-icon { margin-left: auto; font-size: 16px; color: var(--text-secondary); transition: transform .15s ease; flex-shrink: 0; }
.perf-project-body { padding-top: 14px; }

/* 主管月度业绩 - 医生汇总表 */
.perf-doc-summary-table { width:100%; border-collapse:collapse; font-size:13.5px; margin-top:4px; }
.perf-doc-summary-table th { background:#fafbfc; font-weight:600; color:var(--text-secondary); padding:10px 16px; border-bottom:1px solid #eef0f4; text-align:left; }
.perf-doc-summary-table td { padding:11px 18px; border-bottom:1px solid #f0f2f5; }
.perf-doc-summary-table td.num { text-align:right; color:var(--text-primary); font-weight:600; font-variant-numeric:tabular-nums; }
.perf-doc-row:hover { background:#f8faff; cursor:default; }
.perf-doc-name { font-weight:600; color:var(--text-primary); white-space:nowrap; }
.perf-doc-toggle { display:inline-block; width:24px; height:24px; line-height:24px; text-align:center; cursor:pointer; color:var(--text-muted); font-size:12px; border-radius:4px; transition:background .15s; user-select:none; }
.perf-doc-toggle:hover { background:#e8ecff; color:var(--primary); }
.perf-doc-detail td { padding:0 !important; border-bottom:none !important; }

/* ===== 月度业绩 - 按天展开（31天每日）===== */
.perf-daily-container { padding: 8px 0; }
.perf-day-block { margin-bottom: 6px; }
.perf-day-head {
  display: flex; align-items: center; gap: 10px;
  padding: 9px 14px; background: #fafbfc;
  border: 1px solid #eef0f4; border-radius: var(--radius-md);
  cursor: pointer; user-select: none; transition: all .15s ease;
}
.perf-day-head:hover { background: #f0f2f5; border-color: #d4d8e0; }
.perf-day-date {
  font-size: 13.5px; font-weight: 700; color: var(--text-primary);
  min-width: 72px; white-space: nowrap;
}
.perf-day-sum {
  font-size: 12.5px; color: var(--text-secondary);
}
.perf-day-sum.text-muted { color: var(--text-muted); font-style: italic; }
.perf-day-body {
  padding: 8px 14px; border: 1px solid #eef0f4;
  border-top: none; border-radius: 0 0 var(--radius-md) var(--radius-md);
  background: #fff;
}
.perf-day-head .collapse-icon {
  margin-left: auto; flex-shrink: 0;
  font-size: 14px; color: var(--text-muted);
  transition: transform .15s ease;
}
.perf-daily-table { width:auto; border-collapse:collapse; font-size:13px; }
.perf-daily-table th { background:#f8fafc; font-weight:600; color:#334155; padding:9px 6px; border:1.5px solid #cbd5e1; text-align:center; white-space:nowrap; vertical-align:middle; }
.perf-daily-table th.col-date { width:72px; min-width:68px; white-space:nowrap; }
.perf-daily-table th.proj-name-cell { font-size:14px; font-weight:700; color:#0f172a; letter-spacing:.5px; background:#eff6ff; border-color:#93c5fd; }
.perf-daily-table th.sub-header { font-size:12.5px; color:#475569; background:#f1f5f9; }
.perf-daily-table td { padding:7px 6px; border:1.5px solid #e2e8f0; text-align:center; vertical-align:middle; }
.perf-daily-table td.num { text-align:right; font-variant-numeric:tabular-nums; font-weight:600; color:#1e293b; padding-right:14px; }
.perf-doc-detail-inner { padding:12px 16px; background:#fafbff; border-radius:0 0 var(--radius-md) var(--radius-md); border:1px solid #eef0f4; border-top:none; }
.perf-detail-table { font-size:12.5px; }
/* ==================== 月度业绩 — Excel风格专业表格 ==================== */
.monthly-proj-table {
  display: block;
  margin-bottom:24px;
  border:1px solid #e2e8f0;
  border-radius:12px;
  overflow:visible;
  background:#fff;
  box-shadow:0 1px 4px rgba(0,0,0,0.04);
}
/* 折叠标题栏 */
.monthly-toggle {
  cursor:pointer; user-select:none;
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 20px;
  background:linear-gradient(135deg,#f8fafc 0%,#f1f5f9 100%);
  transition:background .2s ease;
}
.monthly-toggle:hover { background:linear-gradient(135deg,#f1f5f9 0%,#e8ecf4 100%); }
.monthly-toggle-title { font-size:15px; color:#1e293b; font-weight:700; letter-spacing:.3px; }
.monthly-toggle-arrow { font-size:11px; color:#94a3b8; transition:transform .2s ease; display:inline-block; width:16px; text-align:center; }
.monthly-collapsed .monthly-toggle-arrow { transform:-90deg; }
.monthly-collapsed .monthly-tbody-wrap { display:none; }
.monthly-tbody-wrap { overflow-x:auto; }

.perf-daily-table {
  width:auto; border-collapse:collapse;
  font-size:12.5px;
}
.perf-daily-table thead th {
  background:#f1f5f9;
  font-weight:600;
  color:#475569;
  font-size:11.5px;
  padding:10px 12px;
  border:1px solid #e2e8f0;
  text-align:center;
  white-space:nowrap;
  vertical-align:middle;
}
/* 第1行表头 — 项目名横跨 */
.perf-daily-table thead th.proj-name-cell {
  font-size:14px; font-weight:700; color:#0f172a;
  letter-spacing:.5px; background:#eff6ff;
  border-color:#bfdbfe; padding:13px 20px;
}
/* 第2行子标题 */
.perf-daily-table thead th.sub-header {
  font-size:11.5px; color:#64748b;
  background:#f8fafc; font-weight:600;
}

.perf-daily-table td {
  padding:7px 8px;
  border:1.5px solid #eef1f6;
  text-align:center;
  vertical-align:middle;
  font-variant-numeric:tabular-nums;
}
/* 日期列 — 居中 */
.perf-daily-table td:first-child {
  text-align:center; font-weight:600; color:#334155;
  background:#fafbfc; min-width:68px; width:72px;
  font-size:12.5px; white-space:nowrap;
}
/* 数字单元格 — 居中 */
.perf-daily-table td.num {
  text-align:center;
  font-weight:600;
  color:#1e293b;
}
/* 空数据淡化 */
.perf-daily-table td:empty::after,
.perf-daily-table td:not(:first-child):not(.num) {
  min-width:64px;
}
/* 当月合计行（tbody顶部） */
.perf-daily-table tbody tr.sum-row-top > td {
  background:#eff6ff;
  border-bottom:2px solid #93c5fd;
  font-weight:700;
  color:#0f172a;
}
.perf-daily-table tbody tr.proj-sum-row > td {
  background:#ecfdf5;
  border-bottom:2px solid #6ee7b7;
  font-weight:700;
  color:#065f46;
}
.perf-daily-table tbody tr.proj-sum-row > td:first-child {
  background:#d1fae5;
}
.perf-daily-table tbody tr:hover > td { background:#f8fafc; }

/* 员工月度业绩表 — 加宽（非主管） */
.monthly-proj-wide .perf-daily-table { width:auto; }
.monthly-proj-wide .perf-daily-table td:not(:first-child) { min-width:90px; }
.monthly-proj-wide .perf-daily-table td.num { min-width:90px; }
.monthly-proj-wide .perf-daily-table td:first-child { min-width:64px; width:72px; }
.monthly-proj-wide .perf-daily-table thead th:not(.col-date):not(.proj-name-cell) { min-width:90px; padding:8px 10px; }
.monthly-proj-wide .perf-daily-table thead th.proj-name-cell { padding:11px 18px; }

/* ==================== 月度业绩 - 挂号数计数提示（v20260807+，精简一行）==================== */
.monthly-formula-hint {
  font-size: 12px;
  color: #94a3b8;
  margin: 0 0 14px;
  letter-spacing: .2px;
}

/* ==================== 登录页 - 全屏专业风格 ==================== */
.login-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  width: 100%;
  background: linear-gradient(135deg, #0f172a 0%, #1e293b 40%, #0f172a 100%);
  position: relative;
  overflow: hidden;
}

/* 背景装饰 */
.login-wrap::before {
  content: '';
  position: absolute;
  width: 600px;
  height: 600px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(37,99,235,0.15) 0%, transparent 70%);
  top: -200px;
  right: -150px;
  animation: float 8s ease-in-out infinite;
}
.login-wrap::after {
  content: '';
  position: absolute;
  width: 400px;
  height: 400px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(59,130,246,0.1) 0%, transparent 70%);
  bottom: -100px;
  left: -100px;
  animation: float 10s ease-in-out infinite reverse;
}

@keyframes float {
  0%, 100% { transform: translate(0, 0); }
  50% { transform: translate(20px, -20px); }
}

.login-card {
  background: rgba(255,255,255,0.97);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-radius: var(--radius-xl);
  box-shadow: 0 25px 60px rgba(0,0,0,0.3), 0 0 0 1px rgba(255,255,255,0.1);
  padding: 44px 40px;
  width: 400px;
  max-width: 92vw;
  position: relative;
  z-index: 1;
  animation: cardIn 0.5s ease;
}

@keyframes cardIn {
  from { opacity: 0; transform: translateY(20px) scale(0.97); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

.login-logo {
  font-size: 28px;
  font-weight: 800;
  background: linear-gradient(135deg, var(--primary), #7c3aed);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  letter-spacing: 3px;
  text-align: center;
  margin-bottom: 4px;
}
.login-sub {
  font-size: 13px;
  color: var(--text-muted);
  margin-bottom: 28px;
  text-align: center;
  font-weight: 400;
}
.login-tip {
  font-size: 13.5px;
  color: var(--text-secondary);
  margin-bottom: 22px;
  text-align: center;
  font-weight: 500;
}

/* 登录输入框增强 */
.login-card .form-input {
  padding: 12px 16px;
  font-size: 15px;
  border-radius: var(--radius);
  border: 1.5px solid var(--border);
  transition: all var(--transition);
}
.login-card .form-input:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 4px rgba(37,99,235,0.1);
}

.login-card .btn-primary {
  width: 100%;
  padding: 13px;
  font-size: 15px;
  font-weight: 700;
  border-radius: var(--radius);
  margin-top: 8px;
  letter-spacing: 1px;
}
.login-demo { display: none; }

/* ==================== 账单余额卡片 ==================== */
.balance-card {
  border-radius: var(--radius-lg);
  padding: 28px 30px;
  margin-bottom: 20px;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border-light);
}
.balance-positive {
  background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);
  border-color: #a7f3d0;
}
.balance-negative {
  background: linear-gradient(135deg, #fef2f2 0%, #fee2e2 100%);
  border-color: #fecaca;
}
.balance-label { font-size: 13px; color: var(--text-secondary); font-weight: 600; }
.balance-value {
  font-size: 42px;
  font-weight: 800;
  margin: 8px 0;
  letter-spacing: -2px;
  line-height: 1;
}
.balance-positive .balance-value { color: var(--success); }
.balance-negative .balance-value { color: var(--danger); }
.balance-detail { font-size: 13px; color: var(--text-secondary); margin-top: 8px; }

.bill-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
@media (max-width: 768px) { .bill-cols { grid-template-columns: 1fr; } }
.bill-table th, .bill-table td { white-space: nowrap; }
.auto-row { background: linear-gradient(135deg, #fef2f2 0%, #fff1f2 100%); }

/* ==================== 账单统计 - 逐成员卡片 ==================== */
.bill-member-card { border: 1px solid var(--border-light); border-radius: var(--radius-lg); margin-bottom: 16px; overflow: hidden; box-shadow: var(--shadow-sm); }
.bm-head { display: flex; align-items: center; gap: 12px; padding: 14px 18px; background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); border-bottom: 1px solid var(--border-light); }
.bm-name { font-size: 16px; font-weight: 700; color: var(--text-primary); }
.bm-role { font-size: 11px; color: #6366f1; background: #eef2ff; border: 1px solid #c7d2fe; border-radius: 10px; padding: 1px 8px; }
.bm-balance { margin-left: auto; font-size: 13px; font-weight: 600; }
.bm-balance.balance-positive { color: var(--success); }
.bm-balance.balance-negative { color: var(--danger); }
.bill-member-card .bill-cols { padding: 16px 18px; margin-bottom: 0; }

/* ==================== 账单统计 - 分发组业绩（主管，可折叠） ==================== */
.dg-wrap { display: flex; flex-direction: column; gap: 10px; }
.dg-group { border: 1px solid var(--border-light); border-radius: var(--radius-md); overflow: hidden; }
.dg-group-head {
  display: flex; align-items: center; gap: 10px; padding: 12px 16px; cursor: pointer;
  background: linear-gradient(135deg, #eef2ff 0%, #f5f3ff 100%); transition: background .15s;
  user-select: none;
}
.dg-group-head:hover { background: linear-gradient(135deg, #e0e7ff 0%, #ede9fe 100%); }
.dg-caret { display: inline-block; width: 14px; color: var(--primary); font-size: 12px; transition: transform .15s; }
.dg-name { font-weight: 700; font-size: 15px; color: var(--text-primary); }
.dg-sum { font-size: 12.5px; color: var(--text-secondary); margin-left: auto; text-align: right; line-height: 1.5; }
.dg-body { padding: 4px 16px 16px; background: #fff; }
.dg-table th, .dg-table td { font-size: 13px; padding: 10px 16px; }
.dg-up { color: #16a34a; font-weight: 700; }
.dg-mid { color: #d97706; font-weight: 700; }
.dg-down { color: #dc2626; font-weight: 700; }
@media (max-width: 768px) { .dg-sum { display: none; } }

/* ==================== 平台图标标签 + 备注宽列 ==================== */
.plat-badge { vertical-align: middle; }
.note-wide { min-width: 200px !important; max-width: 360px; word-break: break-all; }


/* ==================== 博主大厅表格 ==================== */
#hallTable td,
#hallTable th {
  white-space: nowrap;
  padding: 10px 14px;
}
/* 姓名(3) 平台(4) 账号(5) — 加宽防竖排 */
#hallTable th:nth-child(3), #hallTable td:nth-child(3),
#hallTable th:nth-child(4), #hallTable td:nth-child(4),
#hallTable th:nth-child(5), #hallTable td:nth-child(5)
{ min-width: 80px; }

/* ==================== 发布管理表格 — 高级质感 ==================== */
#opsWorkTable {
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(0,0,0,0.04), 0 1px 2px rgba(0,0,0,0.02);
}
#opsWorkTable thead th {
  background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
  font-weight: 600;
  color: #334155;
  font-size: 12px;
  padding: 11px 14px;
  border-bottom: 1.5px solid #e2e8f0;
  white-space: nowrap;
  text-align: left;
}
#opsWorkTable td {
  padding: 10px 12px;
  vertical-align: middle;
  border-bottom: 1px solid #f1f5f9;
  font-size: 13px;
}
/* 交替行背景色 — 质感关键 */
#opsWorkTable tbody tr:nth-child(even) td { background: #fafbfc; }
#opsWorkTable tbody tr:hover > td { background: #eff6ff; }

/* 序号列 */
#opsWorkTable th:first-child,
#opsWorkTable td:first-child { width: 40px; text-align: center; }
.seq-badge { display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;background:#dbeafe;color:#1d4ed8;border-radius:50%;font-weight:700;font-size:11px; margin:0 auto;}

/* 链接列 */
.link-cell-a { color:#2563eb;text-decoration:none;font-size:12px;line-height:1.35;display:inline-block;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.link-cell-a:hover { text-decoration:underline;color:#1d4ed8; }

/* 全局隐藏数字输入框的上下箭头（spin button），让用户手填 */
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
input[type="number"] {
  -moz-appearance: textfield; /* Firefox */
}

/* 表格内输入框 — 紧凑精致 */
#opsWorkTable input[type="text"],
#opsWorkTable input[type="number"],
#opsWorkTable select {
  padding: 6px 10px;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  font-size: 13px;
  background: #fff;
  transition: border-color .15s, box-shadow .15s;
  min-width: 100px;
}
/* 反馈结果 select — 需要更宽才能显示完整选项 */
/* 结算金额输入框（首款/尾款/奖励/补偿/评论结算）— 紧凑 */
#opsWorkTable input.settle-input {
  min-width: 80px;
  max-width: 100px;
}
/* 已结算金额展示 — 浅蓝背景区分 */
#opsWorkTable .settled-field {
  display: inline-block;
  padding: 5px 10px;
  background: #eff6ff;
  color: #1e40af;
  border-radius: 6px;
  font-weight: 600;
  font-size: 13px;
}
#opsWorkTable select.ops-result-select {
  min-width: 120px;
}
#opsWorkTable input:focus,
#opsWorkTable select:focus {
  outline: none;
  border-color: #93c5fd;
  box-shadow: 0 0 0 2px rgba(147,197,253,.25);
}

/* 时间类单元格：预定时间 / 发布时间 — 色块胶囊，避免满屏黑字视觉疲劳 */
#opsWorkTable .ops-time-cell {
  display:inline-flex;
  align-items:center;
  font-size:12px;
  font-weight:600;
  font-variant-numeric:tabular-nums; /* 数字等宽对齐 */
  padding:4px 10px;
  border-radius:6px;
  white-space:nowrap;
  line-height:1.3;
  border:1px solid transparent;
}
#opsWorkTable .ops-time-sched { color:#4338ca; background:#eef2ff; border-color:#e0e7ff; } /* 预定时间：靛蓝（计划） */
#opsWorkTable .ops-time-pub   { color:#0f766e; background:#f0fdfa; border-color:#ccfbf1; } /* 发布时间：青绿（实际） */
#opsWorkTable .ops-time-err  { color:#7e22ce; background:#f3e8ff; border-color:#e9d5ff; } /* 读取失败：紫（与判定列一致） */

/* 系统判定列 */
.ops-sys-judge-cell {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.ops-sys-judge {
  display:inline-flex;
  align-items:center;
  font-size:12px;
  font-weight:600;
  padding:3px 10px;
  border-radius:999px;
  white-space:nowrap;
  line-height:1.4;
  border:1px solid transparent;
}

/* 刷新按钮 */
.jj-refresh {
  padding:2px 8px !important;
  font-size:11px !important;
}

/* 播放量/点赞/评论/收藏 — 只读指标 */
.cell-metric {
  text-align:right;
  font-variant-numeric: tabular-nums;
  color:#475569;
  font-weight:500;
}
/* 播放量分级背景色 — 绿色渐变 + 红色数字 */
#opsWorkTable td[class*="views-b"] {
  position: relative;
  font-weight: 700;
  letter-spacing: -0.2px;
  font-variant-numeric: tabular-nums;
  border-radius: 8px;
  padding: 11px 14px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.18), inset 0 -1px 0 rgba(0,0,0,.04);
  text-align: right;
  transition: transform .12s ease, box-shadow .15s ease;
}
/* 顶角微光晕 — 玻璃感 */
#opsWorkTable td[class*="views-b"]::before {
  content: '';
  position: absolute; left: 0; right: 0; top: 0; height: 50%;
  background: linear-gradient(180deg, rgba(255,255,255,.22) 0%, rgba(255,255,255,0) 100%);
  border-radius: 8px 8px 0 0;
  pointer-events: none;
}
/* 红色数字通用样式 */
#opsWorkTable td[class*="views-b"] {
  color: #dc2626;
  text-shadow: 0 1px 0 rgba(255,255,255,.4);
}

/* 3000–1万：极淡绿 */
#opsWorkTable td.views-b1 { background: linear-gradient(135deg,#f0fdf4 0%,#dcfce7 100%); }
/* 1万–2万：浅绿 */
#opsWorkTable td.views-b2 { background: linear-gradient(135deg,#dcfce7 0%,#bbf7d0 100%); }
/* 2万–5万：薄荷绿 */
#opsWorkTable td.views-b3 { background: linear-gradient(135deg,#bbf7d0 0%,#86efac 100%); }
/* 5万–10万：翠绿 */
#opsWorkTable td.views-b4 { background: linear-gradient(135deg,#86efac 0%,#4ade80 100%); }
/* 10万–100万：饱和翠绿 */
#opsWorkTable td.views-b5 { background: linear-gradient(135deg,#4ade80 0%,#22c55e 100%); }
/* 100万–200万：深绿 */
#opsWorkTable td.views-b6 { background: linear-gradient(135deg,#22c55e 0%,#16a34a 100%); box-shadow: inset 0 1px 0 rgba(255,255,255,.25), inset 0 -1px 0 rgba(0,0,0,.18), 0 1px 2px rgba(22,163,74,.2); }
/* 200万以上：墨绿顶级 + 红色加深 */
#opsWorkTable td.views-b7 { background: linear-gradient(135deg,#15803d 0%,#14532d 60%,#052e16 100%); color: #fecaca; text-shadow: 0 1px 0 rgba(0,0,0,.3), 0 0 8px rgba(220,38,38,.4); box-shadow: inset 0 1px 0 rgba(255,255,255,.2), inset 0 -1px 0 rgba(0,0,0,.25), 0 0 12px rgba(220,38,38,.25); }

/* ==================== 杂项 ==================== */
.muted { color: var(--text-muted); }
.form-hint {
  background: var(--bg);
  padding: 8px 12px;
  border-radius: var(--radius-sm);
  font-size: 12.5px;
  color: var(--text-secondary);
  border: 1px solid var(--border-light);
}

/* ==================== Dashboard 分组标题 ==================== */
.dashboard-section-title {
  font-size: 15px;
  font-weight: 700;
  color: var(--text);
  margin: 28px 0 16px;
  padding-bottom: 10px;
  border-bottom: 2px solid var(--border-light);
  display: flex;
  align-items: center;
  gap: 8px;
}
.dashboard-section-title::before {
  content: '';
  width: 4px;
  height: 16px;
  background: var(--primary);
  border-radius: 2px;
}

/* ==================== Responsive ==================== */
@media (max-width: 1024px) {
  .sidebar { width: 68px; }
  .sidebar .nav-item span,
  .sidebar .nav-group-label,
  .sidebar .logo,
  .sidebar .logo-sub,
  .sidebar .user-bar,
  .sidebar .sidebar-footer { display: none; }
  .sidebar .nav-item { justify-content: center; padding: 14px; }
  .sidebar .sidebar-header { padding: 20px 0; text-align: center; }
  .main-content { margin-left: 68px; max-width: calc(100vw - 68px); padding: 24px 20px; }
  .stats-grid { grid-template-columns: repeat(2, 1fr); }
  .page-title { font-size: 22px; }
}

@media (max-width: 640px) {
  .stats-grid { grid-template-columns: 1fr; }
  .main-content { padding: 16px; }
  .login-card { padding: 32px 24px; }
  .modal { padding: 20px; margin: 10px; }
}

/* ==================== 移动端抽屉式侧边栏（<768px） ==================== */
.mobile-topbar { display: none; }
.sidebar-overlay { display: none; }

@media (max-width: 767px) {
  /* 顶部栏：仅手机端显示，含汉堡菜单按钮 */
  .mobile-topbar {
    display: flex; align-items: center; gap: 12px;
    position: fixed; top: 0; left: 0; right: 0; height: 52px;
    padding: 0 14px; background: var(--sidebar-bg); color: #fff;
    z-index: 96; box-shadow: 0 2px 12px rgba(0,0,0,.15);
  }
  .mobile-topbar .menu-toggle {
    background: transparent; border: none; color: #fff; cursor: pointer;
    font-size: 22px; line-height: 1; padding: 6px 8px; border-radius: 8px;
  }
  .mobile-topbar .menu-toggle:active { background: rgba(255,255,255,.12); }
  .mobile-topbar-title { font-size: 16px; font-weight: 700; letter-spacing: 1px; }

  /* 侧边栏变抽屉：默认移出屏幕左侧 */
  .sidebar {
    width: 200px; transform: translateX(-100%);
    transition: transform .28s var(--transition); z-index: 100;
    box-shadow: 4px 0 24px rgba(0,0,0,.25);
  }
  /* 恢复完整菜单（覆盖 1024 图标栏的隐藏文字） */
  .sidebar .nav-item span,
  .sidebar .nav-group-label,
  .sidebar .logo,
  .sidebar .logo-sub,
  .sidebar .user-bar,
  .sidebar .sidebar-footer { display: block; }
  .sidebar .nav-item { justify-content: flex-start; padding: 11px 14px; }
  .sidebar .nav-item span { display: inline; }
  .sidebar .nav-group-label { padding: 16px 12px 8px; }
  .sidebar .sidebar-header { padding: 28px 20px 20px; text-align: left; }
  .sidebar .user-bar { display: block; }

  /* 抽屉展开 */
  #app.sidebar-open .sidebar { transform: translateX(0); }

  /* 遮罩层 */
  .sidebar-overlay {
    display: none; position: fixed; inset: 0;
    background: rgba(15,23,42,.45); z-index: 95;
  }
  #app.sidebar-open .sidebar-overlay { display: block; }

  /* 主内容占满全宽，下移让出顶栏 */
  .main-content {
    margin-left: 0; max-width: 100vw; padding: 64px 14px 20px;
  }
  .page-title { font-size: 20px; }
  .filters { flex-wrap: wrap; gap: 8px; }
  .filters .form-group { margin-bottom: 0; }
  .table-wrapper { -webkit-overflow-scrolling: touch; }
  .card { margin-bottom: 14px; }
  .bm-head { flex-wrap: wrap; }
}

/* ==================== 控评下单 - 评论条目编辑器（嵌套结构） ==================== */
.co-items { display: flex; flex-direction: column; gap: 10px; }
.co-comment-card { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px; padding: 12px 14px; position: relative; }
.co-card-header { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.comment-nick { font-weight: 700; color: #4f46e5; min-width: 44px; font-size: 13px; }
.comment-type-badge { font-size: 11px; background:#ede9fe;color:#7c3aed;padding:2px 8px;border-radius:10px;font-weight:600; }
.co-reply-badge { background:#fef3c7;color:#d97706; }
.co-del-btn { margin-left: auto !important; width: 26px; height: 26px; padding: 0; font-size: 15px; line-height: 1; border-radius: 50%; display:flex;align-items:center;justify-content:center; flex-shrink: 0; }
.co-content { flex: 1; min-width: 200px; font-size: 13px; }
.co-reply-btn { margin-top: 6px; font-size: 12px; color: #0369a1; border-color: #bae6fd; }
.co-reply-btn:hover { background: #e0f2fe; color: #0284c7; }
.co-add-btn { margin-top: 4px; font-size: 12.5px; border-style: dashed; }
/* 回复区域（缩进） */
.co-replies-box { margin-top: 8px; margin-left: 20px; padding-left: 14px; border-left: 3px solid #c7d2fe; border-radius: 0 6px 6px 0; display: flex; flex-direction: column; gap: 6px; background: #faf5ff; padding: 8px 10px; border-radius: 0 8px 8px 0; }
.co-reply-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.co-reply-nick { font-weight: 600; color: #7c3aed; min-width: 60px; font-size: 12px; }
.co-reply-content { min-width: 160px; font-size: 12.5px; }

/* ==================== 评论模版 ==================== */
.ct-toolbar { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:14px; }
.ct-space { display:flex; gap:4px; background:#f1f5f9; border-radius:10px; padding:3px; }
.ct-space-tab { padding:6px 16px; border-radius:8px; font-size:13px; cursor:pointer; color:#64748b; transition:all .15s ease; border:none;background:transparent;font-weight:500; }
.ct-space-tab:hover { color:#334155; }
.ct-space-tab.active { background:#fff; color:#4f46e5; box-shadow:0 1px 4px rgba(0,0,0,.08); font-weight:600; }
.ct-cats { display:flex; gap:8px; flex-wrap:wrap; }
.ct-cat { padding:5px 14px; border-radius:999px; background:#f1f5f9; color:#475569; font-size:13px; cursor:pointer; border:1px solid transparent; transition:all .15s ease; }
.ct-cat:hover { background:#e2e8f0; }
.ct-cat.active { background:linear-gradient(135deg,#4f46e5,#7c3aed); color:#fff; box-shadow:0 2px 8px rgba(79,70,229,.3); }
.ct-search { max-width:240px; }
.ct-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(270px,1fr)); gap:16px; }
.ct-loading, .ct-empty { color:var(--text-muted); padding:30px; text-align:center; grid-column:1/-1; }
.ct-card { background:#fff; border:1px solid #e2e8f0; border-radius:14px; padding:16px; display:flex; flex-direction:column; gap:10px; transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease; }
.ct-card:hover { transform:translateY(-2px); box-shadow:0 8px 22px rgba(15,23,42,.08); border-color:#c7d2fe; }
.ct-card-head { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.ct-card-title { font-weight:700; font-size:15px; color:#0f172a; }
.ct-badge { font-size:11px; padding:2px 8px; border-radius:999px; white-space:nowrap; }
.ct-badge.shared { background:#ecfdf5; color:#059669; }
.ct-badge.cat { background:#eef2ff; color:#4f46e5; }
.ct-badge.saved { background:#dcfce7; color:#16a34a; border:1px solid #86efac; }
.ct-card-meta { font-size:12px; color:var(--text-muted); }
.ct-card-owner { font-size:12px; color:#0369a1; background:#f0f9ff; border-radius:8px; padding:4px 8px; margin:2px 0 6px; display:inline-block; }
.ct-prev { background:#f8fafc; border-radius:10px; padding:10px 12px; display:flex; flex-direction:column; gap:5px; max-height:120px; overflow:auto; }
.ct-prev-item { font-size:12px; color:#334155; display:flex; gap:6px; align-items:center; }
.ct-prev-type { font-size:10px; padding:1px 6px; border-radius:6px; flex-shrink:0; }
.ct-prev-type.comment { background:#dbeafe; color:#1d4ed8; }
.ct-prev-type.reply { background:#fae8ff; color:#a21caf; }
.ct-prev-empty { color:#94a3b8; }
.ct-prev-more { font-size:11px; color:#94a3b8; }
.ct-card-actions { display:flex; gap:8px; margin-top:auto; }
.ct-card-actions .ct-del { color:#ef4444; border-color:#fecaca; }
.ct-card-actions .ct-del:hover { background:#fef2f2; }
/* ==================== 创作灵感（工具）v2 — 结构化卡片 ==================== */

/* ---- 工具栏：搜索 + 筛选 ---- */
.ins-toolbar { display:flex; align-items:center; gap:12px; margin-bottom:14px; flex-wrap:wrap; }
.ins-search-wrap { display:flex; flex:1; min-width:220px; max-width:360px; }
.ins-search-input { flex:1; border:1px solid #e2e8f0; border-radius:8px; padding:7px 12px; font-size:13px; outline:none; transition:border-color .2s; background:#fff; }
.ins-search-input:focus { border-color:#6366f1; box-shadow:0 0 0 3px rgba(99,102,241,.1); }
.ins-search-btn { border-radius:0 8px 8px 0; font-size:13px; }
.ins-filter-tabs { display:flex; gap:4px; background:#f1f5f9; padding:3px; border-radius:10px; }
.ins-tab { padding:5px 14px; border-radius:8px; font-size:13px; font-weight:500; color:#64748b; cursor:pointer; transition:all .2s; user-select:none; white-space:nowrap; }
.ins-tab:hover { color:#334155; }
.ins-tab.active { background:#fff; color:#4f46e5; box-shadow:0 1px 3px rgba(0,0,0,.08); font-weight:600; }

/* ---- 卡片网格 ---- */
.ins-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:16px; }

/* ---- v2 卡片 ---- */
.ins-card-v2 { background:#fff; border:1px solid #e2e8f0; border-radius:12px; overflow:hidden; display:flex; flex-direction:column; transition:transform .2s, box-shadow .2s; }
.ins-card-v2:hover { transform:translateY(-2px); box-shadow:0 8px 25px -5px rgba(0,0,0,.12); }

/* 封面区 */
.insv-cover-area { position:relative; line-height:0; overflow:hidden; background:#f8fafc; aspect-ratio:16/9; }
.insv-cover { width:100%; height:100%; object-fit:cover; display:block; transition:transform .3s; }
.ins-card-v2:hover .insv-cover { transform:scale(1.03); }
.insv-no-cover .insv-no-img { width:100%; height:100%; background:linear-gradient(135deg,#f1f5f9,#e2e8f0); display:flex; align-items:center; justify-content:center; }
.insv-no-cover::after { content:'🎬'; font-size:32px; opacity:.35; }
/* 无封面时 */
.insv-no-img { width:100%; height:100%; object-fit:none; }

/* 平台角标 */
.insv-plat-pill { position:absolute; top:10px; left:10px; font-size:11.5px; font-weight:700; padding:3px 10px; border-radius:6px; letter-spacing:.3px; z-index:2; }
.ins-p-dy { background:linear-gradient(135deg,#eef2ff,#e0e7ff); color:#4f46e5; border:1px solid #c7d2fe; }
.ins-p-xhs { background:linear-gradient(135deg,#fef2f2,#fee2e2); color:#dc2626; border:1px solid #fecaca; }
.ins-p-sph { background:linear-gradient(135deg,#ecfdf3,#d1fae5); color:#059669; border:1px solid #a7f3d0; }
.ins-p-un { background:linear-gradient(135deg,#f1f5f9,#e2e8f0); color:#475569; border:1px solid #cbd5e1; }

/* 标题开头平台标识（内联标签 + 图标） */
.ins-plat-tag {
  display:inline-flex;
  align-items:center;
  gap:3px;
  font-size:11.5px;
  font-weight:700;
  line-height:1.3;
  padding:2px 8px;
  border-radius:5px;
  margin-right:8px;
  vertical-align:middle;
  flex-shrink:0;
  letter-spacing:.3px;
}
.ins-plat-icon {
  font-size:12px;
  font-style:normal;
  font-weight:900;
  line-height:1;
  display:inline-block;
  transform:translateY(-0.5px);
}

/* 状态角标 v2 */
.ins-badge-status { position:absolute; top:10px; right:10px; font-size:10.5px; padding:2px 9px; border-radius:999px; font-weight:600; z-index:2; }
.ins-bs-parse { background:#fff7ed; color:#d97706; border:1px solid #fde68a; animation:pulse-subtle 1.5s infinite; }
.ins-bs-fail { background:#fef2f2; color:#ef4444; border:1px solid #fecaca; }

@keyframes pulse-subtle { 0%,100%{opacity:1;} 50%{opacity:.65;} }

/* 警告横幅 */
.ins-warn-banner { background:#fffbeb; color:#b45309; font-size:12px; line-height:1.5; padding:8px 14px; border-top:1px solid #fde68a; border-bottom:1px solid #fde68a; }

/* 卡片主体 */
.insv-body { padding:12px 14px 10px; display:flex; flex-direction:column; gap:6px; flex:1; }

/* 标题 */
.insv-title { font-size:14px; font-weight:700; color:#0f172a; line-height:1.45; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }

/* 话题标签 */
.insv-tags { display:flex; flex-wrap:wrap; gap:4px; }
.insv-tag { font-size:11px; color:#6366f1; background:#eef2ff; padding:1px 8px; border-radius:4px; white-space:nowrap; cursor:default; }

/* 描述 */
.insv-desc { font-size:12.3px; color:#64748b; line-height:1.55; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }

/* 底部元信息栏 */
.insv-footer { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:auto; padding-top:8px; border-top:1px solid #f1f5f9; }
.insv-footer-left { display:flex; align-items:center; gap:6px; min-width:0; flex:1; }
.insv-footer-right { display:flex; align-items:center; gap:10px; flex-shrink:0; }

/* 上传人头像色块 */
.insv-avatar { width:26px; height:26px; border-radius:7px; display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:700; color:#fff; flex-shrink:0; }
.insv-submitter { font-size:12px; color:#334155; font-weight:600; white-space:nowrap; overflow:hidden;text-overflow:ellipsis; max-width:72px; }
.insv-author { font-size:11px; color:#94a3b8; white-space:nowrap; overflow:hidden;text-overflow:ellipsis; max-width:80px; }
.insv-dl-count { display:flex; align-items:center; gap:3px; font-size:11.5px; color:#64748b; }
.insv-time { font-size:11px; color:#94a3b8; white-space:nowrap; }

/* 操作按钮区 */
.insv-actions { display:flex; gap:6px; padding:10px 14px 12px; border-top:1px solid #f8fafc; flex-wrap:wrap; }
.ins-act-btn { display:inline-flex; align-items:center; gap:4px; font-size:12px; padding:5px 12px; border-radius:7px; border:1px solid #e2e8f0; background:#fff; color:#475569; cursor:pointer; text-decoration:none; transition:all .15s; white-space:nowrap; }
.ins-act-btn:hover { border-color:#c7d2fe; background:#f5f3ff; color:#4f46e5; }
.ins-act-cover:hover { border-color:#fecaca; background:#fff1f2; color:#ef4444; }
.ins-act-video:hover { border-color:#ddd6fe; background:#f5f3ff; color:#6366f1; }
.ins-act-retry-old { border-color:#fde68a; background:#fffbeb; color:#b45309; font-weight:500; }
.ins-act-retry-old:hover { background:#fef3c7; border-color:#fcd34d; }
.ins-act-del-old { border-color:#fecaca; color:#ef4444; }
.ins-act-del:hover { background:#fef2f2; color:#dc2626; }
.ins-act-link-old { color:#0891b2; border-color:#bae6fd; }
.ins-act-link-old:hover { background:#e0f2fe; color:#0e7490; }

/* 分页控件 */
.ins-pagination { display:flex; align-items:center; justify-content:center; gap:6px; margin-top:18px; flex-wrap:wrap; position:sticky; bottom:0; background:rgba(255,255,255,0.95); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); padding:12px 0 8px; border-top:1px solid #e2e8f0; z-index:10; }
.ins-page-btn { font-size:13px; }
.ins-page-num { min-width:34px; height:34px; border:1px solid #e2e8f0; border-radius:8px; font-size:13px; color:#475569; background:#fff; cursor:pointer; transition:all .15s; }
.ins-page-num:hover:not(.active) { border-color:#c7d2fe; background:#f5f3ff; }
.ins-page-num.active { background:#4f46e5; color:#fff; border-color:#4f46e5; font-weight:600; }
.ins-page-dot { color:#94a3b8; font-size:13px; user-select:none; }
.ins-page-info { font-size:12px; color:#94a3b8; margin-left:4px; }

/* ===== 创作灵感卡片 v3（完整信息展示） ===== */
/* ===== 创作灵感卡片 v5（紧凑列表 + 展开详情） ===== */
.ins-grid { display:flex; flex-direction:column; gap:0; }

/* ---- 行容器 ---- */
.ins-row {
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  padding:12px 16px;
  background:#fff;
  border-bottom:1px solid #f1f5f9;
  cursor:pointer;
  transition:background .15s;
  align-items:flex-start;
}
.ins-row:hover { background:#f5f7ff; }
.ins-row.ins-expanded {
  background:linear-gradient(135deg,#e0e7ff 0%,#c7d2fe 100%);
  border-bottom:none;
  box-shadow:inset 4px 0 0 #4338ca, 0 4px 14px rgba(67,56,202,.15);
  border-radius:0 10px 10px 0;
  position:relative;
  z-index:1;
}

/* 左侧缩略图 */
.ins-thumb {
  flex-shrink:0;
  width:100px;
  height:64px;
  border-radius:8px;
  overflow:hidden;
  background:#f1f5f9;
  line-height:0;
  position:relative;
}
.ins-thumb .ins-cover {
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform .25s;
}
.ins-row:hover .ins-thumb .ins-cover { transform:scale(1.06); }
.ins-thumb .ins-no-cover {
  width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  font-size:20px;color:#cbd5e1;
}
.ins-thumb-badge {
  position:absolute;top:3px;left:3px;font-size:9px;font-weight:700;
  padding:1px 6px;border-radius:4px;z-index:2;
}
.ins-p-dy{background:rgba(238,242,255,.92);color:#4f46e5;border:1px solid rgba(199,210,254,.7);}
.ins-p-xhs{background:rgba(254,242,242,.92);color:#dc2626;border:1px solid rgba(254,202,202,.7);}
.ins-p-sph{background:rgba(236,253,243,.92);color:#059669;border:1px solid rgba(167,243,208,.7);}
.ins-p-un{background:rgba(241,245,249,.92);color:#475569;border:1px solid rgba(203,213,225,.7);}

/* 缩略图可点击放大 */
.ins-cover-click { cursor:zoom-in; }
.ins-cover-click:hover { box-shadow:0 0 0 2px #3b82f6; }

/* 详情面板封面 */
.ins-cover-wrap { display:flex; flex-direction:column; gap:4px; }
.ins-cover-tip { font-size:11px; color:#94a3b8; }
.ins-detail-cover {
  max-width:220px; max-height:300px; border-radius:8px; cursor:zoom-in;
  border:1px solid #e2e8f0; transition:box-shadow .15s;
}
.ins-detail-cover:hover { box-shadow:0 2px 12px rgba(15,23,42,.18); }

/* 封面放大灯箱 */
.ins-cover-lightbox {
  position:fixed; inset:0; z-index:9999;
  display:flex; align-items:center; justify-content:center;
  background:rgba(15,23,42,.82);
}
.ins-lb-mask { position:absolute; inset:0; }
.ins-lb-box {
  position:relative; z-index:1; max-width:92vw; max-height:92vh;
  display:flex; flex-direction:column; align-items:center; gap:10px;
}
.ins-lb-img {
  max-width:92vw; max-height:84vh; object-fit:contain;
  border-radius:10px; box-shadow:0 12px 48px rgba(0,0,0,.5);
  background:#fff;
}
.ins-lb-bar { display:flex; align-items:center; gap:14px; color:#e2e8f0; font-size:13px; }
.ins-lb-hint { opacity:.75; }
.ins-lb-dl { color:#93c5fd; text-decoration:none; padding:5px 12px; border:1px solid rgba(147,197,253,.5); border-radius:6px; }
.ins-lb-dl:hover { background:rgba(147,197,253,.15); }
.ins-lb-close {
  position:absolute; top:-38px; right:0; width:32px; height:32px;
  border:none; border-radius:50%; background:rgba(255,255,255,.15); color:#fff;
  font-size:22px; line-height:1; cursor:pointer;
}
.ins-lb-close:hover { background:rgba(255,255,255,.3); }

/* 右侧信息 */
.ins-body { flex:1; min-width:0; display:flex; flex-direction:column; gap:4px; }

/* 第一行：标题 + 平台标签 + 箭头 */
.ins-head {
  display:flex;
  align-items:center;
  gap:8px;
}
.ins-title {
  font-size:14px;
  font-weight:700;
  color:#0f172a;
  line-height:1.5;
  flex:1;
  word-break:break-word;
}
.ins-head-right {
  display:flex;align-items:center;gap:6px;flex-shrink:0;
}
.ins-status-dot {
  font-size:10px;font-weight:700;padding:1px 7px;border-radius:99px;
}
.ins-sd-parse{background:rgba(255,247,237,.95);color:#d97706;}
.ins-sd-fail{background:rgba(254,242,242,.95);color:#ef4444;}
.ins-arrow {
  font-size:11px;color:#94a3b8;transition:transform .2s;flex-shrink:0;
  font-family:system-ui;
}
.ins-expanded > .ins-body .ins-arrow { transform:rotate(90deg); }

/* 第二行：播放量 + 双时间 */
.ins-meta-line {
  display:flex;
  align-items:center;
  gap:14px;
  font-size:12px;
  color:#64748b;
  flex-wrap:wrap;
}
.ins-view-count { color:#ef4444; font-weight:700; white-space:nowrap; }
.ins-time-item { white-space:nowrap; }
.ins-t-label { color:#94a3b8; }
.ins-t-val { color:#475569; }

/* 第三行：上传人 */
.ins-uploader-line {
  display:flex;align-items:center;gap:5px;font-size:11.5px;color:#94a3b8;
}
.ins-avatar-xs {
  width:20px;height:20px;border-radius:5px;display:inline-flex;
  align-items:center;justify-content:center;font-size:9px;font-weight:700;
  color:#fff;flex-shrink:0;line-height:1;
}
.ins-up-name { color:#6366f1; font-weight:600; }

/* ---- 详情面板 ---- */
.ins-detail {
  display:none;
  flex-basis:100%;
  width:100%;
  padding:14px 16px 16px 16px;
  background:#fbfcfe;
  border-top:1px dashed #e2e8f0;
  border-bottom:1px solid #e2e8f0;
  box-sizing:border-box;
}
.ins-expanded > .ins-detail { display:block; }

/* ========= 详情卡片化 v185d ========= */
.ins-card {
  background:#fff;
  border:1px solid #e8eef5;
  border-radius:10px;
  padding:12px 14px;
  margin-bottom:10px;
  box-shadow:0 1px 2px rgba(15,23,42,.03);
  transition:box-shadow .2s, border-color .2s;
}
.ins-card:hover { box-shadow:0 2px 6px rgba(15,23,42,.06); border-color:#dde6f0; }
.ins-card-head {
  display:flex; align-items:center; gap:8px;
  margin-bottom:10px; padding-bottom:8px;
  border-bottom:1px solid #f1f5f9;
}
.ins-card-icon {
  display:inline-flex; align-items:center; justify-content:center;
  width:22px; height:22px; font-size:13px; line-height:1;
  background:linear-gradient(135deg,#eef2ff,#e0e7ff);
  border-radius:6px; color:#4f46e5;
  font-style:normal; flex-shrink:0;
}
.ins-card-title {
  font-size:13px; font-weight:700; color:#0f172a; flex:1;
  letter-spacing:.3px;
}
.ins-card-count {
  font-size:11px; color:#94a3b8; background:#f1f5f9;
  padding:1px 7px; border-radius:99px; font-weight:600;
}
.ins-card-body { font-size:12.5px; }

/* 话题卡片 */
.ins-tag-list { display:flex; flex-wrap:wrap; gap:6px; }
.insv-tag {
  font-size:12px; color:#6366f1;
  background:linear-gradient(135deg,#eef2ff,#e0e7ff);
  padding:3px 10px; border-radius:5px; font-weight:500;
  border:1px solid #c7d2fe;
  transition:all .15s;
}
.insv-tag:hover { background:linear-gradient(135deg,#e0e7ff,#c7d2fe); transform:translateY(-1px); }

/* 内容卡片 */
.ins-card-desc .ins-copy-btn { margin-top:0; }
.ins-card-desc .ins-desc-full {
  font-size:13px; color:#334155; line-height:1.85;
  word-break:break-word; white-space:pre-wrap; max-width:100%;
  padding:2px 0;
}

/* 数据表现 — 4格 stat 网格 */
.ins-stat-grid {
  display:grid; grid-template-columns:repeat(4,1fr);
  gap:8px;
}
.ins-stat {
  display:flex; align-items:center; gap:8px;
  padding:10px 8px;
  border-radius:8px;
  background:linear-gradient(135deg,#fafbff,#f5f7fb);
  border:1px solid #eef2f7;
  transition:all .15s;
}
.ins-stat:hover { transform:translateY(-1px); box-shadow:0 3px 8px rgba(15,23,42,.06); }
.ins-stat-icon {
  width:30px; height:30px; border-radius:8px;
  display:flex; align-items:center; justify-content:center;
  font-size:14px; color:#fff; flex-shrink:0;
}
.ins-stat-play .ins-stat-icon { background:linear-gradient(135deg,#fb7185,#e11d48); }
.ins-stat-like .ins-stat-icon { background:linear-gradient(135deg,#fb7185,#f43f5e); }
.ins-stat-cmt .ins-stat-icon  { background:linear-gradient(135deg,#60a5fa,#2563eb); }
.ins-stat-col .ins-stat-icon  { background:linear-gradient(135deg,#fbbf24,#f59e0b); }
.ins-stat-info { display:flex; flex-direction:column; min-width:0; }
.ins-stat-num {
  font-size:15px; font-weight:800; color:#0f172a; line-height:1.2;
  font-family:system-ui,-apple-system,sans-serif;
}
.ins-stat-lbl { font-size:10.5px; color:#94a3b8; font-weight:500; margin-top:1px; }

/* 链接卡片 */
.ins-link-val {
  display:inline-block; max-width:100%;
  font-size:12px; color:#3b82f6; text-decoration:none;
  word-break:break-all; line-height:1.5;
  padding:4px 8px; background:#f8fafc; border-radius:4px;
  border:1px solid #e2e8f0;
}
.ins-link-val:hover { background:#eff6ff; border-color:#bfdbfe; }
.ins-card-link .ins-copy-btn { margin-top:0; }

/* 作者/元信息卡 */
.ins-author-body {
  display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:8px 16px;
}
.ins-author-item { display:flex; flex-direction:column; gap:2px; }
.ins-author-lbl { font-size:10.5px; color:#94a3b8; font-weight:600; }
.ins-author-val { font-size:12.5px; color:#334155; font-weight:500; }

/* 警告横幅 */
.ins-warn-banner {
  background:linear-gradient(135deg,#fff7ed,#ffedd5);
  color:#9a3412; font-size:12.5px; font-weight:600;
  padding:10px 14px; border-radius:8px; margin-bottom:10px;
  border:1px solid #fed7aa;
}

/* 操作卡 */
.ins-card-actions { padding:12px 14px; }
.ins-actions { display:flex; flex-wrap:wrap; gap:14px; }
.ins-act-btn {
  display:inline-flex; align-items:center; gap:5px;
  font-size:13px; font-weight:700;
  padding:8px 16px; border-radius:8px; cursor:pointer;
  border:1px solid #e2e8f0; background:#fff; color:#475569;
  transition:all .15s;
  letter-spacing:.2px;
}
.ins-act-btn:hover { border-color:#94a3b8; background:#f8fafc; color:#0f172a; transform:translateY(-2px); box-shadow:0 6px 14px rgba(15,23,42,.12); }
.ins-act-btn:active { transform:translateY(0); box-shadow:0 2px 4px rgba(15,23,42,.1); }
.ins-act-cover {
  color:#fff; border:none; font-size:14px; padding:8px 22px; font-weight:700;
  background:linear-gradient(135deg,#0ea5e9 0%,#0369a1 100%);
  box-shadow:0 4px 10px rgba(14,165,233,.35),inset 0 1px 0 rgba(255,255,255,.25);
  text-shadow:0 1px 1px rgba(0,0,0,.12);
}
.ins-act-cover:hover { background:linear-gradient(135deg,#0284c7 0%,#075985 100%); box-shadow:0 6px 16px rgba(14,165,233,.5),inset 0 1px 0 rgba(255,255,255,.3); }
.ins-act-video {
  color:#fff; border:none; font-size:14px; padding:8px 22px; font-weight:700;
  background:linear-gradient(135deg,#a855f7 0%,#6d28d9 100%);
  box-shadow:0 4px 10px rgba(168,85,247,.35),inset 0 1px 0 rgba(255,255,255,.25);
  text-shadow:0 1px 1px rgba(0,0,0,.12);
}
.ins-act-video:hover { background:linear-gradient(135deg,#9333ea 0%,#5b21b6 100%); box-shadow:0 6px 16px rgba(168,85,247,.5),inset 0 1px 0 rgba(255,255,255,.3); }
.ins-act-link {
  color:#fff; border:none; font-size:14px; padding:8px 22px; font-weight:700;
  background:linear-gradient(135deg,#22c55e 0%,#15803d 100%); text-decoration:none;
  box-shadow:0 4px 10px rgba(34,197,94,.35),inset 0 1px 0 rgba(255,255,255,.25);
  text-shadow:0 1px 1px rgba(0,0,0,.12);
}
.ins-act-link:hover { background:linear-gradient(135deg,#16a34a 0%,#166534 100%); box-shadow:0 6px 16px rgba(34,197,94,.5),inset 0 1px 0 rgba(255,255,255,.3); }
.ins-act-comments {
  color:#fff; border:none; font-size:14px; padding:8px 22px; font-weight:700;
  background:linear-gradient(135deg,#3b82f6 0%,#1d4ed8 100%);
  box-shadow:0 4px 10px rgba(59,130,246,.35),inset 0 1px 0 rgba(255,255,255,.25);
  text-shadow:0 1px 1px rgba(0,0,0,.12);
}
.ins-act-comments:hover { background:linear-gradient(135deg,#2563eb 0%,#1e40af 100%); box-shadow:0 6px 16px rgba(59,130,246,.5),inset 0 1px 0 rgba(255,255,255,.3); }
.ins-act-retry {
  color:#fff; border:none; font-size:14px; padding:8px 22px; font-weight:700;
  background:linear-gradient(135deg,#f59e0b 0%,#b45309 100%);
  box-shadow:0 4px 10px rgba(245,158,11,.35),inset 0 1px 0 rgba(255,255,255,.25);
  text-shadow:0 1px 1px rgba(0,0,0,.12);
}
.ins-act-retry:hover { background:linear-gradient(135deg,#d97706 0%,#92400e 100%); box-shadow:0 6px 16px rgba(245,158,11,.5),inset 0 1px 0 rgba(255,255,255,.3); }
.ins-act-del {
  color:#fff; border:none; font-size:14px; padding:8px 22px; font-weight:700;
  background:linear-gradient(135deg,#ef4444 0%,#b91c1c 100%);
  box-shadow:0 4px 10px rgba(239,68,68,.35),inset 0 1px 0 rgba(255,255,255,.25);
  text-shadow:0 1px 2px rgba(0,0,0,.35);
}
.ins-act-del:hover { background:linear-gradient(135deg,#dc2626 0%,#991b1b 100%); box-shadow:0 6px 16px rgba(239,68,68,.5),inset 0 1px 0 rgba(255,255,255,.3); }

/* 评论区 */
.ins-comments-section { margin-top:8px; }
.ins-comments-title {
  font-size:13px; font-weight:700; color:#0f172a;
  padding-bottom:8px; border-bottom:1px solid #f1f5f9; margin-bottom:8px;
}
.ins-cmt-count { font-size:11px; color:#94a3b8; background:#f1f5f9; padding:1px 7px; border-radius:99px; font-weight:600; margin-left:4px; }
.ins-cmt-item {
  font-size:12.5px; color:#334155; padding:6px 0;
  border-bottom:1px dashed #f1f5f9; line-height:1.6;
}
.ins-cmt-item:last-child { border-bottom:none; }
.insv-cmt-user { font-weight:600; color:#6366f1; margin-right:6px; }
.insv-cmt-like { color:#f43f5e; font-size:11px; margin-right:6px; }
.insv-cmt-text { color:#475569; }

/* 旧版兼容 — 不再使用但保留 */
.ins-detail-section { margin-bottom:10px; }
.ins-detail-label {
  font-size:11.5px;font-weight:700;color:#64748b;text-transform:uppercase;
  letter-spacing:.5px;margin-bottom:5px;
}

/* 标签 */
.ins-tags { display:flex; flex-wrap:wrap; gap:5px; margin-top:2px; }
.ins-tag {
  font-size:11.5px;color:#6366f1;background:linear-gradient(135deg,#eef2ff,#e0e7ff);
  padding:2px 9px;border-radius:5px;white-space:nowrap;font-weight:500;
  border:1px solid #c7d2fe;
}

/* 描述 */
.ins-desc-full {
  font-size:13px;color:#334155;line-height:1.8;
  word-break:break-word;white-space:pre-wrap;max-width:100%;
}

/* 一键复制按钮 */
.ins-copy-btn {
  display:inline-flex;align-items:center;gap:4px;
  font-size:12.5px; padding:6px 14px; border-radius:6px;
  border:1px solid #93c5fd; color:#2563eb;
  background:linear-gradient(180deg,#eff6ff 0%,#dbeafe 100%);
  box-shadow:0 1px 2px rgba(59,130,246,.08),inset 0 1px 0 rgba(255,255,255,.5);
  cursor:pointer;transition:all .15s;margin-top:6px;
  white-space:nowrap; font-weight:600;
  letter-spacing:.3px;
}
.ins-copy-btn:hover { border-color:#60a5fa; background:linear-gradient(180deg,#dbeafe 0%,#bfdbfe 100%); color:#1d4ed8; box-shadow:0 3px 8px rgba(59,130,246,.12); transform:translateY(-1px); }
.ins-copy-btn.copied { background:linear-gradient(180deg,#dcfce7,#bbf7d0); color:#16a34a; border-color:#86efac; font-weight:700; }
.ins-copy-btn.failed { background:linear-gradient(180deg,#fef2f2,#fecaca); color:#dc2626; border-color:#fca5a5; }

/* 指标栏 */
.ins-metrics { display:flex; flex-wrap:wrap; gap:8px; }
.ins-met {
  display:inline-flex;align-items:center;gap:4px;font-size:12.5px;
  font-weight:600;padding:4px 10px;border-radius:8px;white-space:nowrap;
}
.ins-met-play { color:#ef4444; background:#fef2f2; border:1px solid #fecaca; }
.ins-met-like { color:#ec4899; background:#fdf2f8; border:1px solid #fbcfe8; }
.ins-met-cmt { color:#3b82f6; background:#eff6ff; border:1px solid #bfdbfe; }
.ins-met-col { color:#f59e0b; background:#fffbeb; border:1px solid #fde68a; }

/* 链接 */
.ins-link-row { display:flex; align-items:flex-start; gap:4px; font-size:11.5px; flex-wrap:wrap; }
.ins-link-label { color:#94a3b8; font-weight:600; flex-shrink:0; }
.ins-link-val {
  color:#3b82f6;text-decoration:none;font-family:monospace;font-size:11.5px;
  word-break:break-all;overflow-wrap:break-anywhere;
}
.ins-link-val:hover { text-decoration:underline; }
.ins-link-row .ins-copy-btn { margin-top:0; margin-left:6px; flex-shrink:0; }

/* 详情 meta */
.ins-detail-meta { font-size:12px; color:#64748b; display:flex; gap:16px; flex-wrap:wrap; }
.ins-author { color:#6366f1; font-weight:600; }

/* 操作按钮（旧版兼容，保留但不再参与布局覆盖） */
.ins-actions { display:flex; gap:6px; margin-top:8px; flex-wrap:wrap; }
.ins-act-cover-old:hover { border-color:#fecaca; background:#fff1f2; color:#ef4444; }
.ins-act-video:hover { border-color:#ddd6fe; background:#f5f3ff; color:#6366f1; }
.ins-act-retry { border-color:#fde68a; background:#fffbeb; color:#b45309; font-weight:600; }
.ins-act-retry:hover { background:#fef3c7; border-color:#fcd34d; }
.ins-act-del-old { border-color:#fecaca; color:#ef4444; }
.ins-act-del:hover { background:#fef2f2; color:#dc2626; }
.ins-act-link-old { color:#0891b2; border-color:#bae6fd; }
.ins-act-link-old:hover { background:#e0f2fe; color:#0e7490; }

/* 警告横幅 */
.ins-warn-banner {
  background:linear-gradient(90deg,#fffbeb,#fef3c7);color:#b45309;
  font-size:12px;font-weight:600;line-height:1.5;padding:7px 12px;border-radius:8px;
  margin-bottom:8px;display:flex;align-items:center;gap:6px;
}

/* 评论区 */
.ins-comments-section { margin-top:10px; }
.ins-comments-title {
  font-size:12px;font-weight:700;color:#475569;margin-bottom:6px;
  display:flex;align-items:center;gap:5px;
}
.ins-cmt-count { font-weight:400; font-size:11px; color:#94a3b8; background:#e2e8f8; padding:1px 8px; border-radius:10px; }
.ins-comments-list { display:flex; flex-direction:column; gap:5px; max-height:200px; overflow-y:auto; }
.ins-cmt-item {
  display:flex;flex-direction:column;gap:2px;font-size:12px;
  padding:6px 10px;background:#fff;border-radius:8px;border:1px solid #f1f5f9;line-height:1.45;
}
.insv-cmt-user { font-weight:700; color:#4f46e5; font-size:11.5px; }
.insv-cmt-like { font-size:10.5px; color:#ef4444; margin-left:auto; }
.insv-cmt-text { color:#475569; word-break:break-all; }


/* 编辑器 */
.ct-editor { max-width:720px; }
.ct-share { display:flex; align-items:center; gap:8px; font-size:13px; color:#475569; cursor:pointer; }
.ct-groups { display:flex; flex-direction:column; gap:12px; }
.ct-gcard { border:1px solid #e2e8f0; border-radius:12px; padding:12px 14px; background:#fafafe; }
.ct-ghead { display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.ct-gnum { font-weight:700; color:#4f46e5; font-size:13px; white-space:nowrap; }
.ct-gname { flex:1; }
.ct-ilist { display:flex; flex-direction:column; gap:6px; }
.ct-irow { display:flex; align-items:center; gap:8px; }
.ct-itype { width:84px; flex-shrink:0; }
.ct-ibadge { font-size:11.5px; color:#6366f1; background:#eef2ff; padding:2px 8px; border-radius:4px; white-space:nowrap; flex-shrink:0; font-weight:600; }
.ct-itext { flex:1; }
.ct-iadd { display:flex; gap:8px; margin-top:8px; }

/* 套用模版：内联下拉框 */
.ct-apply-row { margin-bottom:4px; }
.ct-tpl-select { max-width:360px; border-color:#6366f1; color:#4f46e5; font-weight:600; cursor:pointer; background-color: #faf5ff; }
.ct-tpl-select:focus { border-color:#4f46e5; box-shadow:0 0 0 3px rgba(79,70,229,.15); }

/* ==================== 开关 toggle（是否完成） ==================== */
.switch { position: relative; display: inline-block; width: 44px; height: 24px; }
.switch input { opacity: 0; width: 0; height: 0; }
.switch .slider { position: absolute; cursor: pointer; inset: 0; background: #cbd5e1; border-radius: 24px; transition: .2s; }
.switch .slider::before { content: ""; position: absolute; height: 18px; width: 18px; left: 3px; bottom: 3px; background: #fff; border-radius: 50%; transition: .2s; }
.switch input:checked + .slider { background: var(--brand, #4f46e5); }
.switch input:checked + .slider::before { transform: translateX(20px); }

/* ==================== 项目管理 ==================== */
.proj-wrap { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; margin-top: 16px; }
.proj-card { background: var(--card, #fff); border: 1px solid var(--border, #e3e8ef); border-radius: 12px; padding: 16px; }
.proj-card-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.proj-card-head h3 { margin: 0; font-size: 16px; }
.doc-list { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.doc-tag { display: inline-flex; align-items: center; gap: 4px; background: #eef2ff; color: #4338ca; border-radius: 14px; padding: 4px 10px; font-size: 13px; }
.doc-del { border: none; background: transparent; color: #4338ca; cursor: pointer; font-size: 15px; line-height: 1; padding: 0; }
.add-doc-box { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.add-doc-box > input.form-input { flex: 1 1 120px; min-width: 100px; width: auto; }
.add-doc-box > select.form-select { flex: 0 0 auto; min-width: 80px; width: auto; padding: 8px 12px; }
.add-doc-box > button { flex: 0 0 auto; }

/* ==================== 菜单顺序控制台 ==================== */
/* ==================== 菜单顺序（menuui-1003 重设计：横向紧凑+质感） ==================== */
.menu-legend { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.legend-chip { font-size: 12px; color: var(--text-muted, #6b7280); background: var(--bg-subtle, #f9fafb); border: 1px solid var(--border, #e5e9f0); border-radius: 999px; padding: 3px 12px; white-space: nowrap; line-height: 1.6; }
.legend-chip b { color: #b45309; font-weight: 600; }
.menu-wrap { display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); gap: 20px; margin-top: 20px; }
.menu-sec { background: var(--card, #fff); border: 1px solid var(--border, #e5e9f0); border-radius: 14px; padding: 18px 16px 16px; box-shadow: 0 1px 2px rgba(16,24,40,.04); }
.menu-sec-title { margin: 0 0 14px; font-size: 14px; font-weight: 700; color: var(--text, #1f2937); display: flex; align-items: center; gap: 8px; letter-spacing: .5px; }
.menu-sec-title::before { content: ''; width: 4px; height: 14px; border-radius: 2px; background: #f59e0b; flex-shrink: 0; }
.menu-list { display: flex; flex-direction: column; gap: 8px; }
.menu-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; background: var(--card, #fff); border: 1px solid var(--border, #e5e9f0); border-radius: 10px; padding: 9px 12px; transition: border-color .15s ease, box-shadow .15s ease, opacity .15s ease; }
.menu-row:hover { border-color: #f2c78a; box-shadow: 0 2px 8px rgba(245,158,11,.10); }
.menu-row.is-hidden { opacity: .5; border-style: dashed; background: var(--bg-subtle, #fafafa); }
.menu-label { font-weight: 600; font-size: 13.5px; color: var(--text, #111827); white-space: nowrap; flex-shrink: 0; letter-spacing: .3px; }
.menu-btns { display: flex; align-items: center; gap: 6px; margin-left: auto; flex-shrink: 0; }
.menu-btns .menu-toggle { padding: 3px 10px; font-size: 12px; border-radius: 999px; white-space: nowrap; line-height: 1.5; }
.menu-toggle.is-sup { background: #fef3c7; border-color: #f0c268; color: #92400e; font-weight: 600; }
.menu-toggle.is-hide { background: #fee2e2; border-color: #fca5a5; color: #b91c1c; font-weight: 600; }
.menu-btns .menu-move { padding: 3px 0; width: 26px; text-align: center; border-radius: 8px; font-size: 13px; line-height: 1.4; }
.menu-label { cursor: text; border-bottom: 1px dashed transparent; transition: color .15s ease, border-color .15s ease; }
.menu-label:hover { color: #b45309; border-bottom-color: #f0c268; }
.menu-label-input { width: 110px; font-size: 13.5px; font-weight: 600; color: #111827; background: #fffbeb; border: 1px solid #f0c268; border-radius: 6px; padding: 2px 8px; outline: none; box-shadow: 0 0 0 3px rgba(245,158,11,.12); }
.menu-label-input::placeholder { color: #9ca3af; font-weight: 400; }

/* ==================== 成员分配 ==================== */
.assign-cell { min-width: 180px; max-width: 360px; word-break: break-all; display: flex; flex-wrap: wrap; align-items: center; gap: 4px; }
.assign-tag { display: inline-block; background: #eef2ff; color: #4338ca; border-radius: 12px; padding: 2px 8px; font-size: 12px; margin: 2px; }
.assign-pill { display: inline-flex; align-items: center; gap: 3px; background: #f0f4ff; color: #3730a3; border-radius: 6px; padding: 3px 10px; font-size: 12px; line-height: 1.6; border: 1px solid #c7d2fe; white-space: nowrap; }
.assign-pill b { color: #4338ca; font-weight: 600; }
.assign-proj { border: 1px solid var(--border, #e3e8ef); border-radius: 10px; padding: 12px; margin-bottom: 12px; }
.assign-proj-name { font-weight: 600; margin-bottom: 8px; }
.assign-doc-wrap { display: flex; flex-wrap: wrap; gap: 10px; }
.assign-doc { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; font-size: 14px; }

/* ==================== 成员管理操作列 / 内联切换 ==================== */
.ops-cell { white-space: nowrap; min-width: 340px; }
.ops-cell .btn { margin: 2px 2px 2px 0; }
.clickable-dept, .clickable-group { background:#f8fafc; transition: background .15s; border-radius:6px; }
.clickable-dept:hover, .clickable-group:hover { background:#eef2ff; color:#4338ca; }
.clickable-dept::selection, .clickable-group::selection { background:transparent; }

/* ==================== 发布管理增强 ==================== */
.link-cell { font-size:13px !important; min-width:220px !important; width:240px !important; max-width:260px !important; }

/* 发布链接：双框布局（主输入 + 派生短链） */
.link-dual-wrap { display: flex; flex-direction: column; gap: 5px; }
.link-main {
  font-size:13px !important; min-width:220px !important; width:240px !important; max-width:260px !important;
}
/* 派生显示区：锁定状态，有质感背景 */
.link-derived {
  display: flex; align-items: center; gap: 6px;
  padding: 5px 10px; min-height: 30px;
  border-radius: 7px; cursor: pointer;
  background: linear-gradient(145deg, #eef2ff, #e0e7ff);
  border: 1px solid rgba(99,102,241,.18);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.6),
    inset 0 -1px 0 rgba(99,102,241,.06),
    0 1px 3px rgba(0,0,0,.04);
  transition: all .18s ease;
  position: relative; overflow: hidden;
}
.link-derived::before {
  content: '';
  position: absolute; top: 0; left: 0; right: 0; height: 45%;
  background: linear-gradient(180deg, rgba(255,255,255,.35), transparent);
  pointer-events: none;
}
.link-derived:hover {
  background: linear-gradient(145deg, #e0e4ff, #d4dfff);
  border-color: rgba(99,102,241,.32);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.65),
    inset 0 -1px 0 rgba(99,102,241,.10),
    0 2px 8px rgba(99,102,241,.12);
}
.link-derived-a {
  color: #4338ca; text-decoration: none; font-size: 12px; font-weight: 500;
  line-height: 1.35; max-width: 210px; overflow: hidden;
  text-overflow: ellipsis; white-space: nowrap;
  flex: 1; min-width: 0; position: relative; z-index: 1;
}
.link-derived-a:hover { text-decoration: underline; color: #3730a3; }
.link-derived-icon {
  color: #6366f1; font-size: 14px; flex-shrink: 0;
  opacity: .7; transition: opacity .15s; line-height: 1; z-index: 1;
}
.link-derived:hover .link-derived-icon { opacity: 1; }
.link-derived-ph {
  color: #94a3b8; font-size: 12px; font-style: italic; line-height: 1.35;
}

/* 系统判定配色（按播放量分级）— 配合 .ops-sys-judge-cell 使用 */
.ops-sys-judge.jj-invalid { color:#b91c1c; background:#fecaca; border-color:#fca5a5; }
.ops-sys-judge.jj-err     { color:#7e22ce; background:#f3e8ff; border-color:#e9d5ff; }
.ops-sys-judge.jj-low     { color:#b45309; background:#fde68a; border-color:#fcd34d; }
.ops-sys-judge.jj-normal  { color:#15803d; background:#bbf7d0; border-color:#86efac; }
.ops-sys-judge.jj-good    { color:#1d4ed8; background:#bfdbfe; border-color:#93c5fd; }
.ops-sys-judge.jj-great   { color:#c2410c; background:#fed7aa; border-color:#fdba74; }
.ops-sys-judge.jj-hot     { color:#be123c; background:#fecdd3; border-color:#fda4af; }
.ops-sys-judge.jj-unsupported { color:#6b7280; background:#f3f4f6; border-color:#d1d5db; }
.jj-refresh { line-height: 1; vertical-align: middle; white-space: nowrap; }
/* 刷新抓取按钮：在系统判定列中醒目展示 */
#opsWorkTable .jj-refresh { font-weight: 500; letter-spacing: 0.5px; }

/* ==================== 控评订单详情 - 卡片式布局 ==================== */
.co-detail-modal { max-width:600px; max-height:76vh; overflow-y:auto; padding-right:8px; }

/* 卡片容器 */
.co-card {
  background: #fff; border: 1px solid #e8ecf2; border-radius: 12px;
  margin-bottom: 16px; box-shadow: 0 1px 3px rgba(0,0,0,0.04); overflow: hidden;
}
.co-card:last-child { margin-bottom: 0; }

/* 卡片标题栏 */
.co-card-head {
  display: flex; align-items: center; gap: 8px;
  padding: 12px 18px;
  background: linear-gradient(135deg,#f8fafc 0%,#f1f5f9 100%);
  border-bottom: 1px solid #e8ecf2;
}
.co-card-icon { font-size: 16px; }
.co-card-title { font-size: 14px; font-weight: 700; color: #334155; letter-spacing: .5px; }

/* 卡片内容区 */
.co-card-body { padding: 16px 18px; }

/* 基本信息两列网格 */
.co-info-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 24px; }
.co-info-item { display: flex; align-items: baseline; gap: 8px; }
.co-info-label { font-size: 12.5px; color: #64748b; font-weight: 600; min-width: 60px; flex-shrink: 0; }
.co-info-value { font-size: 13.5px; color: #1e293b; word-break: break-all; }
.co-order-no {
  font-family: 'SF Mono','Consolas',Monaco,monospace;
  font-weight: 700; color: #4f46e5; font-size: 13px; letter-spacing: .3px;
}

/* 空状态 */
.co-empty { color: #94a3b8; font-size: 13px; margin: 0; text-align: center; padding: 16px 0; }

/* 评论列表 */
.co-detail-comments { display:flex; flex-direction:column; gap:8px; }
.co-d-comment { display:flex; align-items:flex-start; gap:10px; padding:12px 14px; background:#fafbfc; border:1px solid #e8ecf2; border-radius:8px; }
.co-d-reply { display:flex; align-items:flex-start; gap:10px; padding:10px 14px 10px 28px; background:#f8fafc; border-left:3px solid #93c5fd; border-radius:0 8px 8px 0; margin-left:16px; }
.co-d-idx { font-size:11px; color:#94a3b8; font-weight:700; min-width:28px; height:22px; display:inline-flex; align-items:center; justify-content:center; background:#f1f5f9; border-radius:4px; flex-shrink:0; }
.co-d-text { font-size:13.5px; line-height:1.65; word-break:break-all; white-space:pre-wrap; }
.co-detail-copy { cursor:pointer;font-size:12px;color:#2563eb;background:#eff6ff;padding:2px 8px;border-radius:4px;white-space:nowrap; }
.co-detail-copy:hover { background:#dbeafe; }
.co-detail-link { color:#2563eb;text-decoration:none;word-break:break-all;font-size:13px;max-width:280px; }
.co-detail-link:hover { text-decoration:underline; }
.co-detail-comments { display:flex;flex-direction:column;gap:6px; }
.co-d-comment { display:flex;align-items:flex-start;gap:10px;padding:10px 14px;background:#ffffff;border:1px solid #e2e8f0;border-radius:8px; }
.co-d-reply { display:flex;align-items:flex-start;gap:10px;padding:8px 14px 8px 28px;background:#f8fafc;border-left:3px solid #93c5fd;border-radius:0 8px 8px 0;margin-left:16px; }
.co-d-idx { font-size:11px;color:#94a3b8;font-weight:700;min-width:28px;height:22px;display:inline-flex;align-items:center;justify-content:center;background:#f1f5f9;border-radius:4px; }
.co-d-text { font-size:13.5px;line-height:1.6;word-break:break-all;white-space:pre-wrap; }
.co-detail-btn { font-size:12px !important; padding:5px 14px !important; border-radius:6px !important; transition:all .15s ease; }
.co-detail-btn:hover { background:#4f46e5 !important; color:#fff !important; border-color:#4f46e5 !important; }

/* 已发布博主-一键控评按钮 */
.co-quick-btn {
  font-size:12px !important; padding:5px 12px !important; border-radius:7px !important;
  white-space:nowrap; border:none !important; color:#fff !important;
  background:linear-gradient(135deg,#6366f1,#8b5cf6) !important;
  box-shadow:0 2px 6px rgba(99,102,241,.32); transition:transform .12s ease, box-shadow .12s ease;
}
.co-quick-btn:hover { transform:translateY(-1px); box-shadow:0 4px 12px rgba(99,102,241,.45); }
.co-quick-btn:active { transform:translateY(0); }

/* 控评下单-一键控评带入提示条 */
.co-prefill-tip {
  margin:0 0 14px; padding:10px 14px; border-radius:9px; font-size:13px; line-height:1.6;
  color:#4338ca; background:linear-gradient(135deg,#eef2ff,#f5f3ff);
  border:1px solid #c7d2fe;
}

/* 控评组退回理由：高质感红色卡片 */
.co-return-tip-wrap {
  position: relative;
  margin: 0 0 18px;
  border-radius: 10px;
  background: linear-gradient(135deg, #fef2f2 0%, #fff1f2 60%, #fef2f2 100%);
  border: 1px solid #fecaca;
  box-shadow: 0 4px 12px rgba(220, 38, 38, 0.10), 0 1px 3px rgba(220, 38, 38, 0.06);
  overflow: hidden;
}
.co-return-tip-bar {
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 5px;
  background: linear-gradient(180deg, #ef4444, #dc2626, #b91c1c);
}
.co-return-tip-body {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 14px 16px 14px 22px;
}
.co-return-tip-icon {
  flex: 0 0 auto;
  width: 36px; height: 36px;
  border-radius: 50%;
  background: linear-gradient(135deg, #fee2e2, #fecaca);
  color: #b91c1c;
  font-size: 22px;
  font-weight: 700;
  line-height: 36px;
  text-align: center;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.7);
}
.co-return-tip-content {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.co-return-tip-title {
  font-size: 13px;
  font-weight: 700;
  color: #b91c1c;
  letter-spacing: .3px;
}
.co-return-tip-reason {
  font-size: 15px;
  font-weight: 700;
  color: #7f1d1d;
  line-height: 1.5;
  word-break: break-word;
}
.co-return-tip-hint {
  margin-top: 2px;
  font-size: 12px;
  color: #9f1239;
  opacity: .85;
}

/* 详情：发布账号/链接整行 + 复制按钮 */
.co-info-item.co-info-full { grid-column: 1 / -1; align-items: center; }
.co-account-val { font-weight: 600; word-break: break-all; }
.co-copy-btn { margin-left: auto; cursor: pointer; font-size: 12px; color: #2563eb; background: #eff6ff; border: 1px solid #bfdbfe; padding: 3px 10px; border-radius: 6px; white-space: nowrap; transition: all .15s ease; }
.co-copy-btn:hover { background: #dbeafe; }
.co-copy-btn.copied { color: #047857; background: #ecfdf5; border-color: #6ee7b7; }
.co-copy-inline { margin-left: 8px; font-size: 11px; padding: 2px 7px; vertical-align: middle; }
.co-d-image { margin-top: 6px; }
.co-d-image img { max-width: 200px; max-height: 160px; border-radius: 6px; border: 1px solid #e2e8f0; cursor: pointer; }

/* 评论编辑器内图片上传区 */
.co-img-area { margin: 6px 0; }
.co-img-area.co-img-area-inline { margin: 4px 0 0 0; }
.co-img-placeholder {
  display: flex; align-items: center; gap: 6px;
  padding: 8px 10px; border: 1px dashed #cbd5e1; border-radius: 6px;
  background: #f8fafc; color: #64748b; font-size: 12px; cursor: pointer;
  transition: all .15s;
}
.co-img-placeholder:hover { border-color: #6366f1; background: #eef2ff; color: #4f46e5; }
.co-img-area.co-img-drag .co-img-placeholder { border-color: #6366f1; background: #eef2ff; color: #4f46e5; box-shadow: 0 0 0 2px rgba(99,102,241,.2); }
.co-img-placeholder i { font-size: 14px; }
.co-img-preview { position: relative; display: inline-block; }
.co-img-preview img {
  max-width: 180px; max-height: 130px; border-radius: 6px;
  border: 1px solid #e2e8f0; cursor: pointer; display: block;
}
.co-img-remove {
  position: absolute; top: -6px; right: -6px;
  width: 22px; height: 22px; border-radius: 50%;
  background: #ef4444; color: #fff; border: 2px solid #fff;
  cursor: pointer; font-size: 14px; line-height: 14px; padding: 0;
  display: flex; align-items: center; justify-content: center;
}
.co-d-image img { max-width: 200px; max-height: 160px; border-radius: 6px; border: 1px solid #e2e8f0; cursor: pointer; }
.co-detail-actions { display: flex; align-items: center; gap: 12px; padding: 0 18px 14px; flex-wrap: wrap; }
.co-copy-hint { font-size: 12px; color: #94a3b8; }
.co-copy-hint kbd { font-family: 'SF Mono','Consolas',Monaco,monospace; background: #f1f5f9; border: 1px solid #cbd5e1; border-bottom-width: 2px; border-radius: 4px; padding: 0 5px; font-size: 11px; color: #475569; }

/* 详情：评论分组小标签 */
.co-group-block { margin-bottom: 14px; }
.co-group-block:last-child { margin-bottom: 0; }
.co-group-tag { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; color: #4f46e5; background: linear-gradient(135deg,#eef2ff,#e0e7ff); border: 1px solid #c7d2fe; border-radius: 999px; padding: 3px 12px; margin-bottom: 8px; }

/* 控评表格优化 — 统一间距与列宽 */
#orderTable td, #orderTable th,
#grabTable td, #grabTable th,
#manageTable td, #manageTable th {
  padding: 12px 18px;
}
#orderTable th, #grabTable th, #manageTable th {
  font-size: 12.5px; font-weight: 600; color: #4b5563; letter-spacing: .2px;
  border-bottom: 2px solid #e8ecf1;
}

/* 列宽：详情(窄居中) | 下单编号 | 推广项目/医生 | 评论数(窄居中) | 时间 | 操作 */
#grabTable th:nth-child(1), #grabTable td:nth-child(1),
#manageTable th:nth-child(1), #manageTable td:nth-child(1),
#orderTable th:nth-child(1), #orderTable td:nth-child(1)
{ width: 60px; text-align: center; }

/* 下单人/姓名 — 禁止换行 + 最小宽度 */
#grabTable th:nth-child(2), #grabTable td:nth-child(2),
#manageTable th:nth-child(2), #manageTable td:nth-child(2),
#orderTable th:nth-child(2), #orderTable td:nth-child(2)
{ min-width: 70px; }

#grabTable th:nth-child(3), #grabTable td:nth-child(3),
#manageTable th:nth-child(3), #manageTable td:nth-child(3),
#orderTable th:nth-child(3), #orderTable td:nth-child(3)
{ width: 120px; text-align: center; }

/* 推广项目 / 推广医生 — 给足够宽度 */
#grabTable th:nth-child(4), #grabTable td:nth-child(4),
#grabTable th:nth-child(5), #grabTable td:nth-child(5),
#manageTable th:nth-child(4), #manageTable td:nth-child(4),
#manageTable th:nth-child(5), #manageTable td:nth-child(5),
#orderTable th:nth-child(4), #orderTable td:nth-child(4),
#orderTable th:nth-child(5), #orderTable td:nth-child(5)
{ min-width: 100px; }

/* 发布平台 */
#grabTable th:nth-child(6), #grabTable td:nth-child(6),
#manageTable th:nth-child(4), #manageTable td:nth-child(4)
{ width: 90px; text-align: center; }

/* 评论数 — 居中紫色强调 */
#grabTable th:nth-child(7), #grabTable td:nth-child(7),
#manageTable th:nth-child(7), #manageTable td:nth-child(7),
#orderTable th:nth-child(8), #orderTable td:nth-child(8)
{ width: 68px; text-align: center; }
.co-count-cell { color: #4f46e5; font-weight: 600; font-size: 13.5px; }

/* 下单时间 / 接单时间 / 完成时间 */
#grabTable th:nth-child(8), #grabTable td:nth-child(8)
{ width: 155px; text-align: center; }
#manageTable th:nth-child(8), #manageTable td:nth-child(8),
#orderTable th:nth-child(9), #orderTable td:nth-child(9),
#orderTable th:nth-child(10), #orderTable td:nth-child(10),
#orderTable th:nth-child(11), #orderTable td:nth-child(11)
{ width: 155px; text-align: center; }

/* 操作列（grabTable最后是操作，orderTable最后是操作，但manageTable最后是截图需覆盖） */
#grabTable th:last-child, #grabTable td:last-child,
#orderTable th:last-child, #orderTable td:last-child
{ width: 80px; text-align: center; white-space: nowrap; }
/* manageTable 最后列=截图，给足够横向空间 */
#manageTable th:last-child, #manageTable td:last-child
{ min-width: 200px; width: auto; }

/* 控评管理 - 完成截图缩略图（横向单行排列） */
.shot-cell {
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
  gap: 6px;
  overflow-x: auto;
  overflow-y: hidden;
  max-width: 280px;
  padding: 4px 0;
  /* 隐藏横向滚动条（仍可拖动/滚轮滑动） */
  scrollbar-width: none; /* Firefox */
  -ms-overflow-style: none; /* IE/Edge */
}
.shot-cell::-webkit-scrollbar { display: none; /* Chrome/Safari */ }
.shot-thumb-wrap { position:relative;display:inline-block;line-height:0;flex-shrink:0; }
.shot-thumb { width:44px;height:44px;object-fit:cover;border-radius:6px;border:1px solid #e2e8f0;cursor:pointer;transition:transform .12s ease; }
.shot-thumb:hover { transform:scale(1.06); }
.shot-del { position:absolute;top:-6px;right:-6px;width:18px;height:18px;line-height:16px;text-align:center;padding:0;border:none;border-radius:50%;background:#ef4444;color:#fff;font-size:12px;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.25); }
.shot-del:hover { background:#dc2626; }
.shot-upload-btn { font-size:12px !important;padding:5px 10px !important;white-space:nowrap;flex-shrink:0;border-radius:6px !important; }

/* 上传弹窗预览 */
.shot-preview-wrap { display:flex;flex-wrap:wrap;gap:10px;margin-top:10px;min-height:10px; }
.shot-preview-item { position:relative;line-height:0; }
.shot-preview-item .shot-thumb { width:72px;height:72px; }
.shot-preview-item .shot-del { top:-7px;right:-7px; }

/* 拖拽上传区域 */
.shot-drop-zone {
  position:relative;border:2px dashed #cbd5e1;border-radius:12px;
  padding:32px 20px;text-align:center;background:#f8fafc;
  transition:border-color .2s,background .2s;cursor:pointer;margin-bottom:4px;
}
.shot-drop-zone:hover { border-color:#94a3b8;background:#f1f5f9; }
.shot-drop-zone.shot-drop-active {
  border-color:#6366f1;background:#eef2ff;box-shadow:0 0 0 3px rgba(99,102,241,.15);
}
.shot-drop-icon { font-size:36px;margin-bottom:8px;opacity:.6; }
.shot-drop-hint { margin:0 0 4px;font-size:14px;color:#475569;font-weight:500; }
.shot-drop-sub { margin:0;font-size:12px;color:#94a3b8; }

/* ==================== 运营发布管理 - 结算截图单元格 ==================== */
.ops-shot-td { vertical-align:middle !important; min-width:150px; max-width:210px; }
.ops-shot-cell { outline:none; }
.ops-shot-cell.ops-shot-drag { box-shadow:inset 0 0 0 2px #6366f1; border-radius:10px; }
.ops-shot-grid { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.ops-shot-empty { color:#cbd5e1; font-size:13px; }
.ops-shot-hint { color:#94a3b8; font-size:11px; line-height:1.2; max-width:70px; }

/* 缩略图 */
.ops-shot-thumb-wrap { position:relative; line-height:0; flex-shrink:0; border-radius:10px; }
.ops-shot-thumb { width:46px; height:46px; object-fit:cover; border-radius:8px; border:1px solid #e2e8f0; cursor:pointer; box-shadow:0 1px 3px rgba(15,23,42,.08); transition:transform .14s ease, box-shadow .14s ease; display:block; }
.ops-shot-thumb:hover { transform:scale(1.05); box-shadow:0 4px 12px rgba(99,102,241,.28); }
.ops-shot-del { position:absolute; top:-5px; right:-5px; width:18px; height:18px; line-height:16px; text-align:center; padding:0; border:none; border-radius:50%; background:#ef4444; color:#fff; font-size:11px; cursor:pointer; box-shadow:0 1px 3px rgba(0,0,0,.28); opacity:0; transform:scale(.85); transition:opacity .14s ease, transform .14s ease; }
.ops-shot-thumb-wrap:hover .ops-shot-del { opacity:1; transform:scale(1); }
.ops-shot-del:hover { background:#dc2626; }

/* 添加按钮 */
.ops-shot-add { width:46px; height:46px; border:1.5px dashed #cbd5e1; border-radius:8px; display:flex; align-items:center; justify-content:center; cursor:pointer; color:#94a3b8; background:#f8fafc; transition:border-color .18s ease, background .18s ease, color .18s ease; flex-shrink:0; }
.ops-shot-add:hover { border-color:#6366f1; background:#eef2ff; color:#6366f1; }
.ops-shot-add-plus { font-size:20px; font-weight:300; line-height:1; }

/* 折叠堆叠 */
.ops-shot-stack { position:relative; width:46px; height:46px; cursor:pointer; flex-shrink:0; }
.ops-stack-ghost { position:absolute; top:0; left:0; width:46px; height:46px; border-radius:8px; background:#e2e8f0; border:1px solid #cbd5e1; transition:transform .2s ease; }
.ops-stack-ghost-1 { transform:rotate(7deg) translate(9px,-5px); z-index:1; }
.ops-stack-ghost-2 { transform:rotate(-7deg) translate(16px,3px); z-index:0; }
.ops-stack-cover { position:relative; z-index:2; }
.ops-shot-stack:hover .ops-stack-ghost-1 { transform:rotate(10deg) translate(15px,-6px); }
.ops-shot-stack:hover .ops-stack-ghost-2 { transform:rotate(-10deg) translate(24px,4px); }
.ops-stack-badge { position:absolute; right:-7px; bottom:-7px; z-index:3; background:linear-gradient(135deg,#6366f1,#8b5cf6); color:#fff; font-size:12px; font-weight:700; min-width:24px; height:24px; line-height:24px; text-align:center; padding:0 7px; border-radius:12px; box-shadow:0 2px 8px rgba(99,102,241,.45); border:2px solid #fff; }

/* 画廊弹窗 */
.ops-shot-lightbox-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(118px,1fr)); gap:12px; margin-bottom:14px; }
.ops-shot-lb-card { position:relative; line-height:0; border-radius:12px; overflow:hidden; background:#f1f5f9; box-shadow:0 1px 4px rgba(15,23,42,.10); }
.ops-shot-lb-img { width:100%; height:118px; object-fit:cover; cursor:pointer; transition:transform .16s ease; display:block; }
.ops-shot-lb-img:hover { transform:scale(1.04); }
.ops-shot-lb-del { position:absolute; top:6px; right:6px; width:22px; height:22px; line-height:20px; text-align:center; padding:0; border:none; border-radius:50%; background:rgba(239,68,68,.92); color:#fff; font-size:14px; cursor:pointer; box-shadow:0 1px 4px rgba(0,0,0,.3); }
.ops-shot-lb-del:hover { background:#dc2626; }
.ops-shot-lb-drop { position:relative; border:2px dashed #cbd5e1; border-radius:12px; padding:18px 16px; text-align:center; background:#f8fafc; transition:border-color .2s, background .2s; cursor:pointer; }
.ops-shot-lb-drop:hover, .ops-shot-lb-drop.ops-shot-drag { border-color:#6366f1; background:#eef2ff; }
.ops-shot-lb-drop-icon { font-size:22px; opacity:.6; }
.ops-shot-lb-drop-hint { margin:4px 0 0; font-size:13px; color:#64748b; }

/* 详情弹窗截图（卡片内） */
.co-detail-shots { display:flex;flex-wrap:wrap;gap:10px; }
.co-detail-shot { line-height:0; }
.co-detail-shot img { width:96px;height:96px;object-fit:cover;border-radius:8px;border:1px solid #e2e8f0;cursor:pointer;transition:transform .12s ease; }
.co-detail-shot img:hover { transform:scale(1.04); }

/* ==================== 工作总览 (Work Overview) ==================== */
.dash-loading { text-align:center;padding:40px;color:#94a3b8;font-size:14px; }

.wo-section { margin-bottom: 24px; }
.wo-section-head { display:flex;align-items:center;gap:8px;margin-bottom:14px; }
.wo-section-head h3 { font-size:15px;font-weight:700;color:#1e293b;margin:0; }
.wo-section-icon { font-size:18px; }

.wo-grid { display:grid; gap:14px; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }
.wo-grid-3 { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.wo-grid-4 { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.wo-grid-5 { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.wo-grid-6 { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
.wo-grid-2 { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }

/* 运营部看板 */
.ob-wrap { padding:0; overflow:hidden; }
.ob-wrap-3d {
  border-radius:16px;
  background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%);
  box-shadow:
    0 1px 0 rgba(255,255,255,.8) inset,
    0 4px 6px -2px rgba(15,23,42,.06),
    0 12px 24px -6px rgba(15,23,42,.10),
    0 0 0 1px rgba(226,232,240,.8);
}
.ob-table { width:100%; border-collapse:separate; border-spacing:0; font-size:13px; }
.ob-table th, .ob-table td { padding:12px 10px; text-align:center; white-space:nowrap; border-bottom:1px solid #f1f5f9; }
.ob-table thead th {
  background:linear-gradient(180deg,#f1f5f9 0%,#e2e8f0 100%);
  color:#334155;
  font-weight:700;
  position:sticky;
  top:0;
  z-index:2;
  text-shadow:0 1px 0 rgba(255,255,255,.7);
  box-shadow:
    0 1px 0 rgba(255,255,255,.6) inset,
    0 -1px 0 rgba(148,163,184,.25) inset,
    0 2px 4px rgba(15,23,42,.06);
  border-bottom:1px solid #cbd5e1;
}
.ob-table thead th:first-child { border-radius:14px 0 0 0; }
.ob-table thead th:last-child { border-radius:0 14px 0 0; }
.ob-table tbody tr { transition:transform .12s ease, background .12s, box-shadow .12s; }
.ob-table tbody tr:hover {
  background:linear-gradient(90deg,#f0f9ff,#f5f3ff);
  transform:translateY(-1px);
  box-shadow:0 4px 10px -3px rgba(99,102,241,.12);
  position:relative;
  z-index:1;
}
.ob-table tbody tr:nth-child(even) { background:#f8fafc; }
.ob-table tbody tr:nth-child(even):hover { background:linear-gradient(90deg,#eef7ff,#f5f0ff); }
.ob-table tbody td { box-shadow:0 1px 0 rgba(255,255,255,.6) inset; }
.ob-table .ob-name { color:#1e293b; font-weight:700; }
.ob-table .ob-group { color:#64748b; font-size:12px; }
.ob-table .ob-ok { color:#059669; font-weight:700; }
.ob-table .ob-est { color:#4f46e5; font-weight:800; background:linear-gradient(135deg,#eef2ff,#e0e7ff); padding:3px 10px; border-radius:999px; font-size:13px; box-shadow:0 1px 2px rgba(79,70,229,.12); }
.ob-table .ob-total td { background:linear-gradient(180deg,#eef2ff,#e0e7ff) !important; font-weight:700; border-top:2px solid #c7d2fe; color:#1e293b; box-shadow:0 1px 0 rgba(255,255,255,.6) inset; }
.ob-tip { margin-top:12px; font-size:12px; color:#94a3b8; }
/* 负责项目/医生标签 */
.ob-assign { max-width:160px; text-align:left !important; }
.ob-tag { display:inline-block; padding:3px 8px; margin:2px; border-radius:999px; font-size:11px; font-weight:600; line-height:1.4; box-shadow:0 1px 2px rgba(0,0,0,.06); white-space:nowrap; }
.ob-tag-project { background:linear-gradient(135deg,#dbeafe,#bfdbfe); color:#1d4ed8; border:1px solid #93c5fd; }
.ob-tag-doctor { background:linear-gradient(135deg,#dcfce7,#bbf7d0); color:#15803d; border:1px solid #86efac; }
.ob-tag-empty { color:#94a3b8; font-size:12px; }

/* 百分比条 */
.ob-pct { display:inline-flex; align-items:center; gap:8px; min-width:88px; justify-content:center; }
.ob-pct-bar { width:36px; height:6px; border-radius:3px; background:#e2e8f0; position:relative; overflow:hidden; flex-shrink:0; }
.ob-pct-bar::after { content:''; position:absolute; left:0; top:0; height:100%; border-radius:3px; background:inherit; }
.ob-pct-val { font-weight:700; font-size:12.5px; font-variant-numeric:tabular-nums; }
.ob-pct-text { font-weight:700; font-size:13px; font-variant-numeric:tabular-nums; }

.ob-legend { display:flex; align-items:center; gap:12px; padding:12px 16px; background:#f8fafc; border-top:1px solid #f1f5f9; font-size:12px; color:#64748b; }
.ob-legend-dot { width:8px; height:8px; border-radius:50%; display:inline-block; margin-right:4px; }

/* 运营部看板 — 时间筛选器 */
.ob-filter-bar { padding:18px 20px; margin-bottom:18px; border-radius:16px; background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%); box-shadow:0 1px 0 rgba(255,255,255,.8) inset, 0 4px 6px -2px rgba(15,23,42,.05), 0 0 0 1px rgba(226,232,240,.8); }
.ob-filter-row { display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.ob-filter-label { display:flex; align-items:center; gap:6px; font-size:13px; font-weight:700; color:#334155; white-space:nowrap; }
.ob-chip-group { display:flex; flex-wrap:wrap; gap:8px; }
.ob-chip { padding:7px 14px; border-radius:999px; border:1px solid #e2e8f0; background:#fff; color:#475569; font-size:12.5px; font-weight:600; cursor:pointer; transition:all .15s ease; box-shadow:0 1px 2px rgba(15,23,42,.04); }
.ob-chip:hover { border-color:#93c5fd; color:#2563eb; background:#eff6ff; transform:translateY(-1px); }
.ob-chip.active { background:linear-gradient(135deg,#3b82f6,#2563eb); color:#fff; border-color:#2563eb; box-shadow:0 4px 10px -3px rgba(37,99,235,.25); }
.ob-custom-range { display:none; align-items:center; gap:10px; margin-top:12px; padding-top:12px; border-top:1px dashed #e2e8f0; flex-wrap:wrap; }
.ob-date-input { width:auto; min-width:140px; padding:8px 12px; font-size:13px; border-radius:10px; }
.ob-range-sep { color:#94a3b8; font-size:13px; }
.ob-range-info { margin-top:12px; font-size:12px; color:#64748b; display:flex; align-items:center; gap:6px; }
.ob-range-dot { width:7px; height:7px; border-radius:50%; background:#10b981; box-shadow:0 0 0 3px rgba(16,185,129,.15); }

/* 进度条（保底线 / 目标线进度） */
.wo-progress-row { display:flex;align-items:center;gap:12px;margin-bottom:12px; }
.wo-progress-label { width:88px;font-size:13px;color:#475569;font-weight:600;flex-shrink:0; }
.wo-progress-bar { flex:1;height:14px;background:#eef2f7;border-radius:8px;overflow:hidden; }
.wo-progress-fill { height:100%;border-radius:8px;transition:width .4s ease;min-width:3px; }
.wo-progress-fill.wo-status-up { background:linear-gradient(90deg,#34d399,#059669); }
.wo-progress-fill.wo-status-down { background:linear-gradient(90deg,#fbbf24,#f59e0b); }
.wo-progress-val { width:90px;text-align:right;font-size:13px;font-weight:700;color:#0f172a;font-variant-numeric:tabular-nums;flex-shrink:0; }

/* v155: 医生进度组 */
.wo-doc-progress-name { font-size:14.5px;font-weight:700;color:#1e293b;margin-bottom:2px; }
.wo-doc-proj { font-size:12px;color:#64748b;font-weight:500;margin-left:6px; }
.wo-doc-progress-group:last-child { border-bottom:none !important;margin-bottom:0;padding-bottom:0; }

.wo-card {
  background:#fff;border-radius:12px;padding:18px 20px;
  border:1px solid #f0f1f5;box-shadow:0 1px 3px rgba(0,0,0,.04);
  transition:transform .15s, box-shadow .15s;
}
.wo-card:hover { transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.08); }
.wo-card-label { font-size:12px;color:#64748b;font-weight:500;margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px; }
.wo-card-value { font-size:26px;font-weight:800;color:#0f172a;line-height:1.2; }
.wo-card-unit { font-size:13px;font-weight:500;color:#94a3b8;margin-left:2px; }
.wo-card-sub { font-size:11.5px;color:#94a3b8;margin-top:6px;font-weight:500; }

/* ★ v20260801+：主管汇总快照的成员清单 */
.sup-group {
  background:#fff; border:1px solid #eef2f7; border-radius:14px;
  padding:14px 16px; box-shadow:0 2px 6px rgba(15,23,42,.04);
}
.sup-group-label {
  font-size:14px; font-weight:700; color:#0f172a; margin-bottom:10px;
  display:flex; align-items:center; justify-content:space-between;
}
.sup-group-count {
  font-size:12px; font-weight:600; color:#64748b;
  background:#f1f5f9; padding:2px 10px; border-radius:999px;
}
.sup-group-list { display:flex; flex-wrap:wrap; gap:6px; }
.sup-tag {
  font-size:12px; font-weight:600; color:#0f766e;
  background:linear-gradient(135deg,#ecfeff 0%, #f0fdfa 100%);
  border:1px solid #99f6e4; padding:4px 10px; border-radius:999px;
}
.sup-empty { font-size:12px; color:#94a3b8; font-style:italic; }

.wo-note { background:#fffbeb;border-radius:8px;padding:10px 16px;font-size:12.5px;color:#92400e;border:1px solid #fef3c7; }
.wo-table { width:100%;border-collapse:collapse; }
.wo-table th { padding:12px 18px;background:#f8fafc;font-size:12px;font-weight:600;color:#475569;text-align:left;border-bottom:2px solid #e2e8f0;white-space:nowrap; }
.wo-table td { padding:11px 18px;font-size:13px;border-bottom:1px solid #f1f5f9;vertical-align:middle; }
.wo-table tbody tr:hover { background:#fafbfd; }
.wo-table .num { text-align:right;font-variant-numeric:tabular-nums;font-weight:600; }
.wo-tier-table td:first-child, .wo-tier-table th:first-child { width:120px;text-align:center; }
.wo-tier-table td:nth-child(2), .wo-tier-table th:nth-child(2) { width:130px;text-align:center; }
.wo-tier-table td:nth-child(3), .wo-tier-table th:nth-child(3) { text-align:left; }

.wo-status-up { color:#059669; }
.wo-status-down { color:#dc2626; }

/* ===== 当日实时看板 ===== */
.wo-today-board {
  border:1px solid #bfdbfe;
  border-left:4px solid #3b82f6;
  background:linear-gradient(180deg,#f8fbff 0%,#ffffff 60%);
  border-radius:12px;
  padding:16px 18px;
  box-shadow:0 2px 10px rgba(59,130,246,.06);
}
.wo-today-board .wo-section-head { margin-bottom:12px; }
.wo-live {
  display:inline-flex;align-items:center;gap:5px;
  font-size:11.5px;font-weight:600;color:#16a34a;
  background:#ecfdf5;border:1px solid #a7f3d0;border-radius:999px;
  padding:2px 9px 2px 7px;margin-left:6px;
}
.wo-live-dot {
  width:7px;height:7px;border-radius:50%;background:#22c55e;
  box-shadow:0 0 0 0 rgba(34,197,94,.6);
  animation:woLivePulse 1.6s infinite;
}
@keyframes woLivePulse {
  0%   { box-shadow:0 0 0 0 rgba(34,197,94,.55); }
  70%  { box-shadow:0 0 0 7px rgba(34,197,94,0); }
  100% { box-shadow:0 0 0 0 rgba(34,197,94,0); }
}
.wo-updated { margin-left:auto;font-size:11px;color:#94a3b8;font-variant-numeric:tabular-nums; }
.wo-today-block { margin-top:10px; }
.wo-today-block:first-of-type { margin-top:0; }
.wo-today-block-title {
  font-size:12.5px;font-weight:700;color:#334155;
  margin:0 0 8px 2px;padding-left:8px;
  border-left:3px solid #6366f1;
}
.wo-today-block + .wo-today-block { border-top:1px dashed #e2e8f0;padding-top:12px; }
.wo-today-members{margin-top:10px;padding:8px 10px;background:linear-gradient(135deg,#f8fafc 0%,#f1f5f9 100%);border-radius:10px;border:1px solid #e2e8f0;}
.wo-tm-list{display:flex;flex-wrap:wrap;gap:6px 8px;}
.wo-tm-row{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;font-size:12px;color:#475569;}
.wo-tm-name{font-weight:700;color:#1e293b;}
.wo-tm-chip{padding:1px 6px;border-radius:6px;background:#f1f5f9;color:#475569;font-variant-numeric:tabular-nums;}
.wo-tm-chip b{color:#6366f1;font-weight:700;margin-left:2px;}
.wo-badge {
  display:inline-block;padding:2px 10px;border-radius:20px;font-size:11.5px;font-weight:700;
}
.wo-badge.wo-status-up { background:#d1fae5;color:#065f46; }
.wo-badge.wo-status-down { background:#fee2e2;color:#991b1b; }

.wo-bonus-calc {
  margin-top:14px;padding:12px 16px;background:#f0fdf4;border-radius:8px;
  border:1px solid #bbf7d0;font-size:13px;color:#166534;line-height:1.6;
}
.wo-bonus-calc strong { color:#15803d;font-size:15px; }

/* 工作总览 - 温暖欢迎横幅 */
.wo-welcome {
  background: linear-gradient(135deg, #eef2ff 0%, #faf5ff 50%, #fff7ed 100%);
  border-radius: 14px;
  padding: 20px 24px;
  margin-bottom: 22px;
  border: 1px solid #e0e7ff;
  position: relative;
  overflow: hidden;
}
.wo-welcome::before {
  content: '';
  position: absolute;
  top: -30px; right: -20px;
  width: 120px; height: 120px;
  background: radial-gradient(circle, rgba(99,102,241,.08) 0%, transparent 70%);
  border-radius: 50%;
}
.wo-welcome-greet { font-size: 17px; font-weight: 700; color: #312e81; margin-bottom: 6px; }
.wo-welcome-text { font-size: 13.5px; color: #475569; line-height: 1.8; }
.wo-welcome-text em { font-style: normal; color: #6366f1; font-weight: 600; }
.wo-welcome-highlight { display: inline-block; background: linear-gradient(135deg, #6366f1, #8b5cf6); color: #fff; padding: 2px 10px; border-radius: 10px; font-size: 12.5px; font-weight: 600; margin-top: 8px; }

/* ==================== 结账中心 ==================== */
.settle-hero {
  background: linear-gradient(135deg, #fef2f2 0%, #fff7ed 100%);
  border: 1px solid #fecaca;
  border-left: 5px solid #ef4444;
  border-radius: 14px;
  padding: 22px 26px;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 24px;
  flex-wrap: wrap;
}
.settle-hero-left { flex: 1 1 320px; min-width: 260px; }
.settle-hero-right { flex: 0 0 auto; min-width: 180px; text-align: right; }
.settle-hero-label { font-size: 14px; color: #b91c1c; font-weight: 600; margin-bottom: 6px; }
.settle-hero-amount { font-size: 34px; font-weight: 800; color: #dc2626; letter-spacing: -.5px; }
.settle-hero-sub { margin-top: 10px; font-size: 13px; color: #7f1d1d; background: rgba(255,255,255,.6); padding: 8px 12px; border-radius: 8px; line-height: 1.7; }
.settle-hero-divider { margin: 12px 0 10px; border-top: 1px dashed rgba(185,28,28,.2); }
@media (max-width: 640px) {
  .settle-hero-right { text-align: left; }
}
.amt-unsettled { color: #dc2626; font-weight: 700; font-size: 15px; }
.amt-settled { color: #94a3b8; font-weight: 600; }

/* 成本分析板块 */
.cost-board .card-title { color:#0f766e; }
.cost-board .card-title::before { background:linear-gradient(135deg,#0d9488,#14b8a6); }
.cost-sub { font-size:12px; font-weight:500; color:#94a3b8; margin-left:10px; }
.cost-board .table thead th { background:#f0fdfa; color:#0f766e; }
.cost-num { font-weight:700; color:#0f766e; white-space:nowrap; }
.cost-row-sum { background:#f8fafc; }
.cost-row-sum td { border-top:2px solid #e2e8f0; font-weight:700; }

/* ★ v20260801+：成本分析 - 按月筛选条 */
.cost-board .card-title-row {
  display:flex; align-items:center; justify-content:space-between;
  flex-wrap:wrap; gap:12px; padding-right:4px;
}
.cost-month-bar {
  display:flex; align-items:center; flex-wrap:wrap; gap:6px;
}
.cost-month-chip {
  appearance:none; border:1px solid #cbd5e1; background:#fff;
  color:#475569; font-size:12px; font-weight:600;
  padding:5px 12px; border-radius:999px; cursor:pointer;
  transition:all .18s ease;
}
.cost-month-chip:hover {
  border-color:#14b8a6; color:#0f766e; background:#f0fdfa;
  transform:translateY(-1px); box-shadow:0 2px 6px rgba(20,184,166,.18);
}
.cost-month-chip.active {
  background:linear-gradient(135deg,#0d9488,#14b8a6);
  border-color:transparent; color:#fff;
  box-shadow:0 4px 12px rgba(20,184,166,.35);
}
.cost-month-custom {
  display:flex; align-items:center; gap:6px; margin-left:6px;
  padding-left:10px; border-left:1px dashed #cbd5e1;
}
.cost-month-label { font-size:12px; color:#94a3b8; font-weight:500; }
.cost-month-input {
  appearance:none; height:30px; padding:0 8px;
  border:1px solid #cbd5e1; border-radius:8px;
  font-size:12px; color:#0f172a; background:#fff;
}
.cost-month-input:focus {
  outline:none; border-color:#14b8a6;
  box-shadow:0 0 0 3px rgba(20,184,166,.18);
}

/* ==================== 主管工作总览：当月开支与成本板块 ==================== */
.mcb-wrap {
  background:#fff; border-radius:16px; overflow:hidden;
  box-shadow:0 4px 20px rgba(15,23,42,.08); border:1px solid #eef2f7;
  margin-bottom:22px;
}
.mcb-head {
  display:flex; align-items:center; justify-content:space-between;
  padding:16px 22px;
  background:linear-gradient(110deg,#6366f1 0%,#7c3aed 55%,#8b5cf6 100%);
  color:#fff;
  border-radius:12px;
  margin:18px 0;
}
.mcb-head-left { display:flex; align-items:center; gap:14px; }
.mcb-emoji { font-size:26px; line-height:1; filter:drop-shadow(0 2px 4px rgba(0,0,0,.2)); }
.mcb-title { font-size:17px; font-weight:800; letter-spacing:.5px; }
.mcb-sub { font-size:12.5px; opacity:.85; margin-top:2px; }
.mcb-sm-card {
  background:rgba(255,255,255,.18); backdrop-filter:blur(6px);
  border:1px solid rgba(255,255,255,.35); border-radius:10px;
  padding:10px 12px; min-width:210px; max-width:240px;
  transition:all .15s; user-select:none;
}
.mcb-sm-card:hover { background:rgba(255,255,255,.25); }
.mcb-sm-main { text-align:right; padding-bottom:8px; border-bottom:1px solid rgba(0,0,0,.06); }
.mcb-sm-label { font-size:12px; opacity:.9; font-weight:700; }
.mcb-sm-subtitle { font-size:11px; opacity:.75; margin-top:1px; }
.mcb-sm-usage { margin-top:8px; display:flex; flex-direction:column; gap:4px; }
.mcb-smu-row { display:flex; justify-content:space-between; align-items:center; font-size:12px; }
.mcb-smu-label { opacity:.75; }
.mcb-smu-value { font-weight:700; font-variant-numeric:tabular-nums; }
.mcb-sm-foot { margin-top:8px; padding-top:6px; border-top:1px dashed rgba(0,0,0,.08); text-align:right; font-size:11px; opacity:.8; }
.mcb-body { padding:20px 22px 18px; }
.mcb-cols { display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-bottom:20px; }
@media (max-width:1100px){ .mcb-cols { grid-template-columns:1fr; } }
.mcb-card {
  border:1px solid #eef2f7; border-radius:14px; padding:16px 18px;
  background:linear-gradient(180deg,#ffffff 0%,#fafbff 100%);
}
.mcb-dist { border-left:4px solid #0d9488; }
.mcb-ops { border-left:4px solid #6366f1; }
.mcb-sm {
  background:linear-gradient(110deg,#6366f1 0%,#7c3aed 55%,#8b5cf6 100%);
  color:#fff; border:none;
}
.mcb-sm .mcb-card-title { color:#fff; }
.mcb-sm .mcb-sm-card {
  background:transparent; border:none; backdrop-filter:none;
  min-width:auto; max-width:none; padding:0;
}
.mcb-sm .mcb-sm-card:hover { background:transparent; }
.mcb-sm .mcb-sm-main { text-align:left; border-bottom-color:rgba(255,255,255,.2); }
.mcb-sm .mcb-sm-foot { text-align:left; border-top-color:rgba(255,255,255,.2); }
.mcb-sm .mcb-sm-label,
.mcb-sm .mcb-sm-subtitle,
.mcb-sm .mcb-smu-label,
.mcb-sm .mcb-smu-value,
.mcb-sm .mcb-sm-foot { color:#fff; }
/* v20260801+：TikHub 卡去掉橙色外框（与白色内表格协调），改用白底淡紫边 */
.mcb-tik {
  background:#ffffff;
  border:1px solid #e2e8f0; border-left:4px solid #8b5cf6;
  color:#0f172a;
  box-shadow:0 1px 3px rgba(15,23,42,.04);
}
.mcb-tik .mcb-card-title { color:#0f172a; }
.mcb-tik .mcb-sm-card {
  background:transparent; border:none; backdrop-filter:none;
  min-width:auto; max-width:none; padding:0;
}
.mcb-tik .mcb-sm-card:hover { background:transparent; }
.mcb-tik .mcb-sm-main { text-align:left; border-bottom-color:rgba(255,255,255,.2); }
.mcb-tik .mcb-sm-foot { text-align:left; border-top-color:rgba(255,255,255,.2); }
.mcb-tik .mcb-sm-label,
.mcb-tik .mcb-sm-subtitle,
.mcb-tik .mcb-smu-label,
.mcb-tik .mcb-smu-value,
.mcb-tik .mcb-sm-foot { color:#fff; }

/* ★ v20260801+：TikHub 消耗明细表（9 列：用途 + 4 时间维度 × 次数/费用）
   升级版：白底 + 精致排版 + 渐变表头 + 微妙阴影 */
.mcb-tik-card { background:transparent; padding:0; }
.mcb-tik-head {
  display:flex; align-items:baseline; justify-content:space-between;
  padding-bottom:14px; margin-bottom:14px;
  border-bottom:1px solid #f1f5f9;
  flex-wrap:wrap; gap:8px;
}
.mcb-tik-title { font-size:15px; font-weight:700; color:#0f172a; letter-spacing:.2px; }
.mcb-tik-title::before { content:''; display:inline-block; width:3px; height:14px; background:linear-gradient(180deg,#6366f1,#a855f7); border-radius:2px; margin-right:8px; vertical-align:-2px; }
.mcb-tik-price { font-size:11px; color:#94a3b8; font-weight:500; }
.mcb-tik-table {
  width:100%; border-collapse:separate; border-spacing:0;
  font-size:13px; background:#ffffff;
  border-radius:10px; overflow:hidden;
  border:1px solid #e2e8f0;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
}
.mcb-tik-col-type { width:auto; }
/* 表头：白→浅灰微妙渐变 + 底分隔 */
.mcb-tik-table thead th {
  font-weight:600; text-align:right; padding:11px 8px;
  color:#334155; white-space:nowrap;
  background:linear-gradient(180deg,#f8fafc 0%,#f1f5f9 100%);
  border-bottom:2px solid #cbd5e1;
  border-right:1px solid #e2e8f0;
  letter-spacing:.2px;
  font-size:12px;
}
.mcb-tik-table thead th:last-child { border-right:none; }
.mcb-tik-table thead tr:hover > th { background:linear-gradient(180deg,#f1f5f9 0%,#e2e8f0 100%) !important; color:#0f172a !important; }
.mcb-tik-th-type { text-align:left; }
.mcb-tik-table thead th[colspan] { text-align:center; font-size:13px; color:#1e293b; }
/* 数据行：留白更足 + 数字 tabular-nums */
.mcb-tik-table td {
  padding:10px 8px;
  border-bottom:1px solid #f1f5f9;
  border-right:1px solid #f8fafc;
  color:#1e293b; font-variant-numeric:tabular-nums;
  font-size:13.5px;
}
.mcb-tik-table td:last-child { border-right:none; }
.mcb-tik-table tbody tr:last-child td { border-bottom:none; }
.mcb-tik-type { text-align:left; color:#475569; font-weight:500; }
.mcb-tik-num { text-align:right; white-space:nowrap; color:#0f172a; font-weight:500; }
.mcb-tik-rmb { text-align:right; white-space:nowrap; color:#c2410c; font-weight:600; }
.mcb-tik-table tbody tr:hover > td { background:#fef9c3 !important; }
.mcb-tik-table tbody tr:hover > td.mcb-tik-rmb { color:#9a3412; }
.mcb-tik-empty { text-align:center; color:#94a3b8; padding:32px 0 !important; font-size:13px; }
/* 合计行：暖琥珀底 + 强分隔 */
.mcb-tik-table tfoot td {
  border-top:2px solid #fbbf24;
  border-bottom:none !important;
  padding:12px 8px;
  font-weight:700;
  color:#7c2d12;
  background:linear-gradient(180deg,#fef3c7 0%,#fde68a 100%);
  font-size:14px;
}
.mcb-tik-table tfoot tr:hover > td { background:linear-gradient(180deg,#fde68a 0%,#fcd34d 100%) !important; color:#7c2d12 !important; }
.mcb-tik-foot {
  margin-top:12px; padding-top:8px;
  border-top:1px dashed #e2e8f0;
  text-align:right; font-size:12px; color:#94a3b8; font-weight:500;
}

/* ★ v20260801+：主管总览新排版：欢迎语(左) + TikHub(右) 行 */
.mcb-row-1 {
  display:grid; grid-template-columns:minmax(280px,1fr) 2.2fr;
  gap:20px; margin-bottom:20px;
}
@media (max-width:1100px){ .mcb-row-1 { grid-template-columns:1fr; } }
/* ★ 20260903：DEEPSEEK 消耗玻璃条（嵌欢迎卡底部，毛玻璃质感） */
.mcb-ds-strip {
  margin-top:20px;
  background:rgba(255,255,255,.13);
  backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  border:1px solid rgba(255,255,255,.22);
  border-radius:12px; padding:12px 16px;
  display:flex; align-items:center; gap:14px; flex-wrap:wrap;
}
.mcb-ds-tag {
  font-size:11px; font-weight:800; letter-spacing:.08em;
  color:rgba(255,255,255,.9);
  border:1px solid rgba(255,255,255,.35); border-radius:6px; padding:3px 8px;
}
.mcb-ds-stats { display:flex; gap:18px; flex:1; flex-wrap:wrap; }
.mcb-ds-stat { display:flex; flex-direction:column; gap:1px; }
.mcb-ds-stat .k { font-size:11px; color:rgba(255,255,255,.65); }
.mcb-ds-stat .v { font-size:14px; font-weight:700; color:#fff; font-variant-numeric:tabular-nums; }
.mcb-ds-stat .v i { font-style:normal; font-weight:600; font-size:12px; color:rgba(255,255,255,.75); margin-left:4px; }
.mcb-ds-bal {
  margin-left:auto; font-size:15px; font-weight:800; color:#fcd34d;
  background:rgba(252,211,77,.16);
  border:1px solid rgba(252,211,77,.38);
  border-radius:8px; padding:5px 12px; white-space:nowrap; font-variant-numeric:tabular-nums;
}
.mcb-ds-foot { width:100%; font-size:10px; color:rgba(255,255,255,.5); margin-top:2px; }

.mcb-welcome-card {
  background:linear-gradient(135deg,#4f46e5 0%,#7c3aed 50%,#c026d3 100%);
  border-radius:14px; padding:24px 22px;
  color:#fff; display:flex; flex-direction:column; justify-content:center;
  min-height:240px; position:relative; overflow:hidden;
  box-shadow:0 4px 16px rgba(99,102,241,.18);
}
.mcb-welcome-card::before {
  content:''; position:absolute; top:-30px; right:-30px;
  width:140px; height:140px; border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.18) 0%,transparent 70%);
  pointer-events:none;
}
.mcb-welcome-card::after {
  content:''; position:absolute; bottom:-50px; left:-20px;
  width:120px; height:120px; border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.10) 0%,transparent 70%);
  pointer-events:none;
}
/* 大日期：醒目 */
.mcb-welcome-date {
  font-size:30px; font-weight:700; letter-spacing:1px;
  margin-bottom:6px; position:relative; z-index:1;
  text-shadow:0 2px 4px rgba(0,0,0,.12);
}
/* 实时时钟：等宽数字，每秒跳动 */
.mcb-welcome-clock {
  font-size:44px; font-weight:300; line-height:1.1;
  font-family:'SF Mono','JetBrains Mono','Consolas','Roboto Mono',monospace;
  letter-spacing:2px; margin-bottom:16px;
  position:relative; z-index:1;
  text-shadow:0 2px 6px rgba(0,0,0,.15);
  font-variant-numeric:tabular-nums;
}
.mcb-welcome-quote {
  font-size:14px; line-height:1.65; font-weight:300;
  margin-bottom:6px; position:relative; z-index:1;
  font-style:italic; letter-spacing:.2px;
  opacity:.95;
}
.mcb-welcome-quote::before { content:'「'; opacity:.6; margin-right:2px; }
.mcb-welcome-quote::after { content:'」'; opacity:.6; margin-left:2px; }
.mcb-welcome-attr { font-size:12px; opacity:.8; text-align:right; font-weight:500; position:relative; z-index:1; }
.mcb-welcome-attr::before { content:'—— '; opacity:.6; }
.mcb-card-title {
  display:flex; align-items:center; gap:8px;
  font-size:14px; font-weight:800; color:#334155; margin-bottom:14px; letter-spacing:.3px;
}
.mcb-dot { width:9px; height:9px; border-radius:50%; display:inline-block; }
.dot-dist { background:#0d9488; }
.dot-ops { background:#6366f1; }
.dot-tik { background:#fbbf24; }
.dot-sm { background:#fbbf24; }
.mcb-metrics { display:grid; grid-template-columns:1fr 1fr; gap:12px 16px; }
.mcb-metric { display:flex; flex-direction:column; gap:3px; }
.mcb-m-wide { grid-column:1 / -1; }
.mcb-m-label { font-size:12px; color:#94a3b8; font-weight:600; }
.mcb-m-value { font-size:18px; font-weight:800; color:#334155; font-variant-numeric:tabular-nums; }
.mcb-m-value.big { font-size:24px; }
.mcb-m-value.pos { color:#0d9488; }
.mcb-m-value.neg { color:#e11d48; }
.mcb-projects { border-top:1px dashed #e2e8f0; padding-top:16px; }
.mcb-projects-title { font-size:13.5px; font-weight:800; color:#475569; margin-bottom:12px; letter-spacing:.3px; }
.mcb-table-wrap { overflow-x:auto; border-radius:12px; border:1px solid #eef2f7; }
.mcb-table { width:100%; border-collapse:collapse; font-size:13px; min-width:520px; }
.mcb-table thead th {
  background:linear-gradient(180deg,#f5f3ff,#ede9fe); color:#5b21b6;
  text-align:center; padding:10px 14px; font-weight:700; white-space:nowrap; border-bottom:1px solid #e9e3ff;
}
.mcb-table tbody td { padding:10px 14px; border-bottom:1px solid #f1f5f9; color:#475569; white-space:nowrap; text-align:center; vertical-align:middle; }
.mcb-table tbody tr:last-child td { border-bottom:none; }
.mcb-table tbody tr:hover { background:#fafaff; }
.mcb-pname { font-weight:700; color:#334155; }
.mcb-sub-cell { color:#94a3b8; font-size:12.5px; }
.mcb-amt { font-weight:700; color:#0d9488; font-variant-numeric:tabular-nums; }
.mcb-cost { font-weight:700; color:#6366f1; font-variant-numeric:tabular-nums; }
.mcb-rr { font-weight:700; color:#10b981; font-variant-numeric:tabular-nums; }
.mcb-rr-warn { color:#dc2626; }
.mcb-ar { font-weight:700; color:#0ea5e9; font-variant-numeric:tabular-nums; }

/* ★ 对比幅度胶囊（涨/跌/平/新增） */
.mcb-cmp {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  font-size: 12.5px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  padding: 3px 9px;
  border-radius: 999px;
  letter-spacing: 0.2px;
  white-space: nowrap;
  line-height: 1;
}
.mcb-cmp svg {
  width: 10px;
  height: 10px;
  display: block;
  flex-shrink: 0;
}
.mcb-cmp-up {
  color: #fff;
  background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);  /* 中国惯例：涨红 */
  box-shadow: 0 2px 6px -2px rgba(220,38,38,0.4), inset 0 1px 0 rgba(255,255,255,0.25);
}
.mcb-cmp-down {
  color: #fff;
  background: linear-gradient(135deg, #10b981 0%, #059669 100%);  /* 中国惯例：跌绿 */
  box-shadow: 0 2px 6px -2px rgba(16,185,129,0.4), inset 0 1px 0 rgba(255,255,255,0.25);
}
.mcb-cmp-flat {
  color: #64748b;
  background: #f1f5f9;
  border: 1px solid #e2e8f0;
}
.mcb-cmp-new {
  color: #fff;
  background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);  /* 新增紫蓝胶囊 */
  box-shadow: 0 2px 6px -2px rgba(99,102,241,0.4), inset 0 1px 0 rgba(255,255,255,0.25);
  font-size: 11.5px;
  letter-spacing: 1px;
}

.mcb-paid-cell, .mcb-arrival-cell { text-align:center; vertical-align:middle; padding:10px 14px; white-space:nowrap; }
.mcb-paid { font-weight:700; color:#16a34a; font-variant-numeric:tabular-nums; line-height:24px; display:inline-block; }
.mcb-arrival { display:inline-block; vertical-align:middle; width:78px; height:24px; line-height:22px; text-align:center; font-size:13px; font-weight:600; color:#1e293b; border:1px solid #e2e8f0; border-radius:5px; background:#fff; padding:0 4px; margin:0; box-sizing:border-box; -moz-appearance:textfield; }
.mcb-arrival::-webkit-outer-spin-button, .mcb-arrival::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }
.mcb-arrival:focus { outline:none; border-color:#3b82f6; box-shadow:0 0 0 2px rgba(59,130,246,.15); }
.mcb-empty { text-align:center; color:#94a3b8; padding:18px; }
.mcb-total-row { background:#f8fafc; }
.mcb-total-row td { border-top:2px solid #e2e8f0; font-weight:800; color:#334155; }
.mcb-foot { font-size:11.5px; color:#94a3b8; margin-top:10px; line-height:1.6; }
.cost-row-current { background:linear-gradient(90deg,#ecfeff 0%, #f0fdfa 100%); }
.cost-row-current td:first-child { box-shadow: inset 4px 0 0 #14b8a6; }
.cost-cur-tag { display:inline-block; margin-left:6px; font-size:11px; font-weight:700; color:#fff; background:#14b8a6; border-radius:10px; padding:1px 8px; vertical-align:middle; }
.cost-tip { margin-top:12px; font-size:12px; line-height:1.7; color:#64748b; background:#f8fafc; border:1px dashed #cbd5e1; border-radius:8px; padding:10px 14px; }

.settle-act { white-space: nowrap; }
.badge-settled { background: #dcfce7; color: #166534; border: 1px solid #bbf7d0; padding: 2px 9px; border-radius: 10px; font-size: 12px; font-weight: 600; }
.badge-unsettled { background: #fee2e2; color: #b91c1c; border: 1px solid #fecaca; padding: 2px 9px; border-radius: 10px; font-size: 12px; font-weight: 600; }
.badge-partial { background: #fef9c3; color: #854d0e; border: 1px solid #fde047; padding: 2px 9px; border-radius: 10px; font-size: 12px; font-weight: 600; }
.row-settled { background: #f0fdf4; }
.cell-settled { color: #16a34a; font-weight: 600; background: #f0fdf4; }
/* 发布管理：已结算金额输入框锁定（浅色只读）— 已在上方统一定义 */

/* ==================== 视频提取 ==================== */
.ve-wrap { max-width: 960px; margin: 0 auto; padding: 0 12px; }
.ve-hero {
  background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
  border: 1px solid #e2e8f0;
  border-radius: 16px;
  box-shadow: 0 10px 30px rgba(15, 23, 42, 0.06);
  padding: 28px 32px 22px;
  margin-bottom: 24px;
}
.ve-input-group { display: flex; gap: 0; border: 2px solid #e2e8f0; border-radius: 12px; overflow: hidden; background: #fff; transition: box-shadow .2s, border-color .2s; }
.ve-input-group:focus-within { border-color: #3b82f6; box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.10); }
.ve-input { flex: 1; border: none; padding: 14px 18px; font-size: 15px; outline: none; color: #1e293b; background: transparent; min-width: 0; }
.ve-input::placeholder { color: #94a3b8; }
.ve-parse-btn { border: none; background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); color: #fff; font-size: 15px; font-weight: 700; padding: 0 28px; cursor: pointer; transition: opacity .2s; }
.ve-parse-btn:hover { opacity: .92; }
.ve-hero-tip { font-size: 13px; color: #94a3b8; margin-top: 12px; line-height: 1.6; }
.ve-loading { text-align: center; padding: 48px 20px; color: #64748b; font-size: 14px; }
.ve-err { color: #991b1b; background: #fef2f2; border: 1px solid #fecaca; padding: 16px 18px; border-radius: 12px; font-size: 14px; }
.ve-result-card { padding: 0; overflow: hidden; border: 1px solid #e2e8f0; border-radius: 16px; box-shadow: 0 8px 24px rgba(15, 23, 42, 0.05); }
.ve-info-card { display: flex; gap: 20px; padding: 24px; background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%); border-bottom: 1px solid #eef2f6; }
.ve-cover-wrap { width: 148px; height: 148px; flex-shrink: 0; border-radius: 14px; overflow: hidden; background: #f1f5f9; box-shadow: 0 4px 12px rgba(15,23,42,0.06); }
.ve-cover-img { width: 100%; height: 100%; object-fit: cover; }
.ve-info-body { flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: center; }
.ve-info-platform { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.ve-pbadge { display: inline-block; background: linear-gradient(135deg, #3b82f6, #2563eb); color: #fff; font-size: 12px; font-weight: 700; padding: 4px 12px; border-radius: 999px; }
.ve-duration { font-size: 13px; color: #64748b; }
.ve-info-title { font-size: 18px; font-weight: 700; color: #0f172a; line-height: 1.5; margin-bottom: 10px; word-break: break-word; }
.ve-info-author { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: #475569; font-weight: 500; }
.ve-avatar { width: 26px; height: 26px; border-radius: 50%; overflow: hidden; background: #e2e8f0; display: inline-flex; align-items: center; justify-content: center; font-size: 12px; }
.ve-avatar img { width: 100%; height: 100%; object-fit: cover; }
.ve-files { display: flex; flex-direction: column; }
.ve-file-row { display: flex; align-items: center; gap: 16px; padding: 16px 24px; border-bottom: 1px solid #f1f5f9; background: #fff; transition: background .15s; }
.ve-file-row:last-child { border-bottom: none; }
.ve-file-row:hover { background: #fafbfc; }
.ve-file-label { width: 160px; flex-shrink: 0; display: flex; flex-direction: column; gap: 4px; }
.ve-file-badge { font-size: 14px; font-weight: 700; color: #1e293b; }
.ve-file-meta { font-size: 12px; color: #94a3b8; }
.ve-file-input-wrap { flex: 1; min-width: 0; }
.ve-file-input { width: 100%; border: 1px solid #e2e8f0; border-radius: 8px; padding: 10px 12px; font-size: 13px; color: #475569; background: #f8fafc; outline: none; }
.ve-file-input:focus { border-color: #bfdbfe; background: #fff; }
.ve-file-actions { display: flex; gap: 10px; flex-shrink: 0; }
.ve-btn { display: inline-flex; align-items: center; justify-content: center; border: none; border-radius: 8px; padding: 9px 16px; font-size: 13px; font-weight: 600; cursor: pointer; text-decoration: none; transition: transform .1s, opacity .2s; }
.ve-btn:active { transform: translateY(1px); }
.ve-btn-copy { background: #f1f5f9; color: #334155; border: 1px solid #e2e8f0; }
.ve-btn-copy:hover { background: #e2e8f0; }
.ve-btn-copy.ve-copied { background: #dcfce7; color: #166534; border-color: #bbf7d0; }
.ve-btn-download { background: linear-gradient(135deg, #10b981 0%, #059669 100%); color: #fff; }
.ve-btn-download:hover { opacity: .92; }
.ve-body { padding: 20px 24px; }
.ve-images-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.ve-images-count { font-size: 14px; color: #64748b; font-weight: 500; }
.ve-images-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 16px; }
.ve-image-item { background: #fff; border: 1px solid #e2e8f0; border-radius: 14px; overflow: hidden; transition: box-shadow .15s, transform .15s; }
.ve-image-item:hover { box-shadow: 0 8px 20px rgba(15,23,42,0.08); transform: translateY(-2px); }
.ve-image-thumb-wrap { width: 100%; aspect-ratio: 1 / 1; background: #f1f5f9; overflow: hidden; }
.ve-image-thumb { width: 100%; height: 100%; object-fit: cover; display: block; }
.ve-image-info { padding: 12px 14px 4px; display: flex; flex-direction: column; gap: 2px; }
.ve-image-label { font-size: 14px; font-weight: 700; color: #1e293b; }
.ve-image-meta { font-size: 12px; color: #94a3b8; }
/* ★ v20260813: LIVE 实拍图标签 */
.ve-live-badge { display: inline-block; font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 10px; background: linear-gradient(135deg, #fef3c7, #fde68a); color: #92400e; border: 1px solid #fcd34d; letter-spacing: 0.5px; }
/* LIVE 图按钮区：3 按钮自适应 */
.ve-image-actions { display: flex; gap: 6px; padding: 10px 14px 14px; flex-wrap: wrap; }
.ve-image-actions .ve-btn { flex: 1 1 0%; min-width: 0; padding: 8px 4px; font-size: 12px; }
.ve-image-actions .ve-dl-photo { background: #eff6ff; color: #1d4ed8; border-color: #bfdbfe; }
.ve-image-actions .ve-dl-photo:hover { background: #dbeafe; }
.ve-image-actions .ve-dl-video { background: #fef3c7; color: #b45309; border-color: #fcd34d; }
.ve-image-actions .ve-dl-video:hover { background: #fde68a; }
@media (max-width: 720px) {
  .ve-hero { padding: 20px; }
  .ve-info-card { flex-direction: column; }
  .ve-cover-wrap { width: 100%; height: auto; aspect-ratio: 1 / 1; max-height: 240px; }
  .ve-file-row { flex-direction: column; align-items: stretch; gap: 12px; }
  .ve-file-label { width: 100%; flex-direction: row; align-items: center; justify-content: space-between; }
  .ve-file-actions { width: 100%; }
  .ve-file-actions .ve-btn { flex: 1; }
}

/* ===== 组长/主管 逐成员工作总览 ===== */
.mo-wrap{display:flex;flex-direction:column;gap:16px;}
.mo-bar{font-size:14px;font-weight:700;color:#1e293b;background:#eef2ff;border:1px solid #e0e7ff;padding:10px 14px;border-radius:10px;}
.mo-summary{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;}
@media(max-width:1100px){.mo-summary{grid-template-columns:repeat(3,1fr);}}
@media(max-width:680px){.mo-summary{grid-template-columns:repeat(2,1fr);}}
.mo-sum-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:12px 14px;box-shadow:0 1px 2px rgba(15,23,42,.04);}
.mo-sum-label{font-size:12px;color:#64748b;margin-bottom:6px;}
.mo-sum-val{font-size:20px;font-weight:800;color:#1e293b;}

.mo-card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;margin-bottom:14px;overflow:hidden;box-shadow:0 1px 3px rgba(15,23,42,.05);}
.mo-card-head{display:flex;align-items:center;gap:12px;padding:12px 16px;background:linear-gradient(90deg,#f8fafc,#f1f5f9);border-bottom:1px solid #eef2f7;}
.mo-avatar{width:38px;height:38px;border-radius:50%;background:#6366f1;color:#fff;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;flex:0 0 auto;}
.mo-card-meta{flex:1 1 auto;min-width:0;}
.mo-card-name{font-size:15px;font-weight:700;color:#1e293b;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.mo-card-sub{font-size:12px;color:#64748b;margin-top:2px;}
.mo-tag{font-size:11px;font-weight:700;padding:2px 9px;border-radius:10px;line-height:1.4;white-space:nowrap;}
.mo-tag-self{background:#dcfce7;color:#15803d;border:1px solid #bbf7d0;}
.mo-tag-member{background:#e0e7ff;color:#4338ca;border:1px solid #c7d2fe;}
.mo-toggle{margin-left:auto;flex:0 0 auto;background:#fff;border:1px solid #cbd5e1;color:#475569;font-size:12px;padding:5px 12px;border-radius:8px;cursor:pointer;}
.mo-toggle:hover{background:#f1f5f9;}
.mo-card-body{padding:14px 16px;}

/* 部门折叠分区 */
.dept-section{border:1px solid #e2e8f0;border-radius:14px;overflow:hidden;background:#fff;box-shadow:0 1px 3px rgba(15,23,42,.04);margin-bottom:14px;}
.dept-head{display:flex;align-items:center;gap:10px;padding:13px 16px;cursor:pointer;background:linear-gradient(90deg,#eef2ff,#f5f3ff);user-select:none;}
.dept-head:hover{background:#e6ebff;}
.dept-icon{font-size:18px;}
.dept-title{font-size:15px;font-weight:800;color:#1e293b;}
.dept-count{font-size:12px;color:#64748b;background:#fff;border:1px solid #e2e8f0;padding:2px 9px;border-radius:10px;}
.dept-arrow{margin-left:auto;font-size:16px;color:#6366f1;}
.dept-body{padding:14px 16px;}
.dept-section:not(.open) .dept-body{display:none;}

/* 新增成员：主管负责小组多选 */
.sup-groups-checklist { display: flex; flex-direction: column; gap: 6px; max-height: 200px; overflow-y: auto; border: 1px solid var(--border, #e3e8ef); border-radius: 8px; padding: 10px; background: #fafbfc; }
.sup-group-check { display: flex; align-items: center; gap: 8px; padding: 5px 8px; border-radius: 6px; cursor: pointer; font-size: 13px; transition: background .15s; }
.sup-group-check:hover { background: #f0f4ff; }
.sup-group-check input[type="checkbox"] { width: 16px; height: 16px; accent-color: #6366f1; }
.sup-group-check span { color: #334155; }

/* ==================== 博主登记 - Toggle 开关 ==================== */
.reg-toggle-cell { text-align: center; vertical-align: middle; }
.reg-toggle-wrap { display: flex; align-items: center; justify-content: center; min-height: 28px; }
.reg-switch {
  position: relative; display: inline-block;
  width: 44px; height: 24px; cursor: pointer;
  background: #cbd5e1; border-radius: 12px;
  transition: background 0.25s ease; flex-shrink: 0;
}
.reg-switch-on { background: linear-gradient(135deg, #6366f1, #8b5cf6); }
.reg-switch-knob {
  position: absolute; top: 2px; left: 2px;
  width: 20px; height: 20px;
  background: #fff; border-radius: 50%;
  box-shadow: 0 1px 3px rgba(0,0,0,0.2);
  transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
.reg-switch-on .reg-switch-knob { transform: translateX(20px); }
.reg-switch:hover { opacity: 0.9; }
.reg-received-by { font-size: 13px; color: var(--text-primary); text-align: center; font-weight: 500; }

/* ==================== 博主主页截图（缩略图 + 上传） ==================== */
/* ★ 锁死 .hp-td 单元格的宽度 - 不依赖 :has()，所有浏览器 100% 兼容 */
.hp-td,
.hp-th {
  width: 64px !important;
  min-width: 64px !important;
  max-width: 64px !important;
  padding: 2px 4px !important;
  vertical-align: middle !important;
  text-align: center !important;
  white-space: nowrap !important;
  overflow: hidden !important;
}
.hp-th { font-size: 13px !important; }
/* 缩略图容器：横向 flex 居中，自身撑满 td 高度让缩略图垂直居中 */
.hp-shot-cell { display:flex; align-items:center; justify-content:center; gap:4px; flex-wrap:nowrap; height:100%; }
/* 缩略图强制 36x48（与缩略图大小精确匹配，绝不被撑开） */
.hp-thumb {
  width: 36px !important;
  height: 48px !important;
  max-width: 36px !important;
  max-height: 48px !important;
  min-width: 36px !important;
  min-height: 48px !important;
  object-fit: cover !important;
  border-radius: 6px;
  border: 1px solid #e2e8f0;
  cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease;
  box-shadow: 0 1px 2px rgba(0,0,0,.06);
  flex-shrink: 0;
  display: block !important;
}
.hp-thumb:hover { transform: scale(1.5); box-shadow: 0 8px 20px rgba(0,0,0,.25); z-index: 10; position: relative; }
.hp-thumb-wrap { display:inline-block; line-height:0; flex-shrink:0; }
/* 未上传：紧凑虚线"+"框（48x40 - 比缩略图小一点，列宽正好容纳） */
.hp-upload-box {
  display: inline-flex !important;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 48px !important;
  height: 40px !important;
  min-width: 48px !important;
  max-width: 48px !important;
  min-height: 40px !important;
  max-height: 40px !important;
  border: 1.5px dashed #cbd5e1;
  border-radius: 6px;
  background: #f8fafc;
  color: #64748b;
  cursor: pointer;
  font-size: 11px;
  line-height: 1.1;
  padding: 0 !important;
  transition: all .15s ease;
  flex-shrink: 0;
  box-sizing: border-box;
}
.hp-upload-box:hover { border-color:#6366f1; color:#4f46e5; background:#eef2ff; }
.hp-upload-plus { font-size:16px !important; line-height:1; font-weight:300; color:#94a3b8; }
.hp-upload-box:hover .hp-upload-plus { color:#6366f1; }
.hp-upload-text { font-size:10px !important; margin-top:1px; }
.hp-empty { font-size:12px; color: var(--text-muted); }
/* 已上传：紧凑"改"按钮（24x24 圆形） */
.hp-replace-btn {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: 22px !important;
  height: 22px !important;
  min-width: 22px !important;
  max-width: 22px !important;
  min-height: 22px !important;
  max-height: 22px !important;
  border-radius: 50%;
  border: 1px solid #e2e8f0;
  background: #f8fafc;
  color: #64748b;
  font-size: 10px !important;
  cursor: pointer;
  flex-shrink: 0;
  padding: 0 !important;
  transition: all .15s ease;
  box-sizing: border-box;
}
.hp-replace-btn:hover { background:#eef2ff; color:#4f46e5; border-color:#c7d2fe; }

/* 优秀作品页 - 视频链接单元格 */
.exc-link-cell { display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:200px;max-width:280px; }
.exc-link-val { display:inline-block;max-width:260px;padding:6px 10px;border:1px solid #c7d2fe;border-radius:8px;background:linear-gradient(135deg,#eef2ff 0%,#e0e7ff 100%);color:#4f46e5;font-size:13px;font-weight:600;text-decoration:none;word-break:break-all;line-height:1.4;transition:all .15s ease;box-shadow:inset 0 1px 0 rgba(255,255,255,.5); }
.exc-link-val:hover { background:linear-gradient(135deg,#e0e7ff 0%,#c7d2fe 100%);color:#4338ca;transform:translateY(-1px);box-shadow:0 2px 6px rgba(99,102,241,.2);border-color:#818cf8; }

/* 优秀作品页 - 表格对齐（v20260731+） */
#excTable th { vertical-align: middle; }
#excTable th, #excTable td { vertical-align: middle; padding: 12px 14px; }
#excTable tbody tr { border-bottom: 1px solid #f1f5f9; }
#excTable tbody tr:hover { background: #fafbff; }
/* 列头对齐 = 内容对齐（让每列头/内容上下一致） */
/* 数字列：表头右对齐，与右对齐数字对得齐 */
#excTable th.cell-metric { text-align: right; padding-right: 18px; }
/* 文字列：表头左对齐（避免居中造成视觉偏差） */
#excTable th:not(.cell-metric) { text-align: left; }
/* 数字列（播放量/点赞/评论/收藏）：靠右 + 等宽数字 + 单元内不换行 */
#excTable .cell-metric { text-align: right; white-space: nowrap; padding-right: 18px; }
/* 运营/账号ID/地区/推荐人/发布时间/系统判定：左对齐 + 单元内不换行 */
#excTable td { white-space: nowrap; }
#excTable td.exc-link-cell,
#excTable td.exc-proc-cell { white-space: normal; }
/* 视频链接列允许多行，但其他行整行不撑高（用固定最小高度统一行高） */
#excTable tbody tr { min-height: 96px; }
/* 封面图（60×80）居中显示 */
#excTable td:first-child { text-align: center; padding: 8px; }
#excTable th:first-child { text-align: center; }
#excTable .exc-cover,
#excTable .exc-cover-empty { margin: 0 auto; }
/* 系统判定 badge 居中 */
#excTable td .judge-badge,
#excTable td [class*="judge-"] { display: inline-flex; align-items: center; }


/* ==================== 图片放大预览（lightbox） ==================== */
.modal-lightbox .modal { max-width:92vw;background:transparent;box-shadow:none; }
.modal-lightbox .modal-header { display:none; }
.modal-lightbox .modal-footer { display:none; }
/* 新版独立 lightbox（showImageLightbox 用）— innerHTML 方式 */
.img-lightbox-overlay {
  position: fixed; inset: 0; z-index: 99999;
  display: flex; align-items: center; justify-content: center;
  background: rgba(15,23,42,.82); opacity: 0; transition: opacity .3s ease;
}
.img-lightbox-overlay.img-lb-show { opacity: 1; }
.img-lb-close {
  position: absolute; top: -36px; right: -8px;
  width: 32px; height: 32px; border-radius: 50%;
  background: rgba(255,255,255,.9); color: #1e293b;
  border: none; cursor: pointer; font-size: 20px; line-height: 1;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 2px 8px rgba(0,0,0,.25); transition: transform .15s, background .15s;
  z-index: 1;
}
.img-lb-close:hover { background: #fff; transform: scale(1.1); }
.img-lightbox-img {
  max-width:60vw;max-height:65vh;border-radius:10px;
  box-shadow:0 12px 48px rgba(0,0,0,.45);display:block;margin:0 auto;
}

/* ==================== 发布管理 - 追加结算 ==================== */
.append-settle-cell { vertical-align:top; }
.append-settle { display:flex;flex-direction:column;gap:6px;min-width:150px; }
.as-item { display:flex;align-items:center;gap:4px;flex-wrap:wrap; }
.as-settled { background:#f1f5f9;border-radius:6px;padding:4px 6px; }
.as-amt { font-weight:600;color:var(--text-primary); }
.as-note { font-size:11px;color:var(--text-muted);max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.as-amt-input { width:64px !important; }
.as-note-input { width:80px !important; }
.as-add-form { background:#f8fafc;border:1px dashed #cbd5e1;border-radius:6px;padding:4px; }
.btn-xs { padding:3px 8px;font-size:12px;line-height:1.2; }

/* ==================== 字段顺序引擎：冻结序号列 + 设置按钮 ==================== */
/* 冻结列（序号）固定显示在横向滚动最左侧 */
.koc-sticky-col { z-index: 2; }
tbody td.koc-sticky-col { background: var(--card-bg); }
tbody tr:nth-child(even) td.koc-sticky-col { background: #f8fafc; }
tbody tr:hover td.koc-sticky-col { background: #fafbfc; }
thead th.koc-sticky-col { background: #f1f5f9; z-index: 3; }
.koc-sticky-left { position: sticky; left: 0; }

/* 最右侧"设置"按钮列（始终固定在右侧可见） */
.koc-col-settings {
  position: sticky; right: 0; z-index: 5; background: #f1f5f9;
  text-align: center; min-width: 96px; border-left: 2px solid var(--border);
}
.koc-col-settings-cell { background: var(--card-bg); border-left: 1px solid var(--border-light); }
tbody tr:hover .koc-col-settings-cell { background: #fafbfc; }
.koc-settings-btn {
  border: 1px solid var(--border); background: #fff; border-radius: 8px;
  padding: 4px 12px; font-size: 12.5px; cursor: pointer; color: var(--text-secondary);
  white-space: nowrap; transition: all .15s ease;
}
.koc-settings-btn:hover { background: var(--primary-light); color: var(--primary); border-color: var(--primary); }

/* 设置弹窗：字段顺序列表 */
.col-order-list { display: flex; flex-direction: column; gap: 8px; max-height: 62vh; overflow: auto; padding: 4px 2px; }
.col-order-item {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 10px 14px; border: 1px solid var(--border-light); border-radius: 10px; background: var(--card-bg);
}
.col-order-item.locked { background: #f8fafc; }
.col-order-item.hidden { background: #f1f3f5; }
.col-order-item.hidden .col-order-label { text-decoration: line-through; opacity: .55; }
.col-order-hint { margin: 0 0 12px; font-size: 12.5px; color: var(--text-muted); line-height: 1.6; }
.koc-eye-btn { min-width: 64px; }
.col-order-label { font-size: 13.5px; font-weight: 500; }
.col-order-ctrls { display: flex; gap: 6px; }
.col-order-ctrls .btn { min-width: 36px; }

/* ==================== 站内通知铃铛 + 面板 ==================== */
.notif-bell { position: fixed; top: 12px; right: 16px; z-index: 1200; }
.notif-bell-btn {
  position: relative; width: 42px; height: 42px; border-radius: 50%;
  border: none; background: rgba(255,255,255,0.92); box-shadow: 0 2px 10px rgba(0,0,0,0.18);
  font-size: 19px; cursor: pointer; transition: transform .15s;
}
.notif-bell-btn:hover { transform: scale(1.08); }
.notif-badge {
  position: absolute; top: -4px; right: -4px; min-width: 18px; height: 18px; padding: 0 5px;
  border-radius: 9px; background: #ef4444; color: #fff; font-size: 11px; font-weight: 700;
  display: inline-flex; align-items: center; justify-content: center; line-height: 1;
}
.notif-panel {
  position: absolute; top: 50px; right: 0; width: 340px; max-height: 70vh; overflow-y: auto;
  background: #fff; border-radius: 12px; box-shadow: 0 12px 40px rgba(0,0,0,0.22);
  border: 1px solid #e2e8f0;
}
.notif-panel-head { display:flex; justify-content:space-between; align-items:center; padding:12px 14px; border-bottom:1px solid #f1f5f9; font-weight:600; }
.notif-list { padding: 6px; }
.notif-item { padding: 10px 12px; border-radius: 8px; cursor: pointer; border-left: 3px solid #ef4444; margin-bottom: 4px; background: #fef2f2; }
.notif-item.read { border-left-color: #cbd5e1; background: #f8fafc; opacity: .8; }
.notif-title { font-weight: 600; font-size: 13.5px; color: #b91c1c; }
.notif-item.read .notif-title { color: #475569; }
.notif-body { font-size: 12.5px; color: #475569; margin-top: 4px; white-space: pre-wrap; line-height: 1.5; }
.notif-time { font-size: 11px; color: #94a3b8; margin-top: 4px; }
.notif-empty { padding: 24px; text-align: center; color: #94a3b8; font-size: 13px; }
.nav-item.has-unread { position: relative; }
.nav-item.has-unread::after {
  content: ''; position: absolute; top: 50%; right: 12px; transform: translateY(-50%);
  width: 8px; height: 8px; border-radius: 50%; background: #ef4444;
  box-shadow: 0 0 0 3px rgba(239,68,68,0.18); animation: notifPulse 1.4s infinite;
}
@keyframes notifPulse { 0%,100% { opacity: 1; } 50% { opacity: .35; } }

/* ==================== 优秀作品页 ==================== */
.exc-summary { font-size: 13px; color: var(--text-muted); font-weight: 500; }
.exc-proc-cell { text-align: center; }
.proc-toggle {
  border: 1px solid #cbd5e1; background: #f1f5f9; color: #475569; border-radius: 999px;
  padding: 5px 12px; font-size: 12.5px; cursor: pointer; white-space: nowrap; transition: all .15s;
}
.proc-toggle.on { background: #dcfce7; border-color: #86efac; color: #166534; font-weight: 600; }
.proc-time { font-size: 11px; color: #94a3b8; margin-top: 3px; }

/* 优秀作品封面（v20260731+） */
.exc-cover {
  width: 60px; height: 80px; object-fit: cover; border-radius: 6px; border: 1px solid #e2e8f0;
  display: block; background: #f1f5f9;
  cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease;
  box-shadow: 0 1px 2px rgba(0,0,0,.06);
}
.exc-cover:hover { transform: scale(1.5); box-shadow: 0 8px 20px rgba(0,0,0,.25); z-index: 10; position: relative; }
.exc-cover-empty {
  display: flex; align-items: center; justify-content: center; font-size: 22px; color: #94a3b8;
  transition: background .15s ease;
}
.exc-cover-empty:hover { background: #e2e8f0; }

/* 团队优秀作品视图（v20260801+）：隐藏 评论区入口(2)/是否处理(3)/运营(6)/博主号(7)/平台(8)/账号ID(9)/地区(10) 共7列 */
/* 列序：封面(1) ~~评论区(2)~~ 是否处理(3) 有无转化(4) 评论区-操作(5) 运营(6) 博主号(7) 平台(8) 账号ID(9) 地区(10) 运营人(11) 视频链接(12) 发布时间(13) 系统判定(14) 播放量(15) 点赞(16) 评论(17) 收藏(18) */
#excTable.exc-team-view th:nth-child(2),
#excTable.exc-team-view th:nth-child(3),
#excTable.exc-team-view th:nth-child(6),
#excTable.exc-team-view th:nth-child(7),
#excTable.exc-team-view th:nth-child(8),
#excTable.exc-team-view th:nth-child(9),
#excTable.exc-team-view th:nth-child(10),
#excTable.exc-team-view td:nth-child(2),
#excTable.exc-team-view td:nth-child(3),
#excTable.exc-team-view td:nth-child(6),
#excTable.exc-team-view td:nth-child(7),
#excTable.exc-team-view td:nth-child(8),
#excTable.exc-team-view td:nth-child(9),
#excTable.exc-team-view td:nth-child(10) { display: none; }

/* 有无转化样式 */
.exc-conv-cell { text-align: center; }
.conv-select { width: 120px; font-size: 12.5px; padding: 4px 6px; border-color: #a5b4fc; border-radius: 6px; }
.conv-read { display: flex; justify-content: center; }
.conv-badge { display: inline-block; font-size: 12px; font-weight: 600; padding: 3px 10px; border-radius: 999px; white-space: nowrap; }
.conv-yes { background: #dcfce7; color: #166534; border: 1px solid #86efac; }
.conv-no { background: #fee2e2; color: #991b1b; border: 1px solid #fca5a5; }
.conv-pending { background: #f1f5f9; color: #64748b; border: 1px solid #cbd5e1; }

/* ==================== 邮件设置 ==================== */
.smtp-status { margin-bottom: 14px; }
.badge-ok { background: #dcfce7; color: #166534; border: 1px solid #86efac; padding: 3px 10px; border-radius: 999px; font-size: 12.5px; }

/* ==================== 醒目通知横幅（新通知到达时从顶部滑下） ==================== */
.notif-banner {
  position: fixed; top: 0; left: 0; right: 0; z-index: 9999;
  background: linear-gradient(135deg, #dc2626 0%, #ea580c 50%, #d97706 100%);
  color: #fff;
  transform: translateY(-100%);
  transition: transform .45s cubic-bezier(.22,1,.36,1), opacity .35s ease;
  opacity: 0;
  box-shadow: 0 4px 24px rgba(220,38,38,.4), 0 0 0 1px rgba(255,255,255,.15) inset;
  font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
}
.notif-banner.nb-show { transform: translateY(0); opacity: 1; }
.notif-banner.nb-hide { transform: translateY(-100%); opacity: 0; }
.notif-banner-inner {
  display: flex; align-items: center; gap: 14px; padding: 12px 20px;
  max-width: 1100px; margin: 0 auto;
}
.notif-banner-icon {
  font-size: 30px; line-height: 1; flex-shrink: 0;
  animation: nbIconBounce .8s ease infinite alternate;
}
@keyframes nbIconBounce { from { transform: scale(1); } to { transform: scale(1.2); } }
.notif-banner-body { flex: 1; min-width: 0; }
.notif-banner-title {
  font-size: 16px; font-weight: 700; line-height: 1.3;
  text-shadow: 0 1px 3px rgba(0,0,0,.25);
}
.notif-banner-desc {
  font-size: 12.5px; opacity: .9; margin-top: 2px; line-height: 1.35;
}
.notif-banner-actions { flex-shrink: 0; display: flex; gap: 8px; }
.nb-btn {
  padding: 7px 18px; border-radius: 8px; font-size: 13px; font-weight: 600;
  cursor: pointer; border: none; transition: all .15s; white-space: nowrap;
}
.nb-btn-primary {
  background: #fff; color: #dc2626; box-shadow: 0 2px 8px rgba(0,0,0,.2);
}
.nb-btn-primary:hover { background: #fef2f2; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0,0,0,.25); }
.nb-btn-ghost {
  background: rgba(255,255,255,.2); color: #fff; border: 1px solid rgba(255,255,255,.35);
}
.nb-btn-ghost:hover { background: rgba(255,255,255,.32); }

/* ==================== Toast ==================== */
.toast-box { position: fixed; top: 64px; right: 16px; z-index: 2000; display: flex; flex-direction: column; gap: 8px; }
.toast-item {
  background: #7c3aed; color: #fff; padding: 12px 18px; border-radius: 10px; font-size: 13.5px; font-weight: 600;
  box-shadow: 0 8px 24px rgba(124,58,237,0.35); opacity: 0; transform: translateX(20px); transition: all .3s; max-width: 320px;
}
.toast-item.show { opacity: 1; transform: translateX(0); }

/* 页面头右侧给铃铛让位 */
.page-header { padding-right: 56px; }


/* 紧凑型图片 drop zone（评论编辑器内） */
.co-img-mini { margin: 6px 0 0 0; display: inline-flex; }
.co-img-mini.co-img-mini-reply { margin: 2px 0 0 0; }
.co-img-add-btn {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 14px; border: 1px solid rgba(255,255,255,.25); border-radius: 8px; cursor: pointer;
  background: linear-gradient(145deg, #7c8cff, #5834e8);
  color: #fff;
  font-size: 12px; font-weight: 600; letter-spacing: .3px; line-height: 1.4;
  box-shadow:
    0 2px 8px rgba(88,52,232,.40),
    inset 0 1px 0 rgba(255,255,255,.20),
    inset 0 -1px 0 rgba(0,0,0,.08);
  transition: all .18s ease;
  position: relative;
  overflow: hidden;
}
.co-img-add-btn::before {
  content: '';
  position: absolute; top: 0; left: 0; right: 0; height: 50%;
  background: linear-gradient(180deg, rgba(255,255,255,.12), transparent);
  border-radius: 8px 8px 0 0;
  pointer-events: none;
}
.co-img-add-btn:hover {
  background: linear-gradient(145deg, #8a97ff, #643cf0);
  box-shadow:
    0 4px 14px rgba(88,52,232,.50),
    inset 0 1px 0 rgba(255,255,255,.25),
    inset 0 -1px 0 rgba(0,0,0,.08);
  transform: translateY(-1px);
}
.co-img-add-btn:active {
  transform: translateY(0);
  box-shadow:
    0 1px 4px rgba(88,52,232,.35),
    inset 0 2px 4px rgba(0,0,0,.15);
}
.co-img-mini.co-img-mini-drag .co-img-add-btn {
  background: linear-gradient(145deg, #8a97ff, #643cf0);
  box-shadow:
    0 4px 16px rgba(88,52,232,.55),
    inset 0 1px 0 rgba(255,255,255,.25),
    inset 0 -1px 0 rgba(0,0,0,.08),
    0 0 0 2px rgba(124,140,255,.4);
}
.co-img-mini-preview { position: relative; display: inline-flex; align-items: center; }
.co-img-mini-preview img {
  max-width: 120px; max-height: 80px; border-radius: 4px; border: 1px solid #e2e8f0; cursor: pointer; display: block;
}
.co-img-mini-rm {
  position: absolute; top: -5px; right: -5px;
  width: 18px; height: 18px; border-radius: 50%;
  background: #ef4444; color: #fff; border: 1.5px solid #fff;
  cursor: pointer; font-size: 12px; line-height: 12px; padding: 0;
  display: flex; align-items: center; justify-content: center;
}

/* ==================== 评论区弹窗（抖音风格 · 浅色适配）==================== */
.comment-zone-overlay {
  position: fixed; inset: 0; z-index: 2000;
  background: rgba(15, 23, 42, 0.55);
  display: flex; align-items: center; justify-content: center;
  opacity: 0; visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}
.comment-zone-overlay.active { opacity: 1; visibility: visible; }
.comment-zone-panel {
  width: 520px; max-width: 92vw; height: 82vh; max-height: 720px;
  background: #fff; border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xl);
  display: flex; flex-direction: column;
  overflow: hidden; transform: translateY(16px) scale(0.98);
  transition: transform 0.25s cubic-bezier(0.4,0,0.2,1);
}
.comment-zone-overlay.active .comment-zone-panel { transform: translateY(0) scale(1); }
.cz-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 20px; border-bottom: 1px solid var(--border);
  background: #fff;
}
.cz-header h3 { font-size: 17px; font-weight: 700; color: var(--text); margin: 0; }
.cz-close {
  width: 32px; height: 32px; border-radius: 50%; border: none;
  background: var(--bg); color: var(--text-secondary);
  font-size: 22px; line-height: 1; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background 0.15s;
}
.cz-close:hover { background: var(--border); color: var(--text); }
.cz-body {
  flex: 1; overflow-y: auto; padding: 12px 18px;
  background: #fff;
}
.cz-loading, .cz-empty {
  text-align: center; padding: 48px 20px; color: var(--text-muted);
}
.cz-empty-icon { font-size: 38px; margin-bottom: 12px; }
.cz-comment {
  display: flex; gap: 12px; padding: 14px 0;
  border-bottom: 1px solid var(--border-light);
}
.cz-comment:last-child { border-bottom: none; }
.cz-avatar-wrap { flex-shrink: 0; }
.cz-avatar {
  width: 40px; height: 40px; border-radius: 50%;
  object-fit: cover; background: var(--bg);
}
.cz-main { flex: 1; min-width: 0; }
.cz-nickname {
  font-size: 14px; font-weight: 600; color: var(--text-secondary);
  margin-bottom: 5px;
  display: inline-flex; align-items: center; gap: 6px;
}
.cz-author-badge {
  display: inline-flex; align-items: center;
  background: linear-gradient(135deg, #ff2e4d, #ff6b6b);
  color: #fff; font-size: 11px; font-weight: 600;
  padding: 1px 6px; border-radius: 4px;
  line-height: 1.2;
}
.cz-content {
  font-size: 14.5px; line-height: 1.6; color: var(--text);
  word-break: break-word; white-space: pre-wrap;
}
.cz-images { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.cz-img-thumb {
  width: 88px; height: 88px; object-fit: cover; border-radius: 8px;
  cursor: zoom-in; border: 1px solid rgba(0,0,0,.08); background: #f8fafc;
  transition: transform .15s, box-shadow .15s;
}
.cz-img-thumb:hover { transform: scale(1.03); box-shadow: 0 4px 12px rgba(0,0,0,.12); }
.cz-meta {
  display: flex; align-items: center; gap: 10px;
  margin-top: 6px; font-size: 12.5px; color: var(--text-muted);
  flex-wrap: wrap;
}
.cz-actions {
  margin-left: auto; display: inline-flex; align-items: center; gap: 14px;
}
.cz-like {
  display: inline-flex; align-items: center; gap: 4px;
  color: var(--text-muted); font-weight: 500;
}
.cz-like svg { opacity: 0.75; }
.cz-reply-toggle, .cz-more-replies {
  color: var(--primary); cursor: pointer; font-weight: 500;
}
.cz-reply-toggle:hover, .cz-more-replies:hover { text-decoration: underline; }
.cz-reply-list { margin-top: 10px; }
.cz-reply {
  padding: 10px 0 0 0; border-bottom: none;
}
.cz-reply .cz-avatar { width: 30px; height: 30px; }
.cz-reply .cz-nickname { font-size: 13px; }
.cz-reply .cz-content { font-size: 13.5px; }
.cz-reply .cz-meta { font-size: 12px; }
.cz-more-replies {
  padding: 8px 0 4px 42px; font-size: 13px;
}
.cz-footer {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 18px; border-top: 1px solid var(--border); background: #fff;
  gap: 12px;
}
.cz-status { font-size: 13px; color: var(--text-muted); }

/* 发布管理 / 优秀作品：评论区按钮 */
.btn-comment-zone {
  background: linear-gradient(135deg, #eff6ff, #dbeafe);
  color: #2563eb; border: 1px solid rgba(37,99,235,0.18);
  font-weight: 500; white-space: nowrap;
}
.btn-comment-zone:hover {
  background: linear-gradient(135deg, #dbeafe, #bfdbfe);
}

/* ★ 2026-09-08 修复：成本分析标题行+月份筛选被 .table-wrapper sticky(bottom:48px) 盖住
   （09-07 离职成员回列后表格变高触发 sticky 上移覆盖标题行）。仅解除成本分析板的 sticky，其他页面不动 */
.cost-board .table-wrapper {
  position: static;
}
.cost-month-label { white-space: nowrap; flex-shrink: 0; }

/* ==================== 弹窗单层滚动（09-12 运行历史双层滚动裁剪修复）====================
   旧问题：.modal 自身 88vh 可滚 + body 内联 66vh 再滚 → 双层滚动，日期行/运行卡片被内层顶边裁剪 */
.modal-flex { display: flex; flex-direction: column; padding: 0; overflow: hidden; }
.modal-flex .modal-header { margin: 0; padding: 20px 24px 14px; flex: 0 0 auto; }
.modal-flex .modal-body { flex: 1 1 auto; min-height: 0; max-height: none; overflow-y: auto; padding: 6px 24px 10px; }
.modal-flex .modal-footer { margin: 0; padding: 12px 24px 16px; flex: 0 0 auto; }

/* 2026-09-12 哥要求：弹窗内禁止冻结区域——.table-wrapper 全局吸底在弹窗内解除 */
.modal-body .table-wrapper {
  position: static !important;
  bottom: auto !important;
  box-shadow: none;
}

/* ==================== 账单统计页专用：取消表格冻结/吸底，随页面正常滚动（billmonth1002） ==================== */
#billContent .table-wrapper {
  position: static;
  bottom: auto;
}
#billContent .table-wrapper th {
  position: static;
  top: auto;
  z-index: auto;
}
#billContent .card:has(+ .pagination) {
  margin-bottom: 18px;
}
#billContent .card + .pagination {
  margin-top: 10px;
}

/* ==================== ★ pppause1014：分发看板项目 发布 开放/暂停 开关 ==================== */
.pp-kanban-card.is-paused {
  opacity: .68;
}
.pp-kanban-card.is-paused .pp-kanban-card-name {
  color: #94a3b8;
}
.pp-kanban-card-corner.is-paused-corner {
  background: linear-gradient(135deg, #f59e0b, #d97706);
  color: #fff;
  font-size: 13px;
}
.pksw-wrap {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 9px;
  padding-top: 8px;
  border-top: 1px dashed #e2e8f0;
}
.pksw-hint {
  font-size: 11px;
  color: #94a3b8;
  letter-spacing: .5px;
}
.pksw-right {
  display: flex;
  align-items: center;
  gap: 7px;
}
.pksw-state {
  font-size: 11px;
  font-weight: 600;
  color: #059669;
}
.pksw-state.is-paused {
  color: #d97706;
}
.pksw-track {
  width: 38px;
  height: 21px;
  border-radius: 999px;
  background: #cbd5e1;
  position: relative;
  cursor: pointer;
  flex: none;
  transition: background .25s ease, filter .2s ease;
  box-shadow: inset 0 1px 3px rgba(15, 23, 42, .18);
}
.pksw-track.pksw-on {
  background: linear-gradient(135deg, #34d399, #059669);
}
.pksw-track:hover {
  filter: brightness(1.07);
}
.pksw-thumb {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 17px;
  height: 17px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 1px 3px rgba(15, 23, 42, .35);
  transition: left .25s ease;
}
.pksw-track.pksw-on .pksw-thumb {
  left: 19px;
}
.pksw-ro {
  justify-content: flex-start;
}
