/* ============================================
   资料售卖系统 - 前台&后台共用样式
   移动优先，微信内打开友好
   ============================================ */

* { margin:0; padding:0; box-sizing:border-box; }
body {
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
  background:#f5f6f8; color:#1f2937; line-height:1.6;
}

.page { max-width:860px; margin:0 auto; padding:14px 14px 40px; }
.page.narrow { max-width:420px; }

/* ---------- 顶部 ---------- */
.site-head { text-align:center; padding:26px 10px 10px; }
.site-head h1 { font-size:22px; font-weight:700; }
.site-head .sub { color:#888; font-size:13px; margin-top:4px; }
.quota {
  display:inline-block; margin-top:10px; padding:4px 14px; background:#eef2ff; color:#4338ca;
  border-radius:20px; font-size:13px;
}
.quota b { color:#2563eb; }

/* ---------- 商品列表 ---------- */
.product-list { margin-top:18px; display:flex; flex-direction:column; gap:14px; }
.empty { text-align:center; color:#999; padding:50px 0; }
.card {
  display:flex; background:#fff; border:1px solid #eef0f3; border-radius:12px; overflow:hidden;
  text-decoration:none; color:inherit; box-shadow:0 1px 3px rgba(0,0,0,.04); transition:transform .12s;
}
.card:active { transform:scale(.99); }
.card-cover { width:96px; height:96px; flex-shrink:0; display:flex; align-items:center; justify-content:center; background:#f8fafc; }
.card-cover img { width:100%; height:100%; object-fit:cover; }
.cover-fallback { font-size:34px; opacity:.5; }
.cover-fallback.big { font-size:56px; }
.card-body { padding:12px 14px; flex:1; display:flex; flex-direction:column; justify-content:center; }
.card-body h2 { font-size:15px; font-weight:600; line-height:1.4; }
/* V40.1：商品列表名称最多显示 3 行，超出用 … 隐藏 */
.card-body h2 { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; overflow:hidden; word-break:break-all; }
.meta { display:flex; justify-content:space-between; align-items:center; margin-top:8px; }
.files { color:#999; font-size:12px; }
.price { color:#e11d48; font-weight:700; font-size:15px; }
.price.big { font-size:28px; }  /* V44/V46：价格加大一个字号（24→26→28） */

/* ---------- 详情页 ---------- */
.back { margin:10px 0 2px; text-align:center; }
.back a { color:#2563eb; text-decoration:none; font-size:14px; }
/* 预览页返回目录：靠左 + 按钮符号（V19） */
.back-left { text-align:left; margin:12px 0 4px; }
.back-left .back-btn { display:inline-flex; align-items:center; gap:5px; border:1px solid #2563eb; border-radius:18px; padding:5px 14px; color:#2563eb; background:#fff; font-size:14px; text-decoration:none; }
.back-left .back-btn .back-ico { font-size:16px; line-height:1; }
/* 后台操作列按钮：flex 布局内不叠加 margin（V19） */
.ops-cell .btn { margin-left:0 !important; white-space:nowrap; }
/* 客服弹窗：手机端靠屏幕右侧，右侧间距减半（V21）；预览等待文案手机端拆两行（V22） */
@media (max-width: 768px) {
  .help-mask { justify-content: flex-end; }
  .help-dialog { width:86%; margin-right:6px; }
  .pv-wait-br { display:block; }
}
.detail-head { display:flex; gap:14px; background:#fff; border:1px solid #eef0f3; border-radius:12px; padding:14px; }
.detail-cover { width:110px; height:110px; flex-shrink:0; border-radius:8px; overflow:hidden; background:#f8fafc; display:flex; align-items:center; justify-content:center; }
.detail-cover img { width:100%; height:100%; object-fit:cover; }
.detail-info { flex:1; min-width:0; }
.detail-info h1 { font-size:17px; line-height:1.4; }
.intro { color:#666; font-size:13px; margin-top:6px; }
.price-row { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; margin-top:32px; gap:8px; }  /* V50.1：桌面价格区下移20px(12→32) */
.tip { color:#999; font-size:12px; margin-top:6px; }
.tip.pay-tip {
  color:#dc2626;           /* 红色 */
  font-size:13px;
  white-space:normal;      /* 允许换行，避免窄屏(手机)下文字溢出 */
  text-align:left;         /* 向左对齐 */
  margin-top:4px;
}

.btn-buy {
  display:inline-block; padding:8px 26px; background:#2563eb; color:#fff; border-radius:8px;
  text-decoration:none; font-size:15px; font-weight:600; text-align:center;
}
/* V30：商品页"立即购买"按钮固定长宽，不受文字/布局变化影响（类名不与底部悬浮条 .buy-fixed 冲突）
   V33：加 flex-shrink:0 + min-width，标题过长/手机窄屏时按钮绝不压缩变形；放不下时整行换行仍保持 180×44 */
.btn-buy.buy-cta-fixed { height:44px; padding:0 22px; line-height:44px; box-sizing:border-box; flex-shrink:0; white-space:nowrap; display:inline-block; }
.btn-buy:active { background:#1d4ed8; }

/* ---------- 文件清单 ---------- */
.section { background:#fff; border:1px solid #eef0f3; border-radius:12px; padding:14px; margin-top:14px; }
.section h2 { font-size:15px; margin-bottom:10px; }
.file-table { width:100%; border-collapse:collapse; font-size:13px; }
.file-table th { text-align:left; color:#888; font-weight:600; padding:6px 4px; border-bottom:1px solid #f0f0f0; }
.file-table td { padding:8px 4px; border-bottom:1px solid #f6f6f6; vertical-align:middle; }
.fname { word-break:break-all; }
.fext { color:#666; width:44px; }
.fsize { color:#999; width:64px; white-space:nowrap; }
.fop { width:56px; text-align:right; }
.btn-preview { display:inline-block; padding:3px 12px; background:#eef2ff; color:#4338ca; border-radius:6px; text-decoration:none; font-size:12px; }
.no-preview { color:#ccc; }
.quota-note { color:#666; font-size:13px; text-align:center; }

/* ---------- 底部悬浮购买条：社交证明三卡交错轮播 + 免拼购买 ---------- */
.buy-fixed {
  position:fixed; left:0; right:0; bottom:0; z-index:50;
  background:#fff; border-top:1px solid #eee; padding:10px 12px calc(10px + env(safe-area-inset-bottom));
  box-shadow:0 -2px 8px rgba(0,0,0,.05);
}
.page { padding-bottom:122px; }
.buy-fixed .price { font-size:20px; }
.convert-btn { display:flex; align-items:center; width:100%; border:0; border-radius:14px; background:linear-gradient(90deg,#f97316,#ea580c); box-shadow:0 4px 14px rgba(234,88,12,.28); overflow:hidden; cursor:pointer; text-align:left; }
.convert-btn:active { filter:brightness(.97); }
.convert-proof { flex:1; min-width:0; height:62px; overflow:hidden; }
.proof-slider { position:relative; display:block; width:100%; height:100%; }
.proof-item { position:absolute; left:0; top:8.5px; display:block; transition:transform .45s ease, opacity .35s ease; }
.proof-item.gone { opacity:0; }
.proof-item.flash { animation: proofFlash .5s ease-out; }
@keyframes proofFlash {
  from { transform: translate(8px,0) scale(.4); opacity:0; }
  to   { transform: translate(8px,0) scale(1);  opacity:1; }
}
.avatar { width:45px; height:45px; border-radius:50%; overflow:hidden; display:block; border:1px solid rgba(255,255,255,.85); }
.avatar img { width:100%; height:100%; object-fit:cover; display:block; }
.proof-name { position:absolute; left:108px; top:50%; transform:translateY(-50%); display:flex; flex-direction:column; line-height:1.3; color:#fff; white-space:nowrap; }
.p-name { font-weight:700; font-size:15px; }
.p-msg { opacity:.95; font-size:12.5px; }
.convert-cta { flex:none; margin:7px 8px 7px 0; background:#fff; color:#ea580c; border-radius:9px; width:141px; height:47px; display:flex; align-items:center; justify-content:center; padding:0; font-size:18.77px; line-height:1.4; font-weight:800; box-shadow:0 2px 6px rgba(0,0,0,.12); white-space:nowrap; box-sizing:border-box; }
.convert-note { margin-top:8px; text-align:center; font-size:13px; color:#9ca3af; }
.convert-note b { color:#ea580c; }
/* V38：电脑端免拼购买按钮——文字不超出白色按钮框（价格较长/字体渲染差异时按钮自适应加宽、字号微调；手机端不变） */
@media (min-width:769px) {
  .convert-cta { width:auto; min-width:141px; padding:0 12px; font-size:16px; }
}
@media (max-width: 520px) {
  .buy-fixed { padding:8px 10px calc(8px + env(safe-area-inset-bottom)); }
  .page { padding-bottom:118px; }
  .p-name { font-size:14.5px; }
  .p-msg { font-size:12px; }
  .convert-cta { width:141px; height:47px; padding:0; font-size:17.66px; }
  .convert-note { font-size:12.5px; }
  /* V25 手机版：付款提示单行、左对齐封面左缘、不超出购买区 */
  .detail-head { position:relative; padding-bottom:38px; }   /* V37：34→38px，两处间距统一为 a（实测14px） */
  .detail-info .tip.small { margin-top:12px; }   /* V36：立即购买按钮与订单信息间距 = a */
  .tip.pay-tip {
    position:absolute; left:14px; right:0; bottom:4px;   /* 贴近购买区下边框 */
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
    font-size:12.5px;
    margin-top:0; margin-bottom:0;
    color:#999;   /* V36：灰色 */
  }
}

/* ---------- 预览页 ---------- */
.preview-page { padding-bottom:40px; }
.preview-title { font-size:16px; font-weight:600; margin:6px 0 10px; word-break:break-all; }
.preview-note { text-align:center; color:#b45309; font-size:13px; margin-bottom:10px; }
.viewer { background:#111827; border-radius:12px; padding:12px; }
.viewer-stage { min-height:240px; display:flex; align-items:center; justify-content:center; background:#fff; border-radius:8px; overflow:hidden; position:relative; }
.viewer-img { display:none; max-width:100%; max-height:70vh; }
.viewer-img.active { display:block; }
/* 未就绪页的加载/失败占位（V21：首屏只出第1页时，点击未续转完成的页显示此提示） */
.page-loading { position:absolute; top:0; left:0; right:0; bottom:0; display:flex; align-items:center; justify-content:center; background:#f8fafc; color:#6b7280; font-size:14px; z-index:5; }
.page-loading .page-loading-no { color:#2563eb; }
.viewer-nav { display:flex; align-items:center; justify-content:center; gap:16px; margin-top:12px; color:#e5e7eb; font-size:14px; }
.nav-btn { padding:6px 18px; background:#374151; color:#fff; border:0; border-radius:6px; font-size:14px; cursor:pointer; }
.nav-btn:active { background:#4b5563; }
.viewer-cta { text-align:center; margin-top:14px; }
.viewer-cta p { color:#666; font-size:13px; margin-bottom:10px; }

.limit-box { text-align:center; background:#fff; border:1px solid #eef0f3; border-radius:12px; padding:34px 20px; margin-top:14px; }
.limit-box h2 { font-size:18px; margin-bottom:10px; }
.limit-box p { color:#666; font-size:14px; margin-bottom:8px; }
.limit-box .btn-buy { margin-top:8px; }
.limit-box.warn h2 { color:#b45309; }

/* ---------- 结果/下载页 ---------- */
.result-box { background:#fff; border:1px solid #eef0f3; border-radius:12px; padding:24px 18px; text-align:center; margin-top:14px; }
.result-box.ok { border-color:#b7e6c9; }
.result-box .icon { width:52px; height:52px; line-height:52px; border-radius:50%; background:#16a34a; color:#fff; font-size:26px; margin:0 auto 10px; }
.result-box h2 { font-size:18px; margin-bottom:8px; }
.result-box p { color:#555; font-size:14px; }
.download-box { background:#fff; border:1px solid #b7e6c9; border-radius:12px; padding:18px; margin-top:14px; }
.download-box h2 { font-size:16px; margin-bottom:12px; }
.dl-row { display:flex; margin-bottom:10px; font-size:14px; }
.dl-label { flex-shrink:0; width:76px; color:#888; }
.dl-value { word-break:break-all; }
.dl-link { color:#2563eb; }
.dl-code { font-weight:700; color:#e11d48; font-size:17px; letter-spacing:1px; }
.btn-copy { display:block; width:100%; margin-top:6px; padding:11px; background:#2563eb; color:#fff; border:0; border-radius:8px; font-size:15px; cursor:pointer; }
.result-box.warn { border-color:#ffd9a0; }

/* ---------- 多网盘展示块 ---------- */
.dl-block { border:1px solid #eef0f3; border-radius:10px; padding:12px 14px; margin-bottom:12px; background:#fafbfc; }
.dl-block:last-of-type { margin-bottom:0; }
.dl-block-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
.dl-platform { font-size:14px; font-weight:700; color:#111; }
.dl-platform::before { content:''; display:inline-block; width:8px; height:8px; border-radius:50%; background:#2563eb; margin-right:6px; vertical-align:1px; }
.dl-block .btn-copy { width:auto; display:inline-block; padding:7px 14px; font-size:13px; margin-top:0; }

/* ---------- 后台：网盘输入分组 ---------- */
.disk-group { border:1px dashed #dbe3ee; border-radius:10px; padding:10px 12px; margin-bottom:10px; background:#f8fafc; }
.disk-group:last-child { margin-bottom:0; }
.disk-group-title { font-size:13px; font-weight:700; color:#1e3a8a; margin-bottom:6px; }
.disk-group input { display:block; width:100%; box-sizing:border-box; margin-bottom:6px; }
.disk-group input:last-child { margin-bottom:0; }

/* ---------- 侧边栏客服弹窗 ---------- */
.help-fab { position:fixed; right:18px; top:75%; z-index:998; width:56px; height:56px; border-radius:50%; background:#2563eb; color:#fff; display:flex; align-items:center; justify-content:center; box-shadow:0 4px 14px rgba(37,99,235,.35); cursor:grab; font-size:14px; overflow:hidden; touch-action:none; user-select:none; -webkit-user-select:none; }
.help-fab:active { cursor:grabbing; }
.help-fab img { width:100%; height:100%; object-fit:cover; }
.help-mask { display:none; position:fixed; top:0; left:0; right:0; bottom:0; background:rgba(0,0,0,.45); z-index:1200; align-items:center; justify-content:center; }
.help-dialog { position:relative; width:82%; max-width:340px; background:#fff; border-radius:16px; padding:26px 22px 22px; text-align:center; }
.help-close { position:absolute; top:10px; right:12px; width:30px; height:30px; border:0; background:#f1f3f5; color:#666; font-size:20px; line-height:30px; border-radius:50%; cursor:pointer; }
.help-title { font-size:17px; font-weight:700; color:#111; margin-bottom:10px; }
.help-text { font-size:14px; color:#555; line-height:1.6; margin-bottom:14px; word-break:break-all; }
.help-img img { max-width:100%; width:200px; border-radius:10px; border:1px solid #eef0f3; }

/* 已购状态：已购买文字左侧、蓝色按钮右侧水平齐平 */
.buy-fixed.bought-bar { display:flex; align-items:center; justify-content:space-between; gap:10px; }

/* ---------- 已购标识 ---------- */
.bought-badge { display:inline-block; padding:8px 16px; background:#16a34a; color:#fff; border-radius:8px; font-size:14px; }
.bought-tip { margin-top:8px; color:#16a34a; font-size:13px; }
.tip.small { font-size:13px; margin-top:4px; }
.tip.small a { color:#2563eb; text-decoration:none; }

/* ---------- 预览页总页数徽标 ---------- */
.preview-note-wrap { margin-bottom:12px; }
.page-badge { background:#eff6ff; border:1px solid #bfdbfe; border-radius:10px; padding:10px 14px; text-align:center; margin-bottom:10px; }
.page-badge-num { font-size:22px; font-weight:800; color:#1d4ed8; }
.page-badge-sub { display:block; margin-top:4px; font-size:13px; color:#64748b; }

/* ---------- 支付方式选择弹层 ---------- */
.pay-mask { display:none; position:fixed; top:0; left:0; right:0; bottom:0; background:rgba(0,0,0,.45); z-index:999; align-items:center; justify-content:center; }
.pay-dialog { width:86%; max-width:320px; background:#fff; border-radius:14px; padding:22px 18px; text-align:center; }
.pay-title { font-size:16px; font-weight:600; margin-bottom:16px; color:#111; }
.pay-option { display:block; padding:13px 0; border-radius:10px; margin-bottom:10px; color:#fff; font-size:15px; text-decoration:none; }
.pay-alipay { background:#1677ff; }
.pay-wxpay { background:#07c160; }
.pay-cancel { width:100%; padding:11px; border:1px solid #e5e7eb; background:#fff; border-radius:10px; color:#666; font-size:14px; cursor:pointer; margin-top:2px; }

/* ---------- 联系方式弹层 ---------- */
.contact-mask { display:none; position:fixed; top:0; left:0; right:0; bottom:0; background:rgba(0,0,0,.45); z-index:999; align-items:center; justify-content:center; }
.contact-dialog { width:88%; max-width:340px; background:#fff; border-radius:14px; padding:24px 18px; text-align:center; }
.contact-title { font-size:16px; font-weight:600; color:#111; }
.contact-sub { font-size:13px; color:#888; margin:6px 0 16px; }
.contact-input { width:100%; box-sizing:border-box; padding:12px; border:1px solid #ddd; border-radius:10px; font-size:15px; margin-bottom:14px; text-align:center; }
.contact-input:focus { outline:none; border-color:#2563eb; }
.btn-submit-buy { width:100%; padding:12px; background:#2563eb; color:#fff; border:0; border-radius:10px; font-size:15px; cursor:pointer; }
.btn-direct-buy { width:100%; padding:12px; background:#07c160; color:#fff; border:0; border-radius:10px; font-size:15px; cursor:pointer; margin-top:8px; }

/* ---------- 文件详情弹层 ---------- */
.info-mask { display:none; position:fixed; top:0; left:0; right:0; bottom:0; background:rgba(0,0,0,.45); z-index:1000; align-items:center; justify-content:center; }
.info-dialog { width:88%; max-width:360px; background:#fff; border-radius:14px; padding:20px 18px; }
.info-head { font-size:16px; font-weight:600; margin-bottom:14px; color:#111; text-align:center; }
.info-body { font-size:14px; }
.info-row { display:flex; gap:10px; padding:8px 0; border-bottom:1px dashed #eef0f3; }
.info-row:last-child { border-bottom:0; }
.info-label { flex-shrink:0; width:56px; color:#888; }
.info-value { flex:1; word-break:break-all; color:#1f2937; line-height:1.5; }

/* ---------- 目录树文件清单 ---------- */
.dir-head { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-bottom:10px; }
.dir-head h2 { margin:0; font-size:17px; }
.dir-back { display:inline-block; padding:6px 14px; background:#fff; border:1px solid #dbe3ee; border-radius:8px; color:#2563eb; font-size:13px; cursor:pointer; }
.dir-back:hover { background:#eff6ff; }
.dir-crumb { width:100%; color:#9ca3af; font-size:12px; word-break:break-all; }
.ftree { list-style:none; padding:0; margin:0; }
.ftree .fdir { margin:2px 0; }
.ftree .fdir .fdir-row { cursor:pointer; display:flex; align-items:center; gap:6px; padding:8px 10px; background:#f3f4f6; border-radius:8px; font-weight:600; font-size:14px; color:#374151; }
.ftree .fdir .fdir-row:hover { background:#e5e7eb; }
.ftree .fdir .fdir-row::before { content:"▸"; color:#9ca3af; font-size:12px; }
.ftree .fdir > summary:hover { background:#e5e7eb; }
.ftree .fdir .fd-count { color:#9ca3af; font-weight:400; font-size:12px; }
.ftree .fdir > details > ul { padding-left:14px; margin:6px 0 6px 8px; border-left:2px solid #e5e7eb; }
.ftree .ffile { display:flex; align-items:center; gap:8px; padding:7px 10px; border-radius:8px; font-size:14px; }
.ftree .ffile:hover { background:#f9fafb; }
.ftree .ffile .fext-tag { flex-shrink:0; min-width:44px; text-align:center; font-size:11px; font-weight:700; color:#fff; background:#64748b; border-radius:4px; padding:2px 6px; }
.ftree .ffile .fname { flex:1; word-break:break-all; color:#1f2937; cursor:pointer; }
.ftree .ffile .fname:hover { color:#2563eb; }
.ftree .ffile .fsize { flex-shrink:0; color:#9ca3af; font-size:12px; }
.ftree .ffile .fop { flex-shrink:0; }
.ftree .ffile .btn-preview { display:inline-block; padding:4px 12px; background:#2563eb; color:#fff; border-radius:6px; font-size:12px; text-decoration:none; }
.ftree .ffile .no-preview { color:#d1d5db; font-size:12px; }
.ftree .fdir .fd-icon { width:18px; height:18px; vertical-align:middle; flex-shrink:0; }
.ftree .ffile .file-icon { width:22px; height:22px; flex-shrink:0; vertical-align:middle; }

/* ---------- 手机端：资料目录适配（隐藏大小、收紧边距、文件名最多2行） ---------- */
@media (max-width: 640px) {
  .ftree { padding:0 2px; }
  .ftree .fdir .fdir-row { padding:9px 8px; font-size:13px; gap:5px; }
  .ftree .fdir .fd-icon { width:17px; height:17px; }
  .ftree .ffile { padding:9px 6px; gap:7px; }
  .ftree .ffile .fsize { display:none; } /* 手机端隐藏文件大小 */
  .ftree .ffile .file-icon { width:20px; height:20px; }
  .ftree .ffile .fext-tag { min-width:34px; font-size:10px; padding:2px 4px; }
  .ftree .ffile .fname {
    flex:1; font-size:13px; line-height:1.45; color:#1f2937;
    display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
  }
  .ftree .ffile .btn-preview { padding:5px 13px; font-size:13px; white-space:nowrap; }
}

/* ---------- 订单查询 ---------- */
.order-query { background:#fff; border:1px solid #eef0f3; border-radius:12px; padding:18px; margin-top:14px; }
.order-query h1 { font-size:17px; margin-bottom:12px; }
.order-query form { display:flex; gap:8px; }
.order-query input { flex:1; padding:10px 12px; border:1px solid #ddd; border-radius:8px; font-size:14px; }
.order-query button { padding:10px 20px; background:#2563eb; color:#fff; border:0; border-radius:8px; cursor:pointer; }
.order-item { border-bottom:1px dashed #eef0f3; padding:10px 0; text-align:left; }
.order-item:last-child { border-bottom:0; }
.order-item-row { display:flex; align-items:center; gap:8px; font-size:13px; margin-bottom:4px; }
.order-item-no { font-weight:600; color:#111; }
.order-item-st { font-size:12px; padding:2px 8px; border-radius:4px; }
.st-ok { background:#dcfce7; color:#15803d; }
.st-wait { background:#fef3c7; color:#b45309; }
.order-item-link { color:#2563eb; text-decoration:none; }

/* ---------- 后台登录 ---------- */
.admin-login { background:#fff; border:1px solid #eef0f3; border-radius:12px; padding:28px; margin-top:40px; }
.admin-login h1 { font-size:19px; margin-bottom:16px; text-align:center; }
.admin-login input { width:100%; padding:11px 12px; border:1px solid #ddd; border-radius:8px; margin-bottom:12px; font-size:15px; box-sizing:border-box; }
.admin-login button { width:100%; padding:11px; background:#2563eb; color:#fff; border:0; border-radius:8px; font-size:15px; cursor:pointer; }
.admin-login .tip { text-align:center; margin-top:12px; }
.admin-login .tip a { color:#2563eb; text-decoration:none; }

/* ---------- 通用 ---------- */
.site-foot { text-align:center; color:#aaa; font-size:12px; margin-top:26px; padding-top:14px; border-top:1px dashed #e5e7eb; }
.alert { background:#fff4e5; border:1px solid #ffd9a0; color:#9a5b00; padding:10px 14px; border-radius:8px; margin-bottom:12px; font-size:14px; }
code { background:#f3f4f6; padding:1px 6px; border-radius:4px; font-size:12px; }
a { color:#2563eb; }

/* ---------- 划线价（页首金额旁） ---------- */
/* V46.1：价格与划线价同行、字符底线基线对齐；限时活动标签绝对定位在价格右上角 */
.price-group { display:flex; align-items:baseline; gap:8px; position:relative; }
.price-origin { font-size:14px; color:#9ca3af; text-decoration:line-through; font-weight:400; }
.tag-limit { position:absolute; top:-11px; right:0; width:67px; height:22px; line-height:22px; text-align:center; background:linear-gradient(135deg,#f7d774,#e8b923); color:#7a4b00; font-size:13.2px; font-weight:700; border-radius:6px; box-shadow:0 1px 3px rgba(0,0,0,.12); padding:0; white-space:nowrap; }  /* V50.1：桌面标签下移4px(-15→-11)，与划线价间距缩小一倍(7→3px) */

/* ==================== V40/V40.1：手机版商品页顶部信息框统一规则 ====================
   规则：封面 0.9 倍(99px) 左侧、标题/简介正常流在上、价格行下沉到购买区底部全宽
   （价格组+180px 按钮同行、按钮底边与划线价底边对齐）、付款提示条固定在最底一行 */
@media (max-width:520px) {
  .detail-cover { width:99px; height:99px; }                    /* V40.1：封面缩小 0.9 倍 */
  .detail-info h1 { font-size:15px; line-height:1.45; }        /* 标题紧凑，减少撑高 */
  .intro { margin-top:4px; }
  .detail-info .tip.small { margin-top:8px; white-space:nowrap; }  /* V43：单行显示，字号由 JS 自适应 */
  .tag-limit { width:58px; height:18px; line-height:18px; font-size:10.8px; top:-1px; }  /* V50：手机金框固定 58×18px、文字 10.8px(1.2倍)、下移15px(top:-16→-1) */
  /* V49：手机版"已付款？"靠右显示，与立即购买按钮右缘对齐；V52：上移25px(24→49)；V53：下边框上移20px、元素保持不动(bottom 49→29) */
  .detail-info .tip.small { position:absolute; left:auto; right:14px; bottom:29px; text-align:right; margin:0; }
  .detail-head { padding-bottom:96px; }                         /* V53：下边框上移20px(116→96)，框内元素页面位置不动 */
  .price-row { position:absolute; left:14px; right:14px; bottom:38px; align-items:flex-end; }  /* V53：抵消边框移动，元素位置不变(bottom 58→38) */
  /* V44：手机按钮 高减小5px(39px)、宽加8px(约98px)、字号+1(16px)；V52：按钮上移25px（行上移10 + 平移15） */
  .price-row .btn-buy { height:39px; line-height:39px; padding:0 19px; font-size:16px; transform:translateY(-15px); }
  /* V44：付款提示条单行，字号由 JS 自适应（去掉省略号）；V53：bottom 29→9（随边框上移、元素位置不变），不超出卡片边框 */
  .tip.pay-tip { position:absolute; left:auto; right:14px; bottom:9px; white-space:nowrap; font-size:12.5px; margin-top:0; margin-bottom:0; color:#999; text-align:right; }  /* V50：手机付款提示靠右，与立即购买按钮右缘对齐(right:14) */
  /* V44：手机端客服悬浮按钮缩小 0.8 倍（56px→45px） */
  .help-fab { width:45px; height:45px; right:12px; font-size:11px; }
}
/* V46：电脑版顶部信息框两条提示字符靠右显示 */
@media (min-width:521px) {
  .detail-info .tip.small, .detail-info .tip.pay-tip { text-align:right; }
}

/* ==================== V40：资料说明框 ==================== */
/* V44/V45：显式 padding:0 消除 .section 的 14px 叠加；V45 上间距再减5px=10px、左边距加10px=16px */
.desc-box { background:#fff; border:1px solid #eef0f3; border-radius:12px; padding:0; }
.desc-box .dir-head { padding:10px 16px 5px 16px; margin-bottom:0; }
.desc-box .dir-head h2 { font-size:16px; }
.desc-text { padding:2px 16px 12px 16px; font-size:14px; color:#374151; line-height:1.5; word-break:break-all; white-space:pre-wrap; }

/* ==================== V40：分享商品（页面最下方按钮 + 弹窗 + 海报） ==================== */
.share-zone { text-align:center; margin:10px 0 14px; }
.share-btn-page { display:inline-flex; align-items:center; gap:6px; padding:9px 28px; border:1px solid #dbe2ee; background:#fff; color:#2563eb; border-radius:22px; font-size:14px; font-weight:600; cursor:pointer; box-shadow:0 1px 4px rgba(0,0,0,.06); }
.share-btn-page:active { background:#f5f8ff; }

.share-mask { display:none; position:fixed; top:0; left:0; right:0; bottom:0; background:rgba(0,0,0,.45); z-index:1300; align-items:center; justify-content:center; }
.share-mask.show { display:flex; }
.share-dialog { background:#fff; border-radius:16px; width:92%; max-width:560px; max-height:88vh; overflow:hidden; padding:20px 18px 18px; }
.share-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.share-head strong { font-size:16px; }
.share-close { width:30px; height:30px; border:0; background:#f1f3f5; color:#666; font-size:19px; line-height:30px; border-radius:50%; cursor:pointer; }
.share-opts { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.opt-card { border:1px solid #e5e9f0; background:#fafbfc; border-radius:12px; padding:14px 10px; display:flex; flex-direction:column; align-items:center; gap:7px; cursor:pointer; font-size:14px; font-weight:600; color:#1f2937; }
.opt-card:hover { border-color:#2563eb; color:#2563eb; background:#f5f8ff; }
.opt-card svg { color:#2563eb; }
.opt-sub { font-size:12px; font-weight:400; color:#9ca3af; text-align:center; }

.poster-sec { margin-top:14px; border-top:1px dashed #e5e9f0; padding-top:14px; }
.poster-tabs { display:flex; gap:8px; margin-bottom:12px; }
.poster-tabs button { flex:1; padding:8px 0; border:1px solid #dbe2ee; background:#fff; border-radius:8px; font-size:13px; color:#4b5563; cursor:pointer; }
.poster-tabs button.on { background:#2563eb; border-color:#2563eb; color:#fff; }
.poster-view { position:relative; width:100%; background:#eef0f3; border-radius:10px; overflow:hidden; max-height:42vh; }
.poster-inner { transform-origin:top left; }
.poster-inner.off { position:absolute; left:-9999px; top:0; }
.poster-dl { margin-top:12px; text-align:center; }
.poster-dl button { padding:10px 26px; background:#2563eb; color:#fff; border:0; border-radius:8px; font-size:14px; font-weight:600; cursor:pointer; }
.poster-dl button:active { background:#1d4ed8; }
.poster-hint { font-size:12px; color:#9ca3af; margin-top:8px; text-align:center; }

/* 海报本体（固定设计尺寸；四周 6px 浅灰内阴影；淡蓝渐变底 + 右下光晕装饰） */
.poster-h { width:960px; height:400px; background:linear-gradient(180deg,#ffffff 0%,#f7faff 100%); position:relative; overflow:hidden; font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif; box-shadow:inset 0 0 6px rgba(0,0,0,.10); }
.poster-v { width:540px; height:720px; background:linear-gradient(180deg,#ffffff 0%,#f7faff 100%); position:relative; overflow:hidden; font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif; box-shadow:inset 0 0 6px rgba(0,0,0,.10); }
.poster-h::after { content:''; position:absolute; right:-70px; bottom:-70px; width:260px; height:260px; border-radius:50%; background:radial-gradient(circle,rgba(219,234,254,.55) 0%,rgba(219,234,254,0) 72%); }
.poster-v::after { content:''; position:absolute; left:-80px; bottom:-80px; width:300px; height:300px; border-radius:50%; background:radial-gradient(circle,rgba(219,234,254,.55) 0%,rgba(219,234,254,0) 72%); }

/* 横版（2.4:1） */
.ph-brand { position:absolute; left:44px; top:26px; display:flex; align-items:center; gap:10px; }
.ph-logo { width:32px; height:32px; border-radius:9px; background:linear-gradient(135deg,#3b82f6,#2563eb); display:flex; align-items:center; justify-content:center; color:#fff; font-weight:800; font-size:17px; font-family:'SimSun','STSong','宋体',serif; }
.ph-brand-name { font-size:24px; font-weight:800; color:#1e3a8a; letter-spacing:1px; font-family:'SimSun','STSong','宋体',serif; }
.ph-title-wrap { position:absolute; left:44px; top:84px; width:600px; overflow:hidden; }
.ph-icon { float:left; width:64px; height:86px; margin:0 14px 6px 0; border-radius:14px; overflow:hidden; box-shadow:0 6px 16px rgba(37,99,235,.16); background:#fff; }
.ph-icon img { width:100%; height:100%; object-fit:cover; }
.ph-title { font-size:30px; font-weight:800; color:#0f172a; line-height:1.42; word-break:break-all; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; overflow:hidden; }
.ph-meta { position:absolute; left:44px; top:252px; clear:both; display:flex; gap:12px; }
.ph-chip { display:inline-block; padding:7px 16px; border-radius:20px; font-size:19px; font-weight:600; box-shadow:0 2px 6px rgba(0,0,0,.05); }
.ph-chip.files { background:#eef4ff; color:#2563eb; }
.ph-chip.size { background:#f3f4f6; color:#4b5563; }
.ph-qr-side { position:absolute; right:44px; top:74px; width:200px; text-align:center; }
.ph-qr-wrap { background:#f8fafc; border:1px solid #eef0f3; border-radius:18px; padding:18px 15px 14px; box-shadow:0 6px 16px rgba(15,23,42,.06); }
.ph-qr-big { width:164px; height:164px; margin:0 auto; border-radius:12px; background:#fff; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.ph-qr-big img { width:100%; height:100%; object-fit:contain; }
.ph-qr-note { margin-top:12px; font-size:17px; color:#9ca3af; font-weight:600; }

/* 竖版（3:4） */
.pv-brand { position:absolute; left:30px; top:30px; display:flex; align-items:center; gap:10px; }
.pv-logo { width:36px; height:36px; border-radius:10px; background:linear-gradient(135deg,#3b82f6,#2563eb); display:flex; align-items:center; justify-content:center; color:#fff; font-weight:800; font-size:19px; font-family:'SimSun','STSong','宋体',serif; box-shadow:0 4px 10px rgba(37,99,235,.25); }
.pv-brand-name { font-size:24px; font-weight:800; color:#1e3a8a; font-family:'SimSun','STSong','宋体',serif; }
.pv-cover { position:absolute; left:50%; top:86px; transform:translateX(-50%); width:200px; height:200px; border-radius:22px; overflow:hidden; box-shadow:0 10px 26px rgba(37,99,235,.18); background:#fff; }
.pv-cover img { width:100%; height:100%; object-fit:cover; }
.pv-title { position:absolute; left:30px; right:30px; top:310px; font-size:22px; font-weight:800; color:#0f172a; line-height:1.42; text-align:center; word-break:break-all; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; overflow:hidden; }
.pv-meta { position:absolute; left:0; right:0; top:452px; display:flex; justify-content:center; gap:12px; }
.pv-chip { display:inline-block; padding:8px 18px; border-radius:22px; font-size:18px; font-weight:600; box-shadow:0 2px 6px rgba(0,0,0,.05); }
.pv-chip.files { background:#eef4ff; color:#2563eb; }
.pv-chip.size { background:#f3f4f6; color:#4b5563; }
/* 竖版二维码（V43：改为横版同款样式——浅灰底卡 + 白底二维码框 + 底部灰字） */
.pv-qr-wrap { position:absolute; left:50%; top:506px; transform:translateX(-50%); background:#f8fafc; border:1px solid #eef0f3; border-radius:18px; padding:14px 14px 12px; box-shadow:0 6px 16px rgba(15,23,42,.06); text-align:center; }
.pv-qr-big { width:150px; height:150px; margin:0 auto; border-radius:12px; background:#fff; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.pv-qr-big img { width:100%; height:100%; object-fit:contain; }
.pv-qr-note { margin-top:10px; font-size:17px; font-weight:600; color:#9ca3af; }
