/* =========================================================
   易货大集 · 公共样式 v3（需求规格：绿色主题）
   三端配色通过 CSS 变量区分：
   - 用户端（默认）: 鲜绿 #15C45B / 背景浅绿 #EEF9F1
   - 商家端 /merchant : 海绿 #2E8B57
   - 管理后台 /admin : 海绿 #2E8B57
   ========================================================= */
:root {
  --primary: #15c45b;          /* 鲜绿 主色（用户端） */
  --primary-2: #34d97b;        /* 亮绿 */
  --primary-deep: #12a04c;     /* 深一档 */
  --primary-soft: #d9f7e5;     /* 浅绿 强调底色 */
  --bg: #ffffff;               /* 页面浅绿背景 */
  --sidebar: #14532d;          /* 后台侧边栏 */
  --sidebar-text: #d9f2e4;
  --text: #1f2937;
  --muted: #9ca3af;
  --price: #f5a623;            /* 强调色 金色 */
  --danger: #ef4444;
  --border: #e5e7eb;
  --card: #ffffff;
}

/* =========================================================
   现代绿主题（前台整体风格一键切换：body.theme-new）
   - 白底近白背景、深绿主色、浅绿点缀，现代商城观感
   - 与经典绿并存，classic=默认（无 body 类），切换由后台「区块→风格」控制
   ========================================================= */
:root {
  /* 经典绿专属变量：模板硬编码色值映射位（classic 完全不变，new 自动切换） */
  --g-deep: #2E8B57;   /* 经典深绿（按钮/主强调） */
  --g-mid: #3da869;    /* 经典中绿（渐变第二段） */
  --g-main: #15c45b;   /* 经典主绿 */
  --g-soft: #d9f7e5;   /* 经典浅绿（浅底色） */
}
body.theme-new {
  --primary: #16a34a;          /* 现代绿 主色 */
  --primary-2: #22c55e;        /* 亮绿 */
  --primary-deep: #15803d;     /* 深一档 */
  --primary-soft: #dcfce7;     /* 浅绿 强调底色 */
  --bg: #f6faf7;               /* 近白 页面背景 */
  --sidebar: #14532d;
  --sidebar-text: #d9f2e4;
  --text: #111827;
  --muted: #94a3b8;
  --price: #16a34a;            /* 价格强调 现代绿 */
  --danger: #ef4444;
  --border: #e5e7eb;
  --card: #ffffff;
  /* 模板硬编码经典绿 → 现代绿 */
  --g-deep: var(--primary-deep);
  --g-mid: var(--primary-2);
  --g-main: var(--primary);
  --g-soft: var(--primary-soft);
}
/* 现代绿下常见模块观感微调（仅颜色/圆角/阴影等外观，不动布局） */
body.theme-new .announce-card,
body.theme-new .md-item,
body.theme-new .goods-card,
body.theme-new .feedback-item,
body.theme-new .order-card { border-radius: 12px; box-shadow: none; }
body.theme-new .section-title { letter-spacing: .2px; }

/* ===== 效果图现代商城风格强化 v2（theme-new 专属；classic 完全不变，一键还原） =====
   参考图基准：白底 + 深色状态栏 + 白色圆角卡片 + 轻阴影 + 金刚区宫格 + 商品卡圆角 */
body.theme-new { --bg: #f7fbf8; }

/* 模块容器：白卡片 + 大圆角 + 轻阴影 + 留白 */
body.theme-new .bp-module {
  border-radius: 16px;
  box-shadow: 0 2px 14px rgba(20,83,45,.07);
  padding: 14px;
}

/* 状态栏：默认融入区块背景色（与区块背景一体）；后台「状态栏底色=深墨绿渐变」时用 .fib-grad */
body.theme-new .bp-fixed-info-bar:not(.fib-grad),
body.theme-new .topbar:not(.fib-grad) {
  background: var(--theme-section-bg, #f3f7f4) !important;
  box-shadow: none;
}
body.theme-new .bp-fixed-info-bar.fib-grad,
body.theme-new .topbar.fib-grad {
  background: linear-gradient(135deg, #14532d, #15803d) !important;
  box-shadow: 0 2px 10px rgba(20,83,45,.25);
}
/* 融入区块背景时，资产卡文字转深色保证可读（全局生效，不依赖 theme-new 壳） */
.bp-fixed-info-bar:not(.fib-grad) .fib-name,
.bp-fixed-info-bar:not(.fib-grad) .fib-coin,
.bp-fixed-info-bar:not(.fib-grad) .fib-coin-num,
.bp-fixed-info-bar:not(.fib-grad) .fib-tag { color: #1f2937; }
.bp-fixed-info-bar:not(.fib-grad) .fib-av { border-color: rgba(20,83,45,.35); background: rgba(20,83,45,.08); color: #14532d; }
.bp-fixed-info-bar:not(.fib-grad) .fib-login-btn { background: #0b7a55; color: #fff; }
/* v906b 状态栏直接在区块内：无悬浮阴影（深绿渐变模式保留原阴影） */
.bp-fixed-info-bar:not(.fib-grad) { box-shadow: none; }
.bp-fixed-info-bar.fib-grad { box-shadow: 0 2px 10px rgba(20,83,45,.25); }

/* 导航条（金刚区）：白卡 + 圆角宫格 */
body.theme-new .bp-navbar {
  background: #fff;
  border-radius: 16px;
  box-shadow: 0 2px 14px rgba(20,83,45,.07);
  padding: 6px;
}
body.theme-new .bp-navbar .nb-item {
  border-radius: 14px;
  background: #f2faf5;
}

/* Banner（宣广图文）：圆角卡片 */
body.theme-new .bp-promoarticle,
body.theme-new .bp-promoarticle img { border-radius: 16px; }
body.theme-new .bp-promoarticle { box-shadow: none; overflow: hidden; }

/* 商品卡：大圆角 + 阴影 + 价格强调 */
body.theme-new .goods-card {
  border-radius: 16px;
  border: 1px solid rgba(20,83,45,.06);
  box-shadow: 0 2px 14px rgba(20,83,45,.08);
}
body.theme-new .goods-card .goods-name { color: #111827; font-weight: 600; }
body.theme-new .goods-card .goods-price { color: var(--price); font-weight: 700; }

/* 底部导航：白底 + 顶部细线 + 阴影 */
body.theme-new .bottom-nav {
  background: #fff;
  border-top: 1px solid rgba(20,83,45,.08);
  box-shadow: 0 -2px 12px rgba(20,83,45,.05);
}

/* 模块标题：现代深绿 */
body.theme-new .al-title,
body.theme-new .section-title { color: #14532d; font-weight: 700; }

/* 列表条目卡片（最新消息/公告/反馈/订单）浅绿点缀 */
body.theme-new .bp-latestnews .list-item,
body.theme-new .bp-artcenter .list-item,
body.theme-new .bp-feedback-center .list-item,
body.theme-new .bp-orderlist .list-item { background: #f7fbf8; border-radius: 12px; padding: 10px 12px; margin-bottom: 8px; }

* { margin:0; padding:0; box-sizing:border-box; }
body { font-family: "PingFang SC","Microsoft YaHei",-apple-system,sans-serif; background:var(--bg); color:var(--text); font-size:14px; -webkit-font-smoothing:antialiased; }
a { color:inherit; text-decoration:none; }
button { font-family:inherit; }
input, textarea, select { font-family:inherit; }

/* ============ 用户端布局 ============ */
.page { max-width: 100%; margin: 0 auto; background:var(--bg); min-height:100vh; padding-bottom:70px; }
.container { padding: 14px; }

/* 顶部信息栏（参考图风格） */
.topbar { background:linear-gradient(135deg,var(--primary),var(--primary-2)); color:#fff; padding:3px 16px; }
.topbar .brand { font-size:14px; font-weight:700; display:flex; align-items:center; gap:6px; }
.topbar .brand small { font-size:11px; font-weight:400; opacity:.9; margin-left:6px; }
.topbar-row { display:flex; align-items:center; justify-content:space-between; margin-top:8px; }
.topbar .user-chip { background:rgba(255,255,255,.16); padding:2px 8px; border-radius:14px; font-size:11px; display:flex; align-items:center; gap:6px; }
.topbar .user-chip .lv { background:#fff; color:var(--primary-deep); border-radius:9px; padding:1px 7px; font-size:10px; font-weight:600; }
.topbar .actions { display:flex; align-items:center; gap:6px; font-size:11px; }
.topbar .actions a, .topbar .actions span { cursor:pointer; opacity:.92; }
.topbar .actions .sep { opacity:.5; }
.topbar-main { justify-content: flex-start; margin-top: 0; gap: 14px; }
.topbar-coin { font-size:11px; font-weight:600; background:rgba(255,255,255,.18); padding:2px 8px; border-radius:12px; white-space:nowrap; margin-left:auto; }

/* 主导航（横排 tabs） */
.main-nav { display:none !important; }
.main-nav .mnav-item { flex:1; min-width:64px; text-align:center; padding:11px 4px; font-size:13px; color:#6b7280; cursor:pointer; white-space:nowrap; border-bottom:2px solid transparent; }
.main-nav .mnav-item.active { color:var(--primary); font-weight:600; border-bottom-color:var(--primary); }

/* 区块标题 */
.section-title { display:flex; align-items:center; justify-content:space-between; margin:16px 14px 10px; font-size:15px; font-weight:600; color:var(--text); }
.section-title .more { font-size:12px; color:var(--muted); font-weight:400; cursor:pointer; }

/* 公告条 */
.announce-card { background:#fff; border-radius:10px; margin:12px 14px 0; padding:12px 14px; box-shadow: none; }
.announce-card .a-item { display:flex; align-items:center; gap:8px; padding:6px 0; border-bottom:1px dashed var(--border); }
.announce-card .a-item:last-child { border-bottom:none; }
.announce-card .a-item .a-tag { background:var(--primary-soft); color:var(--primary-deep); font-size:11px; padding:2px 8px; border-radius:4px; flex-shrink:0; }
/* 文章列表(article_center)分类标签：与后台画布颜色同步 */
.al-list .a-tag { color:#1a9d6b; background:#eaf7ec; font-size:11px; padding:1px 0 1px 2px; border-radius:3px; flex-shrink:0; white-space:nowrap; }
/* 文章列表(article_center)：标题与左边框留出一个字间距（1em≈13px） */
.al-list .a-item { display:flex; align-items:center; gap:0; padding:6px 0 6px 0.5em; border-bottom:1px dashed var(--border); }
.al-list .a-item:last-child { border-bottom:none; }
.al-list .a-item .a-title { font-size:13px; flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.al-list .a-item .a-date { font-size:11px; color:var(--muted); }


.announce-card .a-item .a-title { font-size:13px; flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.announce-card .a-item .a-date { font-size:11px; color:var(--muted); }

/* 资产 + 会员码卡 */
/* 资产 + 会员码卡（参考图2：左=分大字+金币+等级★，右=会员码） */
.asset-card { background:linear-gradient(135deg,var(--primary),var(--primary-2)); color:#fff; border-radius:12px; padding:18px; margin:12px 14px 0; position:relative; overflow:hidden; display:flex; align-items:center; justify-content:space-between; }
.asset-card::after { content:''; position:absolute; right:-30px; top:-30px; width:120px; height:120px; border-radius:50%; background:rgba(255,255,255,.08); }
.asset-card .asset-body { position:relative; z-index:1; }
.asset-card .asset-num { font-size:32px; font-weight:700; line-height:1; }
.asset-card .asset-num .unit { font-size:15px; font-weight:400; opacity:.9; margin-left:3px; }
.asset-card .asset-sub { font-size:13px; opacity:.9; margin-top:8px; }
.asset-card .asset-level { margin-top:10px; display:flex; align-items:center; gap:8px; }
.asset-card .asset-level .lv { background:rgba(255,255,255,.22); padding:1px 10px; border-radius:9px; font-size:12px; }
.asset-card .asset-level .star { color:#fde047; letter-spacing:1px; font-size:12px; }
.asset-card .asset-code { text-align:right; position:relative; z-index:1; }
.asset-card .asset-code .code-title { font-size:12px; opacity:.85; }
.asset-card .asset-code .code-val { font-family:monospace; font-size:13px; font-weight:600; margin-top:8px; background:rgba(255,255,255,.14); padding:4px 10px; border-radius:6px; display:inline-block; }

/* ===== 首页会员信息卡 hero（需求2.2：左公告占大头 / 右资产+会员码并排） ===== */
.hero-card { background:linear-gradient(135deg,#e3f7ea 0%,#ffffff 100%); border:1px solid #bfe6cf; border-radius:14px; margin:12px 14px 0; padding:14px 16px; display:flex; gap:16px; box-shadow: none; }
.hero-left { flex:1.4 1 0; min-width:0; display:flex; flex-direction:column; }
.hero-ann-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:4px; }
.hero-ann-title { font-size:14px; font-weight:700; color:#166534; }
.hero-ann-head .more { font-size:12px; color:#15c45b; cursor:pointer; white-space:nowrap; }
.hero-ann-head .more:hover { text-decoration:underline; }
.hero-left .announce-card { margin:0; padding:6px 2px 0; box-shadow:none; background:transparent; }
.hero-left .announce-card .a-item { padding:6px 0; }
.hero-left .announce-card .a-title { color:#374151; }
.hero-right { flex:1 1 0; min-width:180px; display:flex; align-items:center; justify-content:space-between; gap:12px; background:rgba(255,255,255,.6); border:1px solid #bfe6cf; border-radius:10px; padding:10px 12px; }
.hero-assets { min-width:0; }
.hero-name { font-size:14px; font-weight:700; color:#14532d; margin-bottom:6px; display:flex; align-items:baseline; gap:6px; flex-wrap:wrap; }
.hero-name .hero-phone { font-size:11px; font-weight:400; color:#6b7280; }
.hero-assets .asset-num { font-size:28px; font-weight:800; color:#15c45b; line-height:1; }
.hero-assets .asset-num .unit { font-size:13px; font-weight:400; color:#6b7280; margin-left:2px; }
.hero-assets .asset-sub { font-size:12px; color:#4b5563; margin-top:6px; }
.hero-assets .asset-level { margin-top:8px; display:flex; align-items:center; gap:6px; }
.hero-assets .asset-level .lv { background:linear-gradient(135deg,#15c45b,#0f9f4a); color:#fff; padding:1px 9px; border-radius:9px; font-size:11px; }
.hero-assets .asset-level .star { color:#f5a623; letter-spacing:1px; font-size:12px; }
.hero-code { text-align:center; flex-shrink:0; }
.hero-code .code-title { font-size:11px; color:#6b7280; }
.hero-code .code-val { font-family:monospace; font-size:13px; font-weight:700; margin-top:6px; background:#15c45b; color:#fff; padding:5px 10px; border-radius:8px; display:inline-block; min-width:96px; box-sizing:border-box; }
@media (max-width:640px){ .hero-card { flex-direction:column; } .hero-right { min-width:0; } }

/* 卡片 */
.card { background:var(--card); border-radius:10px; padding:14px; margin:0 14px 12px; box-shadow: none; }
.card-title { font-size:15px; font-weight:600; margin-bottom:10px; }

/* 列表项 */
.list-item { display:flex; align-items:center; justify-content:space-between; padding:11px 0; border-bottom:1px solid #f3f4f6; }
.list-item:last-child { border-bottom:none; }
.list-item .title { font-size:14px; }
.list-item .desc { font-size:12px; color:var(--muted); margin-top:2px; }
.list-item .val { font-weight:600; color:var(--price); }
.muted { color:var(--muted); font-size:12px; }

/* 按钮 */
.btn { display:inline-block; border:none; background:var(--primary); color:#fff; padding:10px 18px; border-radius:8px; font-size:14px; cursor:pointer; text-align:center; }
.btn:disabled { opacity:.5; cursor:not-allowed; }
.btn-block { display:block; width:100%; }
.btn-green { background:var(--primary-2); }
.btn-orange { background:var(--price); }
.btn-gray { background:#e5e7eb; color:var(--text); }
.btn-danger { background:var(--danger); }
.btn-sm { padding:5px 12px; font-size:12px; border-radius:6px; }
.btn-outline { background:transparent; border:1px solid var(--primary); color:var(--primary); }

/* 表单 */
.field { margin-bottom:14px; }
.field label { display:block; font-size:13px; color:#6b7280; margin-bottom:6px; }
.field input, .field textarea, .field select { width:100%; padding:10px; border:1px solid var(--border); border-radius:8px; font-size:14px; }
.field input:focus, .field textarea:focus, .field select:focus { outline:none; border-color:var(--primary); }

/* 网格 */
.grid2 { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.grid3 { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }

/* 商品卡片（热门兑换） */
.goods-card { background:#fff; border-radius:10px; overflow:hidden; box-shadow: none; }
.goods-card img { width:100%; height:96px; object-fit:cover; background:#f3f4f6; }
.goods-card .info { padding:10px; }
.goods-card .name { font-size:13px; font-weight:500; height:36px; overflow:hidden; }
.goods-card .price { color:var(--price); font-weight:700; font-size:15px; margin-top:4px; }
.goods-card .price small { font-weight:400; color:var(--muted); font-size:11px; }
.goods-card .buy-row { display:flex; align-items:center; justify-content:space-between; margin-top:8px; }

/* 商品列表（可兑换商品） */
.goods-list-item { display:flex; gap:10px; padding:10px 0; border-bottom:1px solid #f3f4f6; align-items:center; }
.goods-list-item:last-child { border-bottom:none; }
.goods-list-item img { width:58px; height:58px; object-fit:cover; border-radius:8px; background:#f3f4f6; flex-shrink:0; }
.goods-list-item .g-info { flex:1; min-width:0; }
.goods-list-item .g-name { font-size:13px; font-weight:500; }
.goods-list-item .g-desc { font-size:11px; color:var(--muted); margin-top:2px; }
.goods-list-item .g-price { color:var(--price); font-weight:700; font-size:14px; margin-top:3px; }
.goods-list-item .g-price small { font-weight:400; color:var(--muted); font-size:11px; }
.level-tag { display:inline-block; background:var(--primary-soft); color:var(--primary-deep); font-size:10px; padding:1px 6px; border-radius:4px; }
.level-blocked { background:#fef3c7; color:#b45309; }

/* 热门兑换（参考图2：3列卡片） */
.hot-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.hot-card { background:#fff; border-radius:10px; padding:12px 10px; box-shadow: none; text-align:center; }
.hot-card .h-name { font-size:13px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.hot-card .h-price { color:var(--price); font-weight:700; font-size:15px; margin-top:6px; }
.hot-card .h-btn { margin-top:8px; width:100%; background:var(--primary); color:#fff; border:none; border-radius:6px; padding:6px 0; font-size:13px; cursor:pointer; }
.hot-card .h-lv { font-size:11px; color:#b45309; margin-top:6px; background:#fef3c7; border-radius:4px; padding:2px 0; }
.hot-card .h-lock { font-size:11px; color:#b91c1c; margin-top:4px; }
.hot-card.locked .h-name { color:#6b7280; }

/* 可兑换商品（参考图2：2列卡片） */
.goods-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.g-tile { background:#fff; border-radius:10px; padding:12px; box-shadow: none; display:flex; flex-direction:column; }
.g-tile .g-tile-top { display:flex; align-items:center; gap:6px; margin-bottom:6px; }
.g-tile .g-tag { background:var(--primary-soft); color:var(--primary-deep); font-size:11px; padding:2px 8px; border-radius:4px; }
.g-tile .g-tile-name { font-size:14px; font-weight:600; }
.g-tile .g-tile-desc { font-size:11px; color:var(--muted); margin-top:3px; }
.g-tile .g-tile-bottom { display:flex; align-items:center; justify-content:space-between; margin-top:8px; }
.g-tile .g-price { color:var(--price); font-weight:700; font-size:15px; }
.g-tile .g-stock { font-size:11px; color:var(--muted); }
.g-tile .btn { margin-top:10px; }

/* 底部导航 */
.bottom-nav { position:fixed; bottom:0; left:0; right:0; background:#fff; display:flex; border-top:1px solid var(--border); z-index:100; }
.bottom-nav .nav-item { flex:1; text-align:center; padding:7px 0 9px; font-size:11px; color:var(--muted); cursor:pointer; }
.bottom-nav .nav-item.active { color:var(--primary); font-weight:600; }
.bottom-nav .nav-item .icon { font-size:19px; display:block; margin-bottom:2px; }

/* 表格 */
table.data { width:100%; border-collapse:collapse; background:#fff; }
table.data th, table.data td { border-bottom:1px solid #f3f4f6; padding:10px; text-align:left; font-size:13px; }
table.data th { background:#f9fafb; color:#6b7280; font-weight:500; white-space:nowrap; }
.badge { display:inline-block; padding:2px 8px; border-radius:10px; font-size:11px; }
.badge-green { background:#d1fae5; color:#065f46; }
.badge-orange { background:#fef3c7; color:#b45309; }
.badge-red { background:#fee2e2; color:#b91c1c; }
.badge-gray { background:#f3f4f6; color:#6b7280; }
.badge-blue { background:#dbeafe; color:#1d4ed8; }

/* 弹窗 */
.modal-mask { position:fixed; inset:0; background:rgba(0,0,0,.5); display:none; align-items:center; justify-content:center; z-index:1100; padding:20px; }
.modal-mask.show { display:flex; }
.modal { background:#fff; border-radius:12px; width:100%; max-width:420px; max-height:85vh; overflow:auto; padding:20px; }
.modal h3 { margin-bottom:14px; }

/* 工具 */
.hidden { display:none !important; }
.text-center { text-align:center; }
.mt10 { margin-top:10px; } .mt16 { margin-top:16px; } .mb10 { margin-bottom:10px; }
.flex { display:flex; align-items:center; gap:10px; }
.justify-between { justify-content:space-between; }
.grow { flex:1; }

/* 状态页 */
.empty { text-align:center; color:var(--muted); padding:36px 0; }
.empty .icon { font-size:38px; margin-bottom:8px; }

/* 二维码区 */
.qr-box { text-align:center; padding:12px; }
.qr-box canvas, .qr-box img { display:inline-block; }
.qr-text { margin-top:8px; font-size:12px; color:var(--muted); word-break:break-all; }

/* 富文本内容 */
.rich-content { line-height:1.7; font-size:14px; }
.rich-content img { max-width:100%; }

/* 登录页 hero */
.hero { padding:52px 20px 34px; text-align:center; color:#fff; background:linear-gradient(135deg,var(--primary),var(--primary-2)); }
.hero h1 { font-size:26px; }
.hero p { margin-top:8px; opacity:.88; }

/* 等级徽章 */
.lv-badge { display:inline-flex; align-items:center; gap:4px; background:var(--primary-soft); color:var(--primary-deep); padding:2px 8px; border-radius:10px; font-size:12px; font-weight:600; }
.star-row { color:#f59e0b; font-size:12px; letter-spacing:1px; }

/* 统计卡（后台） */
.stats-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:16px; }
.stat-card { background:#fff; border-radius:10px; padding:16px; box-shadow: none; border-top:3px solid var(--primary); }
.stat-card .num { font-size:24px; font-weight:700; color:var(--primary); }
.stat-card .lbl { font-size:12px; color:var(--muted); margin-top:4px; }

/* 后台布局 */
.admin-layout { display:flex; min-height:100vh; }
.admin-side { width:190px; background:var(--sidebar); color:#fff; padding:0; flex-shrink:0; overflow-y:auto; }
.admin-side .logo { padding:18px 18px; font-size:15px; font-weight:700; border-bottom:1px solid rgba(255,255,255,.12); color:#fff; }
.admin-side .menu-group-title { padding:12px 18px 6px; font-size:11px; color:rgba(255,255,255,.45); text-transform:uppercase; }
.admin-side .menu-item { padding:10px 18px; cursor:pointer; font-size:13px; color:var(--sidebar-text); display:flex; align-items:center; gap:8px; }
.admin-side .menu-item:hover, .admin-side .menu-item.active { background:rgba(255,255,255,.12); color:#fff; }
.admin-main { flex:1; padding:18px; min-width:0; }
.admin-main h2 { margin-bottom:14px; font-size:17px; color:var(--primary-deep); }
.toolbar { display:flex; gap:10px; margin-bottom:14px; flex-wrap:wrap; align-items:center; }
.toolbar input { padding:8px 10px; border:1px solid var(--border); border-radius:6px; font-size:13px; }

/* 后台顶部 */
.admin-topbar { background:linear-gradient(135deg,var(--primary),var(--primary-2)); color:#fff; padding:10px 18px; display:flex; align-items:center; justify-content:space-between; }
.admin-topbar .brand { font-size:15px; font-weight:700; }
.admin-topbar .user-chip { background:rgba(255,255,255,.16); padding:3px 10px; border-radius:14px; font-size:12px; }
.admin-topbar .actions { display:flex; gap:10px; font-size:12px; align-items:center; }
.admin-topbar .actions a, .admin-topbar .actions span { cursor:pointer; opacity:.92; }

/* =========================================================
   统一富文本编辑器（rte.js）样式
   ========================================================= */
.rte-wrap { border:1px solid var(--border); border-radius:8px; background:#fff; overflow:hidden; }
.rte-bar { display:flex; flex-wrap:wrap; gap:4px; padding:6px 8px; background:#f7f8fa; border-bottom:1px solid var(--border); position:relative; }
.rte-fontbar { display:flex; gap:4px; flex-wrap:nowrap; align-items:center; }
.rte-btn { min-width:28px; height:28px; padding:0 8px; border:1px solid var(--border); border-radius:4px; background:#fff; cursor:pointer; font-size:13px; color:var(--text); }
.rte-btn:hover { background:var(--primary-soft); }
.rte-sel { height:28px; border:1px solid var(--border); border-radius:4px; font-size:12px; background:#fff; color:#333; }
.rte-editor { padding:10px 12px; min-height:180px; outline:none; font-size:16px; line-height:1.7; word-break:break-word; }
.rte-editor:empty:before { content:attr(data-placeholder); color:#c0c4cc; }
.rte-editor img { max-width:100%; border-radius:6px; }
.rte-editor table { border-collapse:collapse; width:100%; }
.rte-editor table td, .rte-editor table th { border:1px solid #d0d7de; padding:6px; }
.rte-colorpanel { position:absolute; top:38px; left:8px; z-index:60; width:280px; background:#fff; border:1px solid var(--border); border-radius:8px; box-shadow:0 4px 16px rgba(0,0,0,.12); padding:10px; }
.rte-csw { display:inline-block; width:20px; height:20px; border-radius:4px; margin:2px; cursor:pointer; border:1px solid rgba(0,0,0,.15); vertical-align:top; }
.rte-csw:hover { transform:scale(1.15); }
.rte-cp-title { font-size:12px; color:var(--muted); margin:8px 0 4px; }
.rte-pop { position:absolute; z-index:60; background:#fff; border:1px solid var(--border); border-radius:8px; box-shadow:0 4px 16px rgba(0,0,0,.12); min-width:96px; padding:4px 0; }
.rte-pop-item { padding:6px 14px; font-size:13px; color:var(--text); cursor:pointer; white-space:nowrap; }
.rte-pop-item:hover { background:var(--primary-soft); }

/* 商城分类筛选 */
.cat-tabs { display:flex; flex-wrap:wrap; gap:6px; padding:10px 12px 4px; }
.cat-tab { padding:4px 12px; border-radius:14px; font-size:12px; background:#fff; border:1px solid var(--border); color:var(--muted); cursor:pointer; }
.cat-tab.active { background:var(--primary); border-color:var(--primary); color:#fff; font-weight:600; }

/* ===== 搭积木首页：快捷入口 / 兑换说明 / 模块容器 ===== */
.home-mod { display:block; }

/* 积分明细收支汇总（需求2.10） */
.sum-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-bottom:10px; }
.sum-card { background:#f7faf7; border:1px solid #e6efe7; border-radius:8px; padding:10px; text-align:center; }
.sum-card .sum-num { font-size:20px; font-weight:800; color:#15c45b; }
.sum-card .sum-lbl { font-size:11px; color:#6b7280; margin-top:3px; }

/* 我的易货状态计数 + 详情（需求2.15） */
.barter-count { display:inline-flex; gap:6px; margin-left:6px; vertical-align:middle; }
.bc { font-size:10px; padding:2px 8px; border-radius:10px; }
.bc-orange { background:#ffedd5; color:#c2410c; }
.bc-green { background:#d8f3e2; color:#2E8B57; }
.bc-red { background:#fee2e2; color:#b91c1c; }

/* 公告列表页（需求2.14） */

/* 图片列表模块：后台图文中心图片卡片网格 */
.bp-imagelist .ilt-grid { display:grid; gap:8px; padding:4px 0; }
.bp-imagelist .ilt-card { background:#fff; border:1px solid var(--border, #e5e7eb); border-radius:8px; overflow:hidden; }
.bp-imagelist .ilt-card img { width:100%; aspect-ratio:1 / 1; object-fit:cover; display:block; }
.bp-imagelist .ilt-card .ilt-card-ph { width:100%; aspect-ratio:1 / 1; display:flex; align-items:center; justify-content:center; background:#f0f0f0; color:#999; font-size:12px; }
.bp-imagelist .ilt-card .ilt-title { font-size:12px; padding:6px 8px; color:#333; line-height:1.3; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.bp-imagelist .ilt-card.ilt-clickable { cursor:pointer; transition:box-shadow .15s, transform .15s; }
.bp-imagelist .ilt-card.ilt-clickable:active { transform:scale(.98); }
.bp-imagelist .ilt-card.ilt-clickable:hover { box-shadow:0 4px 14px rgba(0,0,0,.12); }

/* 宣广图文模块：后台富文本宣传图文卡片网格 */
.bp-promoarticle .pa-grid { display:grid; gap:8px; padding:4px 0; }
.bp-promoarticle .pa-card { background:#fff; border:1px solid var(--border, #e5e7eb); border-radius:8px; overflow:hidden; cursor:pointer; transition:box-shadow .15s, transform .15s; }
.bp-promoarticle .pa-card:active { transform:scale(.98); }
.bp-promoarticle .pa-card:hover { box-shadow: none; }
.bp-promoarticle .pa-card-img { width:100%; aspect-ratio:16 / 9; object-fit:cover; display:block; }
.bp-promoarticle .pa-card-ph { width:100%; aspect-ratio:16 / 9; display:flex; align-items:center; justify-content:center; background:#f0f0f0; color:#999; font-size:12px; }
.bp-promoarticle .pa-card-title { font-size:13px; padding:7px 8px 2px; color:#222; font-weight:600; line-height:1.3; display:-webkit-box; -webkit-line-clamp:1; -webkit-box-orient:vertical; overflow:hidden; }
.bp-promoarticle .pa-card-summary { font-size:12px; padding:0 8px 8px; color:#666; line-height:1.4; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }

/* 宣广图文：多图幻灯片 + 轮播 */
.pa-slidewrap { position:relative; }
.pa-slides { position:relative; width:100%; aspect-ratio:16 / 9; overflow:hidden; background:#f0f0f0; }
.pa-slide { position:absolute; inset:0; background-size:cover; background-position:center; opacity:0; }
.pa-slide.active { opacity:1; }
.pa-dots { position:absolute; left:0; right:0; bottom:6px; display:flex; gap:5px; justify-content:center; z-index:2; }
.pa-dots span { width:6px; height:6px; border-radius:50%; background:rgba(255,255,255,.55); cursor:pointer; }
.pa-dots span.on { background:#fff; }
.bp-promoarticle .pa-carousel { position:relative; width:100%; height:220px; overflow:hidden; border-radius:10px; background:#000; }
.bp-promoarticle .pa-cslides { position:relative; width:100%; height:100%; }
.bp-promoarticle .pa-cslide { position:absolute; inset:0; background-size:cover; background-position:center; opacity:0; display:flex; align-items:flex-end; }
.bp-promoarticle .pa-cslide.active { opacity:1; }
.bp-promoarticle .pa-carousel.transition-flip .pa-cslides { perspective:900px; }
.bp-promoarticle .pa-slides.transition-flip { perspective:900px; }
/* 8 种切换动画（同时作用于轮播 .pa-cslide 与网格卡多图 .pa-slide） */
.transition-fade .pa-cslide.active, .transition-fade .pa-slide.active { animation: paFade .7s ease both; }
.transition-slide .pa-cslide.active, .transition-slide .pa-slide.active { animation: paSlideL .6s ease both; }
.transition-slideup .pa-cslide.active, .transition-slideup .pa-slide.active { animation: paSlideUp .6s ease both; }
.transition-zoom .pa-cslide.active, .transition-zoom .pa-slide.active { animation: paZoom .6s ease both; }
.transition-flip .pa-cslide.active, .transition-flip .pa-slide.active { animation: paFlip .7s ease both; backface-visibility:hidden; }
.transition-push .pa-cslide.active, .transition-push .pa-slide.active { animation: paPush .6s ease both; }
.transition-blur .pa-cslide.active, .transition-blur .pa-slide.active { animation: paBlur .7s ease both; }
.transition-rotate .pa-cslide.active, .transition-rotate .pa-slide.active { animation: paRotate .7s ease both; }
@keyframes paFade { from {opacity:0} to {opacity:1} }
@keyframes paSlideL { from {opacity:1; transform:translateX(100%)} to {opacity:1; transform:translateX(0)} }
@keyframes paSlideUp { from {opacity:1; transform:translateY(100%)} to {opacity:1; transform:translateY(0)} }
@keyframes paZoom { from {opacity:0; transform:scale(.6)} to {opacity:1; transform:scale(1)} }
@keyframes paFlip { from {opacity:0; transform:rotateY(90deg)} to {opacity:1; transform:rotateY(0)} }
@keyframes paPush { from {opacity:1; transform:translateX(55%) scale(.92)} to {opacity:1; transform:translateX(0) scale(1)} }
@keyframes paBlur { from {opacity:0; filter:blur(14px)} to {opacity:1; filter:blur(0)} }
@keyframes paRotate { from {opacity:0; transform:rotate(-18deg) scale(.82)} to {opacity:1; transform:rotate(0) scale(1)} }
.bp-promoarticle .pa-caption { width:100%; padding:10px 14px; background:linear-gradient(transparent, rgba(0,0,0,.6)); color:#fff; font-size:14px; font-weight:600; text-shadow:0 1px 2px rgba(0,0,0,.4); }
.bp-promoarticle .pa-cprev, .bp-promoarticle .pa-cnext { position:absolute; top:50%; transform:translateY(-50%); width:30px; height:30px; border-radius:50%; border:none; background:rgba(0,0,0,.35); color:#fff; font-size:18px; line-height:1; cursor:pointer; z-index:3; }
.bp-promoarticle .pa-cprev { left:8px; } .bp-promoarticle .pa-cnext { right:8px; }
.bp-promoarticle .pa-cdots { position:absolute; left:0; right:0; bottom:8px; display:flex; gap:6px; justify-content:center; z-index:3; }
.bp-promoarticle .pa-cdots span { width:8px; height:8px; border-radius:50%; background:rgba(255,255,255,.5); cursor:pointer; }
.bp-promoarticle .pa-cdots span.on { background:#fff; width:18px; border-radius:4px; }

/* 图片列表：点击查看详图弹层 */
.modal-img-detail { position:fixed; inset:0; z-index:9999; display:none; align-items:center; justify-content:center; }
.modal-img-detail .mid-backdrop { position:absolute; inset:0; background:rgba(0,0,0,.72); }
.modal-img-detail .mid-box { position:relative; max-width:92vw; max-height:92vh; display:flex; flex-direction:column; align-items:center; }
.modal-img-detail .mid-img { max-width:92vw; max-height:82vh; border-radius:10px; background:#fff; box-shadow:0 12px 44px rgba(0,0,0,.45); object-fit:contain; }
.modal-img-detail .mid-cap { color:#fff; margin-top:10px; font-size:14px; text-align:center; padding:0 12px; max-width:92vw; }
.modal-img-detail .mid-close { position:absolute; top:-14px; right:-14px; width:20px; height:20px; border-radius:3px; border:none; background:#ef4444; color:#fff; font-size:14px; line-height:1; cursor:pointer; box-shadow:0 2px 8px rgba(0,0,0,.3); }

/* 用户反馈提交 / 用户反馈列表 模块 */
.bp-feedbacklist .fbs-box, .bp-feedbackmy { padding:4px 0; }
.fbs-list { margin-top:10px; display:flex; flex-direction:column; gap:8px; }
.fbs-item { background:#fff; border:1px solid var(--border,#e5e7eb); border-radius:8px; padding:10px; }
.fbs-head { display:flex; align-items:center; gap:8px; margin-bottom:6px; }
.fbs-time { margin-left:auto; font-size:11px; color:#9ca3af; }
.fbs-content { font-size:13px; color:#333; line-height:1.5; word-break:break-word; }
.fbs-reply { margin-top:6px; font-size:12px; color:var(--primary-deep,#15c45b); background:#f0fdf4; border-radius:6px; padding:6px 8px; }
.bp-feedbackmy .text-center { margin-top:8px; }
/* 文章详情弹层富文本内容 */
.rich-content { font-size:14px; line-height:1.8; color:#374151; word-break:break-word; }
.rich-content img { max-width:100%; border-radius:8px; }
.a-full { border-bottom:1px dashed var(--border); padding:10px 4px; }
.a-full:last-child { border-bottom:none; }
.a-full-head { display:flex; align-items:center; gap:8px; cursor:pointer; }
.a-full-title { font-size:14px; font-weight:600; flex:1; color:#111827; }
.a-full .a-date { font-size:11px; color:var(--muted); }
.a-full-body { padding:10px 4px 4px; font-size:13px; line-height:1.8; color:#374151; }
.quick-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.quick-item { background:#fff; border:1px solid #e6f1e9; border-radius:10px; padding:14px 6px; text-align:center; cursor:pointer; transition:transform .15s; }
.quick-item:hover { transform:translateY(-2px); box-shadow:0 3px 10px rgba(21,196,91,.12); }
.quick-item .qi-icon { font-size:24px; }
.quick-item .qi-name { font-size:12px; color:#2d3a33; margin-top:6px; }
.note-box { border:1px solid #15c45b; border-radius:8px; padding:10px 14px; margin-bottom:12px; background:#f2fcf6; color:#1f2937; font-size:13px; line-height:1.7; }

/* ========== 页面搭建渲染引擎 ========== */
.bp-module { background: var(--theme-card-bg, #fff); border: 0; border-radius: 8px; padding: 10px; margin-bottom: 0; box-shadow: none; height: 100%; box-sizing: border-box; overflow: hidden; }
.bp-module .mod-title { font-size: 14px; font-weight: 600; color: #2E8B57; margin-bottom: 8px; padding-bottom: 6px; border-bottom: 1px solid #f0f0f0; }
.bp-col { box-sizing: border-box; }
.bp-row { align-items: stretch; }
/* 用户信息码模块：居中展示会员固定二维码 + 手机号/编号紧凑信息行 */
.bp-userqr .bp-userqr-card { padding: 4px 0 2px; }
.bp-userqr .uq-wrap { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 8px 0 4px; }
.bp-userqr .uq-code { padding: 8px; background: #fff; border: 1px solid #e5e7eb; border-radius: 8px; box-shadow: none; line-height: 0; }
.bp-userqr .uq-code canvas, .bp-userqr .uq-code img { display: block; }
.bp-userqr .uq-meta { font-size: 13px; font-weight: 600; color: #333; display: flex; align-items: center; gap: 6px; }
.bp-userqr .uq-sep { color: #d1d5db; font-weight: 400; }
.bp-userqr .uq-tip { font-size: 11px; color: #9ca3af; text-align: center; line-height: 1.5; }
/* 分享链接 独立模块（page-mine 顶部） */
/* 分享链接模块（页面搭建）：说明文字 + 名片按钮 + 邀请链接行（页面搭建独立模块，勿与旧硬编码样式混用） */
.bp-sharelink-card { padding: 4px 2px 2px; }
.bp-sharelink-card .bsl-desc { font-size: 13px; color: #555; line-height: 1.55; margin-bottom: 10px; }
.bp-sharelink-card .bsl-btn { display: block; width: 100%; box-sizing: border-box; margin-bottom: 12px; background: #E8F5E9; color: #2E7D32; border: 1px dashed #4CAF50; font-size: 15px; font-weight: 600; padding: 12px; border-radius: 8px; cursor: pointer; }
.bp-sharelink-card .bsl-linkrow { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 0 2px; border-top: 1px dashed #ececec; }
.bp-sharelink-card .bsl-linkmain { min-width: 0; }
.bp-sharelink-card .bsl-linktitle { font-size: 13px; font-weight: 600; color: #333; }
.bp-sharelink-card .bsl-linkval { font-size: 11px; color: #999; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bp-sharelink-card .bsl-copy { flex: 0 0 auto; }
/* 用户信息模块：按行展示会员信息（头像/昵称/名称/手机号/角色/等级/有效期/币种） */
.bp-userinfo-card { padding: 6px 10px 8px; }
/* 用户信息横排流式布局：默认全部挤一行，拖窄模块自动换行（行数随宽度变） */
.ui-wrap { display: flex; flex-wrap: wrap; gap: 4px 6px; padding: 1px 0 2px; }
.ui-row { display: inline-flex; align-items: center; gap: 4px; padding: 2px 7px; background: #f7f8fa; border: 1px solid #ececec; border-radius: 999px; white-space: nowrap; }
.ui-label { font-size: 0.92em; color: #999; }
/* 「会员名称」字段加粗默认色，颜色由 settings.nameColor 通过行内 style 控制（默认 #d84315） */
.ui-label-name { font-weight: 600; }
.ui-val { font-size: 1em; color: #333; display: inline-flex; align-items: center; gap: 4px; min-width: 0; }
.ui-val-name { font-weight: 600; }
.ui-avatar { width: 22px; height: 22px; border-radius: 50%; object-fit: cover; display: block; }
.ui-avatar-empty { display: flex; align-items: center; justify-content: center; background: #e8f5e9; color: #4caf50; font-size: 11px; font-weight: 600; }
/* 用户信息「身份」行：多个身份卡 + 各自等级 + 币种余额，允许换行 */
.ui-row-id { white-space: normal; border-radius: 10px; align-items: flex-start; }
.ui-id-list { display: flex; flex-direction: column; gap: 4px; }
.ui-id-item { display: flex; align-items: baseline; gap: 6px 10px; flex-wrap: wrap; line-height: 1.5; }
.ui-id-role { font-weight: 600; color: #333; }
.ui-id-lv { color: #666; }
.ui-id-time { color: #9ca3af; font-size: .92em; }
.ui-id-coin { color: #256b43; font-size: .92em; }
.ui-edit-btn { flex: 0 0 auto; font-size: 10px; padding: 1px 6px; }
/* 货币使用清单模块（原积分明细）：流水行（币种徽章+类型徽章+缘由 | 时间·余额 ｜ ±N单位红绿），复刻后台「积分明细」观感 */
.bp-pointsdetail-card { padding: 2px 12px; }
.pd-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px dashed #ececec; min-width: 0; }
.pd-row:last-child { border-bottom: none; }
.pd-main { flex: 1; min-width: 0; }
.pd-title { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-weight: 600; color: #333; line-height: 1.4; }
.pd-badge { flex: none; }
.pd-coin { flex: none; background: #eef1f5; color: #5a6b7f; font-weight: 600; }
.pd-note { font-weight: 400; color: #555; min-width: 0; word-break: break-all; }
.pd-desc { font-size: 0.85em; color: #999; margin-top: 3px; line-height: 1.4; word-break: break-all; }
.pd-val { flex: none; font-size: 1.05em; font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1.5; padding-top: 1px; }
.pd-in { color: #15c45b; }
.pd-out { color: #ef4444; }
/* 兑换充值模块：卡密兑换 / 积分转换 / 充值 三个操作分区（独立 exr- 前缀，不复用其它模块样式） */
.bp-excharge-card { padding: 2px 12px; }
.exr-sec { padding: 8px 0; border-bottom: 1px dashed #ececec; }
.exr-sec:last-child { border-bottom: none; }
.exr-sec-title { font-weight: 600; color: #333; line-height: 1.4; margin-bottom: 6px; }
.exr-row { display: flex; align-items: center; gap: 6px; margin-top: 6px; }
.exr-input { flex: 1; min-width: 0; height: 32px; border: 1px solid #d7ded7; border-radius: 8px; padding: 0 10px; font-size: 1em; color: #333; background: #fff; }
.exr-input:disabled { background: #f7f8fa; color: #999; }
.exr-btn { flex: none; }
.exr-item { padding: 8px 0; border-bottom: 1px dashed #f2f2f2; }
.exr-item:last-child { border-bottom: none; }
.exr-item-title { font-weight: 600; color: #333; line-height: 1.4; }
.exr-item-desc { font-size: 0.85em; color: #999; margin-top: 2px; line-height: 1.4; }
.exr-prev { font-size: 0.85em; color: #15c45b; margin-top: 4px; min-height: 1.2em; }
.exr-pay { padding: 6px 0 10px; }
.exr-pay-qr { display: inline-block; text-align: center; margin-right: 14px; vertical-align: top; }
.exr-pay-qr img { width: 120px; height: 120px; border-radius: 8px; object-fit: cover; background: #f5f5f5; }
.exr-pay-note { font-size: 0.85em; line-height: 1.5; margin-top: 4px; }
.exr-tiers { font-size: 0.85em; color: #888; margin-top: 6px; }
.exr-tier { display: inline-block; margin: 0 6px 4px 0; padding: 2px 8px; border: 1px solid #d7ded7; border-radius: 10px; cursor: pointer; color: #555; background: #fff; }
.exr-log { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 6px 0; border-bottom: 1px dashed #f2f2f2; font-size: 0.95em; }
.exr-log:last-child { border-bottom: none; }
.exr-log .muted { font-size: 0.85em; color: #999; }
/* 后台属性面板：信息项排序/显隐行 */
.pb-ui-row { display: flex; align-items: center; gap: 6px; padding: 4px 0; }
.pb-ui-btns { display: flex; gap: 2px; }
/* 后台属性面板：手动易货字段配置行（两行式，避免横向溢出被裁） */
.pb-mbf-row { border: 1px solid #eef2f7; border-radius: 6px; padding: 6px; margin-bottom: 6px; background: #fcfdfe; }
.pb-mbf-line { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.pb-mbf-line + .pb-mbf-line { margin-top: 6px; }
.pb-mbf-flags { gap: 12px; }
.pb-mbf-flags .pb-check { white-space: nowrap; font-size: 12px; }
.pb-mbf-row .pb-ui-label-input, .pb-mbf-row .pb-ui-label-fixed { flex: 1 1 80px; min-width: 60px; }
.pb-mbf-row .pb-ui-type { flex: 0 0 auto; }
.bp-member .hero-card { display: flex; gap: 12px; background: linear-gradient(135deg, #f0faf3 0%, #e8f5e9 100%); border-radius: 8px; padding: 12px; }
.bp-member .hero-left { flex: 1.5; }
.bp-member .hero-right { flex: 1; display: flex; flex-direction: column; gap: 8px; }
.bp-member .hero-assets { background: #fff; border-radius: 6px; padding: 10px; }
.bp-member .hero-name { font-size: 14px; font-weight: 600; margin-bottom: 6px; }
.bp-member .hero-phone { font-size: 11px; color: #999; margin-left: 6px; }
.bp-member .asset-num { font-size: 22px; font-weight: 700; color: #2E8B57; }
.bp-member .asset-num .unit { font-size: 12px; color: #999; margin-left: 2px; }
.bp-member .asset-sub { font-size: 12px; color: #666; margin: 4px 0; }
.bp-member .asset-level { font-size: 12px; }
.bp-member .asset-level .lv { background: #2E8B57; color: #fff; padding: 1px 6px; border-radius: 3px; font-size: 11px; margin-right: 4px; }
.bp-member .asset-level .star { color: #f59e0b; }
.bp-member .hero-code { background: #fff; border-radius: 6px; padding: 8px; text-align: center; }
.bp-member .code-title { font-size: 11px; color: #999; margin-bottom: 4px; }
.bp-member .hero-ann-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
.bp-member .hero-ann-title { font-size: 13px; font-weight: 600; color: #2E8B57; }
.bp-member .more { font-size: 11px; color: #2E8B57; cursor: pointer; }
.ann-item { padding: 5px 0; font-size: 12px; color: #444; border-bottom: 1px solid #f5f5f5; display: flex; align-items: center; gap: 6px; }
.ann-item:last-child { border-bottom: none; }
.ann-tag { background: #e8f5e9; color: #2E8B57; font-size: 10px; padding: 1px 4px; border-radius: 2px; flex-shrink: 0; }
.ann-date { font-size: 10px; color: #ccc; margin-left: auto; }
.goods-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.goods-card { background: #fafafa; border-radius: 6px; overflow: hidden; cursor: pointer; transition: transform 0.15s; }
.goods-card:hover { transform: translateY(-2px); }
.goods-img { width: 100%; aspect-ratio: 1; background: #f0f0f0; display: flex; align-items: center; justify-content: center; }
.goods-img img { width: 100%; height: 100%; object-fit: cover; }
.goods-placeholder { font-size: 11px; color: #ccc; }
.goods-name { font-size: 11px; padding: 4px 6px 0; color: #333; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.goods-price { font-size: 12px; font-weight: 600; color: #2E8B57; padding: 2px 6px 6px; }
.bp-topnav .main-nav, .bp-bottomnav .bottom-nav { display: flex; justify-content: space-around; background: #fff; border-radius: 8px; padding: 8px 0; }
.bp-topnav .mnav-item, .bp-bottomnav .mnav-item { text-align: center; cursor: pointer; font-size: 12px; color: #666; padding: 4px 8px; border-radius: 4px; }
.bp-topnav .mnav-item:hover, .bp-bottomnav .mnav-item:hover { background: #f0faf3; color: #2E8B57; }
.bp-bottomnav .mnav-icon { font-size: 18px; margin-bottom: 2px; }
/* 会员登录模块 */
.bp-memberlogin .ml-card { padding: 12px; }
.ml-desc-html { font-size: 13px; color: #555; line-height: 1.6; margin-bottom: 10px; }
.ml-desc-html img { max-width: 100%; height: auto; }
.ml-forgot-link { text-align: right; font-size: 12px; color: #2E8B57; margin-top: 8px; cursor: pointer; }
.bp-memberlogin .ml-tabs { display: flex; border-bottom: 1px solid #eee; margin-bottom: 10px; }
.bp-memberlogin .ml-tab { flex: 1; text-align: center; padding: 8px 0; font-size: 14px; color: #888; cursor: pointer; }
.bp-memberlogin .ml-tab.active { color: #333; font-weight: bold; border-bottom: 2px solid #4b5563; margin-bottom: -1px; }
.bp-memberlogin .ml-pane { display: flex; flex-direction: column; gap: 8px; }
.bp-memberlogin .ml-input { padding: 10px 12px; border: 1px solid #e5e7eb; border-radius: 8px; font-size: 14px; box-sizing: border-box; width: 100%; }
.bp-memberlogin .ml-btn { width: 100%; margin-top: 4px; }
.bp-memberlogin .ml-agree { font-size: 12px; color: #666; display: flex; align-items: center; gap: 6px; }
.bp-memberlogin .ml-logged { text-align: center; padding: 8px 0; }
.bp-memberlogin .ml-hi { font-size: 16px; font-weight: bold; margin-bottom: 4px; }
/* 扫码识别模块：扫码框 / 视频 / 占位 / 按钮 / 价格输入（中性灰，尺寸由内联 style 控制） */
.bp-scanrec .sr-box { position: relative; margin: 0 auto 10px; background: #111; border-radius: 8px; overflow: hidden; }
.bp-scanrec .sr-video { width: 100%; height: 100%; object-fit: cover; display: none; background: #111; }
.bp-scanrec .sr-canvas { display: none; }
.bp-scanrec .sr-placeholder { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #bbb; font-size: 13px; text-align: center; padding: 10px; }
.bp-scanrec .sr-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.bp-scanrec .sr-btn { flex: 1; min-width: 90px; }
.bp-scanrec .sr-result { margin-top: 10px; }
.bp-scanrec .sr-code { font-size: 13px; margin-bottom: 6px; word-break: break-all; }
.bp-scanrec .sr-price-row { margin-bottom: 8px; }
.bp-scanrec .sr-input { width: 100%; box-sizing: border-box; padding: 9px 10px; border: 1px solid #e5e7eb; border-radius: 6px; font-size: 14px; }
.bp-scanrec .sr-loading { font-size: 13px; color: #6b7280; padding: 8px 0; }
.bp-scanrec .sr-err { font-size: 13px; color: #dc2626; margin: 6px 0; }
.bp-scanrec .sr-ok { font-size: 14px; color: #15a34a; font-weight: 600; padding: 8px 0; }
.bp-scanrec .sr-card, .bp-scanrec .sr-user, .bp-scanrec .sr-product { border: 1px solid #e5e7eb; border-radius: 8px; padding: 10px 12px; margin-top: 4px; background: #fff; }
.bp-scanrec .sr-card-h, .bp-scanrec .sr-user-h, .bp-scanrec .sr-product-h { font-size: 13px; font-weight: 700; color: #2E8B57; margin-bottom: 6px; }
.bp-scanrec .sr-row { display: flex; justify-content: space-between; gap: 10px; font-size: 13px; padding: 3px 0; border-bottom: 1px dashed #f0f0f0; }
.bp-scanrec .sr-row span { color: #9ca3af; }
.bp-scanrec .sr-row b { color: #333; text-align: right; }
.bp-scanrec .sr-avatar { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; float: right; margin-left: 8px; }
.bp-scanrec .sr-pimg { width: 100%; max-height: 160px; object-fit: cover; border-radius: 6px; margin-bottom: 6px; }
.bp-scanrec .sr-desc { font-size: 12px; color: #666; line-height: 1.5; margin: 6px 0; }
.bp-scanrec .sr-form { margin-top: 8px; }
.bp-scanrec .sr-field { margin-bottom: 8px; }
.bp-scanrec .sr-field label { display: block; font-size: 12px; color: #666; margin-bottom: 3px; }
.bp-scanrec .sr-field textarea.sr-input { min-height: 52px; resize: vertical; }
.bp-scanrec .sr-confirm { border: 1px solid #2E8B57; border-radius: 8px; padding: 10px 12px; margin-top: 4px; background: #f3fbf6; }
.bp-scanrec .sr-confirm-t { font-size: 14px; font-weight: 600; color: #333; margin-bottom: 8px; }
.bp-scanrec .sr-confirm-btns { display: flex; gap: 8px; margin-top: 8px; }

/* ========== 导航条模块（页面内横向导航栏） ========== */
.bp-navbar { width: 100%; box-sizing: border-box; }
.bp-navbar .nb-item { box-sizing: border-box; transition: background .15s, color .15s; -webkit-tap-highlight-color: transparent; user-select: none; }
.bp-navbar .nb-item:active { opacity: .82; }
.bp-navbar .nb-icon { display: inline-flex; align-items: center; justify-content: center; }
.bp-navbar .nb-icon img { width: 1em; height: 1em; object-fit: contain; }
.bp-navbar .nb-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
/* 10 种导航样式（主要区别在按钮形状） */
.bp-navbar.nb-style-1 .nb-item { border-radius: 0; }                              /* 直角 */
.bp-navbar.nb-style-2 .nb-item { border-radius: 8px; }                            /* 圆角 */
.bp-navbar.nb-style-3 .nb-item { border-radius: 999px; }                          /* 胶囊 */
.bp-navbar.nb-style-4 { gap: 8px; padding: 6px; }                                 /* 卡片 */
.bp-navbar.nb-style-4 .nb-item { border-width: 1px; border-style: solid; background: rgba(255,255,255,.65); border-radius: 10px; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.bp-navbar.nb-style-5 .nb-item { border-radius: 0; }                              /* 下划线 */
.bp-navbar.nb-style-5 .nb-item.active { box-shadow: inset 0 -3px 0 0 currentColor; font-weight: 600; }
.bp-navbar.nb-style-6 .nb-item { border-radius: 0; }                              /* 渐变（背景由 JS 设，文字转白） */
.bp-navbar.nb-style-7 .nb-item + .nb-item { border-left: 1px solid rgba(0,0,0,.10); } /* 分隔线 */
.bp-navbar.nb-style-8 { gap: 10px; padding: 8px; }                                /* 悬浮 */
.bp-navbar.nb-style-8 .nb-item { background: rgba(255,255,255,.9); border-radius: 14px; box-shadow: 0 3px 8px rgba(0,0,0,.12); }
.bp-navbar.nb-style-9 .nb-item { border-width: 1px; border-style: solid; border-radius: 8px; }  /* 描边（边框色取设置的边框色） */
.bp-navbar.nb-style-10 .nb-item { background: rgba(0,0,0,.04); border-radius: 12px; } /* 柔色 */

/* 导航条属性面板：按钮编辑器 + 图标选择器弹层 */
.nb-items { display: block; }
.nb-edit-item { border: 1px solid #eef0f3; border-radius: 8px; padding: 6px 6px 4px; margin-bottom: 6px; background: #fafbfc; }
.nb-edit-row { display: flex; gap: 4px; align-items: center; margin-top: 4px; margin-bottom: 0; }
.nb-edit-row select, .nb-edit-row input { flex: 1; min-width: 0; box-sizing: border-box; }
.nb-icon-pick { width: 34px; height: 30px; flex: 0 0 auto; border: 1px solid #e5e7eb; border-radius: 6px; background: #fff; font-size: 16px; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0; }
.nb-icon-pick img { width: 20px; height: 20px; object-fit: contain; }
.nb-edit-head { display: flex; align-items: center; gap: 4px; margin-bottom: 0; }
.nb-grip { cursor: grab; color: #b6bcc6; font-size: 14px; line-height: 1; padding: 2px 2px; user-select: none; flex: 0 0 auto; }
.nb-grip:active { cursor: grabbing; }
.nb-mv { width: 26px; height: 30px; flex: 0 0 auto; border: 1px solid #e5e7eb; border-radius: 6px; background: #fff; cursor: pointer; font-size: 12px; line-height: 1; padding: 0; }
.nb-mv:hover { background: #f3f6fb; }
.nb-name { flex: 1; min-width: 0; }
.nb-edit-row .nb-type { flex: 0 0 auto; max-width: 96px; font-size: 12px; }
.nb-del-x { flex: 0 0 auto; width: 24px; height: 24px; line-height: 22px; text-align: center; padding: 0; border: none; border-radius: 50%; background: #fee2e2; color: #dc2626; cursor: pointer; font-size: 14px; font-weight: 700; }
.nb-del-x:hover { background: #fecaca; }
.nb-edit-item.nb-dragging { opacity: .45; border-style: dashed; }
.nb-edit-item.nb-dragover { border-color: #2563eb; box-shadow: 0 0 0 2px rgba(37,99,235,.18); background: #f5f8ff; }
.pb-modal-mask { position: fixed; inset: 0; background: rgba(0,0,0,.45); display: none; align-items: center; justify-content: center; z-index: 9999; }
.pb-modal { width: min(92vw, 420px); max-height: 80vh; background: #fff; border-radius: 12px; overflow: hidden; display: flex; flex-direction: column; box-shadow: 0 10px 40px rgba(0,0,0,.25); }
.pb-modal-head { display: flex; align-items: center; justify-content: space-between; padding: 12px 14px; border-bottom: 1px solid #eef0f3; font-weight: 600; }
.pb-modal-x { border: none; background: transparent; font-size: 18px; cursor: pointer; color: #888; line-height: 1; }
.pb-modal-body { padding: 12px 14px; overflow: auto; }
.nb-icon-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; margin-bottom: 12px; }
.nb-icon-cell { border: 1px solid #eef0f3; border-radius: 8px; background: #fff; font-size: 22px; height: 40px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: transform .08s, border-color .08s; }
.nb-icon-cell:hover { transform: scale(1.08); border-color: #2563eb; }
.nb-icon-up { border-top: 1px dashed #e5e7eb; padding-top: 10px; }

/* 商城区模块（mall_district）：商品网格展示 */
.md-grid { display: grid; gap: 8px; padding: 8px; }
.md-item { background: #fff; border: 1px solid #eee; border-radius: 8px; padding: 8px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 4px; }
.md-img { object-fit: cover; border-radius: 6px; background: #f3f4f6; }
.md-img-ph { background: #eef0f3; }
.md-title { font-weight: 600; line-height: 1.3; word-break: break-all; }
.md-brief { font-size: 0.92em; color: #6b7280; line-height: 1.3; word-break: break-all; }
.md-desc { font-size: 0.92em; color: #6b7280; line-height: 1.3; word-break: break-all; }
.md-points { color: #e0531f; font-weight: 600; font-size: 0.92em; }
/* 商城区C 板：币种分值 / 限制标签 / 紫色购换说明 */
.md-coin { color: #b45309; font-weight: 600; font-size: 0.92em; }
.md-coin-gift { color: #15803d; }
.md-meta { font-size: 0.82em; color: #6b7280; }
.md-exnote { font-size: 0.88em; color: #7c1d9e; font-weight: 600; line-height: 1.35; word-break: break-all; background: #faf5ff; border-left: 3px solid #a21caf; padding: 4px 6px; border-radius: 4px; margin-top: 2px; }
/* 后台属性面板：自定义条目编辑 */
.md-edit-list { margin-top: 8px; display: flex; flex-direction: column; gap: 8px; }
.md-edit-item { border: 1px dashed #e5e7eb; border-radius: 8px; padding: 8px; }
.md-edit-row { display: flex; align-items: center; gap: 6px; margin-bottom: 4px; }
.md-edit-row .md-edit-lab { width: 36px; color: #6b7280; font-size: 12px; flex: none; }
.md-edit-row input { flex: 1; min-width: 0; }
/* 自定义条目：标题单行 + 同行 X 删除 */
.md-edit-row-inline { display: flex; align-items: center; gap: 6px; }
.md-edit-row-inline .md-edit-title { flex: 1; min-width: 0; }
.md-del-x { flex: none; width: 20px; height: 20px; line-height: 20px; text-align: center; padding: 0; border: none; border-radius: 3px; background: #ef4444; color: #fff; cursor: pointer; font-size: 14px; font-weight: 700; }
.md-del-x:hover { background: #dc2626; }
/* 自定义组：组名称标题 */
.md-group-name { font-weight: 600; font-size: 1.05em; margin: 2px 0 8px; color: #333; }
.md-detail-meta { margin: 10px 0; border-top: 1px dashed #eee; padding-top: 8px; }
.md-dm-row { display: flex; font-size: 13px; padding: 3px 0; }
.md-dm-k { width: 72px; color: #111827; font-weight: 600; flex: none; }
.md-dm-v { color: #6b7280; }

/* 团队发展模块 */
.td-card { padding: 8px; }
.td-box { border: 1px solid #eee; border-radius: 8px; padding: 8px 10px; }
.td-box-head { font-weight: 600; font-size: 1.02em; color: #15803d; margin-bottom: 6px; }
.td-summary { font-size: 0.95em; color: #374151; margin-bottom: 6px; }
.td-summary b { color: #e0531f; font-size: 1.1em; }
.td-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 6px 0; border-top: 1px dashed #f0f0f0; }
.td-row:first-of-type { border-top: none; }
.td-main { min-width: 0; flex: 1; }
.td-name { font-weight: 600; line-height: 1.3; word-break: break-all; }
.td-desc { font-size: 0.86em; color: #6b7280; line-height: 1.3; }
.td-reward { flex: none; color: #e0531f; font-weight: 600; font-size: 0.92em; text-align: right; white-space: nowrap; }
.td-badge { display: inline-block; font-size: 0.78em; font-weight: 600; color: #2E8B57; background: #e7f6ec; border-radius: 8px; padding: 0 6px; margin-left: 2px; }
/* 后台：服务站长列表 */
.td-st-item { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 6px; border-bottom: 1px solid #f2f2f2; }
.td-st-info { min-width: 0; }

/* ============ 卡密生成模块（前台） ============ */
.bp-cardgen { padding: 4px 0; }
.bp-cardgen-preview { padding: 6px 0; }
.cg-form { background: #f7f8fa; border: 1px solid #eceef1; border-radius: 10px; padding: 10px 12px; margin-bottom: 10px; }
.cg-form-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.cg-form-row label { font-size: 12px; color: #555; white-space: nowrap; }
.cg-form select, .cg-form input[type=number], .cg-form input[type=text], .cg-form input[type=date] {
  height: 32px; border: 1px solid #d8dbe0; border-radius: 6px; padding: 0 8px; font-size: 13px; background: #fff;
}
.cg-form select { min-width: 96px; }
.cg-form input[type=number] { width: 84px; }
.cg-form input[type=date] { width: 150px; }
.cg-form input[type=text] { width: 130px; }
.cg-form-preview { margin-bottom: 0; color: #999; font-size: 12px; }
.cg-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.cg-count { font-size: 12px; color: #888; }
.cg-table-wrap { overflow-x: auto; }
.cg-table { width: 100%; border-collapse: collapse; font-size: 13px; background: #fff; }
.cg-table th, .cg-table td { border: 1px solid #eee; padding: 7px 9px; text-align: left; white-space: nowrap; }
.cg-table th { background: #fafbfc; color: #555; font-weight: 600; }
.cg-table tbody tr:hover { background: #fcfcfd; }
.cg-code { font-family: monospace; background: #fff7e6; color: #b8860b; padding: 1px 5px; border-radius: 4px; }
.cg-badge { display: inline-block; font-size: 0.74em; font-weight: 600; border-radius: 8px; padding: 1px 6px; margin-left: 4px; }
.cg-badge-unused { color: #2E8B57; background: #e7f6ec; }
.cg-badge-used { color: #888; background: #f0f0f0; }
.cg-badge-void { color: #c0392b; background: #fdecea; }
.cg-ops { display: flex; align-items: center; gap: 6px; }
.cg-exp-input { height: 30px; border: 1px solid #d8dbe0; border-radius: 6px; padding: 0 6px; font-size: 12px; }

/* ============ 卡密生成模块（后台属性面板：列管理） ============ */
.cg-col-list { display: flex; flex-direction: column; gap: 6px; margin-top: 4px; }
.cg-col-row { display: flex; align-items: center; gap: 6px; background: #f7f8fa; border: 1px solid #eceef1; border-radius: 8px; padding: 5px 8px; }
.cg-col-grip { color: #bbb; cursor: grab; font-size: 13px; }
.cg-col-label { flex: 1; min-width: 0; height: 28px; border: 1px solid #d8dbe0; border-radius: 6px; padding: 0 8px; font-size: 13px; }
.cg-col-label.cg-col-locked { background: #eee; color: #999; cursor: not-allowed; }
.btn-xs { height: 24px; padding: 0 8px; font-size: 12px; line-height: 1; border-radius: 6px; border: 1px solid #d8dbe0; background: #fff; color: #444; }
.btn-xs:disabled { opacity: 0.4; cursor: not-allowed; }


/* ===== 手动易货 / 易货列表 模块 ===== */
.bp-manualbarter-card, .bp-barterlist-card { padding:10px; }
.mbf-row { display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; margin-bottom:8px; }
.mbf-label { font-size:13px; flex:0 0 auto; }
.mbf-input, .mbf-file { flex:1; min-width:130px; box-sizing:border-box; padding:6px 10px; border:1px solid #e5e7eb; border-radius:6px; font-size:14px; }
.mbf-rte { min-height:140px; border:1px solid #e5e7eb; border-radius:6px; }
.mbf-attrs { margin-top:4px; }
.mbf-attr-row { display:flex; gap:6px; align-items:center; margin-bottom:6px; }
.mbf-attr-row input { flex:1; padding:7px 9px; border:1px solid #e5e7eb; border-radius:6px; font-size:13px; }
.mbf-attrs-add { margin:4px 0 10px; }
.mb-prev-img { border:1px dashed #cbd5e1; border-radius:6px; padding:14px; text-align:center; color:#94a3b8; font-size:13px; background:#f8fafc; }
.mb-prev-rte { border:1px solid #e5e7eb; border-radius:6px; padding:8px; color:#94a3b8; font-size:13px; background:#fafafa; }
.mb-prev-input { border:1px solid #e5e7eb; border-radius:6px; padding:8px; background:#fafafa; }
.mb-prev-submit { margin-top:4px; opacity:.7; }
.mb-list-table { width:100%; border-collapse:collapse; background:#fff; border-radius:8px; overflow:hidden; }
.mb-list-table th, .mb-list-table td { border:1px solid #eef2f7; padding:8px 10px; text-align:left; font-size:13px; vertical-align:top; }
.mb-list-table th { background:#f7f8fa; font-weight:600; }
.mb-list-table .mb-rte-cell { line-height:1.5; }
.mb-list-img { width:64px; height:64px; background:#eee; border-radius:6px; display:flex; align-items:center; justify-content:center; color:#aaa; font-size:12px; }
.mb-attrs { color:#4b5563; font-size:13px; }
/* 手动易货：图片上传器（最多5张 / 压缩 / 预览 / 删除） */
.mbf-req { color:#e11d48; font-weight:700; }
.mbf-textarea { min-height:90px; resize:vertical; line-height:1.6; font-family:inherit; }
.mbf-imgupload { display:flex; flex-direction:column; gap:8px; }
.mbf-imglist { display:flex; flex-wrap:wrap; gap:8px; }
.mbf-imgitem { position:relative; width:76px; height:76px; border-radius:8px; overflow:hidden; border:1px solid #e5e7eb; cursor:pointer; background:#f8fafc; }
.mbf-imgitem img { width:100%; height:100%; object-fit:cover; display:block; }
.mbf-imgsize { position:absolute; left:0; right:0; bottom:0; background:rgba(0,0,0,.55); color:#fff; font-size:10px; text-align:center; line-height:16px; }
.mbf-imgdel { position:absolute; top:2px; right:2px; width:18px; height:18px; line-height:16px; padding:0; border:none; border-radius:3px; background:#ef4444; color:#fff; font-size:13px; cursor:pointer; }
.mbf-imgadd { align-self:flex-start; padding:8px 14px; border:1px dashed #cbd5e1; border-radius:6px; background:#f8fafc; color:#4b5563; font-size:13px; cursor:pointer; }
.mbf-opts { display:flex; flex-wrap:wrap; gap:10px 16px; padding:6px 0; }
.mbf-opt { display:inline-flex; align-items:center; gap:4px; font-size:14px; cursor:pointer; }
.mb-prev-opts { border:1px solid #e5e7eb; border-radius:6px; padding:8px; background:#fafafa; font-size:13px; }
/* 后台属性面板：字段配置行（类型下拉 / 选项编辑） */
.pb-ui-type { padding:3px 6px; border:1px solid #e5e7eb; border-radius:6px; font-size:12px; background:#fff; }
.pb-ui-type-fixed { padding:3px 8px; font-size:12px; color:#6b7280; background:#f3f4f6; border-radius:6px; }
.pb-ui-opts { width:100%; margin-top:4px; }
.pb-ui-opts-input { width:100%; box-sizing:border-box; padding:5px 8px; border:1px solid #e5e7eb; border-radius:6px; font-size:12px; }
/* 后台属性面板：字段配置行 */
.pb-ui-label-input { flex:1; min-width:60px; padding:4px 6px; border:1px solid #e5e7eb; border-radius:5px; font-size:12px; }
.pb-ui-label-fixed { flex:1; min-width:60px; padding:4px 6px; font-size:12px; color:#9ca3af; }
.mb-color-btn { width:18px; height:18px; border:1px solid #d1d5db; border-radius:4px; cursor:pointer; padding:0; }
/* 快速易货模块 */
.bp-quickbarter-card { padding:12px; background:#fff; border-radius:10px; }
.qb-form { display:flex; flex-direction:column; gap:8px; }
.qb-row { display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; }
.qb-label { font-size:13px; font-weight:600; color:#374151; flex:0 0 auto; }
.qb-file, .qb-input { padding:6px 10px; border:1px solid #e5e7eb; border-radius:8px; font-size:13px; background:#fff; }
.qb-input { width:90px; }
.qb-input:focus, .qb-file:focus { outline:none; border-color:#16a34a; }
.qb-card #qb-submit-0, .qb-card .btn-green { align-self:flex-start; }
/* 商家品发布模块 */
.bp-mpcard { padding:12px; background:#fff; border-radius:10px; }
.mpf-ta { width:100%; min-height:90px; box-sizing:border-box; border:1px solid #e5e7eb; border-radius:6px; padding:8px 10px; font-size:14px; line-height:1.6; resize:vertical; }
.mpf-row2 { display:flex; gap:8px; }
.mpf-row2 select, .mpf-row2 input { flex:1; }
.mpf-row2 select { padding:8px 10px; border:1px solid #e5e7eb; border-radius:6px; font-size:14px; background:#fff; }
.bp-mpcard .btn-green { align-self:flex-start; }
/* 后台码库管理 */
.lc-table { width:100%; border-collapse:collapse; background:#fff; border-radius:8px; overflow:hidden; margin-top:4px; }
.lc-table th, .lc-table td { border:1px solid #eef2f7; padding:8px 10px; text-align:left; font-size:13px; vertical-align:middle; }
.lc-table th { background:#f7f8fa; font-weight:600; }
.lc-table .lc-qr { width:64px; height:64px; background:#fff; }
.lc-table .lc-qr img, .lc-table .lc-qr canvas { width:64px; height:64px; }
/* 切换身份模块：下拉式身份切换（触发按钮 + 下拉面板；选项背景/文字色/圆角由后台控制） */
.bp-identityswitch { margin: 0; }
.bp-identityswitch-card { position: relative; padding: 8px 12px; }
.isw-trigger {
  display: inline-flex; align-items: center; justify-content: space-between; gap: 8px;
  min-width: 0; width: 100%; box-sizing: border-box; padding: 9px 14px; background: #fff; color: #1f2937;
  border: 1px solid #e5e7eb; border-radius: 8px; font-size: 1em; line-height: 1.3;
  cursor: pointer; user-select: none; overflow: hidden;
}
.isw-trigger:hover { border-color: #c7d2fe; }
.isw-caret { font-size: 0.8em; opacity: 0.6; flex: 0 0 auto; }
/* 切换身份：当前项高亮（位置文字已移除，因前台有导航条） */
.isw-item--current { box-shadow: inset 0 0 0 2px #93c5fd; }
.isw-panel {
  position: absolute; top: 100%; left: 12px; right: 12px; z-index: 50;
  margin-top: 4px; background: #fff; border: 1px solid #e5e7eb; border-radius: 8px;
  box-shadow: 0 6px 18px rgba(0,0,0,.10); padding: 6px; display: none;
  max-height: min(340px, 62vh); overflow-y: auto;
}
.isw-item {
  display: block; width: 100%; text-align: left; padding: 10px 12px;
  margin: 2px 0; border: 1px solid transparent; cursor: pointer;
  font-size: 1em; line-height: 1.3; transition: transform .08s ease, filter .12s ease;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.isw-item:hover { filter: brightness(0.97); }
.isw-item:active { transform: scale(0.99); }
/* 该身份设了等级条件、当前用户不满足但勾了「无权」：仍显示，点击只提示无权 */
.isw-item--noperm { opacity: .55; cursor: not-allowed; }
.isw-item--noperm:hover { filter: none; }
.isw-item--noperm:active { transform: none; }
/* 去申请项：顶部细分隔线，弱化底色提示这是"未持有可申请"入口 */
.isw-apply-item { margin-top: 6px; border-top: 1px dashed #c7d2fe; padding-top: 6px; cursor: pointer; }
/* 身份卡切换项：角色名+等级+「当前」徽章，flex 排布；不影响旧页面项(.isw-item) */
.isw-idn-item { display: flex !important; align-items: center; gap: 6px; }
.isw-cur-badge { display: inline-block; background: #2563eb; color: #fff; font-size: 10px; padding: 0 6px; border-radius: 8px; line-height: 16px; vertical-align: middle; }
/* 归属角色（身份中心）模块：身份卡列表 + 切换/设默认 */
.isw-center { padding: 4px 0; }
.isw-center-title { font-size: 13px; font-weight: 600; color: #374151; margin: 2px 0 8px; }
.isw-idn-card { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; background: #f7f8fa; border: 1px solid #ebedf0; border-radius: 10px; margin-bottom: 8px; }
.isw-idn-card--current { box-shadow: inset 0 0 0 2px #93c5fd; background: #eef4ff; }
.isw-idn-main { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 13px; color: #333; }
.isw-idn-role { font-weight: 600; }
.isw-def-badge { display: inline-block; background: #16a34a; color: #fff; font-size: 10px; padding: 0 6px; border-radius: 8px; line-height: 16px; }
.isw-idn-status { font-size: 11px; color: #b45309; }
.isw-idn-actions { display: flex; gap: 6px; flex: 0 0 auto; }
.isw-act { font-size: 12px; padding: 5px 12px; border: none; border-radius: 7px; cursor: pointer; font-weight: 500; }
.isw-act-switch { background: #2563eb; color: #fff; }
.isw-act-default { background: #fff; color: #374151; border: 1px solid #d1d5db; }
/* 后台属性面板：身份选项列表 */
.isw-opt-list { display: flex; flex-direction: column; gap: 6px; margin-bottom: 6px; }
.isw-opt-row { display: flex; align-items: center; gap: 6px; flex-wrap: nowrap; }
.isw-opt-grip { color: #9ca3af; cursor: grab; }
.isw-opt-btn { flex: 0 0 auto; height: 22px; min-width: 22px; padding: 0 6px; font-size: 12px; line-height: 1; }
.isw-opt-del { padding: 0 5px; }
.isw-opt-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.isw-sel { flex: 1; min-width: 0; }

/* 商城区C 分类管理（独立内联版） */
.catc-card { border:1px solid #eef0f3; border-radius:10px; padding:12px 14px; margin-bottom:10px; background:#fff; }
.catc-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.catc-name { font-weight:600; font-size:14px; color:#1f2937; }
.catc-subs { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.catc-pill { display:inline-flex; align-items:center; gap:4px; background:#f2f6ff; color:#1f2937; border:1px solid #dbe6ff; border-radius:999px; padding:4px 10px; font-size:13px; }
.catc-x { display:inline-flex; align-items:center; justify-content:center; width:16px; height:16px; border:none; border-radius:3px; background:#ef4444; color:#fff; cursor:pointer; font-size:12px; line-height:1; padding:0; }
.catc-x:hover { background:#dc2626; }
.catc-add2 { display:inline-flex; align-items:center; gap:6px; }

/* 页面标签卡容器（前台 /page/<slug>，所有页面都能挂子页面） */
.bp-tabs { display:flex; gap:0; padding:0 8px; background:#fff; border-bottom:2px solid #eef0f3; overflow-x:auto; -webkit-overflow-scrolling:touch; position:sticky; top:0; z-index:10; box-shadow:0 1px 2px rgba(0,0,0,0.04); }
.bp-tabs::-webkit-scrollbar { height:2px; }
.bp-tabs::-webkit-scrollbar-thumb { background:#cbd5e1; border-radius:1px; }
.bp-tab { padding:12px 18px; font-size:14px; color:#64748b; cursor:pointer; border:none; background:transparent; white-space:nowrap; flex-shrink:0; transition:color .15s, border-color .15s; border-bottom:3px solid transparent; margin-bottom:-2px; user-select:none; }
.bp-tab:hover { color:#1e293b; }
.bp-tab.active { color:#16a34a; font-weight:600; border-bottom-color:#16a34a; }
.bp-tab-content { background:transparent; }

/* 分类管理模块（商城区C 前台内嵌） */
.bp-catmanage-card { padding:4px 0; }
.cm-add1 { display:flex; gap:6px; margin-bottom:10px; }
.cm-list { display:flex; flex-direction:column; gap:10px; }
.cm-card { border:1px solid #eef0f3; border-radius:10px; padding:10px 12px; background:#fff; }
.cm-card-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.cm-name { font-weight:600; font-size:14px; color:#1f2937; }
.cm-del { border:none; background:#fff1f0; color:#ef4444; border:1px solid #ffccc7; border-radius:6px; padding:3px 10px; font-size:12px; cursor:pointer; }
.cm-del:hover { background:#ffe7e3; }
.cm-subs { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.cm-pill { display:inline-flex; align-items:center; gap:4px; background:#f2f6ff; color:#1f2937; border:1px solid #dbe6ff; border-radius:999px; padding:4px 10px; font-size:13px; }
.cm-x { display:inline-flex; align-items:center; justify-content:center; width:16px; height:16px; border:none; border-radius:3px; background:#ef4444; color:#fff; cursor:pointer; font-size:12px; line-height:1; padding:0; }
.cm-x:hover { background:#dc2626; }
.cm-add2 { display:inline-flex; align-items:center; gap:6px; }
.cm-input { flex:1; min-width:120px; border:1px solid #d9dee5; border-radius:6px; padding:5px 8px; font-size:13px; }
.cm-btn { border:none; background:#1677ff; color:#fff; border-radius:6px; padding:5px 12px; font-size:13px; cursor:pointer; }
.cm-btn:hover { background:#0958d9; }

/* ===== 页面标签卡容器：子页胶囊（紧凑内嵌在父卡片内） ===== */
.page-chips-row { display:flex; flex-wrap:wrap; align-items:center; gap:6px; padding:6px 0 2px; font-size:11px; color:#6b7280; }
.page-chips-row .page-chips-label { color:#9ca3af; font-weight:500; flex:0 0 auto; }
.page-chip { display:inline-flex; align-items:center; gap:2px; padding:2px 4px 2px 10px; border:1px solid #d1d5db; border-radius:14px; background:#f9fafb; font-size:12px; max-width:300px; transition:background .15s, border-color .15s; }
.page-chip:hover { background:#f3f4f6; border-color:#9ca3af; }
.page-chip-published { background:#f0fdf4; border-color:#bbf7d0; }
.page-chip-published:hover { background:#dcfce7; border-color:#86efac; }
.page-chip-hidden { background:#f9fafb; border-color:#e5e7eb; opacity:.78; }
.page-chip-hidden:hover { opacity:1; }
.page-chip-name { cursor:pointer; color:#374151; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:140px; }
.page-chip-name:hover { color:#2563eb; }
.page-chip-btn { border:none; background:transparent; cursor:pointer; font-size:11px; padding:0 4px; color:#9ca3af; line-height:1; border-radius:8px; min-width:14px; height:18px; display:inline-flex; align-items:center; justify-content:center; }
.page-chip-btn:hover { color:#374151; background:#fff; }

/* 后台页面搭建器顶部：当前位置条（我现在的位置 / 主页面 / 子页面） */
.pb-loc-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 3px 10px; background: #f0f9ff; border: 1px solid #bae6fd; border-radius: 6px; font-size: 12px; color: #0369a1; margin-left: 0; }
.pb-loc-tag { white-space: nowrap; }
.pb-loc-sep { color: #7dd3fc; user-select: none; }
/* 「🔗本页链接」独立一行（在面包屑下方），不再与面包屑挤在同一行 */
.pb-loc-ext { flex-basis: 100%; margin-top: 4px; }
.page-chip-del:hover { color:#dc2626; background:#fee2e2; }

/* ===== 子页胶囊「⋯」更多菜单弹层 ===== */
.chip-more { font-weight:700; color:#6b7280; }
.chip-more:hover { color:#2563eb; background:#eef2ff; }
.chip-menu { position:fixed; z-index:9999; min-width:160px; background:#fff; border:1px solid #e5e7eb; border-radius:10px; box-shadow:0 8px 24px rgba(15,23,42,.16); padding:6px; font-size:13px; }
.chip-menu-item { padding:8px 10px; border-radius:6px; cursor:pointer; color:#374151; white-space:nowrap; display:flex; align-items:center; gap:8px; }
.chip-menu-item:hover { background:#f3f4f6; }
.chip-menu-item:active { background:#e5e7eb; }

/* 商城区C 分类管理（后台发布页 + 商品分类 tab 两套实例） */
.op-btn { padding:4px 10px; font-size:12px; border:none; border-radius:6px; cursor:pointer; background:#eef2f7; color:#374151; }
.op-btn.danger { background:#ef4444; color:#fff; }
.op-btn:hover { opacity:.85; }
.catc-card { border:1px solid #eef0f3; border-radius:8px; padding:6px 8px; margin-bottom:6px; background:#fafbfc; }
.catc-head { display:flex; align-items:center; gap:8px; }
.catc-name { font-weight:600; font-size:13px; color:#1f2937; min-width:50px; white-space:nowrap; flex-shrink:0; }
.catc-line { flex:1; display:flex; align-items:center; justify-content:flex-end; gap:5px; flex-wrap:wrap; min-width:0; }
.catc-pill { display:inline-flex; align-items:center; gap:3px; background:#fff; border:1px solid #e5e7eb; border-radius:999px; padding:2px 6px; font-size:11px; }
.catc-x { display:inline-flex; align-items:center; justify-content:center; width:14px; height:14px; border:none; border-radius:3px; background:#ef4444; color:#fff; cursor:pointer; font-size:11px; line-height:1; padding:0; }
.catc-add2 { display:inline-flex; align-items:center; gap:3px; }
.catc-add2 input { width:78px; padding:3px 5px; border:1px solid #e5e7eb; border-radius:5px; font-size:11px; }
.catc-add2 .btn-sm { padding:3px 6px; font-size:11px; }

/* 后台商城区C 发布页整体收紧 */
#apanel-goods-c .field { margin-bottom:9px; }
#apanel-goods-c .card { padding:10px; margin:0 14px 8px; }
#apanel-goods-c .grid2 { gap:8px; }
#apanel-goods-c .card-title { margin-bottom:7px; font-size:14px; }
#apanel-goods-c .catc-card { padding:5px 8px; margin-bottom:5px; }
#apanel-goods-c .catc-line { gap:4px; }
#apanel-goods-c .op-btn { padding:3px 7px; font-size:11px; }

/* 商城区C 分类悬浮管理面板 */
.catc-popover { position:absolute; top:calc(100% + 4px); left:0; width:min(360px, calc(100vw - 40px)); max-height:420px; background:#fff; border:1px solid #e5e7eb; border-radius:10px; box-shadow:0 8px 24px rgba(15,23,42,.16); z-index:50; display:flex; flex-direction:column; }
.catc-popover-head { display:flex; align-items:center; justify-content:space-between; padding:10px 12px; border-bottom:1px solid #eef0f3; font-size:13px; }
.catc-popover-close { border:none; background:transparent; font-size:18px; color:#888; cursor:pointer; line-height:1; }
.catc-popover-close:hover { color:#333; }
.catc-popover-add1 { display:flex; gap:6px; padding:10px 12px; border-bottom:1px solid #eef0f3; }
.catc-popover-add1 input { flex:1; padding:5px 8px; border:1px solid #e5e7eb; border-radius:6px; font-size:12px; }
.catc-popover-body { overflow:auto; padding:10px 12px; }
.catc-popover .catc-card { margin-bottom:6px; }
.catc-popover .catc-head { flex-wrap:wrap; }
.catc-popover .catc-line { justify-content:flex-start; margin-top:6px; width:100%; }

/* ===== 登录页：注册入口（醒目按钮式链接） ===== */
#login-links { display:flex; align-items:center; justify-content:center; }
.reg-entry-btn { display:inline-block; padding:4px 14px; border-radius:999px; background:linear-gradient(135deg,#f97316,#ef4444); color:#fff !important; font-size:13px; font-weight:600; letter-spacing:1px; text-decoration:none; box-shadow:0 1px 4px rgba(239,68,68,.3); }
.reg-entry-btn:hover { box-shadow:0 2px 7px rgba(239,68,68,.4); text-decoration:none; }
.reg-entry-btn:active { transform:translateY(1px); }

/* ===== 注册：推荐人「会员库核验」提示 ===== */
.reg-req-star { margin-left:6px; font-size:11px; font-weight:600; color:#dc2626; background:#fef2f2; border:1px solid #fecaca; border-radius:4px; padding:1px 6px; }
.reg-inv-tip { margin-top:6px; font-size:12px; line-height:1.5; border-radius:6px; padding:6px 8px; }
.reg-inv-tip.checking { color:#0369a1; background:#f0f9ff; border:1px solid #bae6fd; }
.reg-inv-tip.ok { color:#047857; background:#ecfdf5; border:1px solid #a7f3d0; }
.reg-inv-tip.bad { color:#b91c1c; background:#fef2f2; border:1px solid #fecaca; }
.reg-inv-hint { margin-top:6px; font-size:11px; line-height:1.5; color:#9ca3af; }
input.reg-inv-ok { border-color:#10b981 !important; box-shadow:0 0 0 2px rgba(16,185,129,.15); }
input.reg-inv-bad { border-color:#ef4444 !important; box-shadow:0 0 0 2px rgba(239,68,68,.15); }

/* ===== 《用户协议》勾选行 + 协议弹窗正文 ===== */
.agree-line { margin:6px 0 10px; font-size:12px; color:#6b7280; line-height:1.6; }
.agree-line label { display:flex; align-items:flex-start; gap:6px; cursor:pointer; }
.agree-line input[type=checkbox] { margin-top:2px; flex:none; width:auto; }
.agree-line a { color:#2563eb; text-decoration:underline; }
.agree-body { max-height:52vh; overflow:auto; font-size:13px; line-height:1.75; color:#374151; padding:10px 12px; background:#f9fafb; border:1px solid #eef0f3; border-radius:8px; }
.agree-body p { margin:0 0 8px; }
.agree-body strong { color:#111827; }

/* ===== 注册页：用户协议「必勾」提示与未勾选警示 ===== */
.agree-req { margin:3px 0 0 22px; font-size:11px; line-height:1.5; color:#dc2626; }
.agree-line.agree-err, .ml-agree.agree-err { background:#fef2f2; border:1px solid #fecaca; border-radius:6px; padding:5px 8px; }
.agree-line.agree-err label, .ml-agree.agree-err { color:#b91c1c; }
@keyframes agreeShake { 0%,100%{transform:translateX(0);} 20%{transform:translateX(-4px);} 40%{transform:translateX(4px);} 60%{transform:translateX(-3px);} 80%{transform:translateX(2px);} }
.agree-shake { animation:agreeShake .45s ease; }
.ml-pane .agree-req, .ml-card .agree-req { margin-left:0; }

/* ===== 全局搜索框（global_search）：后台画布预览 ===== */
.gs-preview { padding:8px 10px; }
.gs-name { display:inline-block; font-size:11px; font-weight:600; color:#0f6e56; background:#e1f5ee; border:1px solid #9fe1cb; border-radius:5px; padding:2px 8px; margin-bottom:6px; }
.gs-tags { display:flex; flex-wrap:wrap; gap:4px; margin-bottom:6px; }
.gs-tag { font-size:11px; color:#3b6d11; background:#eaf3de; border:1px solid #c0dd97; border-radius:999px; padding:1px 8px; }
.gs-tag-off { color:#9ca3af; background:#f3f4f6; border-color:#e5e7eb; }
.gs-box { display:flex; align-items:center; gap:8px; border:1px solid #d1d5db; padding:8px 10px; background:#fff; }
.gs-ph { flex:1; min-width:0; color:#9ca3af; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.gs-btn { flex:0 0 auto; padding:4px 14px; border-radius:6px; color:#fff; }

/* ===== 全局搜索框：用户端前台 ===== */
.gsm-wrap { padding:8px 0; }
.gsm-tags { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px; }
.gsm-tag { border:1px solid #e5e7eb; background:#f9fafb; color:#4b5563; border-radius:999px; padding:3px 12px; font-size:12px; cursor:pointer; line-height:1.6; }
.gsm-tag:hover { border-color:#c0dd97; color:#3b6d11; }
.gsm-tag.on { background:#2e8b57; border-color:#2e8b57; color:#fff; }
.gsm-boxrow { display:flex; align-items:stretch; gap:8px; }
.gsm-input { flex:1; min-width:0; border:1px solid #d1d5db; padding:9px 12px; outline:none; box-sizing:border-box; }
.gsm-input:focus { border-color:#2e8b57; box-shadow:0 0 0 2px rgba(46,139,87,.14); }
.gsm-btn { flex:0 0 auto; border:none; padding:9px 20px; cursor:pointer; font-weight:500; }
.gsm-deny { padding:12px; font-size:13px; color:#b45309; background:#fffbeb; border:1px solid #fde68a; border-radius:8px; line-height:1.6; }

/* 结果区：就地显示在本页（模块下方），不用弹层浮窗 */
.gsm-results { margin-top:10px; }
.gsm-results:empty { margin-top:0; }
.gsm-res { border:1px solid #e5e7eb; border-radius:10px; background:#fff; overflow:hidden; }
.gsm-res-head { display:flex; align-items:center; gap:8px; padding:10px 14px; border-bottom:1px solid #eef0f3; background:#fafbfc; }
.gsm-res-title { flex:1; min-width:0; font-size:13px; font-weight:600; color:#1f2937; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.gsm-res-total { font-size:12px; color:#6b7280; }
.gsm-res-clear { border:1px solid #e5e7eb; background:#fff; border-radius:6px; font-size:12px; color:#6b7280; cursor:pointer; padding:2px 10px; }
.gsm-res-clear:hover { color:#374151; border-color:#d1d5db; }
.gsm-empty, .gsm-loading { padding:22px 14px; text-align:center; font-size:13px; color:#9ca3af; }
.gsm-hint { padding:8px 14px; font-size:12px; color:#0369a1; background:#f0f9ff; border-bottom:1px solid #e0f2fe; line-height:1.6; }
.gsm-group { padding:4px 0 6px; }
.gsm-group-title { display:flex; align-items:center; gap:6px; padding:8px 14px 4px; font-size:12px; font-weight:600; color:#374151; }
.gsm-count { font-size:11px; font-weight:400; color:#6b7280; background:#f3f4f6; border-radius:999px; padding:0 6px; }
.gsm-item { display:flex; align-items:flex-start; gap:10px; padding:9px 14px; border-bottom:1px solid #f6f7f9; }
.gsm-item:last-child { border-bottom:none; }
.gsm-item-main { flex:1; min-width:0; }
.gsm-item-title { font-size:13px; color:#1f2937; line-height:1.5; word-break:break-all; }
.gsm-item-desc { margin-top:2px; font-size:12px; color:#6b7280; line-height:1.5; word-break:break-all; }
.gsm-item-side { flex:0 0 auto; display:flex; flex-direction:column; align-items:flex-end; gap:3px; }
.gsm-badge { font-size:11px; color:#3b6d11; background:#eaf3de; border-radius:5px; padding:1px 7px; }
.gsm-time { font-size:11px; color:#9ca3af; }
/* 就地过滤：命中高亮 / 模块命中计数角标 / 定位闪烁 */
.gsm-hit { background:#fff8dc; box-shadow:inset 3px 0 0 #d9a400; }
.gsm-searched { position:relative; }
.gsm-searched::after { content:attr(data-gsm-note); position:absolute; top:6px; right:8px; z-index:3; font-size:11px; line-height:1.7; color:#0f6e56; background:#e1f5ee; border:1px solid #9fe1cb; border-radius:999px; padding:0 8px; }
.gsm-searched.gsm-no-hit::after { color:#993c1d; background:#faece7; border-color:#f5c4b3; }
.gsm-flash { outline:2px solid #2e8b57; outline-offset:2px; }
.gsm-goto { margin-left:auto; font-size:11px; color:#185fa5; cursor:pointer; }
.gsm-goto:hover { text-decoration:underline; }
.gsm-res-note { padding:8px 14px; font-size:12px; color:#6b7280; line-height:1.6; border-bottom:1px dashed #eef0f3; }
.gsm-item-click { cursor:pointer; }
.gsm-item-click:hover { background:#f8fafc; }
@media (max-width: 480px) {
  .gsm-item-side { display:none; }
}


.bp-titlebox{padding:0!important;}

.bp-module{padding:0!important;}

.al-title{padding-left:8px!important;padding-right:8px!important;}

.pa-slide{background-size:cover!important;background-position:center!important;}

.pa-cslide{background-size:cover!important;background-position:center!important;}

/* 文章列表模块内容贴左（消除左侧半字空白） */
.bp-artcenter { padding-left: 6px; }

/* ===== 效果图壳 v854：金刚区8宫格 / 搜索框 / Banner立即抢购 ===== */
body.theme-new .nb-top { flex-wrap: wrap; background: #fff; border: none !important; border-radius: 16px; box-shadow: 0 2px 14px rgba(20,83,45,.07); padding: 8px; }
body.theme-new .nb-top .nb-item { flex: 0 0 23%; height: 44px !important; margin: 3px; border-radius: 12px; background: #f4faf6; font-weight: 500; }

body.theme-new .bp-gsearch .gsm-boxrow { background: #fff; border: 1px solid rgba(20,83,45,.10); border-radius: 24px; padding: 3px 4px 3px 12px; box-shadow: 0 1px 6px rgba(20,83,45,.05); }
body.theme-new .bp-gsearch .gsm-input { border: none; background: transparent; }
body.theme-new .bp-gsearch .gsm-btn { background: #16a34a; color: #fff; border-radius: 20px; }

.pa-cta { display: none; }
body.theme-new .pa-cta { display: inline-flex; align-items: center; justify-content: center; margin: 10px auto 2px; padding: 8px 30px; background: linear-gradient(135deg,#16a34a,#15803d); color: #fff; font-size: 14px; font-weight: 600; border-radius: 22px; box-shadow: 0 2px 8px rgba(22,163,74,.25); }
body.theme-new .pa-card { border-radius: 16px; overflow: hidden; box-shadow: 0 2px 14px rgba(20,83,45,.08); background: #fff; }

/* ===== v855 效果图壳：商品卡 / 状态栏资产 ===== */
.theme-new .mdn-card { background:#fff; border-radius:12px; overflow:hidden; box-shadow:none; border:1px solid #e9f4ef; transition:transform .12s ease; }
.theme-new .mdn-card:active { transform:scale(.98); }
.theme-new .mdn-img { width:100%; aspect-ratio:1/1; overflow:hidden; background:#f2f7f4; position:relative; }
.theme-new .mdn-img img { width:100%; height:100%; object-fit:cover; display:block; }
.theme-new .mdn-ph { display:flex; align-items:center; justify-content:center; }
.theme-new .mdn-ph::after { content:'🛍️'; font-size:34px; opacity:.5; }
.theme-new .mdn-title { font-size:13.5px; color:#1f2937; font-weight:600; line-height:1.4; padding:9px 10px 3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.theme-new .mdn-bottom { display:flex; align-items:center; justify-content:space-between; padding:2px 10px 10px; }
.theme-new .mdn-price { color:#e5484d; font-weight:700; font-size:14px; white-space:nowrap; }
.theme-new .mdn-price .mdn-plus { color:#9aa7a0; font-weight:400; margin:0 2px; }
.theme-new .mdn-buy { background:linear-gradient(135deg,#0aa06e,#0b8f63); color:#fff; font-size:12px; font-weight:600; padding:5px 15px; border-radius:999px; box-shadow:0 2px 6px rgba(10,160,110,.35); flex-shrink:0; }
/* 状态栏资产（换币1280 铜币56）——v883 起不依赖 theme-new 壳，状态栏「显示样式=资产卡」独立可用 */
.theme-new .fib-coin, .fib-coin { opacity:.82; font-size:12px; }
.theme-new .fib-coin-num, .fib-coin-num { font-weight:700; font-size:13px; margin-left:1px; }
.theme-new .fib-sep, .fib-sep { opacity:.35; margin:0 3px; }
.theme-new .fib-tag, .fib-tag { white-space:nowrap; }

/* v855 状态栏效果图布局（资产卡样式） */
.theme-new .fib-new, .fib-new { display:flex; align-items:center; width:100%; gap:8px; padding:0 12px; box-sizing:border-box; }
.fib-pos { flex-shrink:0; font-size:11px; opacity:.85; color:inherit; line-height:1.2; max-width:130px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.theme-new .fib-av, .fib-av { width:28px; height:28px; border-radius:50%; object-fit:cover; border:1.5px solid rgba(255,255,255,.55); background:rgba(255,255,255,.25); display:inline-flex; align-items:center; justify-content:center; font-size:13px; color:#fff; flex-shrink:0; box-shadow:0 1px 4px rgba(0,0,0,.15); }
.theme-new .fib-user, .fib-user { display:flex; align-items:center; gap:6px; min-width:0; }
.theme-new .fib-name, .fib-name { font-size:14px; font-weight:600; white-space:nowrap; }
.theme-new .fib-assets, .fib-assets { margin-left:auto; display:flex; align-items:center; gap:9px; white-space:nowrap; }
.theme-new .fib-login-btn, .fib-login-btn { margin-left:auto; background:#fff; color:#0b7a55; font-size:13px; font-weight:700; padding:5px 18px; border-radius:999px; cursor:pointer; box-shadow:0 2px 6px rgba(0,0,0,.12); }

/* v856 金刚区 8 宫格（theme-new）：2行×4列，每个按钮占 1/4 宽 */
.theme-new .bp-navbar.nb-top { flex-wrap: wrap; height: auto !important; }
.theme-new .bp-navbar.nb-top .nb-item { flex: 0 0 25% !important; height: 48px; box-sizing: border-box; }

/* v857 底部导航（theme-new 效果图风格）：白底现代 tab bar，选中绿色 */
.theme-new .bp-navbar.nb-bottom { background:#fff !important; border:0 !important; border-top:1px solid #eef2f0 !important; box-shadow:0 -2px 12px rgba(16,60,42,.06) !important; }
.theme-new .bp-navbar.nb-bottom .nb-item { gap:2px; color:#8a9b91 !important; }
.theme-new .bp-navbar.nb-bottom .nb-item.active { color:#16a34a !important; }
.theme-new .bp-navbar.nb-bottom .nb-item .nb-icon { margin-bottom:1px; }

/* v858 背景/Banner/金刚区对齐效果图 */
.theme-new { background:#f3f6f4 !important; }
.theme-new .pa-card { background:transparent !important; border:0 !important; position:relative; margin:0 10px; }
.theme-new .pa-card-media { position:relative; }
.theme-new .pa-card-media img { max-height:130px !important; width:100% !important; object-fit:cover !important; border-radius:12px !important; }
.theme-new .pa-cta { position:absolute; right:12px; bottom:8px; z-index:2; background:#fff; color:#16a34a !important; border:1.5px solid #16a34a; border-radius:999px; padding:5px 16px; font-size:12px; font-weight:700; box-shadow:0 2px 8px rgba(16,60,42,.18); }
.theme-new .bp-navbar.nb-top { left:0 !important; right:0 !important; width:100% !important; border-radius:0 !important; background:transparent !important; border:0 !important; box-shadow:none !important; }
.theme-new .bp-navbar.nb-top .nb-item.active { color:#16a34a !important; }
.theme-new .bp-navbar.nb-top .nb-item { color:#33413a !important; }

/* v860 对齐效果图：金刚区图标加大、搜索栏纯输入框、状态栏增高 */
.theme-new .bp-navbar.nb-top { padding:6px 0 2px; }
.theme-new .bp-navbar.nb-top .nb-item { height:64px; }
.theme-new .bp-navbar.nb-top .nb-icon { font-size:26px !important; margin-bottom:2px; }
.theme-new .bp-navbar.nb-top .nb-text { font-size:12px !important; font-weight:500; }
.theme-new .gsm-tags { display:none !important; }
.theme-new .gsm-wrap { padding:0 10px; }
.theme-new .gsm-boxrow { border-radius:10px !important; }
.theme-new .fib-new, .fib-new { padding:0 12px; height:46px; }
.theme-new .fib-av, .fib-av { width:34px; height:34px; font-size:15px; }
.theme-new .fib-name, .fib-name { font-size:15px; }
.theme-new .fib-coin, .fib-coin { font-size:12px; }
.theme-new .fib-coin-num, .fib-coin-num { font-size:15px; font-weight:700; }

/* v906s40 区块贴顶点：抵消页面容器换行占位 */
.nav-page { margin-top: -16px !important; }
