/**
 * style.css - 产品图片管理软件 V2 样式
 * 基于旧项目设计系统，增加侧边栏布局
 */

/* ===== CSS变量（复用旧项目设计体系） ===== */
:root {
  --pri: #4f46e5;
  --pri-hover: #4338ca;
  --pri-light: #eef2ff;
  --bg: #f8f9fb;
  --card: #fff;
  --text: #1e293b;
  --muted: #94a3b8;
  --border: #e8ecf1;
  --red: #ef4444;
  --green: #10b981;
  --amber: #f59e0b;
  --radius: 12px;
  --shadow-sm: 0 1px 2px rgba(0,0,0,.04);
  --shadow: 0 4px 16px rgba(0,0,0,.06);
  --shadow-lg: 0 12px 40px rgba(0,0,0,.12);
  --sidebar-w: 240px;
}

* { margin:0; padding:0; box-sizing:border-box; }
body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei", "PingFang SC", sans-serif;
  background: var(--bg); color: var(--text); height: 100vh; overflow: hidden;
}

/* ===== 通用组件 ===== */
.btn {
  padding:8px 18px; border-radius:8px; font-size:13px; font-weight:600;
  cursor:pointer; border:none; transition:all .2s;
  display:inline-flex; align-items:center; gap:5px; white-space:nowrap;
}
.btn-primary { background:var(--pri); color:#fff; }
.btn-primary:hover { background:var(--pri-hover); box-shadow:0 4px 12px rgba(79,70,229,.3); }
.btn-success { background:var(--green); color:#fff; }
.btn-success:hover { opacity:.9; }
.btn-danger { background:var(--red); color:#fff; }
.btn-danger:hover { opacity:.9; }
.btn-outline { background:#fff; color:var(--pri); border:1px solid var(--border); }
.btn-outline:hover { background:var(--pri-light); }
.btn-sm { padding:6px 12px; font-size:12px; }
.btn-ghost { background:transparent; color:var(--text); padding:6px 10px; }
.btn-ghost:hover { background:#f1f5f9; }
.input {
  width:100%; padding:10px 14px; border:1px solid var(--border);
  border-radius:8px; font-size:13px; outline:none; background:#fff;
  transition:border-color .2s;
}
.input:focus { border-color:var(--pri); box-shadow:0 0 0 3px rgba(79,70,229,.08); }
textarea.input { resize:vertical; min-height:60px; }
.card { background:var(--card); border-radius:var(--radius); box-shadow:var(--shadow-sm); border:1px solid var(--border); }

/* ===== Toast ===== */
.toast {
  position:fixed; top:20px; right:20px; color:#fff; padding:12px 24px;
  border-radius:10px; font-size:14px; z-index:9999;
  animation:slideIn .3s; box-shadow:var(--shadow-lg); transition:opacity .3s,transform .3s;
}
.toast-success { background:var(--green); }
.toast-warning { background:var(--amber); color:#1e293b; }
.toast-error { background:var(--red); }
@keyframes slideIn { from{opacity:0;transform:translateX(40px)} to{opacity:1;transform:translateX(0)} }

/* ===== 登录页 ===== */
#login-page {
  display:flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg,#1e1b4b 0%,#3730a3 50%,#4f46e5 100%);
  min-height:100vh;
}
.login-box {
  background:#fff; padding:40px 36px; border-radius:16px;
  width:380px; box-shadow:0 24px 80px rgba(0,0,0,.25);
}
.login-box .logo-area { text-align:center; margin-bottom:28px; }
.login-box .logo-area .icon { font-size:42px; margin-bottom:8px; }
.login-box .logo-area h1 { font-size:22px; font-weight:700; color:var(--text); }
.login-box .logo-area p { color:var(--muted); font-size:13px; margin-top:4px; }
.login-tab { display:flex; margin-bottom:22px; background:#f1f5f9; border-radius:8px; padding:3px; }
.login-tab div {
  flex:1; text-align:center; padding:8px; cursor:pointer;
  font-size:13px; font-weight:600; color:var(--muted);
  border-radius:6px; transition:all .2s;
}
.login-tab div.active { background:#fff; color:var(--pri); box-shadow:0 1px 3px rgba(0,0,0,.08); }
.form-group { margin-bottom:14px; }
.form-group label { display:block; font-size:12px; font-weight:600; color:var(--text); margin-bottom:5px; }
.login-btn { width:100%; margin-top:6px; padding:12px; font-size:14px; }

/* ===== 应用页布局 ===== */
#app-page { display:none; flex-direction:column; height:100vh; background:var(--bg); }
.app-layout { display:flex; height:100vh; overflow:hidden; }

/* ===== 侧边栏 ===== */
.sidebar {
  width:var(--sidebar-w); min-width:var(--sidebar-w);
  background:#fff; border-right:1px solid var(--border);
  display:flex; flex-direction:column; overflow:hidden;
  z-index:200; transition:transform .25s,width .25s;
}
.sidebar-brand {
  height:56px; display:flex; align-items:center; gap:8px;
  padding:0 16px; border-bottom:1px solid var(--border);
  flex-shrink:0;
}
.brand-icon { font-size:24px; }
.brand-name { font-size:14px; font-weight:800; color:var(--pri); }
.brand-ver { font-size:10px; color:var(--muted); margin-left:auto; }

.sidebar-nav {
  flex:1; overflow-y:auto; padding:10px 8px;
}
.sidebar-nav::-webkit-scrollbar { width:4px; }
.sidebar-nav::-webkit-scrollbar-thumb { background:#e0e0e0; border-radius:2px; }

.nav-group { margin-bottom:4px; }
.nav-group-label {
  font-size:10px; text-transform:uppercase; color:var(--muted);
  padding:8px 12px 4px; font-weight:700; letter-spacing:.5px;
}
.nav-item {
  display:flex; align-items:center; gap:10px;
  padding:10px 12px; border-radius:8px;
  cursor:pointer; font-size:13px; font-weight:500;
  color:var(--text); transition:all .15s; margin-bottom:1px;
  text-decoration:none; user-select:none;
}
.nav-item:hover { background:#f1f5f9; color:var(--pri); }
.nav-item.active { background:var(--pri-light); color:var(--pri); font-weight:700; }
.nav-item.locked { opacity:.4; cursor:not-allowed; }
.nav-item.locked:hover { background:transparent; color:var(--text); }
.nav-icon { font-size:16px; width:22px; text-align:center; flex-shrink:0; }
.nav-text { flex:1; }
.nav-lock { font-size:10px; opacity:.5; }

.sidebar-footer {
  border-top:1px solid var(--border); padding:8px;
  display:flex; align-items:center; gap:6px; flex-shrink:0;
}
.sidebar-user { display:flex; align-items:center; gap:8px; flex:1; padding:4px; border-radius:8px; cursor:pointer; }
.sidebar-user:hover { background:#f1f5f9; }
.user-avatar {
  width:32px; height:32px; border-radius:50%;
  background:linear-gradient(135deg,#6366f1,#8b5cf6);
  color:#fff; display:flex; align-items:center; justify-content:center;
  font-weight:700; font-size:13px;
}
.user-name { font-size:12px; font-weight:600; }

/* ===== 主内容区 ===== */
.main-area {
  flex:1; display:flex; flex-direction:column; min-width:0;
}
.topbar {
  height:56px; display:flex; align-items:center; gap:12px;
  padding:0 20px; background:#fff; border-bottom:1px solid var(--border);
  flex-shrink:0;
}
.menu-toggle {
  display:none; width:36px; height:36px; border:none; background:transparent;
  font-size:20px; cursor:pointer; border-radius:8px; color:var(--text);
}
.menu-toggle:hover { background:#f1f5f9; }
.page-title { font-size:16px; font-weight:700; flex:1; color:var(--text); }
.topbar-actions { display:flex; align-items:center; gap:8px; }
.online-status { font-size:12px; }

.main-content {
  flex:1; overflow-y:auto; padding:20px;
  -webkit-overflow-scrolling:touch;
}
.main-content::-webkit-scrollbar { width:4px; }
.main-content::-webkit-scrollbar-thumb { background:#e0e0e0; border-radius:2px; }

.loading-spinner {
  display:flex; align-items:center; justify-content:center;
  padding:60px; color:var(--muted); font-size:14px;
}

/* ===== 首页 ===== */
.home-welcome { max-width:800px; margin:0 auto; }
.welcome-hero {
  text-align:center; padding:40px 20px 30px;
  background:linear-gradient(135deg,var(--pri-light),#fff);
  border-radius:var(--radius); margin-bottom:20px; border:1px solid var(--border);
}
.hero-icon { font-size:56px; margin-bottom:10px; }
.welcome-hero h1 { font-size:22px; color:var(--pri); margin-bottom:4px; }
.hero-sub { color:var(--muted); font-size:13px; }
.hero-ver { color:#cbd5e1; font-size:11px; margin-top:6px; }

.quick-actions { margin-bottom:20px; }
.quick-actions h3 { font-size:14px; font-weight:700; margin-bottom:12px; }
.action-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.action-card {
  background:#fff; border-radius:var(--radius); padding:20px 12px;
  text-align:center; cursor:pointer; border:1px solid var(--border);
  transition:all .2s; display:flex; flex-direction:column; align-items:center; gap:8px;
}
.action-card:hover { transform:translateY(-2px); box-shadow:var(--shadow); border-color:var(--pri-light); }
.ac-icon { font-size:32px; }
.ac-text { font-size:12px; font-weight:600; color:var(--text); }

.home-status { margin-bottom:20px; }
.home-status h3 { font-size:14px; font-weight:700; margin-bottom:12px; }
.status-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.stat-item {
  background:#fff; border-radius:var(--radius); padding:16px;
  text-align:center; border:1px solid var(--border);
  display:flex; flex-direction:column; gap:4px;
}
.stat-num { font-size:24px; font-weight:800; color:var(--pri); }
.stat-ok { color:var(--green) !important; font-size:16px !important; }
.stat-label { font-size:11px; color:var(--muted); }

.home-footer {
  background:var(--pri-light); padding:14px 18px; border-radius:10px;
  font-size:12px; color:var(--pri); line-height:1.6;
}

/* ===== 分类卡片（复用旧项目） ===== */
.page-header { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:18px; }
.page-header h1 { font-size:20px; font-weight:700; }
.page-header p { color:var(--muted); margin-top:2px; font-size:12px; }
.category-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:12px; }
.cat-card {
  background:#fff; border-radius:var(--radius); overflow:hidden;
  box-shadow:var(--shadow-sm); border:1px solid var(--border);
  cursor:pointer; transition:all .25s; position:relative;
}
.cat-card:hover { transform:translateY(-2px); box-shadow:var(--shadow); }
.cat-card .cover {
  height:110px; background:#e8ecf1; display:flex;
  align-items:center; justify-content:center; position:relative; overflow:hidden;
}
.cat-card .cover svg { width:50px; height:50px; opacity:.25; }
.cat-card .cover img { width:100%; height:100%; object-fit:cover; position:absolute; top:0; left:0; }
.cat-card .info { padding:12px 8px; text-align:center; }
.cat-card .name { font-size:13px; font-weight:600; margin-bottom:2px; }
.cat-card .count { font-size:11px; color:var(--muted); }

/* ===== 产品卡片 ===== */
.product-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:12px; }
.product-card {
  background:#fff; border-radius:var(--radius); overflow:hidden;
  box-shadow:var(--shadow-sm); border:1px solid var(--border);
  cursor:pointer; transition:all .2s;
}
.product-card:hover { transform:translateY(-2px); box-shadow:var(--shadow); }
.product-card .img-box {
  height:130px; background:#e8ecf1; display:flex;
  align-items:center; justify-content:center; overflow:hidden;
}
.product-card .img-box img { width:100%; height:100%; object-fit:cover; }
.product-card .img-box svg { width:48px; height:48px; opacity:.25; }
.product-card .info { padding:10px; }
.product-card .name { font-size:13px; font-weight:600; margin-bottom:3px; }
.product-card .price { color:var(--pri); font-weight:700; font-size:13px; }

/* ===== 产品列表卡片 v2.0（复刻旧版） ===== */
.product-card-v2 { position:relative; background:#fff; border-radius:var(--radius); overflow:hidden;
  box-shadow:var(--shadow-sm); border:1px solid var(--border);
  cursor:pointer; transition:all .2s;
}
.product-card-v2:hover { transform:translateY(-2px); box-shadow:var(--shadow); }
.product-card-v2 .pc-cover { position:relative; width:100%; aspect-ratio:1/1; background:#e8ecf1; overflow:hidden; }
.pc-cmp-chk { display:none; align-items:center; gap:4px; position:absolute; top:8px; left:8px; background:rgba(255,255,255,.92); border:1px solid var(--border); border-radius:14px; padding:3px 9px 3px 6px; font-size:12px; cursor:pointer; z-index:3; box-shadow:0 1px 4px rgba(0,0,0,.08); }
.pc-cmp-chk input { width:15px; height:15px; cursor:pointer; accent-color:var(--pri); }
.pc-cmp-mode .pc-cmp-chk { display:inline-flex; }
/* 顶部「对比」左右滑动开关 */
.cmp-toggle{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:14px;color:var(--text);}
.cmp-toggle input{position:absolute;opacity:0;width:0;height:0;}
.cmp-toggle-slider{position:relative;width:42px;height:24px;background:#cbd5e1;border-radius:24px;transition:.25s;flex-shrink:0;}
.cmp-toggle-slider:before{content:'';position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:.25s;box-shadow:0 1px 3px rgba(0,0,0,.2);}
.cmp-toggle input:checked+.cmp-toggle-slider{background:#22c55e;}
.cmp-toggle input:checked+.cmp-toggle-slider:before{transform:translateX(18px);}
.cmp-toggle input:focus-visible+.cmp-toggle-slider{box-shadow:0 0 0 3px rgba(34,197,94,.25);}
.pc-add-card { border:2px dashed var(--border) !important; box-shadow:none !important; background:#f8fafc !important; min-height:160px; }
.pc-add-card:hover { border-color:var(--pri) !important; background:#eff6ff !important; transform:translateY(-2px); box-shadow:var(--shadow-sm) !important; }
.product-card-v2 .pc-main-img { width:100%; height:100%; object-fit:cover; display:block; }
.product-card-v2 .pc-main-empty { width:100%; height:100%; display:flex; align-items:center; justify-content:center; }
.product-card-v2 .pc-main-empty svg { width:60px; height:60px; opacity:.25; }
.product-card-v2 .pc-info { padding:8px 10px 4px; background:#fff; border-top:1px solid #f1f5f9; }
.product-card-v2 .pc-title { font-size:13px; font-weight:700; color:#0f172a; line-height:1.3; margin-bottom:6px; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.product-card-v2 .pc-params { font-size:11px; line-height:1.55; color:#1e293b; }
.product-card-v2 .pc-line { display:flex; align-items:baseline; gap:4px; margin-top:1px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.product-card-v2 .pc-spec { flex-shrink:0; max-width:62%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.product-card-v2 .pc-price { color:#dc2626; font-weight:700; font-size:12px; margin-left:auto; flex-shrink:0; }
.product-card-v2 .pc-price-big { color:#dc2626; font-weight:700; font-size:14px; }
.product-card-v2 .pc-more { color:var(--muted); font-size:10px; font-style:italic; }
.product-card-v2 .pc-extra { opacity:.6; }
.product-card-v2 .pc-refresh {
  position:absolute; top:8px; right:8px; width:28px; height:28px; border-radius:50%;
  border:none; background:rgba(255,255,255,.85); color:#475569; cursor:pointer;
  font-size:14px; display:flex; align-items:center; justify-content:center;
  backdrop-filter:blur(2px); box-shadow:0 2px 6px rgba(0,0,0,.1); transition:all .15s; z-index:5;
}
.product-card-v2 .pc-refresh:hover { background:var(--pri); color:#fff; transform:rotate(180deg); }
.product-card-v2 .pc-delete {
  position:absolute; top:8px; right:40px; width:28px; height:28px; border-radius:50%;
  border:none; background:rgba(255,255,255,.85); color:#ef4444; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  backdrop-filter:blur(2px); box-shadow:0 2px 6px rgba(0,0,0,.1); transition:all .15s; z-index:5;
}
.product-card-v2 .pc-delete:hover { background:#ef4444; color:#fff; }
.product-card-v2 .pc-actions { display:none; }
.product-card-v2:hover .pc-actions { display:block; }
.product-card-v2 .pc-thumbs { display:grid; grid-template-columns:repeat(4,1fr); gap:3px; padding:3px; background:#fafbfc; }
.product-card-v2 .pc-thumb { aspect-ratio:1/1; background:#e8ecf1; border-radius:4px; overflow:hidden; cursor:pointer; position:relative; transition:all .15s; }
.product-card-v2 .pc-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
.product-card-v2 .pc-thumb:hover { transform:scale(1.05); box-shadow:0 2px 8px rgba(0,0,0,.15); }
.product-card-v2 .pc-thumb.active { outline:2px solid var(--pri); outline-offset:-2px; }
.product-card-v2 .pc-thumb-empty { grid-column:1 / -1; padding:8px 4px; text-align:center; color:var(--muted); font-size:11px; }

/* ===== 面包屑 ===== */
.breadcrumb { display:flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); margin-bottom:14px; }
.breadcrumb span { cursor:pointer; color:var(--pri); font-weight:500; }
.breadcrumb span:hover { text-decoration:underline; }
.breadcrumb .sep { color:var(--muted); cursor:default; }

/* ===== 产品管理 ===== */
.prod-page { max-width:1100px; margin:0 auto; }
.prod-toolbar {
  display:flex; justify-content:space-between; align-items:center; gap:12px;
  margin-bottom:14px; flex-wrap:wrap;
}
.prod-search {
  display:flex; align-items:center; gap:8px; flex:1; max-width:400px;
}
.prod-search .input { flex:1; }
.prod-toolbar-actions { display:flex; gap:6px; }

.prod-cat-tabs {
  display:flex; gap:6px; margin-bottom:16px; flex-wrap:nowrap;
  overflow-x:auto; padding-bottom:8px; -webkit-overflow-scrolling:touch;
  scrollbar-width:none; /* Firefox */
}
.prod-cat-tabs::-webkit-scrollbar { display:none; /* Chrome/Safari */ }
.prod-cat-tab {
  padding:6px 14px; border-radius:20px; font-size:12px; font-weight:600;
  cursor:pointer; border:1px solid var(--border); color:var(--muted);
  transition:all .2s; white-space:nowrap; user-select:none;
  background:#fff; flex-shrink:0;
}
.prod-cat-tab:hover { border-color:var(--pri); color:var(--pri); }
.prod-cat-tab.active { background:var(--pri-light); border-color:var(--pri); color:var(--pri); }

.prod-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:14px; }
.prod-card {
  background:#fff; border-radius:var(--radius); overflow:hidden;
  border:1px solid var(--border); cursor:pointer;
  transition:all .2s; display:flex; flex-direction:column;
}
.prod-card:hover { transform:translateY(-2px); box-shadow:var(--shadow); border-color:var(--pri-light); }
.prod-card-img {
  height:140px; background:#f1f5f9; position:relative;
  display:flex; align-items:center; justify-content:center; overflow:hidden;
}
.prod-card-img img { width:100%; height:100%; object-fit:cover; }
.prod-card-placeholder { font-size:40px; color:#cbd5e1; }
.prod-badge {
  position:absolute; top:8px; padding:3px 8px; border-radius:4px;
  font-size:10px; font-weight:600; z-index:1;
}
.prod-badge.private { right:8px; background:rgba(0,0,0,.6); color:#fff; }
.prod-badge.public { right:8px; background:rgba(16,185,129,.85); color:#fff; }
.prod-badge.count { left:8px; background:rgba(79,70,229,.85); color:#fff; }
.prod-card-body { padding:10px 12px; flex:1; display:flex; flex-direction:column; gap:6px; }
.prod-card-name {
  font-size:13px; font-weight:700; color:var(--text);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.prod-card-meta { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.prod-card-cat {
  font-size:10px; font-weight:600; padding:2px 8px; border-radius:4px;
}
.prod-card-price { font-size:13px; font-weight:800; color:var(--pri); }
.prod-card-sku { font-size:10px; color:var(--muted); margin-top:2px; }

.prod-empty {
  text-align:center; padding:60px 20px; color:var(--muted);
}
.prod-empty-icon { font-size:56px; margin-bottom:12px; }
.prod-empty-title { font-size:15px; font-weight:600; color:var(--text); margin-bottom:4px; }
.prod-empty-desc { font-size:12px; }

/* 表格视图 */
.prod-table-wrap {
  background:#fff; border-radius:var(--radius); border:1px solid var(--border);
  overflow-x:auto;
}
.prod-table { width:100%; border-collapse:collapse; font-size:13px; }
.prod-table th, .prod-table td {
  padding:10px 12px; text-align:left; border-bottom:1px solid var(--border);
  white-space:nowrap;
}
.prod-table th { background:#f8fafc; font-size:11px; font-weight:700; color:var(--muted); text-transform:uppercase; }
.prod-table-row { cursor:pointer; transition:background .15s; }
.prod-table-row:hover { background:#f8fafc; }
.prod-table-thumb {
  width:36px; height:36px; border-radius:6px; overflow:hidden;
  background:#f1f5f9; display:flex; align-items:center; justify-content:center;
  font-size:18px;
}
.prod-table-thumb img { width:100%; height:100%; object-fit:cover; }
.prod-table-name { font-weight:600; max-width:200px; overflow:hidden; text-overflow:ellipsis; }
.prod-table-price { font-weight:700; color:var(--pri); }
.prod-tag {
  font-size:11px; font-weight:600; padding:2px 8px; border-radius:4px;
  display:inline-block;
}

/* ===== 产品详情 ===== */
.detail-header-top { text-align:center; padding:8px 0; margin-bottom:12px; }
.detail-header-top .detail-name { font-size:22px; font-weight:800; }
.detail-header-top .detail-price { font-size:26px; font-weight:800; color:var(--pri); margin:8px 0; }
.detail-header-top .detail-desc { font-size:13px; color:var(--muted); line-height:1.6; margin-top:6px; max-width:480px; margin-left:auto; margin-right:auto; }
.detail-actions-bar { display:flex; gap:8px; flex-wrap:wrap; justify-content:center; margin-bottom:16px; }
/* 图片九宫格缩略图 */
.detail-img-grid { display:flex; flex-wrap:wrap; gap:10px; justify-content:flex-start; }
.detail-img-thumb { width:110px; height:110px; border-radius:8px; overflow:hidden; cursor:pointer;
  border:2px solid transparent; transition:all .15s; background:#f1f5f9;
  flex-shrink:0; }
.detail-img-thumb:hover { border-color:var(--pri); transform:scale(1.06); box-shadow:0 4px 14px rgba(0,0,0,.15); }
.detail-img-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
/* 元数据行 */
.detail-meta-row { display:flex; flex-wrap:wrap; gap:6px 16px; justify-content:center;
  font-size:11px; color:var(--muted); margin-top:12px; padding:8px 0; }
/* 灯箱加载动画 */
@keyframes spin { to { transform:rotate(360deg); } }
/* 保持卡片样式 */
.detail-card {
  background:#fff; border-radius:var(--radius); padding:16px;
  border:1px solid var(--border); box-shadow:var(--shadow-sm);
}
.detail-section-title {
  font-size:14px; font-weight:700; margin-bottom:10px; color:var(--text);
  margin-top:0;
}
.detail-empty {
  font-size:12px; color:var(--muted); text-align:center;
  padding:16px; background:#f8fafc; border-radius:8px;
}
.detail-name { font-size:20px; font-weight:800; }
.detail-price { font-size:24px; font-weight:800; color:var(--pri); margin:8px 0; }
.detail-desc { font-size:13px; color:var(--muted); line-height:1.6; margin:6px 0; }
.detail-meta {
  display:flex; flex-wrap:wrap; gap:8px 16px;
  font-size:11px; color:var(--muted); margin-top:8px;
}
.detail-params { display:flex; flex-wrap:wrap; gap:6px; }
.param-tag {
  font-size:12px; padding:4px 10px; background:#f1f5f9;
  border-radius:6px; color:var(--text); white-space:nowrap;
}

/* SKU表格 */
.sku-table-wrap { max-height:calc(10 * 32px + 30px); overflow-y:auto; overflow-x:auto; }

/* 搭配配件（编辑表单选择器 + 详情页展示） */
.acc-list { display:flex; flex-wrap:wrap; gap:8px; max-height:220px; overflow-y:auto; padding:6px; border:1px solid #e9edf3; border-radius:10px; background:#fafbff; box-sizing:border-box; }
.acc-item { display:flex; align-items:center; gap:8px; padding:6px 8px; border:1px solid #e9edf3; border-radius:8px; background:#fff; cursor:pointer; flex:1 1 200px; min-width:150px; }
.acc-item input[type=checkbox] { margin:0; flex-shrink:0; }
.acc-item .acc-thumb { width:32px; height:32px; border-radius:6px; object-fit:cover; flex-shrink:0; background:#eef; }
.acc-item .acc-thumb-empty { display:flex; align-items:center; justify-content:center; font-size:10px; color:#aaa; background:#f0f2f7; }
.acc-item .acc-info { display:flex; flex-direction:column; overflow:hidden; }
.acc-item .acc-name { font-size:13px; line-height:1.3; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.acc-item .acc-price { font-size:12px; color:#ff8800; }
.acc-section { margin-top:16px; }
.acc-list-detail { border:none; background:transparent; padding:0; max-height:none; overflow:visible; }
.acc-card { display:flex; align-items:center; gap:10px; padding:8px; border:1px solid #e9edf3; border-radius:10px; background:#fff; cursor:pointer; width:170px; box-sizing:border-box; transition:border-color .15s, box-shadow .15s; }
.acc-card:hover { border-color:#ff8800; box-shadow:0 2px 8px rgba(255,136,0,.15); }
.acc-card .acc-thumb { width:44px; height:44px; border-radius:8px; object-fit:cover; flex-shrink:0; }
.acc-card .acc-thumb-empty { display:flex; align-items:center; justify-content:center; font-size:11px; color:#aaa; background:#f0f2f7; }
.acc-card .acc-info { display:flex; flex-direction:column; }
.acc-card .acc-name { font-size:13px; font-weight:600; line-height:1.3; }
.acc-card .acc-price { font-size:12px; color:#ff8800; margin-top:2px; }

/* 列表卡片：主产品「带 N 件配件」角标 + 配件反向标注 */
.pc-acc-badge { display:inline-flex; align-items:center; gap:5px; background:#eaf3de; color:#27500a; border-radius:13px; padding:2px 9px; font-size:11.5px; margin-top:6px; }
.pc-acc-badge .dot { width:6px; height:6px; border-radius:50%; background:#639922; }
.pc-acc-thumbs { display:flex; gap:3px; margin-top:3px; }
.pc-acc-thumb { width:22px; height:22px; border-radius:4px; object-fit:cover; border:0.5px solid #e9edf3; }
.pc-acc-thumb.t { background:#faf6ec; color:#633806; font-size:10px; display:flex; align-items:center; justify-content:center; }
.pc-acc-pill { display:inline-block; background:#fbeaf0; color:#72243e; border-radius:12px; padding:2px 9px; font-size:11px; margin-top:6px; }
.pc-belongs { display:block; font-size:11px; color:#888; margin-top:3px; }

/* 详情页：配套选配清单（主附视觉绑定） */
.acc-section.acc-section-sel { border-left:4px solid #534ab7; background:#fbfaff; border-radius:0 10px 10px 0; padding-left:12px; }
.acc-section.acc-section-sel .detail-section-title { color:#3c3489; }
.acc-tag { display:inline-block; background:#efeefe; color:#3c3489; border-radius:6px; padding:2px 8px; font-size:11.5px; margin-left:8px; font-weight:400; }
.acc-sel-bar { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:10px 0; font-size:13px; color:#666; }
.acc-sel-bar b { color:#222; }
.acc-sel-list { display:flex; flex-direction:column; gap:8px; }
.acc-sel-row { display:flex; align-items:center; gap:12px; border:1px solid #e9edf3; border-radius:10px; padding:8px 12px; background:#fff; }
.acc-sel-row .acc-cb { width:18px; height:18px; accent-color:#534ab7; flex-shrink:0; cursor:pointer; }
.acc-sel-row .acc-thumb { width:48px; height:48px; border-radius:7px; object-fit:cover; flex-shrink:0; }
.acc-sel-row .acc-thumb-empty { display:flex; align-items:center; justify-content:center; font-size:11px; color:#aaa; background:#f0f2f7; }
.acc-sel-row .acc-info { flex:1; min-width:0; display:flex; flex-direction:column; }
.acc-sel-row .acc-name { font-size:14px; font-weight:600; }
.acc-sel-row .acc-price { font-size:13px; color:#ff8800; margin-top:2px; }
.sku-table { width:100%; border-collapse:collapse; font-size:12px; }
.sku-table th, .sku-table td {
  padding:8px 10px; border-bottom:1px solid var(--border); text-align:left;
}
.sku-table th { background:#f8fafc; font-size:11px; color:var(--muted); font-weight:700; position:sticky; top:0; z-index:1; }
.sku-price { font-weight:700; color:var(--pri); }

/* ===== 产品表单 ===== */
.prod-form { padding:24px; }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:14px; }
.form-col { display:flex; flex-direction:column; }
.form-label { font-size:12px; font-weight:700; color:var(--text); margin-bottom:5px; display:block; }
.form-col-full{width:100%;margin-bottom:6px;}

/* 报价用名称（材质+款式） */
.quote-name-inputs{display:flex;align-items:flex-end;gap:8px;}
.qni-group{flex:1;display:flex;flex-direction:column;gap:3px;}
.qni-group label{font-size:11px;color:var(--muted);font-weight:600;}
.qni-input{font-size:13px;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:#fff;}
.qni-input:focus{border-color:var(--pri);outline:none;box-shadow:0 0 0 2px rgba(59,130,246,.15);}
.qni-sep{padding-bottom:9px;color:var(--muted);font-weight:700;font-size:16px;}
.form-section { margin-bottom:16px; }
.form-hint { font-weight:400; color:var(--muted); font-size:11px; margin-left:4px; }
.required { color:var(--red); }
.form-toggle-row { padding-top:8px; }
.toggle-label { display:flex; align-items:center; gap:8px; font-size:13px; cursor:pointer; }
.toggle-label input[type="checkbox"] { width:16px; height:16px; accent-color:var(--pri); }
.form-actions {
  display:flex; justify-content:flex-end; gap:10px;
  margin-top:20px; padding-top:16px; border-top:1px solid var(--border);
}

/* SKU编辑器 */
.sku-spec-row {
  background:#f8fafc; border-radius:8px; padding:12px;
  margin-bottom:8px; border:1px solid var(--border);
}
.sku-spec-header { display:flex; gap:8px; align-items:center; margin-bottom:8px; }
.sku-spec-header .input { flex:1; }
.sku-spec-values { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.sku-spec-val-row { display:flex; gap:4px; align-items:center; }
.sku-spec-val-row .input { width:100px; }
.sku-combos-table { overflow-x:auto; background:#fff; border-radius:8px; border:1px solid var(--border); }
.sku-combos-table table { width:100%; border-collapse:collapse; font-size:12px; }
.sku-combos-table th {
  background:#f8fafc; padding:8px 10px; font-size:11px; color:var(--muted);
  font-weight:700; text-align:left; border-bottom:1px solid var(--border);
}
.sku-combos-table td {
  padding:6px 10px; border-bottom:1px solid var(--border);
}
.sku-combos-table .input { padding:5px 8px; font-size:12px; }

/* ===== SKU模态框 ===== */
.skm-overlay {
  position:fixed; top:0; left:0; right:0; bottom:0;
  background:rgba(0,0,0,.45); z-index:1000;
  animation:skmFadeIn .2s;
}
.skm-dialog {
  position:fixed; top:50%; left:50%; transform:translate(-50%,-50%);
  background:#fff; border-radius:12px; box-shadow:0 20px 60px rgba(0,0,0,.2);
  z-index:1001; width:90%; max-width:420px; animation:skmSlideUp .25s;
}
@keyframes skmFadeIn { from{opacity:0} to{opacity:1} }
@keyframes skmSlideUp { from{opacity:0;transform:translate(-50%,-40%)} to{opacity:1;transform:translate(-50%,-50%)} }
.skm-header {
  display:flex; justify-content:space-between; align-items:center;
  padding:14px 18px; border-bottom:1px solid var(--border);
}
.skm-title { font-size:15px; font-weight:700; color:var(--text); }
.skm-body { padding:16px 18px; max-height:60vh; overflow-y:auto; }
.skm-body .form-section { margin-bottom:12px; }
.skm-body .form-section:last-child { margin-bottom:0; }
.skm-footer {
  display:flex; justify-content:flex-end; gap:8px;
  padding:12px 18px; border-top:1px solid var(--border);
}
.skm-footer .btn:last-child { min-width:80px; }

/* ===== SKU属性列表 ===== */
.sku-attr-list { display:flex; flex-direction:column; gap:8px; margin-bottom:12px; }
.sku-attr-item {
  display:flex; align-items:center; gap:10px;
  padding:10px 12px; background:#f8fafc; border-radius:8px; border:1px solid var(--border);
}
.sku-attr-info { flex:1; min-width:0; }
.sku-attr-name { font-size:13px; font-weight:700; color:var(--text); }
.sku-attr-vals { font-size:12px; color:var(--muted); margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sku-attr-actions { display:flex; gap:4px; flex-shrink:0; }
.sku-attr-empty { font-size:12px; color:var(--muted); text-align:center; padding:16px; background:#f8fafc; border-radius:8px; }

/* ===== SKU筛选标签 ===== */
.filter-chip {
  display:inline-block; padding:3px 10px; border-radius:14px; font-size:11px;
  cursor:pointer; border:1px solid var(--border); background:#fff; color:var(--muted);
  transition:all .15s; white-space:nowrap; user-select:none;
}
.filter-chip:hover { border-color:var(--pri-light); color:var(--pri); }
.filter-chip.active { background:var(--pri); color:#fff; border-color:var(--pri); font-weight:600; box-shadow:0 1px 3px rgba(47,107,255,0.35); }
.filter-chip.priced { background:#9ca3af; color:#fff; border-color:#9ca3af; font-weight:600; }
.filter-chip.reset { background:#fee2e2; color:#dc2626; border-color:#fecaca; }
.filter-chip.reset:hover { background:#dc2626; color:#fff; }

/* ===== SKU筛选条 ===== */
#combo-filter-bar { background:#f8fafc; border-radius:8px; padding:10px 12px; margin-bottom:10px; border:1px solid var(--border); }
#combo-filter-bar .filter-title { font-size:11px; font-weight:600; margin-bottom:6px; color:#475569; }
#combo-filter-bar .filter-row { display:flex; align-items:center; gap:4px; flex-wrap:wrap; margin-bottom:4px; }
#combo-filter-bar .filter-label { font-size:11px; color:var(--muted); white-space:nowrap; margin-right:2px; }

/* ===== SKU批量改价条 ===== */
#combo-batch-bar {
  display:none; align-items:center; gap:8px; padding:8px 12px; margin-top:8px;
  background:#fffbeb; border:1px solid #fcd34d; border-radius:8px; font-size:12px;
}
#combo-batch-bar .batch-label { color:#92400e; font-weight:600; white-space:nowrap; }
#combo-batch-bar .batch-input { width:80px; padding:4px 8px; font-size:12px; border:1px solid #fcd34d; border-radius:6px; text-align:right; }
#combo-batch-bar .batch-btn { padding:4px 12px; background:var(--pri); color:#fff; border:none; border-radius:6px; font-size:12px; cursor:pointer; white-space:nowrap; }
#combo-batch-bar .batch-btn:hover { opacity:.9; }
#combo-batch-count { color:#92400e; font-weight:700; }

/* ===== SKU基单位单价算价条 ===== */
#combo-perprice-bar {
  display:none; align-items:center; gap:8px; padding:8px 12px; margin-top:8px;
  background:#f0fdf4; border:1px solid #bbf7d0; border-radius:8px; font-size:12px;
}
#combo-perprice-bar .batch-label { color:#15803d; font-weight:600; white-space:nowrap; }
#combo-perprice-bar .batch-input { width:80px; padding:4px 8px; font-size:12px; border:1px solid #86efac; border-radius:6px; text-align:right; }
#combo-perprice-bar .batch-btn { padding:4px 12px; background:#16a34a; color:#fff; border:none; border-radius:6px; font-size:12px; cursor:pointer; white-space:nowrap; }
#combo-perprice-bar .batch-btn:hover { opacity:.9; }

/* ===== 系统设置页 ===== */
.settings-page { max-width:680px; margin:0 auto; }
.settings-tabs { display:flex; gap:4px; margin-bottom:20px; background:var(--card); border-radius:var(--radius); padding:4px; }
.settings-tab { flex:1; padding:10px 16px; border:none; border-radius:calc(var(--radius) - 2px);
  background:transparent; color:var(--muted); font-size:13px; font-weight:600; cursor:pointer; transition:all .15s; }
.settings-tab:hover { background:#f1f5f9; color:var(--text); }
.settings-tab.active { background:var(--pri); color:#fff; box-shadow:0 2px 6px rgba(79,70,229,.25); }
.settings-section { background:var(--card); border-radius:var(--radius); padding:18px 20px; margin-bottom:12px;
  border:1px solid var(--border); }
.settings-section-title { font-size:14px; font-weight:700; color:var(--text); margin-bottom:4px; }
.settings-section-desc { font-size:12px; color:var(--muted); margin-bottom:12px; }
.settings-info-box { background:#f8fafc; border-radius:var(--radius); padding:14px 18px;
  border:1px dashed var(--border); }

/* 云服务商卡片 */
.cloud-provider-cards { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:8px; }
.cloud-provider-card { padding:14px; border:2px solid var(--border); border-radius:10px;
  cursor:pointer; text-align:center; transition:all .2s; position:relative; }
.cloud-provider-card:hover { border-color:var(--pri); background:#f8f6ff; }
.cloud-provider-card.active { border-color:var(--pri); background:var(--pri-light); }
.cloud-provider-card .cp-icon { font-size:24px; margin-bottom:4px; }
.cloud-provider-card .cp-name { font-size:13px; font-weight:700; color:var(--text); }
.cloud-provider-card .cp-desc { font-size:11px; color:var(--muted); margin-top:2px; }
.cp-badge { position:absolute; top:8px; right:8px; background:var(--pri); color:#fff;
  font-size:10px; padding:2px 6px; border-radius:4px; }
.cloud-config-panel { padding-top:4px; }

/* 同步状态 */
.cloud-sync-status { display:flex; align-items:center; gap:10px; padding:12px 16px;
  background:#f8fafc; border-radius:8px; margin-top:12px; }
.sync-status-icon { font-size:24px; flex-shrink:0; }
.sync-status-text { font-size:13px; color:var(--text); }

/* Toggle Switch */
.toggle-switch { position:relative; display:inline-block; width:44px; height:24px; flex-shrink:0; }
.toggle-switch input { opacity:0; width:0; height:0; }
.toggle-slider { position:absolute; cursor:pointer; top:0; left:0; right:0; bottom:0;
  background:#cbd5e1; border-radius:24px; transition:.2s; }
.toggle-slider::before { content:''; position:absolute; height:18px; width:18px; left:3px; bottom:3px;
  background:#fff; border-radius:50%; transition:.2s; }
.toggle-switch input:checked + .toggle-slider { background:var(--pri); }
.toggle-switch input:checked + .toggle-slider::before { transform:translateX(20px); }

/* ===== 响应式 ===== */
@media (max-width:768px) {
  .detail-img-thumb { width:90px; height:90px; }
  .form-row { grid-template-columns:1fr; }
  .prod-grid { grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); }
  .prod-card-img { height:110px; }
  .prod-toolbar { flex-direction:column; align-items:stretch; }
  .prod-search { max-width:100%; }
  .prod-table-wrap { font-size:11px; }
  .prod-cat-tab { padding:5px 12px; font-size:11px; }
  .cloud-provider-cards { grid-template-columns:1fr; }
}
@media (max-width:768px) {
  :root { --sidebar-w:260px; }
  .sidebar {
    position:fixed; top:0; left:0; bottom:0;
    transform:translateX(-100%); width:var(--sidebar-w);
  }
  .sidebar.open { transform:translateX(0); box-shadow:var(--shadow-lg); }
  .menu-toggle { display:flex; }
  .action-grid { grid-template-columns:repeat(2,1fr); }
  .status-grid { grid-template-columns:repeat(2,1fr); }
  .main-content { padding:14px 10px; }
}

@media (min-width:769px) {
  .sidebar { transform:translateX(0) !important; }
}

/* ===== 图片管理页面 ===== */
.img-mgr-loading { text-align:center; padding:60px 20px; color:var(--muted); font-size:14px; }
.img-mgr-page { display:flex; flex-direction:column; gap:16px; padding:4px 0; }
#img-mgr-content { overflow-y:auto; max-height:calc(100vh - 230px); }
.img-mgr-stats { display:flex; align-items:center; gap:8px; flex-wrap:wrap;
  font-size:12px; color:var(--muted); padding:0 4px; }
.img-stat-sep { color:var(--border); }

.img-mgr-toolbar { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; }
.img-mgr-toolbar-left, .img-mgr-toolbar-right { display:flex; align-items:center; gap:8px; }
.img-filter-select { padding:6px 10px; border:1px solid var(--border); border-radius:8px;
  font-size:13px; outline:none; background:var(--card); color:var(--text);
  max-width:150px; cursor:pointer; }
.img-filter-select:focus { border-color:var(--pri); }
.img-filter-unlinked { display:inline-flex; align-items:center; gap:4px;
  padding:4px 10px; border:1px solid var(--pri); border-radius:20px;
  font-size:12px; color:var(--pri); cursor:pointer; white-space:nowrap;
  user-select:none; background:var(--pri-light); }
.img-filter-unlinked input { cursor:pointer; accent-color:var(--pri); }
.img-mgr-search { display:flex; align-items:center; gap:6px; padding:6px 12px;
  background:var(--card); border:1px solid var(--border); border-radius:8px; }
.img-mgr-search input { border:none; outline:none; font-size:13px; width:160px; background:transparent; }
.img-mgr-view-toggle { display:flex; border-radius:8px; overflow:hidden; border:1px solid var(--border); }
.img-view-btn { width:34px; height:34px; display:flex; align-items:center; justify-content:center;
  border:none; background:var(--card); color:var(--muted); cursor:pointer; transition:all .15s; }
.img-view-btn.active { background:var(--pri); color:#fff; }

/* 网格视图 */
.img-mgr-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:12px; }
.img-mgr-card { position:relative; background:var(--card); border-radius:var(--radius);
  box-shadow:var(--shadow-sm); overflow:hidden; transition:all .2s; border:2px solid transparent;
  user-select:none; -webkit-user-select:none; }
.img-mgr-card:hover { transform:translateY(-2px); box-shadow:var(--shadow); }
.img-mgr-card.selected { border-color:var(--pri); }

.img-card-check { position:absolute; top:8px; left:8px; z-index:5; cursor:pointer; }
.img-check-box { width:20px; height:20px; border-radius:5px; border:2px solid #cbd5e1;
  background:rgba(255,255,255,.9); display:flex; align-items:center; justify-content:center; transition:all .15s; }
.img-check-box.checked { background:var(--pri); border-color:var(--pri); }
.img-card-preview { width:100%; aspect-ratio:1/1; background:#f1f5f9; cursor:pointer; overflow:hidden; }
.img-card-preview img { width:100%; height:100%; object-fit:cover; transition:transform .2s; }
.img-card-preview:hover img { transform:scale(1.05); }
.img-card-placeholder { width:100%; height:100%; display:flex; align-items:center; justify-content:center; color:#cbd5e1; }
.img-card-info { padding:6px 10px; }
.img-card-name { font-size:12px; font-weight:600; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; margin-bottom:4px; }
.img-card-meta { display:flex; flex-direction:column; gap:1px; font-size:10px; color:var(--muted); }
.img-card-product { color:var(--pri); font-size:11px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; display:flex; align-items:center; gap:4px; }
.img-card-category { font-size:10px; color:var(--muted); margin-bottom:2px; }
.img-card-category-none { color:var(--red); font-weight:500; }
.img-card-edit { display:none; font-size:12px; color:var(--muted); cursor:pointer; padding:0 2px; flex-shrink:0; }
.img-card-edit:hover { color:var(--pri); }
.img-mgr-card:hover .img-card-edit { display:inline; }
.img-mgr-card.reassign-active .img-card-edit { display:none !important; }
.img-mgr-card.reassign-active { cursor:pointer; }
.img-mgr-card.reassign-active.selected { box-shadow:0 0 0 2px var(--pri); }
.img-mgr-card.reassign-active .img-card-preview { cursor:pointer; }
.img-card-actions { position:absolute; top:8px; right:8px; display:flex; gap:4px; z-index:5; opacity:0; transition:opacity .15s; }
.img-mgr-card:hover .img-card-actions { opacity:1; }
.img-card-del, .img-card-edit-btn { width:28px; height:28px; border-radius:50%;
  border:none; cursor:pointer; display:flex; align-items:center; justify-content:center;
  background:rgba(255,255,255,.9); transition:all .15s; }
.img-card-del { color:var(--red); }
.img-card-del:hover { background:var(--red); color:#fff; }
.img-card-edit-btn { color:var(--pri,#2563eb); }
.img-card-edit-btn:hover { background:var(--pri,#2563eb); color:#fff; }

/* 表格视图 */
.img-mgr-table-wrap { background:var(--card); border-radius:var(--radius); box-shadow:var(--shadow-sm); overflow-x:auto; }
.img-mgr-table { width:100%; border-collapse:collapse; font-size:13px; }
.img-mgr-table th { text-align:left; padding:10px 12px; font-size:11px; font-weight:600; color:var(--muted);
  text-transform:uppercase; background:#f8fafc; border-bottom:1px solid var(--border); white-space:nowrap; }
.img-mgr-table td { padding:8px 12px; border-bottom:1px solid var(--border); vertical-align:middle; }
.img-mgr-table tbody tr { cursor:pointer; transition:background .1s; user-select:none; -webkit-user-select:none; }
.img-mgr-table tbody tr:hover { background:#f8fafc; }
.img-mgr-table tbody tr.selected { background:var(--pri-light); }
.img-table-thumb { width:44px; height:44px; display:flex; align-items:center; justify-content:center; }
.img-table-name { max-width:200px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* 空状态 */
.img-mgr-empty { text-align:center; padding:60px 20px; }
.img-empty-icon { font-size:48px; margin-bottom:12px; }
.img-empty-title { font-size:16px; font-weight:600; color:var(--text); margin-bottom:4px; }
.img-empty-desc { font-size:13px; color:var(--muted); }

/* 预览弹窗 */
.img-preview-overlay { position:fixed; inset:0; background:rgba(0,0,0,.7); z-index:1000;
  display:flex; align-items:center; justify-content:center; user-select:none; -webkit-user-select:none; }
.img-preview-box { position:relative; max-width:80vw; max-height:85vh; display:flex; flex-direction:column; }
.img-preview-box img { max-width:80vw; max-height:70vh; object-fit:contain; border-radius:12px; background:#000; }
.img-preview-close { position:fixed; top:16px; right:16px; width:36px; height:36px; border-radius:50%;
  border:none; background:#000; color:#fff; font-size:18px; cursor:pointer; z-index:1001;
  display:flex; align-items:center; justify-content:center; box-shadow:0 2px 8px rgba(0,0,0,.4); }
.img-preview-close:hover { background:#333; }
.img-preview-info { display:flex; gap:16px; margin-top:8px; justify-content:center;
  font-size:13px; color:#fff; flex-wrap:wrap; }

/* 预览导航按钮 */
.img-preview-nav { position:absolute; top:50%; transform:translateY(-50%);
  width:48px; height:48px; border-radius:50%; border:none;
  background:rgba(255,255,255,.25); color:#fff; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  backdrop-filter:blur(4px); transition:background .2s; z-index:2; }
.img-preview-nav:hover { background:rgba(255,255,255,.45); }
.img-preview-prev { left:-60px; }
.img-preview-next { right:-60px; }
@media (max-width:900px) {
  .img-preview-prev { left:8px; }
  .img-preview-next { right:8px; }
}

/* 关联产品弹窗 */
.img-reassign-modal { position:fixed; inset:0; z-index:1001; display:flex; align-items:center; justify-content:center; }
.img-reassign-overlay { position:absolute; inset:0; background:rgba(0,0,0,.5); }
.img-reassign-panel { position:relative; background:var(--card); border-radius:var(--radius);
  box-shadow:var(--shadow-lg); width:340px; max-height:70vh; display:flex; flex-direction:column; padding:20px; }
.img-reassign-panel h3 { margin-bottom:12px; font-size:15px; }
.img-reassign-search input { width:100%; padding:8px 12px; border:1px solid var(--border); border-radius:8px;
  font-size:13px; outline:none; margin-bottom:8px; }
.img-reassign-search input:focus { border-color:var(--pri); }
.img-reassign-list { flex:1; overflow-y:auto; }
.img-reassign-item { padding:10px 12px; border-radius:8px; cursor:pointer; font-size:13px; transition:background .1s; }
.img-reassign-item:hover { background:var(--pri-light); }

/* 图片选择器弹窗（产品编辑页调用） */
.img-pick-modal { position:fixed; inset:0; z-index:1000; }
.img-pick-overlay { position:absolute; inset:0; background:rgba(0,0,0,.5); }
.img-pick-panel { position:relative; background:var(--card); border-radius:var(--radius);
  box-shadow:var(--shadow-lg); width:620px; max-width:95vw; max-height:80vh;
  margin:6vh auto 0; display:flex; flex-direction:column; overflow:hidden; }
.img-pick-header { display:flex; justify-content:space-between; align-items:center; padding:16px 20px; border-bottom:1px solid var(--border); }
.img-pick-header h3 { font-size:15px; }
.img-pick-count { font-weight:400; color:var(--muted); font-size:13px; }
.img-pick-close { width:28px; height:28px; border-radius:50%; border:none; background:none;
  font-size:18px; color:var(--muted); cursor:pointer; }
.img-pick-close:hover { background:#f1f5f9; }
.img-pick-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; padding:16px 20px; overflow-y:auto; flex:1; }
.img-pick-item { border-radius:8px; border:2px solid var(--border); cursor:pointer; transition:all .15s; overflow:hidden;
  user-select:none; -webkit-user-select:none; }
.img-pick-item:hover { border-color:#93c5fd; }
.img-pick-item.selected { border-color:var(--pri); box-shadow:0 0 0 2px rgba(79,70,229,.3); }
.img-pick-thumb { width:100%; aspect-ratio:1/1; background:#f1f5f9; overflow:hidden; }
.img-pick-thumb img { width:100%; height:100%; object-fit:cover; }
.img-pick-name { padding:6px 8px; font-size:11px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.img-pick-actions { display:flex; justify-content:flex-end; gap:8px; padding:12px 20px; border-top:1px solid var(--border); }

/* ===== 拖拽上传区域 ===== */
.img-drop-zone { position:fixed; inset:0; z-index:999; display:none;
  align-items:center; justify-content:center; background:rgba(79,70,229,.08);
  border:3px dashed var(--pri); margin:20px; border-radius:20px;
  pointer-events:none; }
.img-drop-zone.active { display:flex; }
.img-drop-zone-content { text-align:center; pointer-events:none; }
.img-drop-zone-icon { font-size:56px; margin-bottom:12px; opacity:.8; }
.img-drop-zone-text { font-size:18px; font-weight:700; color:var(--pri); margin-bottom:4px; }
.img-drop-zone-sub { font-size:13px; color:var(--muted); }

/* ===== 批量导入分类弹窗 ===== */
.batch-modal { position:fixed; inset:0; z-index:1100; display:flex; align-items:center; justify-content:center; }
.batch-overlay { position:absolute; inset:0; background:rgba(0,0,0,.5); }
.batch-panel { position:relative; background:var(--card); border-radius:var(--radius);
  box-shadow:var(--shadow-lg); width:680px; max-width:95vw; max-height:85vh;
  display:flex; flex-direction:column; overflow:hidden; }
.batch-panel-header { display:flex; align-items:center; gap:12px;
  padding:16px 20px; border-bottom:1px solid var(--border); }
.batch-panel-header h3 { flex:1; font-size:15px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.batch-panel-close { width:28px; height:28px; border-radius:50%; border:none; background:none;
  font-size:18px; color:var(--muted); cursor:pointer; flex-shrink:0; }
.batch-panel-close:hover { background:#f1f5f9; }
.batch-panel-body { padding:20px; overflow-y:auto; flex:1; display:flex; flex-direction:column; gap:16px; }

.batch-section-title { font-size:13px; font-weight:700; color:var(--text); margin-bottom:8px; }
.batch-folder-info { display:flex; align-items:center; gap:8px; padding:10px 14px;
  background:var(--pri-light); border-radius:8px; font-size:13px; }
.batch-folder-icon { font-size:20px; }
.batch-folder-path { color:var(--muted); flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

.batch-match-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.batch-match-row select { padding:8px 12px; border:1px solid var(--border); border-radius:8px;
  font-size:13px; outline:none; background:var(--card); min-width:160px; }
.batch-match-row select:focus { border-color:var(--pri); }
.batch-match-badge { display:inline-flex; align-items:center; gap:4px;
  padding:4px 10px; border-radius:20px; font-size:11px; font-weight:600; }
.batch-match-high { background:#dcfce7; color:#16a34a; }
.batch-match-mid { background:#fef3c7; color:#d97706; }
.batch-match-low { background:#fee2e2; color:#dc2626; }

.batch-product-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.batch-product-row select { padding:8px 12px; border:1px solid var(--border); border-radius:8px;
  font-size:13px; outline:none; background:var(--card); flex:1; min-width:0; }
.batch-product-row select:focus { border-color:var(--pri); }
.batch-product-row input { padding:8px 12px; border:1px solid var(--border); border-radius:8px;
  font-size:13px; outline:none; background:var(--card); width:180px; }
.batch-product-row input:focus { border-color:var(--pri); }
.batch-product-new-hint { font-size:11px; color:var(--muted); width:100%; }

.batch-preview-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(90px,1fr)); gap:8px;
  max-height:200px; overflow-y:auto; }
.batch-preview-item { position:relative; border-radius:8px; overflow:hidden;
  border:2px solid var(--border); aspect-ratio:1/1; }
.batch-preview-item img { width:100%; height:100%; object-fit:cover; }
.batch-preview-item-name { position:absolute; bottom:0; left:0; right:0;
  background:rgba(0,0,0,.6); color:#fff; font-size:9px; padding:2px 4px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.batch-preview-del { position:absolute; top:4px; right:4px; width:20px; height:20px;
  border-radius:50%; background:rgba(239,68,68,.9); color:#fff; border:none;
  font-size:12px; line-height:20px; text-align:center; cursor:pointer;
  display:flex; align-items:center; justify-content:center; padding:0;
  opacity:0; transition:opacity .15s; z-index:2; }
.batch-preview-item:hover .batch-preview-del { opacity:1; }
.batch-preview-del:hover { background:rgba(220,38,38,1); }

.batch-panel-footer { display:flex; justify-content:flex-end; gap:8px;
  padding:14px 20px; border-top:1px solid var(--border); }
.batch-status { font-size:12px; color:var(--muted); margin-right:auto; display:flex; align-items:center; gap:4px; }

/* ===== 进度弹窗 ===== */
.batch-progress-overlay { position:fixed; inset:0; z-index:1200; display:flex; align-items:center; justify-content:center; background:rgba(0,0,0,.5); }
.batch-progress-box { background:var(--card); border-radius:var(--radius); box-shadow:var(--shadow-lg);
  padding:24px 32px; width:360px; max-width:90vw; text-align:center; }
.batch-progress-title { font-size:15px; font-weight:600; margin-bottom:16px; }
.batch-progress-bar { width:100%; height:8px; background:#f1f5f9; border-radius:4px; overflow:hidden; margin-bottom:8px; }
.batch-progress-bar-fill { height:100%; background:var(--pri); border-radius:4px; transition:width .3s; }
.batch-progress-info { font-size:12px; color:var(--muted); }

/* ===== 重名检测弹窗 ===== */
.dup-check-modal { position:fixed; inset:0; z-index:1000; }
.dup-check-overlay { position:absolute; inset:0; background:rgba(0,0,0,.5); }
.dup-check-panel { position:relative; background:var(--card); border-radius:var(--radius);
  box-shadow:var(--shadow-lg); width:560px; max-width:95vw; max-height:80vh;
  margin:6vh auto 0; display:flex; flex-direction:column; overflow:hidden; }
.dup-check-header { display:flex; align-items:center; justify-content:space-between;
  padding:16px 20px; border-bottom:1px solid var(--border); }
.dup-check-header h3 { font-size:16px; font-weight:600; }
.dup-check-close { background:none; border:none; font-size:18px; cursor:pointer;
  color:var(--muted); width:32px; height:32px; border-radius:8px; }
.dup-check-close:hover { background:#f1f5f9; }
.dup-check-body { flex:1; overflow-y:auto; padding:16px 20px; }
.dup-group { margin-bottom:16px; border:1px solid var(--border); border-radius:10px; overflow:hidden; }
.dup-group-title { display:flex; align-items:center; gap:10px; padding:12px 16px;
  background:#f8fafc; border-bottom:1px solid var(--border); flex-wrap:wrap; }
.dup-name { font-weight:600; font-size:14px; color:var(--text); }
.dup-count { font-size:12px; color:var(--red); background:#fef2f2; padding:2px 8px; border-radius:4px; }
.dup-imgs { font-size:12px; color:var(--muted); margin-right:auto; }
.dup-group-list { padding:8px 16px; }
.dup-item { display:flex; align-items:center; gap:10px; padding:6px 0;
  font-size:13px; color:var(--text); border-bottom:1px dashed var(--border); }
.dup-item:last-child { border-bottom:none; }
.dup-item-main { color:var(--green); }
.dup-item-tag { font-size:11px; padding:2px 6px; border-radius:4px; font-weight:600; }
.dup-item-main .dup-item-tag { background:#ecfdf5; color:var(--green); }
.dup-item:not(.dup-item-main) .dup-item-tag { background:#f1f5f9; color:var(--muted); }
.dup-item-cat { color:var(--muted); min-width:80px; }
.dup-item-imgs { margin-left:auto; color:var(--muted); }
.dup-item-date { color:var(--muted); font-size:12px; }
.dup-check-footer { display:flex; justify-content:flex-end; gap:10px;
  padding:12px 20px; border-top:1px solid var(--border); }

/* ===== 最近导入弹窗 ===== */
.recent-import-modal { position:fixed; inset:0; z-index:1000; }
.recent-import-overlay { position:absolute; inset:0; background:rgba(0,0,0,.5); }
.recent-import-panel { position:relative; background:var(--card); border-radius:var(--radius);
  box-shadow:var(--shadow-lg); width:480px; max-width:95vw; max-height:70vh;
  margin:8vh auto 0; display:flex; flex-direction:column; overflow:hidden; }
.recent-import-header { display:flex; align-items:center; justify-content:space-between;
  padding:16px 20px; border-bottom:1px solid var(--border); }
.recent-import-header h3 { font-size:16px; font-weight:600; }
.recent-import-close { background:none; border:none; font-size:18px; cursor:pointer;
  color:var(--muted); width:32px; height:32px; border-radius:8px; }
.recent-import-close:hover { background:#f1f5f9; }
.recent-import-body { flex:1; overflow-y:auto; padding:12px 20px; }
.recent-import-item { display:flex; align-items:center; justify-content:space-between;
  padding:10px 12px; border:1px solid var(--border); border-radius:8px; margin-bottom:8px; }
.recent-import-info { display:flex; flex-direction:column; gap:2px; }
.recent-import-time { font-size:13px; font-weight:500; color:var(--text); }
.recent-import-count { font-size:12px; color:var(--primary); }
.recent-import-cat { font-size:12px; color:var(--muted); }
.recent-import-footer { display:flex; justify-content:flex-end; gap:10px;
  padding:12px 20px; border-top:1px solid var(--border); }

/* ===== 海报模块 (PosterModule) ===== */
/* 海报管理页 */
.psr-page { padding:20px; height:100%; overflow-y:auto; }
.psr-header { margin-bottom:20px; }
.psr-header h2 { font-size:22px; margin-bottom:4px; }
.psr-header p { color:var(--muted); font-size:13px; }
.psr-toolbar { display:flex; align-items:center; gap:12px; margin-top:12px; flex-wrap:wrap; }
.psr-count { color:var(--muted); font-size:13px; }

/* 产品卡片网格 */
.psr-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(200px,1fr)); gap:12px; }
.psr-card { background:var(--card); border-radius:var(--radius); overflow:hidden; cursor:pointer;
  border:2px solid transparent; transition:all 0.2s; }
.psr-card:hover { border-color:var(--pri); transform:translateY(-2px); box-shadow:var(--shadow); }
.psr-card-img { aspect-ratio:1; background:#f1f5f9; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.psr-card-img img { width:100%; height:100%; object-fit:cover; }
.psr-card-noimg { display:flex; align-items:center; justify-content:center; width:100%; height:100%; background:#f8fafc; }
.psr-card-body { padding:10px 12px 12px; }
.psr-card-name { font-size:14px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.psr-card-cat { font-size:12px; margin:2px 0; }
.psr-card-price { font-size:15px; font-weight:700; color:var(--pri); }

/* 设计浮层 */
#psr-modal-root { position:fixed; inset:0; z-index:1000; display:none; }
.psr-overlay { position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:1000; }
.psr-dialog { position:fixed; inset:20px; z-index:1001; background:var(--bg); border-radius:var(--radius);
  display:flex; flex-direction:column; overflow:hidden; box-shadow:var(--shadow-lg); }
.psr-dlg-hdr { display:flex; justify-content:space-between; align-items:center;
  padding:14px 20px; background:var(--card); border-bottom:1px solid var(--border); font-weight:600; font-size:16px; }
.psr-dlg-body { flex:1; display:flex; overflow:hidden; min-height:0; }

/* 左侧编辑面板 */
.psr-dlg-left { width:280px; overflow-y:auto; padding:16px; background:var(--card);
  border-right:1px solid var(--border); flex-shrink:0; }
.psr-panel { margin-bottom:20px; }
.psr-panel h4 { font-size:13px; color:var(--muted); margin-bottom:8px; text-transform:uppercase; letter-spacing:0.5px; }

/* 模板按钮 */
.psr-tpl-list, .psr-size-list { display:flex; flex-wrap:wrap; gap:6px; }
.psr-tpl-btn, .psr-size-btn { padding:8px 14px; border:2px solid var(--border); border-radius:8px;
  background:var(--card); cursor:pointer; font-size:13px; transition:all 0.15s; display:flex; align-items:center; gap:6px; }
.psr-tpl-btn:hover, .psr-size-btn:hover { border-color:var(--pri-light); }
.psr-tpl-btn.active, .psr-size-btn.active { border-color:var(--pri); background:var(--pri-light); color:var(--pri); }
.psr-tpl-icon { font-size:18px; }

/* 我的模板 */
.psr-my-tpl-list { display:flex; flex-direction:column; gap:4px; }
.psr-my-tpl-item { display:flex; align-items:center; gap:4px; }
.psr-my-tpl-item .psr-tpl-btn-my { flex:1; padding:6px 10px; font-size:12px; gap:4px; }
.psr-tpl-btn-my.active { background:var(--pri,#2563eb); color:#fff; border-color:var(--pri,#2563eb); }
.psr-my-tpl-del { width:24px; height:24px; border:1px solid var(--border); border-radius:50%;
  background:transparent; cursor:pointer; color:var(--muted); font-size:12px; line-height:1;
  display:flex; align-items:center; justify-content:center; padding:0; flex-shrink:0; }
.psr-my-tpl-del:hover { background:#fee2e2; color:#dc2626; border-color:#dc2626; }

/* 图片管理页返回海报按钮 */
.img-back-nav { padding:8px 20px; }

/* 图片缩略图 */
.psr-img-thumbs { display:flex; gap:6px; flex-wrap:wrap; }
.psr-img-thumb { width:52px; height:52px; border-radius:6px; overflow:hidden; cursor:pointer;
  border:2px solid transparent; opacity:0.7; transition:all 0.15s; position:relative; }
.psr-img-thumb:hover { opacity:1; }
.psr-img-thumb.active { border-color:var(--pri); opacity:1; }
.psr-img-thumb img { width:100%; height:100%; object-fit:cover; }
.psr-img-thumb.dimmed { cursor:not-allowed; opacity:0.5; border-color:#e5e7eb; }
.psr-img-thumb.dimmed::after { content:'✕'; position:absolute; inset:0; display:flex;
  align-items:center; justify-content:center; font-size:16px; color:#ef4444; font-weight:bold;
  background:rgba(255,255,255,0.5); pointer-events:none; }
.psr-img-thumb.dimmed:hover { opacity:0.5; }

/* SKU列表 */
.psr-sku-list { font-size:12px; }
.psr-sku-row { display:flex; justify-content:space-between; padding:4px 0; border-bottom:1px solid var(--border); }
.psr-params { display:flex; flex-wrap:wrap; gap:4px; }
.psr-param-tag { font-size:11px; padding:2px 8px; background:var(--bg); border-radius:4px; color:var(--muted); }

/* 右侧预览区 */
.psr-dlg-right { flex:1; display:flex; flex-direction:column; align-items:center; padding:20px; overflow:auto; }
.psr-preview-wrap { flex:1; display:flex; align-items:center; justify-content:center; width:100%; min-height:0; }
.psr-preview-box { position:relative; overflow:hidden; border-radius:12px; background:#f8fafc; 
  max-width:min(400px, 90%); max-height:75vh;
  display:flex; align-items:center; justify-content:center; }
.psr-preview-box img#psr-preview-bg { display:block; width:100%; height:100%; object-fit:cover; }
.psr-crop-hint { position:absolute; bottom:8px; left:50%; transform:translateX(-50%); 
  background:rgba(0,0,0,0.6); color:#fff; font-size:11px; padding:3px 10px; border-radius:10px; 
  pointer-events:none; white-space:nowrap; z-index:5; }
.psr-crop-reset { position:absolute; bottom:8px; right:8px; 
  width:28px; height:28px; border-radius:50%; border:1px solid rgba(255,255,255,0.4); 
  background:rgba(0,0,0,0.5); color:#fff; font-size:16px; cursor:pointer; 
  display:flex; align-items:center; justify-content:center; z-index:5; transition:all 0.2s; }
.psr-quality-warn { margin-top:8px; padding:8px 12px; background:#fef3c7; border:1px solid #f59e0b;
  border-radius:8px; color:#92400e; font-size:12px; text-align:center; line-height:1.4; }
.psr-crop-reset:hover { background:rgba(0,0,0,0.7); border-color:#fff; }
.psr-preview-loading { display:flex; align-items:center; justify-content:center;
  width:360px; height:360px; background:var(--card); border-radius:8px; color:var(--muted); font-size:14px; }

/* 操作栏 */
.psr-actions { display:flex; gap:10px; margin-top:16px; flex-wrap:wrap; justify-content:center; }

/* ==================== 自由海报：底部图标工具栏布局 ==================== */
.psr-free-mode .psr-dlg-body { flex-direction:column; padding:0; gap:0; overflow:hidden; }
.psr-free-mode .psr-dlg-left { display:none !important; }
.psr-free-mode .psr-dlg-right { width:100%; flex:1; padding:10px; overflow:hidden; }
.psr-free-mode .psr-preview-wrap { flex:1; width:100%; min-height:0; }
.psr-free-mode .psr-actions { display:none; }
.psr-free-hdr-actions { display:flex; gap:8px; align-items:center; margin-right:8px; }
.psr-free-tools { display:flex; justify-content:space-around; align-items:center;
  padding:6px 4px; background:var(--card); border-top:1px solid var(--border); flex-shrink:0; }
.psr-free-tool { display:flex; flex-direction:column; align-items:center; gap:2px;
  padding:4px 6px; border:none; background:none; font-size:12px; color:var(--text); cursor:pointer; }
.psr-free-tool span { font-size:22px; line-height:1; }
.psr-free-tool b { font-weight:500; font-size:11px; }
.psr-free-tool.active { color:var(--primary); }
.psr-free-panel-mask { position:fixed; inset:0; background:rgba(0,0,0,.45); z-index:1100;
  display:flex; flex-direction:column; justify-content:flex-end; }
.psr-free-panel { background:var(--bg); border-radius:16px 16px 0 0; max-height:60vh;
  display:flex; flex-direction:column; box-shadow:0 -4px 20px rgba(0,0,0,.15); }
.psr-free-panel-hdr { display:flex; justify-content:space-between; align-items:center;
  padding:12px 16px; border-bottom:1px solid var(--border); font-weight:600; }
.psr-free-panel-close { background:none; border:none; font-size:18px; color:var(--muted); cursor:pointer; }
.psr-free-panel-body { overflow-y:auto; padding:12px 16px 24px; }
.psr-free-panel-content .psr-panel { border:none; box-shadow:none; padding:0; margin-bottom:0; }
.psr-free-panel-content .psr-panel h4 { display:none; }

/* 自由海报：空白画布上传引导 */
.psr-free-blank { display:flex; align-items:center; justify-content:center; width:100%; height:100%; }
.psr-free-blank-inner { display:flex; flex-direction:column; align-items:center; gap:14px;
  padding:30px; color:var(--muted); }
.psr-free-blank-icon { font-size:64px; opacity:.5; }
.psr-free-blank-tip { font-size:14px; color:var(--muted); }

/* ===== 海报画布模板样式（离屏渲染用） ===== */
/* 经典模板——护栏风格全幅底图 */
.psr-cvs-classic { position:relative; background:#fff; font-family:"PingFang SC","Microsoft YaHei",sans-serif; overflow:hidden; display:block; }
.psr-cvs-bg { position:absolute; inset:0; z-index:0; }
.psr-cvs-bg img { width:100%; height:100%; object-fit:cover; display:block; }
.psr-cvs-noimg { width:100%; height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center;
  color:#cbd5e1; background:#f8fafc; }
.psr-cvs-ovtop { position:absolute; top:0; left:0; right:0; height:55%;
  background:linear-gradient(to bottom, rgba(255,255,255,.85) 0%, rgba(255,255,255,.4) 40%, rgba(255,255,255,0) 100%);
  z-index:1; pointer-events:none; }
.psr-cvs-info-panel { position:absolute; bottom:0; left:0; right:0; z-index:2;
  background:#fff; border-radius:14px 14px 0 0; overflow:hidden; }
.psr-cvs-info-panel-sep { width:100%; height:1px; background:#e8ecf1; }
.psr-cvs-info-content { padding:3% 5% 4%; }
.psr-cvs-title-row { text-align:center; font-size:var(--title-sz,26px); font-weight:800;
  color:#1e3a8a; line-height:1.3; text-shadow:0 0 6px rgba(255,255,255,.8); }
.psr-cvs-sub-row { text-align:center; font-size:0.75em; color:#64748b; margin-top:4px; }
.psr-cvs-price-group { margin-top:12px; }
.psr-cvs-price-row { display:flex; justify-content:space-between; padding:5px 8px; border-bottom:1px dashed #e8ecf1; font-size:0.8em; }
.psr-cvs-spec { color:#475569; }
.psr-cvs-price { font-weight:800; color:#2563eb; font-size:var(--price-sz,18px); }
.psr-cvs-price-single { text-align:center; font-size:var(--price-sz,24px); font-weight:800; color:#2563eb; margin-top:10px; }
.psr-cvs-param-row { display:flex; flex-wrap:wrap; gap:6px; justify-content:center; margin-top:8px; }
.psr-cvs-param { font-size:var(--tag-sz,13px); padding:2px 8px; background:#f1f5f9; border-radius:4px; color:#64748b; }

/* 竖版卡片 */
.psr-cvs-vertical { background:#f5f5f5; font-family:"PingFang SC","Microsoft YaHei",sans-serif; overflow:hidden; display:flex; flex-direction:column; }
.psr-cvs-vimg { position:relative; overflow:hidden; display:flex; align-items:center; justify-content:center; background:#e8ecf1; }
.psr-cvs-vimg img { width:100%; height:100%; object-fit:cover; }
.psr-cvs-voverlay { position:absolute; bottom:0; left:0; right:0;
  background:linear-gradient(transparent, rgba(0,0,0,.6)); padding:40px 5% 5%; }
.psr-cvs-vtitle { font-size:var(--title-sz,22px); font-weight:800; color:#fff; text-shadow:0 1px 4px rgba(0,0,0,.3); }
.psr-cvs-vcard { background:#fff; padding:5% 5% 4%; display:flex; flex-direction:column; }
.psr-cvs-vprice { font-size:var(--price-sz,30px); font-weight:800; color:var(--pri); margin-bottom:4px; }
.psr-cvs-vcat { font-size:0.7em; color:var(--muted); margin-bottom:12px; }
.psr-cvs-vdesc { font-size:0.7em; color:#475569; margin-bottom:12px; line-height:1.5; }
.psr-cvs-vsku { margin-bottom:12px; }
.psr-cvs-vfooter { margin-top:auto; display:flex; justify-content:space-between; font-size:0.6em; color:var(--muted); padding-top:12px; border-top:1px solid #f1f5f9; }

/* 简约白底 */
.psr-cvs-minimal { background:#fff; font-family:"PingFang SC","Microsoft YaHei",sans-serif; overflow:hidden;
  display:flex; flex-direction:column; }
.psr-cvs-mimg { display:flex; align-items:center; justify-content:center; background:#fafafa; }
.psr-cvs-mimg img { object-fit:contain; }
.psr-cvs-minfo { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:4% 8%; text-align:center; }
.psr-cvs-mtitle { font-size:var(--title-sz,24px); font-weight:700; color:#1e293b; margin-bottom:4px; }
.psr-cvs-mcat { font-size:0.7em; color:var(--muted); margin-bottom:12px; }
.psr-cvs-mprice { font-size:var(--price-sz,36px); font-weight:800; color:var(--pri); margin-bottom:12px; }
.psr-cvs-mdesc { font-size:0.7em; color:#64748b; margin-bottom:12px; line-height:1.5; max-width:80%; }
.psr-cvs-mfooter { font-size:0.6em; color:var(--muted); margin-top:8px; letter-spacing:1px; }

/* ===== 经典模板（wood）：左上→右下对角渐变铺满全画面，前1/3浓白虚化 ===== */
.psr-cvs-wood { position:relative; background:#fff; font-family:"PingFang SC","Microsoft YaHei",sans-serif; overflow:hidden; display:block; }
.psr-cvs-wood-info { position:absolute; inset:0; z-index:2;
  /* 左上→右下对角渐变：0~12%浓白，12~20%过渡，20%后几乎不可见，28%完全透明→右侧/底部绝不留白边 */
  background:linear-gradient(135deg,
    rgba(255,255,255,0.97) 0%,
    rgba(255,255,255,0.90) 8%,
    rgba(255,255,255,0.55) 15%,
    rgba(255,255,255,0.10) 22%,
    rgba(255,255,255,0)   28%);
  display:flex; flex-direction:column; padding:4% 4% 0 4%;
  width:75%; align-items:stretch; }
.psr-cvs-wood-title { font-size:var(--title-sz,32px); font-weight:800; color:#0f172a;
  line-height:1.2; margin-bottom:1%; text-align:center;
  position:relative; z-index:3; width:100%; padding:4% 4% 0 4%; box-sizing:border-box; }
.psr-cvs-wood-subtitle { font-size:calc(var(--title-sz,32px) * 0.75); font-weight:600; color:#334155;
  line-height:1.3; position:relative; z-index:3; width:100%;
  box-sizing:border-box; }
.psr-cvs-wood-content { display:flex; flex-direction:column; gap:1.5%; }
.psr-cvs-wood-lines { display:flex; flex-direction:column; gap:1px; }
.psr-cvs-wood-line { font-size:var(--small-sz,18px); color:#1e293b; line-height:1.7; display:block; white-space:nowrap; }
.psr-cvs-wood-param { font-size:calc(var(--small-sz,18px) * 0.85); color:#475569; white-space:nowrap; }
/* 每行中￥价格由内联style控制红色加粗 */
.psr-cvs-wood-cat { font-size:calc(var(--small-sz,18px) * 0.8); color:#64748b; margin-bottom:1%; }

/* ===== 海报编辑器控件 ===== */
.psr-editor-panels { overflow-y:auto; max-height:calc(100vh - 140px); padding-right:4px; }
.psr-ed-panel { border-top:1px solid #e2e8f0; padding-top:8px; margin-top:2px; }
.psr-ed-panel h4 { margin-bottom:6px; }
.psr-ed-panel--disabled { opacity:0.4; pointer-events:none; user-select:none; }
.psr-ed-row--disabled { opacity:0.4; pointer-events:none; user-select:none; }
.psr-ed-checks { display:grid; grid-template-columns:1fr 1fr; gap:2px 8px; }
.psr-ed-sku-line { grid-column:1/-1; }
.psr-ed-check { display:inline-flex; align-items:center; gap:4px; font-size:12px; color:#334155;
  cursor:pointer; padding:3px 6px; border-radius:4px; white-space:nowrap; }
.psr-ed-check:hover { background:#f1f5f9; }
.psr-ed-check input[type="checkbox"] { margin:0; accent-color:var(--pri,#2563eb); }
.psr-ed-check-primary { font-weight:600; font-size:13px; color:#1e293b; }
.psr-ed-subs { margin-left:24px; padding:4px 8px; display:flex; flex-wrap:wrap; gap:4px; border-left:2px solid #cbd5e1; background:#f8fafc; border-radius:0 4px 4px 0; }
.psr-ed-sku-line { display:flex; align-items:center; gap:0; }
.psr-ed-sku-divider-v { width:1px; height:20px; background:#cbd5e1; margin:0 8px; flex-shrink:0; }
.psr-ed-subs-inline { display:flex; flex-wrap:wrap; gap:4px; align-items:center; }
.psr-ed-check-sub { font-size:11px; color:#64748b; padding:2px 6px; border:1px solid #e2e8f0; border-radius:3px; }
.psr-ed-check-sub:hover { background:#f0f4ff; border-color:#93c5fd; }
.psr-color-presets { display:flex; gap:3px; align-items:center; }
.psr-color-dot { width:16px; height:16px; border-radius:50%; border:none; cursor:pointer; padding:0; flex-shrink:0; box-shadow:0 0 0 1px rgba(0,0,0,0.1); }
.psr-color-dot:hover { transform:scale(1.2); }
.psr-ed-row { display:flex; align-items:center; gap:6px; margin:4px 0; flex-wrap:wrap; }
.psr-ed-label { font-size:11px; color:#64748b; min-width:48px; }
.psr-ed-btns { display:flex; gap:2px; }
.psr-ed-btn-sm { width:28px; height:24px; border:1px solid #d4d4d8; background:#fff; border-radius:4px;
  font-size:13px; color:#52525b; cursor:pointer; display:flex; align-items:center; justify-content:center;
  transition:all .15s; }
.psr-ed-btn-sm:hover { background:#f3f4f6; border-color:#9ca3af; }
.psr-ed-btn-sm.active { background:var(--pri,#2563eb); color:#fff; border-color:var(--pri,#2563eb); }
.psr-ed-range { flex:1; min-width:60px; height:4px; accent-color:var(--pri,#2563eb); }
.psr-ed-val { font-size:11px; color:#64748b; min-width:24px; text-align:center; font-weight:600; }
.psr-ed-select { flex:1; min-width:80px; padding:5px 6px; font-size:13px; border:1px solid #d4d4d8;
  border-radius:6px; background:#fff; color:#333; cursor:pointer; }
.psr-ed-color { width:28px; height:22px; border:1px solid #d4d4d8; border-radius:4px; cursor:pointer;
  padding:1px; background:#fff; }
.psr-ed-spin-btn { width:22px; height:22px; border:1px solid #d1d5db; border-radius:4px; background:#f9fafb;
  font-size:13px; font-weight:700; color:#374151; cursor:pointer; line-height:1;
  display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.psr-ed-spin-btn:hover { background:#e5e7eb; border-color:#9ca3af; }
.psr-ed-num { height:22px; border:1px solid #d1d5db; border-radius:4px; font-size:12px; color:#1e293b;
  padding:0 4px; box-sizing:border-box; }
.psr-ed-checks { display:flex; flex-wrap:wrap; gap:2px; }
.psr-ed-desc-input { width:100%; border:1px solid #cbd5e1; border-radius:6px; padding:8px 10px; font-size:13px;
  color:#334155; resize:vertical; box-sizing:border-box; outline:none; transition:border-color .2s;
  font-family:inherit; line-height:1.5; min-height:60px; }
.psr-ed-desc-input:focus { border-color:var(--pri,#2563eb); box-shadow:0 0 0 2px rgba(37,99,235,.1); }
.psr-ed-desc-input::placeholder { color:#94a3b8; }

/* ===== 条件编辑器面板 ===== */
#psr-ed-promo-panel { border-top:2px solid #fbbf24; }
#psr-ed-promo-panel h4 { color:#d97706; }
#psr-ed-color-panel { border-top:2px solid #8b5cf6; }
#psr-ed-color-panel h4 { color:#7c3aed; }
#psr-ed-grid-panel { border-top:2px solid #10b981; }
#psr-ed-grid-panel h4 { color:#059669; }
.psr-ed-text { height:26px; border:1px solid #d1d5db; border-radius:6px; padding:0 8px; font-size:13px; color:#1e293b; }

/* ===== 九宫格图片选择器 ===== */
.psr-grid-img-picker { display:flex; flex-wrap:wrap; gap:6px; max-height:200px; overflow-y:auto; padding:4px; }
.psr-grid-img-item { position:relative; width:64px; height:64px; border-radius:6px; overflow:hidden; cursor:pointer; border:2px solid transparent; transition:border-color .2s; }
.psr-grid-img-item:hover { border-color:#10b981; }
.psr-grid-img-item.selected { border-color:#10b981; box-shadow:0 0 0 2px rgba(16,185,129,.2); }
.psr-grid-img-item img { width:100%; height:100%; object-fit:cover; display:block; }
.psr-grid-img-item input[type="checkbox"] { position:absolute; top:2px; left:2px; width:16px; height:16px; margin:0; z-index:2; accent-color:#10b981; }
.psr-grid-img-num { position:absolute; bottom:2px; right:4px; font-size:10px; color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.5); font-weight:600; pointer-events:none; }

/* ===== 海报模板按钮多行 ===== */
.psr-templates-grid { display:flex; flex-wrap:wrap; gap:6px; }

/* ===== 海报预览双层结构 ===== */
#psr-preview-text { position:absolute; inset:0; pointer-events:none; z-index:2; overflow:hidden; }

/* ===== 图片编辑器（旧版复刻） ===== */
.crop-ratio-bar{display:none;align-items:center;gap:6px;padding:8px 12px;background:#f8fafc;border-radius:8px;margin-top:4px}
.crop-ratio-bar.show{display:flex}
.crop-ratio-label{font-size:12px;color:var(--muted);font-weight:500;white-space:nowrap}
.crop-ratio-item{flex:1;padding:6px 10px;border:1.5px solid #e2e8f0;border-radius:6px;font-size:12px;background:#fff;color:#475569;cursor:pointer;transition:all .15s;text-align:center;font-weight:500;white-space:nowrap}
.crop-ratio-item:hover{border-color:var(--pri);color:var(--pri);background:#eef2ff}
.crop-ratio-item.active{border-color:var(--pri);background:#eef2ff;color:var(--pri);font-weight:600}
.editor-wrap{display:flex;flex-direction:column;gap:12px}
.editor-canvas-wrap{background:#f1f5f9;border-radius:10px;display:flex;align-items:center;justify-content:center;min-height:280px;overflow:hidden;position:relative}
.editor-tools-float{display:flex;align-items:center;gap:12px;padding:8px 12px;background:#fff;border-radius:20px;box-shadow:0 2px 12px rgba(0,0,0,.08);justify-content:center;flex-wrap:wrap;margin-top:0}
.editor-tools-float .tool-btn{width:36px;height:36px;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:all .15s;border:2px solid transparent;background:transparent;color:var(--muted);line-height:1;padding:2px;position:relative;overflow:hidden}
.editor-tools-float .tool-btn .tool-icon{width:32px;height:32px;object-fit:contain;display:block;pointer-events:none;transition:filter .15s}
.editor-tools-float .tool-btn:hover{transform:scale(1.05)}
.editor-tools-float .tool-btn.active{border-color:#fbbf24;background:rgba(251,191,36,.1);box-shadow:0 0 0 3px rgba(251,191,36,.15);transform:scale(1.08)}
.editor-tools-float .tool-btn.active .tool-icon{filter:brightness(0) saturate(100%) invert(45%) sepia(95%) saturate(1800%) hue-rotate(355deg) brightness(102%) contrast(95%)}
.editor-tools-float .tool-divider{width:1px;height:24px;background:#e2e8f0;margin:0 4px}
.tool-divider-line{width:1px;height:24px;background:#e2e8f0;margin:0 4px}
.editor-tools-float .tool-btn-action{border:2px solid transparent;background:transparent;color:var(--muted);cursor:pointer;transition:all .15s;border-radius:10px;padding:4px 6px}
.editor-tools-float .tool-btn-action:hover{background:#f1f5f9;color:var(--pri);transform:scale(1.05)}
.editor-tools-float .tool-btn-action:active{transform:scale(.95)}
.editor-tools-float .tool-btn-action .tool-icon{width:20px;height:20px}
.indicator-icon-wrap{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.indicator-sub-icon{display:none}
.indicator-default-icon{display:block}
.tool-btn-indicator .tool-arrow-down{position:absolute;right:2px;bottom:1px;color:#94a3b8;font-size:6px}
.tool-btn-indicator.active .tool-arrow-down{color:#92400e}
.editor-top-actions{position:absolute;top:10px;right:10px;display:flex;flex-direction:column;gap:6px;z-index:5}
.editor-act-btn{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;cursor:pointer;border:none;background:rgba(255,255,255,.85);backdrop-filter:blur(6px);color:var(--muted);transition:all .15s;box-shadow:0 1px 6px rgba(0,0,0,.08)}
.editor-act-btn:hover{background:var(--pri-light);color:var(--pri);transform:scale(1.1)}
.editor-doodle-panel{display:flex;align-items:center;gap:8px;padding:6px 0;flex-wrap:wrap}
.editor-doodle-panel .color-picker{gap:3px;margin:0}
.editor-text-panel{display:flex;align-items:center;gap:6px;padding:6px 0;flex-wrap:wrap}
.editor-text-panel .tp-btn{width:32px;height:32px;border-radius:8px;border:1.5px solid var(--border);background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--text);transition:all .15s}
.editor-text-panel .tp-btn:hover{background:var(--pri-light);border-color:var(--pri);color:var(--pri)}
.editor-text-panel .tp-font-info{font-size:13px;font-weight:700;color:var(--pri);cursor:pointer;min-width:36px;text-align:center;user-select:none}
.editor-text-panel .tp-font-info:hover{opacity:.8}
.editor-sel-recolor{display:flex;align-items:center;gap:6px;padding:6px 0;flex-wrap:wrap}
.editor-sel-recolor .clr-dot:hover{border-color:var(--pri)!important;transform:scale(1.15)}
.editor-doodle-panel .color-picker span{width:18px;height:18px}
#editor-canvas{max-width:100%;max-height:360px;cursor:crosshair;background:#fff;image-rendering:pixelated}
.color-picker{display:flex;gap:5px;margin:8px 0;flex-wrap:wrap}
.color-picker span{width:24px;height:24px;border-radius:50%;cursor:pointer;border:2px solid transparent}
.color-picker span.active{border-color:var(--text);box-shadow:0 0 0 2px rgba(0,0,0,.1)}
.editor-crop-bar{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);display:none;align-items:center;gap:8px;padding:6px 14px;background:rgba(255,255,255,.92);backdrop-filter:blur(6px);border-radius:20px;box-shadow:0 2px 12px rgba(0,0,0,.1);z-index:6}
.editor-crop-bar.show{display:flex}
.editor-crop-bar button{padding:5px 14px;border-radius:14px;font-size:12px;font-weight:600;cursor:pointer;border:none;transition:all .15s;white-space:nowrap}
.editor-crop-bar .crop-ok{background:#10b981;color:#fff}
.editor-crop-bar .crop-ok:hover{opacity:.9}
.editor-crop-bar .crop-cancel{background:#f1f5f9;color:var(--text)}
.editor-crop-bar .crop-cancel:hover{background:#e2e8f0}
.size-input-modal{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);z-index:9999;display:flex;align-items:center;justify-content:center}
.size-input-content{background:#fff;border-radius:12px;padding:18px 20px;width:320px;box-shadow:0 12px 40px rgba(0,0,0,.25);animation:sizeInputIn .2s ease-out}
@keyframes sizeInputIn{from{opacity:0;transform:translateY(-10px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}
.size-input-title{font-size:15px;font-weight:700;margin-bottom:14px;color:var(--text)}
.size-input-content input[type="range"]{-webkit-appearance:none;appearance:none;background:transparent;padding:0;border:none;box-shadow:none}
.size-input-content input[type="range"]::-webkit-slider-runnable-track{height:4px;background:var(--border);border-radius:2px}
.size-input-content input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;background:var(--pri);border-radius:50%;margin-top:-6px;cursor:pointer}
.size-input-content input[type="range"]::-moz-range-track{height:4px;background:var(--border);border-radius:2px}
.size-input-content input[type="range"]::-moz-range-thumb{width:16px;height:16px;background:var(--pri);border-radius:50%;border:none;cursor:pointer}
.size-input-content .btn-sm{padding:6px 14px;font-size:13px}
.text-bg-swatch{cursor:pointer}
.tool-btn-indicator{flex-direction:column;padding:4px 6px!important;gap:0}
.indicator-menu{position:absolute;background:#fff;border-radius:10px;box-shadow:0 4px 20px rgba(0,0,0,.15);padding:6px;z-index:1000;min-width:130px;animation:indMenuIn .15s ease-out}
@keyframes indMenuIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
.indicator-menu-item{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:6px;cursor:pointer;font-size:13px;color:var(--text);transition:background .12s}
.indicator-menu-item:hover{background:var(--pri-light);color:var(--pri)}
.indicator-menu-item.active{background:var(--pri);color:#fff}
.editor-tools-float .tool-btn.active{transform:scale(1.08)}
/* 编辑器模态框显示 */
.modal#md-editor{display:none}
.modal#md-editor.open,.modal#md-editor[style*="display:flex"]{display:flex;position:fixed;inset:0;z-index:8500;align-items:center;justify-content:center}

/* 编辑器全屏 */
.editor-fullscreen{max-width:100vw !important;width:100vw !important;height:100vh !important;border-radius:0 !important;padding:12px 20px !important;display:flex;flex-direction:column}
.editor-fullscreen .editor-wrap{flex:1;display:flex;flex-direction:column;overflow:hidden}
.editor-fullscreen .editor-canvas-wrap{flex:1;display:flex;align-items:center;justify-content:center;overflow:auto;min-height:0}
.editor-fullscreen #editor-canvas{max-width:100%;max-height:calc(100vh - 200px)}

/* ================================================================
   电子画册 (Album)
   ================================================================ */
.alb-page{padding:20px 24px;max-width:1100px;margin:0 auto}

/* 加载 */
.alb-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 20px;color:var(--muted);gap:12px;font-size:14px}
.alb-loading-spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--pri);border-radius:50%;animation:albSpin .7s linear infinite}
@keyframes albSpin{to{transform:rotate(360deg)}}
.alb-loading-inline{color:var(--muted);font-size:13px;text-align:center;padding:20px}

/* 头部 */
.alb-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;flex-wrap:wrap;gap:12px}
.alb-header-left{display:flex;align-items:center;gap:12px}
.alb-title{font-size:22px;font-weight:700;color:var(--text);margin:0}
.alb-count{font-size:13px;color:var(--muted);background:var(--bg);padding:3px 10px;border-radius:12px}
.alb-header-right{display:flex;gap:8px}
.alb-create-btn{padding:10px 20px;font-weight:600}

/* 卡片网格 */
.alb-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin-bottom:24px}
.alb-card{background:var(--card);border-radius:12px;overflow:hidden;border:1px solid var(--border);cursor:pointer;transition:all .2s}
.alb-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.08);transform:translateY(-2px);border-color:#c7d2fe}
.alb-card-cover{height:160px;position:relative;display:flex;align-items:center;justify-content:center}
.alb-card-icon{font-size:48px;opacity:.5}
.alb-card-badge{position:absolute;bottom:8px;right:8px;background:rgba(0,0,0,.55);color:#fff;font-size:11px;padding:2px 8px;border-radius:10px}
.alb-card-info{padding:12px 14px}
.alb-card-name{font-size:14px;font-weight:600;color:var(--text);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.alb-card-meta{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-bottom:8px}
.alb-card-actions{display:flex;gap:6px}
.alb-card-btn{padding:4px 8px;border:1px solid var(--border);border-radius:5px;background:var(--bg);cursor:pointer;font-size:12px;transition:all .15s}
.alb-card-btn:hover{background:var(--pri-light);border-color:var(--pri)}
.alb-card-btn-del{color:var(--red)}
.alb-card-btn-del:hover{background:#fef2f2;border-color:var(--red)}

/* 空白状态 */
.alb-empty{text-align:center;padding:60px 20px;grid-column:1/-1}
.alb-empty-icon{font-size:56px;margin-bottom:12px;opacity:.4}
.alb-empty-title{font-size:16px;font-weight:600;color:var(--text);margin-bottom:6px}
.alb-empty-desc{font-size:13px;color:var(--muted)}
.alb-empty-small{text-align:center;padding:30px;color:var(--muted);font-size:13px}

/* 提示 */
.alb-tips{margin-top:8px}
.alb-tips details{font-size:13px;color:var(--muted)}
.alb-tips summary{cursor:pointer;margin-bottom:8px}
.alb-tips-content p{margin:4px 0;font-size:12px;line-height:1.6}

/* ===== 创建向导 ===== */
.alb-wizard{background:var(--card);border-radius:14px;border:1px solid var(--border);overflow:hidden}
.alb-wiz-header{display:flex;align-items:center;gap:16px;padding:16px 20px;border-bottom:1px solid var(--border)}
.alb-wiz-header h3{margin:0;font-size:17px;font-weight:700}
.alb-wiz-steps{display:flex;justify-content:center;gap:40px;padding:20px 0;border-bottom:1px solid var(--border);background:var(--bg)}
.alb-wiz-step{display:flex;flex-direction:column;align-items:center;gap:6px;position:relative}
.alb-wiz-step::after{content:'';position:absolute;left:calc(100% + 8px);top:16px;width:24px;height:2px;background:var(--border)}
.alb-wiz-step:last-child::after{display:none}
.alb-wiz-step-num{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;background:var(--border);color:var(--muted);transition:all .2s}
.alb-wiz-step.active .alb-wiz-step-num{background:var(--pri);color:#fff}
.alb-wiz-step.done .alb-wiz-step-num{background:#22c55e;color:#fff}
.alb-wiz-step-label{font-size:12px;color:var(--muted);font-weight:600}
.alb-wiz-step.active .alb-wiz-step-label{color:var(--pri)}
.alb-wiz-step.done .alb-wiz-step-label{color:#22c55e}
.alb-wiz-body{padding:24px;min-height:300px}
.alb-wiz-footer{display:flex;justify-content:space-between;padding:16px 24px;border-top:1px solid var(--border)}

/* 模式选择 */
.alb-mode-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.alb-mode-card{padding:24px 18px;border:2px solid var(--border);border-radius:12px;cursor:pointer;text-align:center;transition:all .2s}
.alb-mode-card:hover{border-color:var(--pri);background:var(--pri-light)}
.alb-mode-card.selected{border-color:var(--pri);background:var(--pri-light);box-shadow:0 0 0 3px rgba(99,102,241,.15)}
.alb-mode-icon{font-size:36px;margin-bottom:8px}
.alb-mode-name{font-size:16px;font-weight:700;color:var(--text);margin-bottom:4px}
.alb-mode-desc{font-size:12px;color:var(--muted);line-height:1.5}

/* 选择列表 */
.alb-select-list{background:var(--bg);border-radius:10px;border:1px solid var(--border);padding:8px}
.alb-checkbox-item,.alb-radio-item{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;border-radius:6px;transition:background .15s}
.alb-checkbox-item:hover,.alb-radio-item:hover{background:#fff}
.alb-checkbox-item input,.alb-radio-item input{flex-shrink:0}
.alb-cbi-icon{font-size:20px;flex-shrink:0}
.alb-cbi-text{font-size:14px;font-weight:500;color:var(--text);flex:1}
.alb-cbi-extra{font-size:11px;color:var(--muted)}

/* 设置区 */
.alb-settings{max-width:650px}
.alb-choice-row{display:flex;gap:10px;flex-wrap:wrap}
.alb-choice-item{padding:10px 16px;border:2px solid var(--border);border-radius:8px;cursor:pointer;text-align:center;transition:all .15s;min-width:80px}
.alb-choice-item:hover{border-color:var(--pri)}
.alb-choice-item.selected{border-color:var(--pri);background:var(--pri-light)}
.alb-choice-title{font-size:13px;font-weight:600;color:var(--text);margin-bottom:2px}
.alb-choice-sub{font-size:11px;color:var(--muted)}
.alb-switch-label{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text);cursor:pointer}

/* 预览摘要 */
.alb-preview-info{padding:10px 0}
.alb-preview-summary{background:var(--bg);border-radius:10px;padding:20px 24px;display:flex;flex-direction:column;gap:10px}
.alb-ps-item{font-size:14px;color:var(--text)}
.alb-preview-note{text-align:center;padding:16px;color:var(--muted);font-size:13px;margin-top:8px}

/* ===== 查看器 ===== */
.alb-viewer{position:fixed;inset:0;z-index:8000;background:#1e293b;display:flex;flex-direction:column}
.alb-v-topbar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:rgba(30,41,59,.95);border-bottom:1px solid rgba(255,255,255,.08);flex-shrink:0}
.alb-v-topbar .btn-ghost{color:#e2e8f0}
.alb-v-topbar .btn-ghost:hover{color:#fff}
.alb-v-title{font-size:15px;font-weight:600;color:#e2e8f0}
#alb-v-txtbtn{color:#818cf8;border-color:#818cf8;font-weight:600;letter-spacing:1px}
#alb-v-txtbtn:hover{background:#818cf8;color:#fff}
.alb-v-actions{display:flex;gap:8px}
.alb-v-main{flex:1;display:flex;align-items:center;justify-content:center;padding:16px;gap:12px;min-height:0}
.alb-v-nav{width:44px;height:44px;border-radius:50%;border:none;background:rgba(255,255,255,.1);color:#fff;font-size:28px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0}
.alb-v-nav:hover{background:rgba(255,255,255,.2)}
.alb-v-page-wrap{flex:1;display:flex;align-items:center;justify-content:center;max-height:100%;overflow:hidden;position:relative;align-self:stretch}
.alb-v-page-layer{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;will-change:transform,opacity;pointer-events:none}
.alb-v-page-layer.active{pointer-events:auto}
.alb-v-page-layer img{border-radius:6px;max-width:90%;max-height:90%;pointer-events:auto}

/* ===== 目录导航按钮 + 菜单 ===== */
.alb-v-navtoc{position:absolute;top:10px;left:10px;z-index:12;background:rgba(15,23,42,.78);color:#fff;border:1px solid rgba(255,255,255,.25);border-radius:20px;padding:6px 14px;font-size:13px;cursor:pointer;display:flex;align-items:center;gap:4px;backdrop-filter:blur(4px);transition:all .2s}
.alb-v-navtoc:hover{background:rgba(99,102,241,.9);border-color:#a5b4fc}
.alb-v-tocmenu{position:absolute;top:56px;left:14px;z-index:30;width:264px;max-height:72%;overflow-y:auto;background:rgba(15,23,42,.96);border:1px solid rgba(255,255,255,.15);border-radius:12px;box-shadow:0 12px 40px rgba(0,0,0,.5);color:#e2e8f0;font-size:13px;padding:8px}
.alb-toc-head{padding:4px 8px 8px;font-weight:600;font-size:14px;border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:6px;display:flex;flex-direction:column;gap:2px}
.alb-toc-hint{font-weight:400;font-size:11px;color:#94a3b8}
.alb-toc-row{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:8px;cursor:default}
.alb-toc-row:hover{background:rgba(255,255,255,.07)}
.alb-toc-row.active{background:rgba(99,102,241,.28)}
.alb-toc-idx{flex:0 0 22px;height:22px;line-height:22px;text-align:center;background:rgba(255,255,255,.12);border-radius:6px;font-size:11px;color:#cbd5e1}
.alb-toc-name-wrap{flex:1;min-width:0}
.alb-toc-name{display:block;padding:2px 4px;border-radius:6px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.alb-toc-name:hover{color:#fff;background:rgba(255,255,255,.12)}
.alb-toc-rename-input{width:100%;font-size:13px;padding:2px 4px;border:1px solid #6366f1;border-radius:6px;background:#0f172a;color:#fff;outline:none}
.alb-toc-anchor,.alb-toc-rename{flex:0 0 auto;background:none;border:none;cursor:pointer;font-size:14px;width:24px;height:24px;border-radius:6px;color:#cbd5e1;display:flex;align-items:center;justify-content:center}
.alb-toc-anchor:hover,.alb-toc-rename:hover{background:rgba(255,255,255,.12)}
.alb-toc-anchor.on{color:#fbbf24}
.alb-v-bottombar{display:flex;align-items:center;justify-content:center;padding:12px 16px;gap:16px;flex-shrink:0;background:rgba(30,41,59,.95);border-top:1px solid rgba(255,255,255,.08)}
.alb-v-counter{font-size:13px;color:#94a3b8;min-width:50px;text-align:center}
.alb-v-prodname{font-size:13px;color:#cbd5e1;padding:3px 10px;background:rgba(99,102,241,.15);border-radius:6px;max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.alb-v-dots{display:flex;gap:6px}
.alb-v-dot{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.2);cursor:pointer;transition:all .15s}
.alb-v-dot:hover{background:rgba(255,255,255,.4)}
.alb-v-dot.active{background:#6366f1;width:20px;border-radius:4px}
.alb-v-pager-btns{display:flex;gap:6px;margin-left:8px}
.alb-v-pager-btns .btn-xs{padding:2px 8px;font-size:16px;line-height:1.2;min-width:28px;border-radius:4px;background:rgba(255,255,255,.1);color:#cbd5e1;border:1px solid rgba(255,255,255,.15);cursor:pointer}
.alb-v-pager-btns .btn-xs:hover{background:rgba(255,255,255,.2);color:#fff}

/* 图片选择器弹窗 */
.alb-img-picker-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:4px}
.alb-img-pick-item{aspect-ratio:1;border-radius:8px;overflow:hidden;border:3px solid transparent;transition:all .15s;background:#f1f5f9}
.alb-img-pick-item:hover{border-color:#93c5fd;transform:scale(1.03)}
.alb-img-pick-item.alb-img-pick-sel{border-color:#6366f1;box-shadow:0 0 0 2px rgba(99,102,241,.35), 0 0 0 5px rgba(99,102,241,.12)}
.alb-img-pick-count{font-size:13px;color:var(--muted);white-space:nowrap}

/* 占位符叠层点击区 */
.alb-placeholder-overlay{background:rgba(99,102,241,.06);border-radius:8px;transition:background .2s,box-shadow .2s;touch-action:none}
.alb-placeholder-overlay:hover{background:rgba(99,102,241,.15);box-shadow:inset 0 0 0 2px rgba(99,102,241,.3)}
.alb-placeholder-overlay.alb-slot-dragging{background:rgba(239,68,68,.12);box-shadow:inset 0 0 0 2px rgba(239,68,68,.5)}

/* 进度弹层 */
#alb-progress{display:none}
.alb-progress-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:9999;display:flex;align-items:center;justify-content:center}
.alb-progress-box{background:#fff;border-radius:12px;padding:28px 36px;text-align:center;min-width:260px;box-shadow:0 8px 32px rgba(0,0,0,.18)}
.alb-progress-spinner{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--pri);border-radius:50%;animation:albSpin .7s linear infinite;margin:0 auto 14px}
.alb-progress-msg{font-size:14px;color:var(--text);margin-bottom:12px}
.alb-progress-bar{height:6px;background:var(--bg);border-radius:3px;overflow:hidden}
.alb-progress-fill{height:100%;background:var(--pri);border-radius:3px;transition:width .3s;width:0}

/* 文字排版编辑器 */
#alb-txt-editor{display:none}
.alb-txt-overlay{position:fixed;inset:0;z-index:9000;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center}
.alb-txt-panel{background:#fff;border-radius:14px;width:480px;max-width:95vw;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 8px 40px rgba(0,0,0,.18);overflow:hidden}
.alb-txt-panel-hdr{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}
.alb-txt-panel-hdr h3{margin:0;font-size:16px;font-weight:700;color:var(--text)}
.alb-txt-scroll-area{flex:1;overflow-y:auto;display:flex;flex-direction:column}
.alb-txt-blocks-list{padding:16px;display:flex;flex-direction:column;gap:16px}
.alb-txt-empty{text-align:center;color:var(--muted);font-size:13px;padding:30px}
.alb-txt-block{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:14px;display:flex;flex-direction:column;gap:10px}
.alb-txt-block-hdr{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:600;color:var(--text)}
.alb-txt-input{width:100%;border:1px solid var(--border);border-radius:6px;padding:8px 10px;font-size:14px;resize:vertical;font-family:inherit;box-sizing:border-box;outline:none;transition:border-color .15s}
.alb-txt-input:focus{border-color:var(--pri)}
.alb-txt-row{display:flex;align-items:center;gap:8px}
.alb-txt-row label{font-size:13px;color:var(--muted);min-width:36px;flex-shrink:0}
.alb-txt-row input[type=range]{flex:1;accent-color:var(--pri)}
.alb-txt-row input[type=color]{width:32px;height:28px;border:1px solid var(--border);border-radius:4px;cursor:pointer;padding:2px}
.alb-txt-row select{flex:1;padding:6px 8px;border:1px solid var(--border);border-radius:6px;font-size:13px;outline:none}
.alb-txt-row select:focus{border-color:var(--pri)}
.alb-txt-align{display:flex;gap:2px;margin-left:auto}
.alb-txt-align-btn{width:32px;height:28px;border:1px solid var(--border);border-radius:5px;background:var(--card);cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .15s}
.alb-txt-align-btn:hover{border-color:var(--pri)}
.alb-txt-align-btn.active{background:var(--pri);color:#fff;border-color:var(--pri)}
.alb-txt-pos-row{display:flex;gap:10px}
.alb-txt-pos-row>div{display:flex;align-items:center;gap:4px;flex:1}
.alb-txt-pos-row label{font-size:12px;color:var(--muted)}
.alb-txt-pos-row input{width:55px;padding:4px 6px;border:1px solid var(--border);border-radius:5px;font-size:13px;text-align:center;outline:none}
.alb-txt-pos-row input:focus{border-color:var(--pri)}
.alb-txt-pos-row span{font-size:12px;color:var(--muted)}
.alb-txt-panel-ftr{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-top:1px solid var(--border)}
.alb-txt-panel-btns{display:flex;gap:8px}
.alb-txt-panel-ftr .btn-primary{font-weight:600;padding:8px 20px}

/* 预览区域 */
.alb-txt-preview-wrap{text-align:center;padding:16px 8px;border-bottom:1px solid var(--border);background:var(--bg)}
.alb-txt-preview{margin:0 auto;background:linear-gradient(135deg,#f0f4ff 0%,#e8ecff 100%);border-radius:6px;position:relative;overflow:hidden;border:1px solid var(--border);box-shadow:0 1px 4px rgba(0,0,0,.06);max-width:100%}
.alb-txt-preview-hint{font-size:11px;color:var(--muted);margin-top:6px}
.alb-txt-prv-block{position:absolute;line-height:1.3;word-break:break-word;cursor:grab;user-select:none;padding:2px 4px;border:1px dashed transparent;border-radius:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:auto}
.alb-txt-prv-block:hover{border-color:var(--pri)}
.alb-txt-prv-block.dragging{cursor:grabbing;border-color:#ef4444;z-index:10;box-shadow:0 2px 8px rgba(0,0,0,.15)}
.alb-txt-prv-block.selected{border:2px solid var(--pri);border-radius:3px;z-index:8;box-shadow:0 0 0 4px rgba(99,102,241,.15)}
/* 画册通用弹窗（图片选择器等），层级需高于排版编辑器(9000) */
.alb-modal-overlay{position:fixed;inset:0;z-index:9600;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;padding:16px}
.alb-modal{background:#fff;border-radius:14px;width:100%;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 10px 40px rgba(0,0,0,.22)}
.alb-modal-hdr{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border);font-size:15px;font-weight:700;color:var(--text)}
.alb-modal-body{padding:14px 18px}
.alb-modal-ftr{display:flex;align-items:center;gap:8px;padding:12px 18px;border-top:1px solid var(--border)}
.alb-modal-ftr .alb-img-pick-count{flex:1;font-size:13px;color:var(--muted)}
/* 排版编辑器：图片插槽预览层 */
.alb-txt-prv-imglayer{pointer-events:none}
.alb-txt-prv-img{position:absolute;overflow:hidden;border-radius:4px;cursor:move;pointer-events:auto;border:1px solid transparent;transition:border-color .15s,box-shadow .15s}
.alb-txt-prv-img:hover{border-color:var(--pri);box-shadow:0 0 0 2px rgba(99,102,241,.18)}
.alb-txt-prv-img.dragging{border-color:#ef4444;box-shadow:0 2px 10px rgba(0,0,0,.2);z-index:6}
.alb-txt-prv-img-empty{display:flex;align-items:center;justify-content:center;background:#f1f5f9;border:2px dashed #cbd5e1;color:#94a3b8;font-size:18px;cursor:pointer}
/* 预览图片缩放手柄 */
.alb-txt-prv-img-resize{position:absolute;right:0;bottom:0;width:14px;height:14px;background:var(--pri);border-radius:3px 0 6px 0;cursor:nwse-resize;opacity:0;transition:opacity .15s;z-index:5}
.alb-txt-prv-img:hover .alb-txt-prv-img-resize{opacity:.9}
/* 排版编辑器：图片插槽控制面板 */
.alb-img-slot-global{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px}
.alb-img-slot-panel{padding:12px 16px 0;display:flex;flex-direction:column;gap:10px}
.alb-img-slot-title{font-size:13px;font-weight:700;color:var(--text)}
.alb-img-slot-row{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px}
.alb-img-slot-hdr{display:flex;align-items:center;gap:8px}
/* 拉伸手柄 */
.alb-txt-resize-l,.alb-txt-resize-r{position:absolute;top:0;height:100%;width:8px;z-index:15;cursor:ew-resize;opacity:0;transition:opacity .15s}
.alb-txt-prv-block.selected .alb-txt-resize-l,.alb-txt-prv-block.selected .alb-txt-resize-r{opacity:1}
.alb-txt-resize-l{left:-4px;border-left:2px solid var(--pri)}
.alb-txt-resize-r{right:-4px;border-right:2px solid var(--pri)}
/* 对齐工具栏 */
.alb-txt-toolbar{position:absolute;bottom:-30px;left:50%;transform:translateX(-50%);display:flex;gap:2px;background:#fff;border:1px solid var(--border);border-radius:6px;padding:2px;box-shadow:0 2px 8px rgba(0,0,0,.1);white-space:nowrap;z-index:20;opacity:0;transition:opacity .15s}
.alb-txt-prv-block.selected .alb-txt-toolbar{opacity:1}
.alb-txt-prv-tb-btn{width:24px;height:24px;border:none;background:transparent;border-radius:4px;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;color:var(--muted);transition:all .12s;padding:0}
.alb-txt-prv-tb-btn:hover{background:var(--bg);color:var(--text)}
.alb-txt-prv-tb-btn.active{background:var(--pri);color:#fff}
/* 控制面板焦点高亮 */
.alb-txt-block-focus{animation:alb-txt-focus-pulse .6s ease-in-out 3;box-shadow:inset 0 0 0 2px var(--pri)}
@keyframes alb-txt-focus-pulse{0%,100%{box-shadow:inset 0 0 0 2px var(--pri)}50%{box-shadow:inset 0 0 0 4px var(--pri),0 0 12px rgba(99,102,241,.2)}}
/* 选中文字块高亮 */
.alb-txt-block-sel{border-color:var(--pri)!important;box-shadow:0 0 0 2px rgba(99,102,241,.25)}
.alb-txt-block-ctx{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:8px;padding:2px 0}

/* 常用色块 */
.alb-txt-palette{display:flex;gap:4px;margin-left:6px}
.alb-txt-palette span{width:18px;height:18px;border-radius:50%;cursor:pointer;border:1px solid rgba(0,0,0,.12);box-shadow:inset 0 0 0 1px rgba(255,255,255,.4);transition:transform .15s}
.alb-txt-palette span:hover{transform:scale(1.15);border-color:rgba(0,0,0,.3)}

/* 字号步进按钮 / 层数选择按钮 */
.alb-txt-stepper-btn{width:28px;height:28px;border:1px solid var(--border);border-radius:6px;background:#fff;font-size:18px;font-weight:600;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .12s;color:var(--text);flex-shrink:0;padding:0;user-select:none}
.alb-txt-stepper-btn:hover{background:var(--pri);color:#fff;border-color:var(--pri)}
.alb-txt-stepper-btn:active{transform:scale(.93)}
.alb-txt-stepper-btn.active{background:var(--pri);color:#fff;border-color:var(--pri)}
.alb-txt-font-val{width:50px;padding:4px 6px;border:1px solid var(--border);border-radius:6px;font-size:14px;text-align:center;outline:none;box-sizing:border-box}
.alb-txt-font-val:focus{border-color:var(--pri)}

.alb-v-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.alb-v-actions .btn{white-space:nowrap}

/* ==================== 封面底图选择器 ==================== */
.alb-bgp-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:100001;display:flex;align-items:center;justify-content:center}
.alb-bgp-panel{background:#fff;border-radius:16px;width:min(90vw,520px);max-height:85vh;display:flex;flex-direction:column;overflow-y:auto;box-shadow:0 8px 40px rgba(0,0,0,.2)}
.alb-bgp-hdr{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0}
.alb-bgp-hdr h3{margin:0;font-size:16px;font-weight:700}
.alb-bgp-tabs{display:flex;gap:4px;padding:10px 16px;border-bottom:1px solid var(--border);flex-shrink:0}
.alb-bgp-tab{flex:1;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg);font-size:13px;cursor:pointer;text-align:center;transition:all .15s;color:var(--text)}
.alb-bgp-tab.active{background:var(--pri);color:#fff;border-color:var(--pri);font-weight:600}
.alb-bgp-tab:hover:not(.active){background:var(--bg-hover)}
.alb-bgp-body{flex:1 1 auto;overflow-y:auto;min-height:0}
.alb-bgp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:16px}
.alb-bgp-item{border-radius:10px;height:80px;display:flex;align-items:flex-end;justify-content:center;padding:8px;cursor:pointer;border:2px solid transparent;transition:all .15s;position:relative;overflow:hidden}
.alb-bgp-item:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.12)}
.alb-bgp-item.selected{border-color:var(--pri)!important}
.alb-bgp-item span{font-size:12px;font-weight:600;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.4);z-index:1}
.alb-bgp-ftr{display:flex;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid var(--border);flex-shrink:0}
.alb-bgp-overlay-ctrl{padding:12px 20px;border-top:1px solid var(--border);background:#f8fafc;flex-shrink:0}
/* 裁切位置区：限制最大高度+内部滚动，防止撑开面板遮挡底部按钮 */
.alb-bgp-crop-ctrl{padding:12px 16px;border-top:1px solid var(--border);flex-shrink:0;overflow-y:auto;max-height:45vh;min-height:0;}
.alb-bgp-crop-ctrl #alb-cover-crop-preview{max-height:none;max-width:100%;position:relative;display:block;background-color:#f1f5f9;}
.alb-bgp-oc-check{display:flex;align-items:center;gap:8px;font-size:14px;cursor:pointer;user-select:none}
.alb-bgp-oc-check input[type=checkbox]{width:16px;height:16px;cursor:pointer}
.alb-bgp-oc-slider{display:flex;align-items:center;gap:10px;margin-top:10px;transition:opacity .2s}
.alb-bgp-oc-label{font-size:12px;color:#64748b;white-space:nowrap}
.alb-bgp-oc-slider input[type=range]{flex:1;accent-color:var(--pri)}
.alb-bgp-oc-val{font-size:12px;color:#64748b;min-width:32px;text-align:right}
.alb-bgp-img-grid{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.alb-bgp-img-item{width:56px;height:56px;border-radius:6px;overflow:hidden;cursor:pointer;border:2px solid transparent;transition:all .12s;background:#f1f5f9;display:flex;align-items:center;justify-content:center}
.alb-bgp-img-item:hover{border-color:var(--pri);transform:scale(1.05)}
.alb-bgp-img-item img{width:100%;height:100%;object-fit:cover}

/* ==================== 移动端适配 ==================== */
@media(max-width:768px){
  /* ---------- 全局基础 ---------- */
  body{font-size:14px;-webkit-tap-highlight-color:transparent}
  .btn-sm{font-size:13px;padding:8px 16px;min-height:38px}
  .btn{font-size:14px;padding:10px 18px;min-height:42px}
  .input, textarea.input, select.input{font-size:16px;padding:10px 14px}
  .form-label{font-size:14px}

  /* ---------- 导航栏 ---------- */
  .nav-bar{padding:10px 12px}
  .nav-title{font-size:16px}
  .nav-actions{gap:4px}
  .nav-actions .btn-sm{font-size:12px;padding:6px 10px;min-height:36px}

  /* ---------- 首页操作网格 ---------- */
  .home-grid{gap:10px;padding:12px}
  .home-card{padding:16px 14px}
  .home-card .icon{font-size:28px;width:48px;height:48px;min-width:48px}
  .home-card .title{font-size:14px}
  .home-card .desc{font-size:12px}

  /* ---------- 统计面板 ---------- */
  .stats-bar{gap:8px;padding:10px 12px;overflow-x:auto;flex-wrap:nowrap}
  .stat-card{padding:10px 12px;min-width:80px;flex-shrink:0}
  .stat-card .stat-num{font-size:20px}
  .stat-card .stat-label{font-size:11px}

  /* ---------- 工具栏 ---------- */
  .toolbar{padding:10px 12px;gap:6px;flex-wrap:wrap}
  .toolbar .btn{font-size:13px;padding:8px 14px;min-height:38px}
  .toolbar .btn-sm{font-size:12px;padding:6px 10px}

  /* ---------- 产品卡片 ---------- */
  .card-grid{gap:10px;padding:10px 12px}
  .card{min-width:0}
  .card-body{padding:12px}
  .card-title{font-size:14px}
  .card-meta{font-size:12px}

  /* ---------- 产品详情 ---------- */
  .detail-header{flex-direction:column;align-items:flex-start;gap:12px;padding:14px}
  .detail-title{font-size:16px}
  .detail-actions{gap:6px;flex-wrap:wrap}
  .detail-actions .btn{font-size:13px;padding:8px 14px;min-height:38px}
  .detail-thumb-grid{gap:8px}
  .detail-thumb{width:80px;height:80px}
  .detail-info-table th{width:30%}
  .detail-info-table td{font-size:14px}

  /* ---------- 表格 ---------- */
  table{font-size:13px}
  table th, table td{padding:8px 10px}
  .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}

  /* ---------- 弹窗/模态框 ---------- */
  .modal-content{max-width:96vw!important;width:auto!important;padding:14px!important;margin:10px}
  .skm-dialog{max-width:96vw;width:auto;padding:16px 14px;margin:10px;max-height:90vh;overflow-y:auto}
  .skm-header{font-size:15px}
  .skm-body{padding:12px 0}

  /* ---------- 海报设计对话框 ---------- */
  .psr-dialog{flex-direction:column;inset:0!important;border-radius:0!important;max-height:100vh;overflow:hidden}
  .psr-dlg-left{width:100%!important;max-height:40vh;overflow-y:auto;border-right:none;border-bottom:2px solid var(--border);padding:12px;flex-shrink:0}
  .psr-dlg-right{width:100%!important;flex:1;overflow-y:auto;padding:12px}
  .psr-ed-section{padding:10px 0}
  .psr-ed-section h4{font-size:14px}
  .psr-tpl-grid{gap:8px}
  .psr-tpl-item{width:48%}
  .psr-tpl-item .thumb{height:100px}
  .psr-tpl-item .name{font-size:12px}
  .psr-size-grid{gap:6px}
  .psr-size-btn{padding:8px 14px;font-size:12px;min-height:38px}
  .psr-preview-box{max-height:45vh}
  .psr-ed-control-row{gap:8px;flex-wrap:wrap}
  .psr-ed-control-row label{font-size:13px;min-width:40px}
  .psr-ed-control-row input[type=range]{width:100px}
  .psr-ed-toggle{font-size:12px;padding:6px 12px;min-height:34px}
  .psr-crop-hint{font-size:11px}
  /* 自由海报手机化 */
  .psr-free-mode .psr-dialog{inset:0!important;border-radius:0!important;}
  .psr-free-mode .psr-dlg-hdr{padding:10px 12px;font-size:15px;}
  .psr-free-mode .psr-dlg-right{padding:8px;overflow:hidden;}
  .psr-free-mode .psr-preview-wrap{flex:1;min-height:0;}
  .psr-free-mode .psr-preview-box{max-width:100%;max-height:calc(100vh - 170px);width:auto;height:auto;}
  .psr-free-tools{padding:4px 2px;}
  .psr-free-tool{padding:4px 4px;}
  .psr-free-tool span{font-size:20px;}
  .psr-free-tool b{font-size:10px;}
  .psr-free-panel{max-height:55vh;}
  .psr-free-panel-body{padding:10px 12px 20px;}

  /* ---------- 海报列表 ---------- */
  .psr-grid{gap:10px;padding:10px 12px}
  .psr-card{min-width:0}
  .psr-thumb{height:180px}
  .psr-card-info{padding:10px 12px}
  .psr-card-name{font-size:14px}
  .psr-card-date{font-size:11px}

  /* ---------- 图片管理 ---------- */
  .img-grid{gap:8px;padding:8px 12px}
  .img-card .thumb{height:120px}
  .img-card .meta{font-size:11px;padding:6px 8px}
  .img-card .actions{gap:4px}
  .img-card .actions .btn-sm{padding:4px 8px;font-size:11px;min-height:32px}
  .batch-classify-grid{grid-template-columns:repeat(3,1fr);gap:8px}
  .batch-classify-item .thumb{height:80px}
  .batch-classify-item .name{font-size:11px}

  /* ---------- 图片上传拖放区 ---------- */
  .upload-zone{padding:20px 14px;font-size:14px}
  .upload-zone .icon{font-size:36px}

  /* ---------- 图片编辑 ---------- */
  .editor-wrap{flex-direction:column}
  .editor-tools-float{flex-wrap:wrap;gap:4px;padding:6px;border-radius:10px}
  .editor-tools-float .tool-btn{width:38px;height:38px;min-width:38px;min-height:38px;border-radius:8px}
  .editor-tools-float .tool-btn img{width:18px;height:18px}
  .editor-tools-float .tool-divider{width:100%;height:1px;margin:2px 0}
  .editor-canvas-wrap{max-height:50vh}
  .editor-text-panel{flex-wrap:wrap;gap:4px;padding:8px}
  .editor-crop-bar{flex-wrap:wrap;gap:4px}
  .crop-ratio-bar{gap:4px;overflow-x:auto}
  .crop-ratio-item{font-size:11px;padding:4px 8px}
  .crop-ok,.crop-cancel{font-size:12px;padding:8px 14px;min-height:36px}

  /* ---------- 画册 ---------- */
  .alb-txt-panel{width:100vw;max-height:100vh;border-radius:0}
  .alb-txt-panel-hdr h3{font-size:15px}
  .alb-txt-blocks-list{max-height:42vh}
  .alb-mode-grid{grid-template-columns:1fr}
  .alb-v-nav{width:36px;height:36px;font-size:22px}
  .alb-v-actions .btn{font-size:12px;padding:6px 10px;min-height:36px}
  .alb-viewer-page-wrap{max-width:100%;max-height:70vh}
  .alb-wiz-step{font-size:12px;padding:6px 8px}
  .alb-wiz-steps{gap:2px}
  .alb-list-grid{gap:10px;padding:10px 12px}
  .alb-list-card .cover{height:140px}
  .alb-list-card .info{padding:10px 12px}
  .alb-list-card .name{font-size:14px}
  .alb-bgp-panel{width:100vw;max-height:100vh;border-radius:0;max-height:100vh}
  .alb-bgp-grid{grid-template-columns:repeat(3,1fr);gap:8px;padding:12px}
  .alb-bgp-item{height:64px}
  .alb-bgp-item span{font-size:11px}
  .alb-bgp-tabs{padding:8px 12px}
  .alb-bgp-tab{font-size:12px;padding:8px 10px}
  .alb-bgp-ftr{padding:12px 14px}

  /* ---------- SKU弹窗 ---------- */
  .sku-combo-table th,.sku-combo-table td{padding:6px 8px;font-size:12px}
  .sku-price-input{width:72px;font-size:13px;padding:6px}

  /* ---------- 图片库弹窗 ---------- */
  .alb-bgp-img-item{width:44px;height:44px}
  .alb-bgp-img-grid{gap:4px}

  /* ---------- 图片预览灯箱 ---------- */
  .img-lightbox-actions{gap:6px}
  .img-lightbox-actions .btn{font-size:13px;padding:8px 14px;min-height:38px}

  /* ---------- 设置页 ---------- */
  .settings-section{padding:14px}
  .settings-section h3{font-size:15px}
  .settings-row{gap:10px;flex-direction:column;align-items:flex-start}
  .settings-row label{min-width:auto}

  /* ---------- 比对页 ---------- */
  .compare-grid{gap:10px}
  .compare-card{padding:12px}
  .compare-card .name{font-size:14px}
  .compare-table th{width:35%}
  .compare-table td{font-size:13px}

  /* ---------- 分享弹窗 ---------- */
  .share-panel{padding:14px;gap:8px}
  .share-btn{width:52px;height:52px;font-size:22px}

  /* ---------- 搜索框 ---------- */
  .search-box input{font-size:16px;padding:10px 14px}

  /* ---------- 分页 ---------- */
  .pagination{gap:4px;flex-wrap:wrap}
  .pagination .btn-sm{padding:6px 10px;font-size:12px;min-height:34px}

  /* ---------- Toast ---------- */
  .toast{font-size:14px;padding:12px 20px;left:12px;right:12px;bottom:80px;max-width:none;border-radius:12px}
}

/* ==================== 手机端精细断点 (≤480px) ==================== */
@media(max-width:480px){
  /* 卡片网格单列 */
  .card-grid{grid-template-columns:1fr!important;gap:8px}
  .psr-grid{grid-template-columns:1fr!important;gap:8px}
  .img-grid{grid-template-columns:repeat(2,1fr)!important;gap:6px}
  .batch-classify-grid{grid-template-columns:repeat(2,1fr)!important;gap:6px}

  /* 海报模板单列 */
  .psr-tpl-grid{grid-template-columns:1fr 1fr;gap:6px}
  .psr-tpl-item .thumb{height:90px}

  /* 画册列表单列 */
  .alb-list-grid{grid-template-columns:1fr}
  .alb-list-card .cover{height:160px}

  /* 详情缩略图更紧凑 */
  .detail-thumb{width:64px;height:64px}
  .detail-thumb-grid{gap:6px}

  /* 导航栏更紧凑 */
  .nav-title{font-size:15px}
  .nav-back{font-size:13px;padding:6px 10px}

  /* 首页卡片单列 */
  .home-grid{grid-template-columns:1fr 1fr;gap:8px}
  .home-card .icon{font-size:24px;width:40px;height:40px;min-width:40px}
  .home-card .title{font-size:13px}

  /* 底图选择器2列 */
  .alb-bgp-grid{grid-template-columns:repeat(2,1fr);gap:6px;padding:10px}

  /* 模态框内容更宽松 */
  .modal-content{padding:10px!important}
  .skm-dialog{padding:12px 10px}

  /* 图片编辑工具栏icon缩小但保持可点击 */
  .editor-tools-float .tool-btn{width:34px;height:34px;min-width:34px;min-height:34px}
  .editor-tools-float .tool-btn img{width:16px;height:16px}

  /* 海报对话左侧面板更紧凑 */
  .psr-dlg-left{max-height:35vh;padding:10px}
  .psr-preview-box{max-height:40vh}

  /* 工具栏按钮全宽 */
  .toolbar .btn{flex:1;min-width:0;text-align:center;font-size:12px}
  .toolbar{align-items:stretch}

  /* 概览数字 */
  .stat-card .stat-num{font-size:18px}

  /* 文字编辑器全屏 */
  .alb-txt-panel-hdr{padding:12px 14px}
  .alb-txt-panel-body{padding:12px 14px}
  .alb-txt-blocks-list{max-height:30vh}
}

/* ==================== 报价管理模块 ==================== */
.q-root{max-width:920px;margin:0 auto;}
.q-tabs{display:flex;gap:6px;border-bottom:1px solid var(--border);margin-bottom:16px;flex-wrap:wrap;align-items:center;}
.q-edit-badge{margin-left:auto;padding:4px 12px;background:#fff7ed;color:#c2410c;border:1px solid #fed7aa;border-radius:20px;font-size:12px;font-weight:700;}
.q-tab{padding:10px 16px;font-size:14px;cursor:pointer;color:var(--muted);border-bottom:2px solid transparent;font-weight:600;}
.q-tab.active{color:var(--pri);border-bottom-color:var(--pri);}
.q-tab:hover{color:var(--text);}

.q-empty{padding:48px 16px;text-align:center;color:var(--muted);font-size:14px;}
.q-empty-sm{padding:20px 12px;text-align:center;color:var(--muted);font-size:13px;background:#f8fafc;border-radius:8px;border:1px dashed var(--border);}

/* 报价记录列表 */
.q-list{display:flex;flex-direction:column;gap:12px;}
.q-card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:14px 16px;box-shadow:0 1px 3px rgba(0,0,0,.04);}
.q-card-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px;}
.q-card-cust{font-size:15px;font-weight:700;}
.q-card-date{font-size:12px;color:var(--muted);margin-top:2px;}
.q-card-total{font-size:20px;font-weight:800;color:var(--pri);}
.q-card-items{border-top:1px dashed var(--border);padding-top:8px;}
.q-row{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px;}
.q-row-name{flex:1;}
.q-row-num{color:var(--muted);}
.q-row-amt{font-weight:600;min-width:80px;text-align:right;}
.q-card-remark{margin-top:8px;font-size:12px;color:#475569;background:#f8fafc;border-radius:6px;padding:6px 10px;}
.q-card-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap;}

/* 客户管理 */
.q-cust-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}
.q-cust-count{font-size:13px;color:var(--muted);}
.q-cust-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;}
.q-cust-card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:14px;display:flex;gap:12px;align-items:center;}
.q-cust-avatar{width:44px;height:44px;border-radius:50%;background:var(--pri);color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;flex-shrink:0;}
.q-cust-info{flex:1;min-width:0;}
.q-cust-name{font-size:15px;font-weight:700;}
.q-cust-meta{font-size:12px;color:var(--muted);margin-top:2px;}
.q-cust-sub{font-size:12px;color:#64748b;margin-top:2px;}
.q-cust-ops{display:flex;flex-direction:column;gap:6px;}

/* 新建报价 */
.q-create{display:flex;flex-direction:column;gap:18px;}
.q-create-section{background:#fff;border:1px solid var(--border);border-radius:12px;padding:16px;}
.q-create-sec-title{font-size:14px;font-weight:700;margin-bottom:12px;color:var(--text);}
.q-cust-select{display:flex;gap:8px;}
.q-cust-select .input{flex:1;}
.q-prod-filter{display:flex;gap:8px;margin-bottom:12px;}
.q-prod-filter .input{flex:1;}
.q-prod-list{display:flex;flex-direction:column;gap:8px;max-height:360px;overflow-y:auto;}
.q-prod-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;cursor:pointer;background:#fff;transition:background .15s;}
.q-prod-item:hover{background:#f8fafc;}
.q-prod-thumb{width:44px;height:44px;border-radius:8px;object-fit:cover;background:#f1f5f9;flex-shrink:0;}
.q-prod-thumb-none{display:flex;align-items:center;justify-content:center;font-size:22px;color:#cbd5e1;}
.q-prod-info{flex:1;min-width:0;}
.q-prod-name{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.q-pkg-tag{font-size:10px;background:#ede9fe;color:#7c3aed;padding:1px 6px;border-radius:8px;margin-left:4px;font-weight:600;}
.q-prod-price{font-size:12px;color:#d97706;margin-top:2px;display:flex;align-items:center;gap:2px;flex-wrap:wrap;}
.q-prod-price-input{width:80px;padding:2px 6px;font-size:13px;font-weight:700;color:#d97706;border:1px solid var(--border);border-radius:4px;text-align:right;}
.q-prod-price-input:focus{border-color:var(--pri);outline:none;}
.q-prod-price-hint{font-size:11px;color:var(--muted);cursor:pointer;font-weight:400;text-decoration:underline;}
.q-prod-price-hint:hover{color:var(--pri);}
.q-prod-add{width:28px;height:28px;border-radius:50%;background:var(--pri);color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;}
.q-draft-items{display:flex;flex-direction:column;gap:8px;}
.q-draft-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:#fcfcfd;}
.q-di-name{flex:1;font-size:14px;font-weight:600;}
.q-di-unit{font-size:12px;color:var(--muted);min-width:90px;display:flex;align-items:center;gap:2px;}
.q-di-price-input{width:70px;padding:1px 4px;font-size:12px;font-weight:600;border:1px solid var(--border);border-radius:4px;text-align:right;}
.q-di-price-input:focus{border-color:var(--pri);outline:none;}
.q-di-qty{display:flex;align-items:center;gap:4px;}
.q-di-qty button{width:26px;height:26px;border-radius:6px;border:1px solid var(--border);background:#fff;cursor:pointer;font-size:15px;line-height:1;}
.q-di-qty input{width:58px;text-align:center;padding:4px;font-size:13px;}
.q-di-amt{font-weight:700;min-width:78px;text-align:right;}
.q-di-del{color:#dc2626;cursor:pointer;font-size:14px;padding:2px 6px;}
.q-create-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;bottom:0;background:#fff;padding:14px 16px;border:1px solid var(--border);border-radius:12px;}
.q-create-total{font-size:16px;font-weight:700;}
.q-create-total span{font-size:22px;color:var(--pri);font-weight:800;}

/* 安装费行 */
.q-install-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;padding:12px 14px;background:#fffbeb;border:1px solid #fde68a;border-radius:10px;}
.q-install-label{font-size:14px;font-weight:700;display:flex;flex-direction:column;gap:2px;}
.q-install-hint{font-size:11px;font-weight:400;color:#b45309;}
.q-install-ctrl{display:flex;align-items:center;gap:8px;}
.q-install-ctrl .input{width:120px;text-align:right;font-weight:700;}

/* 商品合计行 */
.q-goods-total-row{display:flex;justify-content:space-between;align-items:center;margin-top:10px;padding:10px 14px;background:#f8fafc;border:1px solid var(--border);border-radius:8px;font-size:14px;font-weight:600;}
.q-goods-total-row strong{color:var(--text);font-size:16px;}

/* 安装费双单价设置 */
.q-install-rates{display:flex;gap:12px;margin-top:10px;padding:10px 14px;background:#f8fafc;border:1px solid var(--border);border-radius:8px;}
.q-rate-item{flex:1;display:flex;flex-direction:column;gap:4px;}
.q-rate-item label{font-size:12px;color:var(--muted);}
.q-rate-item .input{font-size:13px;}

/* 更多设置 */
.q-more-settings{margin-top:10px;border:1px solid var(--border);border-radius:10px;overflow:hidden;}
.q-more-settings summary{list-style:none;padding:10px 14px;background:#f8fafc;font-size:13px;font-weight:600;cursor:pointer;user-select:none;display:flex;align-items:center;}
.q-more-settings summary::-webkit-details-marker{display:none;}
.q-more-settings summary::marker{display:none;}
.q-more-summary::before{content:'▸ ';display:inline-block;margin-right:4px;transition:transform .2s;color:var(--muted);}
.q-more-settings[open] .q-more-summary::before{content:'▾ ';}
.q-more-settings summary:hover{background:#f1f5f9;}
.q-more-body{padding:14px;display:flex;flex-direction:column;gap:12px;}
.q-more-row{display:flex;gap:12px;}
.q-more-field{flex:1;display:flex;flex-direction:column;gap:4px;}
.q-more-field label{font-size:12px;color:var(--muted);font-weight:600;}
.q-more-hint{font-size:11px;color:#b45309;margin-top:2px;}
.q-deposit-row,.q-balance-row{background:#fef2f2;padding:10px;border-radius:8px;border:1px solid #fecaca;}
.q-balance-row .q-more-field:first-child input{color:var(--red)!important;font-weight:800!important;font-size:18px!important;
  border:2px solid var(--red)!important;border-radius:8px!important;padding:12px 14px!important;text-align:center!important;}
.q-status-area{display:flex;align-items:center;gap:10px;padding:8px 0;}
.q-status-tag{display:inline-block;padding:3px 10px;border-radius:6px;font-size:12px;font-weight:700;min-width:28px;text-align:center;}
.q-status-tag.pending{background:#dbeafe;color:#1e40af;}      /* 待成交单 - 蓝 */
.q-status-tag.yellow{background:#fef3c7;color:#92400e;}        /* 黄单 - 黄 */
.q-status-tag.completed{background:#d1fae5;color:#065f46;}     /* 成交单 - 绿✅ */
.q-status-btns{display:flex;gap:6px;}
.q-status-opt{width:42px;height:36px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;font-size:14px;font-weight:600;cursor:pointer;color:#64748b;transition:all .15s;}
.q-status-opt:hover{border-color:#94a3b8;}
.q-status-opt.active.pending{background:#dbeafe;color:#1e40af;border-color:#1e40af;}
.q-status-opt.active.yellow{background:#fef3c7;color:#92400e;border-color:#92400e;}
.q-status-opt.active.completed{background:#d1fae5;color:#065f46;border-color:#065f46;}
.btn-success{background:#16a34a;border-color:#16a34a;color:#fff;}
.btn-success:hover{background:#15803d;}
.q-card-paid{display:inline-block;margin-top:2px;padding:2px 8px;background:#dcfce7;color:#15803d;border-radius:10px;font-size:11px;font-weight:600;}
.q-view-status{margin-top:10px;padding:8px 12px;border-radius:8px;background:#fef9c3;color:#854d0e;font-size:13px;font-weight:600;text-align:center;}
.q-view-status.q-view-status-paid{background:#dcfce7;color:#15803d;}

/* ========== 报价单新建顶部栏（与 baojia-tool 一致） ========== */
.q-top-bar{display:flex;gap:16px;align-items:flex-end;flex-wrap:wrap;margin-bottom:12px;}
.q-field{display:flex;flex-direction:column;gap:4px;min-width:140px;flex:1;}
.q-field label{font-size:13px;color:#475569;font-weight:600;white-space:nowrap;}
.q-field .input{font-size:14px;padding:8px 10px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;outline:none;transition:border-color .2s;}
.q-field .input:focus{border-color:var(--pri);box-shadow:0 0 0 3px rgba(59,130,246,.1);}
.q-logo-field{min-width:180px;flex:0 0 auto;}
.q-logo-upload{display:flex;align-items:center;gap:6px;}
.q-date-highlight label{color:#dc2626!important;}
/* 客户栏右侧 + 新增按钮 */
.q-add-cust-btn{width:38px;height:38px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#475569;font-size:20px;font-weight:300;line-height:1;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all .15s;}
.q-add-cust-btn:hover{background:var(--pri);color:#fff;border-color:var(--pri);}

/* ========== 报价单卡片预览（融合 baojia-tool） ========== */
.q-view-toolbar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid #e5e7eb;background:#f9fafb;border-radius:12px 12px 0 0;flex-shrink:0;}
.q-card-wrapper{overflow-y:auto;max-height:calc(90vh - 120px);padding:0;}

/* 卡片主体 */
.quotation-card{width:100%;box-sizing:border-box;padding:24px;background:#fff;border:1px solid #e5e7eb;border-radius:8px;font-size:14px;line-height:1.6;color:#1f2937;}
.qc-header{display:flex;align-items:center;gap:14px;margin-bottom:18px;}
.qc-logo-area{flex-shrink:0;width:56px;height:56px;border-radius:12px;overflow:hidden;background:linear-gradient(135deg,#f59e0b,#d97706);display:flex;align-items:center;justify-content:center;}
.qc-logo-img{width:100%;height:100%;object-fit:cover;display:block;}
.qc-logo-fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;font-weight:800;text-align:center;line-height:1.2;}
.qc-title{font-size:24px;font-weight:700;color:#111827;margin:0;letter-spacing:2px;}
.qc-customer{display:flex;justify-content:space-between;margin-bottom:16px;font-size:14px;line-height:2;color:#374151;}
.qc-customer-left,.qc-customer-right{flex:1;}
.qc-customer-right{text-align:right;}

/* 表格 */
.qc-table{width:100%;border-collapse:collapse;margin-bottom:4px;font-size:13px;}
.qc-table th{background:#f9fafb;padding:10px 12px;text-align:left;border:1px solid #e5e7eb;font-weight:600;color:#1f2937;font-size:13px;}
.qc-table td{padding:9px 12px;border:1px solid #e5e7eb;color:#374151;vertical-align:middle;}
.qc-table tbody tr:hover{background:#fafafa;}

/* 合计区 */
.qc-totals{border-top:2px solid #111827;padding-top:10px;margin-top:4px;}
.qc-total-row{display:flex;justify-content:space-between;padding:6px 4px;font-size:14px;color:#374151;}
.qc-install-row{color:#6b7280;}
.qc-install-row small{color:#9ca3af;}
.qc-grand-row{font-size:20px;font-weight:700;color:#111827;border-top:1px dashed #d1d5db;padding-top:10px;margin-top:6px;}

/* 定金尾款 */
.qc-pay-section{margin-top:12px;padding-top:12px;border-top:1px dashed #e5e7eb;font-size:13px;color:#4b5563;}
.qc-pay-divider{height:1px;background:none;margin-bottom:6px;}
.qc-pay-row{padding:3px 0;}
.qc-balance-row{color:#dc2626;font-weight:600;}

/* 备注 & 状态 */
.qc-remark{margin-top:12px;font-size:13px;color:#6b7280;padding:8px 12px;background:#fefce8;border-radius:6px;}
.qc-remark-inline{font-size:12px;color:#6b7280;margin-bottom:4px;}
.qc-deposit-line,.qc-balance-line{font-size:13px;color:#4b5563;}
.qc-balance-line{color:#dc2626;font-weight:600;}
.qc-status{margin-top:12px;padding:8px 14px;border-radius:8px;background:#fef9c3;color:#854d0e;font-size:13px;font-weight:600;text-align:center;}
.qc-status.qc-status-paid{background:#dcfce7;color:#15803d;}

/* 底部 */
.qc-footer{display:flex;justify-content:space-between;align-items:flex-end;margin-top:16px;padding-top:14px;border-top:1px solid #e5e7eb;}
.qc-footer-left{flex:1;}
.qc-footer-right{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:4px;}
.qc-qrcode-area{text-align:center;width:90px;flex-shrink:0;}
.qc-qrcode-label{font-size:11px;margin-top:2px;color:#9ca3af;}
.qc-contact-info{font-size:12px;color:#6b7280;}

/* A4横版模式 */
.qc-landscape .quotation-card{padding:20px 32px;}
.qc-landscape .qc-customer{flex-wrap:nowrap;}

/* 查看弹窗 - 原始排版 */
.q-view-modal{background:#fff;border-radius:12px;width:min(620px,94vw);max-height:90vh;display:flex;flex-direction:column;overflow:hidden;font-size:14px;line-height:1.6;}
.q-view-head{display:flex;align-items:center;gap:10px;padding:16px 20px 8px;border-bottom:1px solid var(--border);}
.q-view-logo{width:36px;height:36px;background:linear-gradient(135deg,#f59e0b,#d97706);border-radius:6px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:18px;font-weight:800;}
.q-view-title{font-size:22px;font-weight:800;letter-spacing:2px;}
.q-view-meta{display:flex;justify-content:space-between;padding:10px 20px;font-size:13px;color:var(--text);}
.q-view-meta-left div,.q-view-meta-right div{line-height:1.8;}
.q-view-meta-right{text-align:right;}
.q-view-table{width:100%;border-collapse:collapse;margin:0 0 0;font-size:13px;}
.q-view-table th{background:#f8fafc;padding:8px 10px;border:1px solid var(--border);font-weight:700;font-size:12px;text-align:left;}
.q-view-table td{padding:7px 10px;border:1px solid var(--border);}
.q-view-table td:nth-child(3),.q-view-table td:nth-child(4),
.q-view-table td:nth-child(5),.q-view-table td:nth-child(6){text-align:right;}
.q-view-table td:nth-child(4){text-align:center;}
.q-view-totals{padding:10px 20px;font-size:14px;}
.q-vt-row{display:flex;justify-content:space-between;padding:5px 0;}
.q-vt-install{color:#b45309;}
.q-vt-install small{font-weight:400;color:var(--muted);}
.q-vt-grand{font-size:18px;font-weight:800;border-top:2px solid var(--border);margin-top:6px;padding-top:10px;color:var(--pri);}

/* 定金尾款区 */
.q-view-pay-section{padding:0 20px;}
.q-vp-divider{height:1px;border-top:1px dashed var(--border);margin:8px 0;}
.q-vp-row{font-size:13px;padding:4px 0;}
.q-vp-balance{color:var(--red);font-weight:700;font-size:15px;}

/* 备注与底部 */
.q-view-remark{padding:10px 20px;font-size:13px;color:var(--muted);border-top:1px solid var(--border);margin-top:4px;}
.q-view-footer{display:flex;justify-content:space-between;align-items:flex-end;padding:12px 20px;border-top:1px solid var(--border);margin-top:auto;}
.q-view-qrcode-area{text-align:center;}
.q-qrcode-placeholder{width:64px;height:64px;background:#f1f5f9;border:1px solid var(--border);border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--muted);font-weight:700;}
.q-qrcode-label{font-size:11px;color:var(--muted);margin-top:2px;}
.q-view-contact{text-align:right;font-size:12px;color:var(--muted);line-height:1.8;}
.q-view-contact strong{color:var(--text);}
.q-view-actions{padding:12px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px;}

/* 列表卡片定金尾款 */
.q-card-pay-info{font-size:11px;color:var(--amber);font-weight:600;}

/* 固定4个商品卡片 */
.q-fixed-items{display:flex;flex-direction:column;gap:10px;}
.q-fi-select{min-width:0;flex:1;}/* 下拉框样式 */

/* 报价商品行列表（动态行样式） */
.q-item-rows{display:flex;flex-direction:column;gap:8px;margin-bottom:10px;}
.q-rows-empty{text-align:center;color:var(--muted);padding:20px 0;border:1px dashed var(--border);border-radius:8px;font-size:14px;}
.q-item-row{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#fff;border:1px solid var(--border);border-radius:8px;}
.q-item-row:hover{border-color:#93c5fd;}

/* 行内自定义下拉选择 */
.q-row-picker{position:relative;flex-shrink:0;}
.q-row-pick-btn{display:inline-flex;align-items:center;gap:6px;min-width:180px;max-width:240px;border:1px solid var(--border);border-radius:6px;padding:6px 10px;font-size:14px;font-weight:600;color:#1e293b;background:#fff;cursor:pointer;outline:none;transition:border-color .15s;}
.q-row-pick-btn:hover{border-color:#3b82f6;}
.q-row-pick-btn:focus,.q-row-pick-btn.active{border-color:#3b82f6;box-shadow:0 0 0 2px rgba(59,130,246,0.15);}
.q-row-pick-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;text-align:left;}
.q-row-pick-arrow{font-size:10px;color:#94a3b8;transition:transform .15s;}
.q-row-pick-btn.active .q-row-pick-arrow{transform:rotate(180deg);}
.q-row-panel{position:absolute;top:calc(100% + 4px);left:0;z-index:100;min-width:240px;max-height:280px;overflow-y:auto;background:#fff;border:1px solid #cbd5e1;border-radius:8px;box-shadow:0 8px 24px rgba(15,23,42,0.15);padding:4px;}
.q-row-opt{padding:9px 12px;border-radius:6px;font-size:14px;color:#1e293b;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.q-row-opt:hover{background:#eff6ff;color:#1d4ed8;}
.q-row-opt-empty{padding:12px;text-align:center;color:var(--muted);font-size:13px;}

.q-row-suffix{font-weight:700;font-size:14px;color:#1e293b;flex-shrink:0;white-space:nowrap;}
.q-row-unit{font-size:13px;color:#64748b;white-space:nowrap;font-weight:500;}
.q-row-qty-ctrl{display:flex;align-items:center;gap:4px;flex-shrink:0;}
.q-row-btn{width:26px;height:28px;border:1px solid var(--border);background:#fff;border-radius:4px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;line-height:1;}
.q-row-btn:hover{background:#f1f5f9;}
.q-row-qty-input{width:56px;text-align:center;font-size:14px;border:1px solid var(--border);border-radius:4px;padding:3px 4px;}
/* 报价行单价/数量/金额区域 */
.q-row-fields{display:flex;align-items:flex-end;gap:12px;flex:1;min-width:0;}
.q-row-field{display:flex;flex-direction:column;gap:2px;align-items:center;}
.q-row-flabel{font-size:11px;color:#64748b;white-space:nowrap;line-height:1.2;}
.q-row-price-input{width:72px;text-align:right;font-size:14px;border:1px solid var(--border);border-radius:4px;padding:3px 4px;font-weight:600;color:#2563eb;}
.q-row-price-input::placeholder{color:#cbd5e1;font-weight:400;}
.q-row-qty-input2{width:56px;text-align:center;font-size:14px;border:1px solid var(--border);border-radius:4px;padding:3px 4px;}
.q-row-amt-field .q-row-amt{font-weight:600;color:#dc2626;font-size:14px;white-space:nowrap;}
.q-row-amt{font-weight:600;color:#dc2626;min-width:72px;text-align:right;flex-shrink:0;font-size:14px;}
.q-row-del{width:24px;height:24px;border:none;background:none;color:#94a3b8;cursor:pointer;font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center;border-radius:50%;flex-shrink:0;}
.q-row-del:hover{color:#ef4444;background:#fef2f2;}

/* 产品选择弹窗 */
.q-prod-picker-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;}
.q-prod-pick-item{padding:10px;border:2px solid var(--border);border-radius:8px;cursor:pointer;transition:border-color .15s;}
.q-prod-pick-item:hover{border-color:#93c5fd;}
.q-prod-pick-item.q-prod-pick-sel{border-color:#2563eb;background:#eff6ff;}
.q-pick-name{font-weight:600;font-size:13px;color:#1e293b;margin-bottom:2px;}
.q-pick-info{font-size:11px;color:var(--muted);}

/* 添加商品按钮 */
.q-add-row-btn{margin-top:8px;width:100%;padding:8px;border-style:dashed;}
.q-fi-card{border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#fff;}
.q-fi-header{padding:8px 12px;display:flex;align-items:center;gap:6px;font-weight:700;font-size:14px;border-bottom:1px solid var(--border);}
.q-fi-icon{font-size:18px;}
.q-fi-body{padding:10px 12px;display:flex;flex-direction:column;gap:6px;}
.q-fi-row{display:flex;align-items:center;gap:8px;}
.q-fi-row label{font-size:12px;color:var(--muted);min-width:72px;font-weight:600;flex-shrink:0;}
.q-fi-input{flex:1;padding:6px 10px;font-size:13px;border:1px solid var(--border);border-radius:6px;}
.q-fi-input:focus{border-color:var(--pri);outline:none;}
.q-fi-price{text-align:right;font-weight:700;color:var(--amber);min-width:80px;}
.q-fi-qty{text-align:right;font-weight:700;min-width:70px;}
.q-fi-amt{padding:8px 12px;text-align:right;font-size:15px;font-weight:800;color:var(--text);background:#f8fafc;border-top:1px solid var(--border);}

/* 底部按钮区 */
.q-create-btns{display:flex;gap:10px;}
.q-btn-generate{background:linear-gradient(135deg,#dc2626,#b91c1c)!important;color:#fff!important;border:none!important;
  padding:10px 24px!important;font-size:15px!important;font-weight:800!important;border-radius:8px!important;
  cursor:pointer;box-shadow:0 2px 8px rgba(220,38,38,.3);}
.q-btn-generate:hover{background:linear-gradient(135deg,#ef4444,#dc2626)!important;box-shadow:0 3px 12px rgba(220,38,38,.4);}
.q-btn-save{padding:10px 20px!important;font-size:14px!important;border-radius:8px!important;}

/* ===== 到户商品（组合套装）模块 ===== */
.asm-root{max-width:1080px;margin:0 auto;padding:16px 20px 40px;}
.asm-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;gap:12px;}
.asm-toolbar-left{display:flex;flex-direction:column;gap:2px;}
.asm-h3{font-size:20px;font-weight:700;margin:0;color:var(--text);}
.asm-sub{font-size:13px;color:var(--muted);}
.asm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;}
.asm-empty{grid-column:1/-1;text-align:center;color:var(--muted);padding:60px 20px;border:2px dashed var(--border);border-radius:12px;font-size:15px;}
.asm-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:14px 16px;box-shadow:var(--shadow-sm);transition:box-shadow .15s,border-color .15s;display:flex;flex-direction:column;gap:10px;}
.asm-card:hover{box-shadow:var(--shadow);border-color:#c7d2fe;}
.asm-card-hd{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;}
.asm-card-title{font-size:16px;font-weight:700;color:var(--text);}
.asm-card-actions{display:flex;gap:4px;flex-shrink:0;}
.asm-card-actions .btn{padding:4px 8px;font-size:12px;}
.asm-del{color:#ef4444;}
.asm-card-members{display:flex;flex-wrap:wrap;gap:6px;}
.asm-tag{background:var(--pri-light);color:#4338ca;font-size:12px;padding:3px 8px;border-radius:6px;white-space:nowrap;}
.asm-tag-empty{background:#f1f5f9;color:#94a3b8;}
.asm-card-foot{display:flex;flex-direction:column;gap:4px;border-top:1px dashed var(--border);padding-top:10px;}
.asm-price-row{display:flex;align-items:center;justify-content:space-between;font-size:13px;}
.asm-price-label{color:var(--muted);}
.asm-price-auto{color:#64748b;font-weight:600;}
.asm-price-final{color:var(--pri);font-weight:700;font-size:15px;}
.asm-price-diff{font-size:12px;text-align:right;font-weight:600;}
.asm-price-diff.up{color:#dc2626;}
.asm-price-diff.down{color:#16a34a;}

/* 编辑页 */
.asm-edit-bar{display:flex;align-items:center;gap:14px;margin-bottom:18px;}
.asm-edit-bar .asm-h3{margin:0;}
.asm-edit-bar .btn-primary{margin-left:auto;}
.asm-edit-body{display:flex;flex-direction:column;gap:18px;}
.asm-section{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px 18px;box-shadow:var(--shadow-sm);}
.asm-section-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;}
.asm-section-title{font-size:15px;font-weight:700;color:var(--text);}
.asm-field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;}
.asm-field:last-child{margin-bottom:0;}
.asm-field-row{display:flex;flex-direction:row;align-items:flex-end;gap:20px;flex-wrap:nowrap;}
.asm-name-col{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px;}
.asm-sku-col{flex:1.2;min-width:0;display:flex;flex-direction:column;gap:6px;}
.asm-sku-inline{display:flex;gap:6px;align-items:center;}
.asm-sku-input{flex:1;min-width:0;font-size:13px;padding:7px 10px;}
.asm-global-price{display:flex;gap:12px;align-items:flex-end;flex-shrink:0;}
.asm-gp-field{display:flex;flex-direction:column;gap:3px;}
.asm-gp-label{font-size:11px;color:#64748b;white-space:nowrap;}
.asm-gp-input{width:100px;border:1px solid var(--border);border-radius:8px;padding:7px 10px;font-size:13px;text-align:right;}
.asm-gp-input:focus{border-color:var(--pri);box-shadow:0 0 0 2px rgba(79,70,229,.12);}
.asm-gp-amt{justify-content:flex-end;}
.asm-gp-val{font-weight:700;color:var(--pri);font-size:15px;text-align:right;min-width:80px;}
.asm-label{font-size:13px;color:#475569;font-weight:600;}
.asm-input{border:1px solid var(--border);border-radius:8px;padding:9px 12px;font-size:14px;outline:none;transition:border-color .15s;}
.asm-input:focus{border-color:var(--pri);box-shadow:0 0 0 2px rgba(79,70,229,.12);}
.asm-members{display:flex;flex-direction:column;gap:8px;}
.asm-members-empty{text-align:center;color:var(--muted);padding:24px;border:1px dashed var(--border);border-radius:8px;font-size:13px;}
.asm-member-row{display:flex;align-items:center;gap:12px;padding:10px 12px;background:#f8fafc;border:1px solid var(--border);border-radius:8px;}
.asm-member-idx{width:22px;height:22px;border-radius:50%;background:var(--pri);color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.asm-member-name{flex:1;font-weight:600;font-size:14px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:80px;}
.asm-member-fields{display:flex;gap:12px;align-items:flex-end;flex-shrink:0;}
.asm-mf{display:flex;flex-direction:column;gap:3px;}
.asm-mf-label{font-size:11px;color:#64748b;white-space:nowrap;}
.asm-price-input{width:88px;border:1px solid var(--border);border-radius:6px;padding:6px 8px;font-size:13px;text-align:right;}
.asm-price-input:focus{border-color:var(--pri);box-shadow:0 0 0 2px rgba(79,70,229,.12);}
.asm-mf-readonly{justify-content:flex-end;}
.asm-price-readonly{font-weight:600;color:#475569;font-size:14px;min-width:72px;text-align:right;}
.asm-member-qty{display:flex;align-items:center;gap:4px;flex-shrink:0;}
.asm-qty-btn{width:26px;height:26px;border:1px solid var(--border);background:#fff;border-radius:6px;cursor:pointer;font-size:15px;display:flex;align-items:center;justify-content:center;}
.asm-qty-btn:hover{background:#eef2ff;}
.asm-qty-input{width:64px;text-align:center;border:1px solid var(--border);border-radius:6px;padding:6px 4px;font-size:13px;}
.asm-mf-amt{justify-content:flex-end;}
.asm-member-sub{font-weight:700;color:var(--pri);font-size:14px;text-align:right;min-width:80px;}
.asm-member-del{width:24px;height:24px;border:none;background:none;color:#94a3b8;cursor:pointer;font-size:17px;border-radius:50%;flex-shrink:0;}
.asm-member-del:hover{color:#ef4444;background:#fef2f2;}

/* SKU 属性 */
.asm-skus-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.asm-skus{display:flex;flex-direction:column;gap:8px;}
.asm-skus-empty{text-align:center;color:var(--muted);padding:14px;border:1px dashed var(--border);border-radius:8px;font-size:13px;}
.asm-sku-row{display:flex;align-items:center;gap:8px;}
.asm-sku-name{width:120px;border:1px solid var(--border);border-radius:6px;padding:7px 10px;font-size:13px;font-weight:600;}
.asm-sku-name:focus{border-color:var(--pri);box-shadow:0 0 0 2px rgba(79,70,229,.12);}
.asm-sku-eq{color:#94a3b8;font-size:15px;flex-shrink:0;}
.asm-sku-values{flex:1;border:1px solid var(--border);border-radius:6px;padding:7px 10px;font-size:13px;}
.asm-sku-values:focus{border-color:var(--pri);box-shadow:0 0 0 2px rgba(79,70,229,.12);}
.asm-sku-del{width:24px;height:24px;border:none;background:none;color:#94a3b8;cursor:pointer;font-size:17px;border-radius:50%;flex-shrink:0;}
.asm-sku-del:hover{color:#ef4444;background:#fef2f2;}

/* 卡片 SKU 标签 */
.asm-card-skus{display:flex;flex-wrap:wrap;gap:6px;margin:-4px 0 2px;}
.asm-sku-tag{background:#f1f5f9;color:#475569;font-size:11px;padding:2px 8px;border-radius:12px;}
.asm-sku-tag b{color:#334155;}

/* 价格核算盒 */
.asm-price-box{display:flex;flex-direction:column;gap:10px;}
.asm-price-line{display:flex;align-items:center;justify-content:space-between;font-size:14px;color:#475569;}
.asm-auto-val{font-weight:700;color:#64748b;}
.asm-manual-line{background:#f8fafc;padding:10px 12px;border-radius:8px;}
.asm-manual-wrap{display:flex;align-items:center;gap:4px;font-weight:700;color:var(--text);}
.asm-manual-input{width:120px;border:1px solid var(--border);border-radius:6px;padding:6px 8px;font-size:14px;text-align:right;}
.asm-final-line{border-top:1px dashed var(--border);padding-top:10px;}
.asm-final-val{font-weight:800;color:var(--pri);font-size:17px;}
.asm-price-hint{font-size:12px;color:var(--muted);text-align:right;}

/* 产品选择弹窗 */
.asm-pick-overlay{position:fixed;inset:0;background:rgba(15,23,42,.45);display:flex;align-items:center;justify-content:center;z-index:2000;}
.asm-pick-modal{background:#fff;border-radius:14px;width:min(560px,92vw);max-height:82vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);overflow:hidden;}
.asm-pick-hd{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border);font-size:16px;font-weight:700;}
.asm-pick-close{border:none;background:none;font-size:18px;cursor:pointer;color:#94a3b8;}
.asm-pick-close:hover{color:#ef4444;}
.asm-pick-tools{display:flex;gap:8px;padding:12px 18px;border-bottom:1px solid var(--border);}
.asm-pick-search{flex:1;border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:13px;outline:none;}
.asm-pick-search:focus{border-color:var(--pri);}
.asm-pick-cat{border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:13px;background:#fff;cursor:pointer;}
.asm-pick-list{flex:1;overflow-y:auto;padding:8px 18px;}
.asm-pick-empty{text-align:center;color:var(--muted);padding:30px;font-size:13px;}
.asm-pick-item{display:flex;align-items:center;justify-content:space-between;padding:11px 12px;border:1px solid var(--border);border-radius:8px;margin-bottom:8px;cursor:pointer;transition:border-color .15s,background .15s;}
.asm-pick-item:hover{border-color:#93c5fd;background:#f8fafc;}
.asm-pick-item.added{border-color:var(--green);background:#f0fdf4;}
.asm-pick-info{display:flex;flex-direction:column;gap:2px;}
.asm-pick-name{font-weight:600;font-size:14px;color:var(--text);}
.asm-pick-meta{font-size:12px;color:var(--muted);}
.asm-pick-add{border:1px solid var(--pri);background:var(--pri);color:#fff;border-radius:6px;padding:5px 12px;font-size:12px;cursor:pointer;flex-shrink:0;}
.asm-pick-add:hover{background:var(--pri-hover);}
.asm-pick-item.added .asm-pick-add{background:#fff;color:var(--green);border-color:var(--green);}
.asm-pick-ftr{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--border);}

/* ===== 淘宝风格产品详情页（2026-08-02 改版，功能与按钮保持不变） ===== */
.tb-detail { padding-bottom: 28px; }
.tb-bar { display:flex; align-items:center; gap:12px; margin-bottom:6px; }
.tb-bar .btn { margin-left:auto; }
.tb-main { display:flex; gap:28px; align-items:flex-start; }
/* 图片区：保持原有左图（主图 + 缩略图，最多 5 行滚动）右信息布局 */
.tb-gal { flex:0 0 420px; width:420px; }
.tb-gal-main { width:100%; height:420px; background:#fff; border:1px solid #e9edf3; border-radius:12px; overflow:hidden; display:flex; align-items:center; justify-content:center; }
.tb-gal-main img { width:100%; height:100%; object-fit:contain; }
.tb-thumbs { display:flex; gap:8px; flex-wrap:wrap; margin-top:10px; max-height:calc(5 * 62px + 4 * 8px); overflow-y:auto; padding-right:2px; }
.tb-thumbs::-webkit-scrollbar { width:6px; }
.tb-thumbs::-webkit-scrollbar-thumb { background:#cbd5e1; border-radius:3px; }
.tb-thumb { width:62px; height:62px; object-fit:cover; border:2px solid transparent; border-radius:8px; cursor:pointer; }
.tb-thumb.on { border-color:#ff4400; }
@media (max-width:760px){ .tb-main{flex-direction:column;} .tb-gal{flex:none;width:100%;} .tb-gal-main{height:300px;} }
.tb-info { flex:1; min-width:0; background:#fff; border:1px solid #e9edf3; border-radius:14px; padding:20px 22px; box-shadow:0 2px 10px rgba(0,0,0,.05); box-sizing:border-box; }
.tb-name { font-size:22px; font-weight:700; margin:0 0 12px; line-height:1.35; }
.tb-badges { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:12px; }
.tb-price { color:#ff4400; font-size:30px; font-weight:800; line-height:1; margin-bottom:6px; }
.tb-price .sku-price { color:#ff4400; }

/* ===== 产品详情块（2026-08-02） ===== */
.tb-detail-block{display:flex;flex-direction:column;gap:12px;}
.tb-detail-block .blk{background:#fff;border:1px solid var(--border);border-radius:10px;padding:14px 16px;font-size:14px;line-height:1.65;white-space:pre-wrap;word-break:break-word;}
.tb-detail-block .blk-img{padding:8px;}
.tb-detail-block .blk-img img{max-width:100%;display:block;border-radius:8px;}
.tb-detail-block .blk-caption{color:var(--muted);font-size:12px;text-align:right;margin-top:4px;}
.tb-detail-empty{color:var(--muted);font-size:13px;background:#fff;border:1px dashed var(--border);border-radius:10px;padding:24px;text-align:center;}
/* 分享按钮下拉 */
.share-wrap{position:relative;display:inline-block;}
.share-menu{position:absolute;top:100%;right:0;margin-top:6px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 6px 20px rgba(0,0,0,.12);min-width:180px;padding:6px;z-index:20;display:none;}
.share-menu.on{display:block;}
.share-menu .mi{display:block;width:100%;text-align:left;background:none;border:none;padding:9px 12px;border-radius:6px;font-size:13px;color:var(--text);cursor:pointer;}
.share-menu .mi:hover{background:var(--chip);color:var(--pri);}
/* 编辑器：详情块 */
.eb-list{display:flex;flex-direction:column;gap:8px;margin-bottom:10px;}
.eb-list .eb{background:#fafbff;border:1px solid var(--border);border-radius:8px;padding:10px;display:flex;gap:8px;align-items:flex-start;}
.eb-list .eb .idx{color:var(--muted);font-size:12px;padding-top:6px;flex:0 0 18px;text-align:right;}
.eb-list .eb .bd{flex:1;min-width:0;}
.eb-list .eb textarea{width:100%;min-height:60px;resize:vertical;font:inherit;padding:8px;border:1px solid var(--border);border-radius:6px;background:#fff;}
.eb-list .eb .img-cell{display:flex;gap:8px;align-items:center;background:#fff;border:1px solid var(--border);border-radius:6px;padding:6px;}
.eb-list .eb .img-cell img{width:80px;height:80px;object-fit:cover;border-radius:4px;flex:0 0 80px;}
.eb-list .eb .img-cell .meta{font-size:12px;color:var(--muted);flex:1;min-width:0;line-height:1.5;}
.eb-list .eb .acts{display:flex;flex-direction:column;gap:4px;}
/* 图片选择弹窗 */
.pick-modal{position:fixed;inset:0;background:rgba(0,0,0,.5);display:none;align-items:center;justify-content:center;z-index:100;}
.pick-modal.on{display:flex;}
.pick-modal .box{background:#fff;border-radius:12px;padding:20px 22px;width:min(560px,92%);max-height:80vh;overflow-y:auto;}
.pick-modal h3{margin:0 0 10px;font-size:15px;}
.picker-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;}
.picker-grid img{width:78px;height:78px;object-fit:cover;border-radius:6px;border:2px solid transparent;cursor:pointer;}
.picker-grid img:hover{border-color:var(--pri);}
.picker-empty{color:var(--muted);font-size:13px;padding:14px;text-align:center;}
.picker-upload{margin-top:10px;padding:10px;border:1px dashed var(--border);border-radius:8px;text-align:center;}

/* ===== 产品对比页 ===== */
.cmp-cards{border-collapse:separate;border-spacing:0;width:100%;table-layout:fixed;min-width:680px;background:#fff;border-radius:14px;overflow:hidden;box-shadow:var(--shadow-sm);margin-top:12px;}
.cmp-cards th,.cmp-cards td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:12px;vertical-align:top;text-align:left;font-size:13px;}
.cmp-cards th:last-child,.cmp-cards td:last-child{border-right:none;}
.cmp-cards tr:last-child th,.cmp-cards tr:last-child td{border-bottom:none;}
.cmp-corner{width:88px;background:#f8fafc;}
.cmp-rowh{background:#f8fafc;font-weight:600;color:var(--muted);white-space:nowrap;width:88px;}
.cmp-colhd{background:#f1f5ff;text-align:center;vertical-align:bottom;width:calc((100% - 88px) / var(--cols,1));}
.cmp-colhd.cmp-col-acc{width:calc((100% - 88px) / var(--cols,1));}
.cmp-cards td.cmp-td{width:calc((100% - 88px) / var(--cols,1));}
.cmp-cover{width:100%;height:118px;display:flex;align-items:center;justify-content:center;background:#f6f8fc;border-radius:10px;overflow:hidden;margin-bottom:8px;}
.cmp-cover img{max-width:100%;max-height:100%;object-fit:contain;}
.cmp-noimg{color:var(--muted);font-size:12px;}
.cmp-name{font-weight:700;font-size:14px;line-height:1.35;}
.cmp-td{color:var(--text);}
.cmp-price-cell{font-weight:400;color:var(--text);font-size:12px;line-height:1.5;word-break:break-all;}
.cmp-sum-cell{font-size:12px;line-height:1.5;}
.cmp-grp{color:var(--text);font-weight:400;font-size:12px;word-break:break-all;}
.cmp-grp-sum{color:var(--muted);font-size:11px;margin-top:4px;padding-top:4px;border-top:1px dashed var(--border);}
.cmp-banner{background:#f3f6ff;color:var(--muted);font-size:12px;font-weight:600;letter-spacing:.3px;text-align:left;padding:8px 12px;}
.cmp-type-cell{font-size:12px;font-weight:600;}
.cmp-type-main{color:#1d4ed8;}
.cmp-type-acc{color:#7c3aed;}
.cmp-col-acc{background:#f6f2ff;}
.cmp-col-acc .cmp-cover{background:#efe9ff;}
.cmp-acc-tag{display:inline-block;margin-top:6px;font-size:11px;font-weight:600;color:#7c3aed;background:#ede4ff;border:1px solid #d8c7ff;border-radius:8px;padding:1px 7px;}
.cmp-col-main{box-shadow:inset -3px 0 0 #c9b8ff;}
.cmp-fold-btn{display:inline-flex;align-items:center;gap:4px;margin-top:6px;font-size:11px;color:#7c3aed;background:#ede4ff;border:1px solid #d8c7ff;border-radius:8px;padding:2px 7px;cursor:pointer;}
.cmp-fold-btn:hover{background:#e0d3ff;}
.cmp-fold-note{font-size:11px;color:#7c3aed;background:#f6f2ff;border:1px dashed #d8c7ff;border-radius:8px;padding:4px 8px;margin-top:6px;}

