/* ===========================================================
   方剑科技 · 付费资源下载站  前台样式
   自适应：PC 多列大屏 / 手机单列触控
   =========================================================== */
:root{
  --pri:#7b5cff;
  --pri2:#2f6bff;
  --pri-grad:linear-gradient(135deg,#8b5cff 0%,#4a6bff 60%,#2f9bff 100%);
  --pink:#ff4d6d;
  --orange:#ff9f43;
  --gold:#f5a623;
  --green:#2fd0a5;
  --bg:#f4f5fb;
  --card:#ffffff;
  --line:#ececf5;
  --text:#23233c;
  --muted:#8b8ba7;
  --radius:16px;
  --shadow:0 6px 24px rgba(85,85,160,.07);
  --shadow-lg:0 12px 40px rgba(85,85,160,.13);
  --maxw:1280px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  font:14px/1.7 -apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  background:var(--bg);color:var(--text);
  padding-bottom:env(safe-area-inset-bottom);
}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block;border:0}
input,textarea,select,button{font-family:inherit;font-size:14px;outline:none}
h1,h2,h3,h4,p{margin:0}
ul{margin:0;padding:0;list-style:none}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 14px}
.mt10{margin-top:10px}.mt16{margin-top:16px}.mt24{margin-top:24px}
.hide{display:none!important}
.flex{display:flex;align-items:center}
.between{display:flex;align-items:center;justify-content:space-between}
.muted{color:var(--muted)}
.f12{font-size:12px}.f13{font-size:13px}.f16{font-size:16px}
.bold{font-weight:700}
.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.c-pink{color:var(--pink)}.c-pri{color:var(--pri)}.c-gold{color:var(--gold)}.c-green{color:var(--green)}

/* ================= 顶部导航 ================= */
.hd{position:sticky;top:0;z-index:80;background:rgba(255,255,255,.92);backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid var(--line)}
.hd-in{max-width:var(--maxw);margin:0 auto;padding:0 14px;height:62px;display:flex;align-items:center;gap:18px}
.hd-logo{display:flex;align-items:center;gap:9px;flex-shrink:0}
/* Logo 按原始比例完整展示，不做裁切（原图 3:1 横向品牌组合） */
.hd-logo img{height:38px;width:auto;max-width:200px;object-fit:contain;border-radius:8px}
.hd-logo .nm{font-size:18px;font-weight:800;letter-spacing:.5px;background:linear-gradient(135deg,#7b3ff2,#2f6bff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.hd-nav{display:flex;align-items:center;gap:4px;margin-left:6px}
.hd-nav a{padding:7px 13px;border-radius:9px;color:#4c4c68;font-size:14.5px;transition:.18s}
.hd-nav a:hover{background:#f3f1ff;color:var(--pri)}
.hd-nav a.on{background:#f1eeff;color:var(--pri);font-weight:700}
.hd-search{flex:1;max-width:380px;margin-left:auto;position:relative}
.hd-search input{width:100%;height:38px;padding:0 40px 0 15px;border:1px solid #e8e8f4;background:#f8f8fd;border-radius:20px;transition:.2s}
.hd-search input:focus{background:#fff;border-color:#c9bcff;box-shadow:0 0 0 3px rgba(123,92,255,.1)}
.hd-search button{position:absolute;right:5px;top:4px;width:30px;height:30px;border:0;background:transparent;cursor:pointer;color:var(--pri);font-size:15px}
.hd-right{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:auto}
.btn-login{padding:7px 16px;border-radius:20px;border:1px solid #dcd6ff;color:var(--pri);font-weight:600;background:#fff}
.btn-reg{padding:7px 18px;border-radius:20px;background:var(--pri-grad);color:#fff;font-weight:600;box-shadow:0 5px 14px rgba(91,75,232,.3)}
.hd-user{display:flex;align-items:center;gap:8px;padding:4px 10px 4px 4px;border-radius:22px;background:#f6f5ff;cursor:pointer}
.hd-user img{width:32px;height:32px;border-radius:50%;object-fit:cover;background:#e6e3ff}
.hd-user .un{max-width:88px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:600}
.hd-burger{display:none;width:38px;height:38px;border-radius:10px;border:0;background:#f4f3ff;color:var(--pri);font-size:18px;cursor:pointer}

/* ================= 首页 Hero ================= */
/* 背景板：默认渐变；后台可上传背景图（.hero.has-bg）并通过 --hero-mask 调遮罩浓度 */
.hero{
  background:var(--pri-grad);color:#fff;padding:38px 0 34px;position:relative;overflow:hidden;
  --hero-mask:.45;
}
.hero.has-bg{
  background-color:#20204a;
  background-image:var(--hero-img);
  background-size:cover;
  background-position:center center;
  background-repeat:no-repeat;
}
/* 有背景图时压一层可调浓度的深色遮罩，保证文字始终清晰可读 */
.hero.has-bg:after{
  content:"";position:absolute;inset:0;z-index:0;
  background:linear-gradient(180deg, rgba(16,16,40,var(--hero-mask)) 0%, rgba(16,16,40,calc(var(--hero-mask) * .82)) 100%);
}
/* 无背景图时保留两个装饰光斑 */
.hero:not(.has-bg):after{content:"";position:absolute;right:-60px;top:-80px;width:320px;height:320px;border-radius:50%;background:rgba(255,255,255,.12)}
.hero:not(.has-bg):before{content:"";position:absolute;left:-70px;bottom:-110px;width:260px;height:260px;border-radius:50%;background:rgba(255,255,255,.08)}
.hero-in{max-width:var(--maxw);margin:0 auto;padding:0 14px;position:relative;z-index:2;text-align:center}
.hero h1{font-size:30px;font-weight:800;letter-spacing:1px;text-shadow:0 2px 14px rgba(10,10,30,.28)}
.hero p{margin-top:9px;opacity:.94;font-size:14px;text-shadow:0 1px 10px rgba(10,10,30,.25)}

/* ---------- 首页搜索框：圆润胶囊 + 独立放大镜按钮 ---------- */
.hero-search{
  max-width:580px;margin:22px auto 0;position:relative;
  display:flex;align-items:center;gap:0;
  background:#fff;border-radius:999px;padding:5px 5px 5px 6px;
  box-shadow:0 14px 38px rgba(16,16,50,.26), 0 2px 6px rgba(16,16,50,.10);
  transition:box-shadow .22s ease, transform .22s ease;
}
.hero-search:focus-within{
  box-shadow:0 18px 46px rgba(16,16,50,.32), 0 0 0 4px rgba(91,75,232,.16);
  transform:translateY(-1px);
}
/* 左侧放大镜图标（纯装饰） */
.hero-search .hs-ic{
  flex:0 0 auto;width:40px;display:flex;align-items:center;justify-content:center;
  color:#a8a4c4;pointer-events:none;
}
.hero-search .hs-ic svg{width:19px;height:19px;display:block}
.hero-search input{
  flex:1 1 auto;min-width:0;height:42px;border:0;background:transparent;outline:none;
  padding:0 6px;font-size:14.5px;color:#25243a;box-shadow:none;
}
.hero-search input::placeholder{color:#a8a4c4}
.hero-search button{
  flex:0 0 auto;height:42px;padding:0 26px;border:0;border-radius:999px;
  background:var(--pri-grad);color:#fff;font-size:14px;font-weight:700;letter-spacing:.5px;
  cursor:pointer;display:flex;align-items:center;gap:6px;
  box-shadow:0 6px 16px rgba(91,75,232,.34);
  transition:filter .18s ease, transform .18s ease;
}
.hero-search button:hover{filter:brightness(1.06)}
.hero-search button:active{transform:scale(.97)}
.hero-search button svg{width:17px;height:17px;display:block}
.hero-search button .hs-tx{display:none}
.hero-stats{display:flex;justify-content:center;gap:26px;margin-top:18px;font-size:13px;opacity:.92;flex-wrap:wrap}

/* ================= 分类宫格 ================= */
.cats{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-top:18px;position:relative;z-index:5}
.cat-item{background:#fff;border-radius:14px;padding:14px 12px;display:flex;gap:10px;align-items:center;box-shadow:var(--shadow);transition:.2s;border:1px solid transparent;min-width:0;overflow:hidden}
.cat-item:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:#e6e0ff}
.cat-txt{min-width:0;flex:1 1 0%}
.cat-ico{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:19px;flex-shrink:0;background:#f4f2ff;overflow:hidden}
.cat-ico img{width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block}
.cat-ico .cat-ph{font-size:17px;font-weight:800;line-height:1}
.cat-name{font-weight:700;font-size:14.5px}
.cat-desc{font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gotag{display:inline-block;font-size:10px;padding:1px 5px;border-radius:6px;background:#ffe9ee;color:var(--pink);margin-left:4px;transform:scale(.9)}

/* ================= 排序条 ================= */
.sortbar{display:flex;align-items:center;gap:6px;margin:22px 0 14px;flex-wrap:wrap}
.sortbar .st{font-weight:700;font-size:15.5px;margin-right:6px}
.sortbar a{padding:5px 13px;border-radius:16px;font-size:13px;color:#5d5d78;background:#fff;border:1px solid var(--line)}
.sortbar a.on{background:var(--pri-grad);color:#fff;border-color:transparent;font-weight:600}
.sortbar .total{margin-left:auto;color:var(--muted);font-size:12.5px}

/* ================= 资源卡片 ================= */
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.card{background:var(--card);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:.22s;display:flex;flex-direction:column}
.card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
.card-img{position:relative;aspect-ratio:4/3;background:linear-gradient(135deg,#eef0fb,#e3e8ff);overflow:hidden}
.card-img img{width:100%;height:100%;object-fit:cover;transition:.35s}
.card:hover .card-img img{transform:scale(1.06)}
.card-body{padding:12px 13px;flex:1;display:flex;flex-direction:column}
.card-title{font-size:15px;line-height:1.5;font-weight:800;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:45px;letter-spacing:.1px}

/* --- 价格行：付费/免费 + 价格 + VIP/SVIP 会员价，强制单行不换行 ---
   换行会让「有会员价」的卡片比「没有会员价」的高出一截，同排卡片就对不齐，
   所以这里 nowrap。窄卡放不下时按下面的优先级让步：
     积分标签最先被压缩 → 会员价标签 → 最后才裁切，保证价格本身永远完整。 */
/* 付费/免费 角标：定位在封面图左上角（原来在价格行里，占宽度还挤）
   这样价格行只剩「价格 + VIP价 + SVIP价」，单行永远放得下 */
.cp-flag{position:absolute;left:0;top:0;z-index:2;font-size:10.5px;font-weight:700;
  padding:3px 9px 3px 8px;border-radius:0 0 10px 0;white-space:nowrap;letter-spacing:.2px;
  box-shadow:0 2px 8px rgba(30,30,70,.14)}
.cp-flag.is-pay{background:linear-gradient(135deg,#ff5f6d,#e2374c);color:#fff}
.cp-flag.is-free{background:linear-gradient(135deg,#2fc98a,#0f9d63);color:#fff}
/* 价格行：价格 + VIP/SVIP 会员价，**强制单行**。
   超长金额（如 ¥12999.99 + VIP ¥9999 + SVIP ¥8888）手机上真的放不下，
   由 main.js 的 fitPriceBars() 实测宽度后等比缩小字号，
   保证永远一行显示、永不裁切；这里用 min-height 钉死行高，
   让「有会员价」和「没会员价」的卡片高度完全一致，同排永远对齐。

   ⚠️ 对齐方式用 center 而不是 baseline：
      价格 17px、会员价标签 12px 且带内边距背景框，
      用 baseline 对齐时大字的基线会把小字标签顶得「偏高」，视觉上参差不齐。
      改成垂直居中后，价格与会员价标签的中心线在同一条水平线上，看起来才是齐的。 */
.card-pricebar{display:flex;align-items:center;flex-wrap:nowrap;gap:6px;margin-top:9px;
  line-height:1.35;white-space:nowrap;min-width:0;min-height:1.6em}
/* JS 缩到最小字号仍放不下的极端超长金额（极少见）才允许折行，
   并给足固定高度，保证同排卡片依旧对齐、内容绝不被裁切。 */
.card-pricebar.cp-wrap{flex-wrap:wrap;white-space:normal;min-height:2.9em;align-content:center}
/* 价格是主角：永不压缩。display 用 inline-flex 让 ¥ 与数字基线自洽 */
.cp-now{flex:0 0 auto;display:inline-flex;align-items:baseline;color:var(--pink);
  font-weight:800;font-size:17px;letter-spacing:-.4px;line-height:1}
.cp-now small{font-size:11px;font-weight:600;margin-right:.5px}
.cp-now.free{color:var(--green);font-size:15px}
/* 会员价：可换行，但每个标签自身内容完整可读（纯文字标签，不带 SVG 徽章） */
.cp-vip{flex:0 0 auto;display:inline-flex;align-items:center;gap:3px;
  font-size:12px;line-height:1;border-radius:6px;padding:3px 6px;white-space:nowrap;font-weight:700}
/* 档位名（VIP / SVIP）：加粗小字，颜色跟外层标签一致 */
.cp-vip .cp-tag{font-weight:800;letter-spacing:.2px;font-size:11px;opacity:.9;line-height:1}
/* 会员价数字：与档位名同号，整体协调 */
.cp-vip i{font-style:normal;font-weight:800;line-height:1}
/* 积分标签：最不重要，最先被压缩掉 */
.cp-vip.pt{flex:0 0 auto;background:#fff8e8!important;color:#a1720f!important}

/* 手机端卡片很窄（约 156px 内宽）：积分标签最不重要，直接不显示，
   把宽度全部让给「价格 + VIP 价 + SVIP 价」，保证核心信息一行放得下。
   宽屏卡片（≥200px）仍完整显示积分标签。 */
.card{container-type:inline-size}
@container (max-width: 200px){
  .cp-vip.pt{display:none}
}

/* --- 底部：头像 + 时间 / 点赞数 --- */
.card-foot{margin-top:auto;padding-top:10px;display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px solid #f4f4fa}
.card-meta{display:flex;align-items:center;gap:6px;min-width:0;color:var(--muted)}
.cm-av{width:20px;height:20px;border-radius:50%;flex-shrink:0;background:#eeebff;object-fit:cover;object-position:left center}
.cm-tm{font-size:11px;white-space:nowrap;flex-shrink:0}
.card-like{display:flex;align-items:center;gap:3px;flex-shrink:0;font-size:11.5px;font-weight:700;color:#9a9ab5}
.card-like svg{width:14px;height:14px;display:block}
.card:hover .card-like{color:var(--pink)}
.card-like em{font-style:normal;font-variant-numeric:tabular-nums}

/* 同排卡片等高：卡片本身已是 flex 纵向布局，价格行固定单行 + 底部吸底后自然对齐，
   这里再兜一层，防止标题行数差异把高度撑开 */
.grid{align-items:stretch}
.card{height:100%}

/* 热门推荐：桌面 3 列；手机降到 2 列。
   手机 3 列时每张卡只有约 105px，价格 + 黄金 + 钻石三个价格根本排不下
   （会被压成半个图标），降为 2 列后与上方列表同宽，价格可完整显示。 */
.grid-hot{grid-template-columns:repeat(3,1fr)}

/* ================= 详情页 ================= */
.crumb{font-size:12.5px;color:var(--muted);padding:14px 0}
.crumb a:hover{color:var(--pri)}
/* 侧栏收窄（330→300），主内容更宽，商品图能占更大比例 */
.detail{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}
.panel{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin-bottom:16px}
.d-title{font-size:24px;font-weight:800;line-height:1.42;letter-spacing:.2px}
/* ---------- 发布者信息条 ---------- */
.d-user{display:flex;align-items:center;gap:11px;margin-top:14px}
.d-user .d-av{width:42px;height:42px;border-radius:50%;background:#eeebff;object-fit:cover;flex-shrink:0;border:2px solid #fff;box-shadow:0 2px 8px rgba(91,75,232,.14)}
.d-user .d-uinfo{min-width:0}
.d-user .nm{font-weight:700;font-size:14px;display:flex;align-items:center;gap:6px;color:#23233d}
.d-user .d-badge{font-size:10.5px;font-weight:700;line-height:16px;padding:0 7px;border-radius:9px;color:#5b4be8;background:#eeebff;border:1px solid #ddd6ff}
.d-user .tm{font-size:12px;color:var(--muted);margin-top:2px}
.d-user .d-stat{margin-left:auto;display:flex;align-items:center;gap:0;flex-shrink:0}
.d-user .d-stat .st{display:flex;flex-direction:column;align-items:center;min-width:56px;padding:0 10px}
.d-user .d-stat .st + .st{border-left:1px solid var(--line)}
.d-user .d-stat .st b{font-size:15px;font-weight:800;color:#2d2d4a;line-height:1.2}
.d-user .d-stat .st i{font-style:normal;font-size:11px;color:var(--muted);margin-top:2px}

/* ---------- 互动操作区：四等分图标按钮组 ---------- */
.d-ops{display:grid;grid-template-columns:repeat(4,1fr);margin-top:14px;padding:4px 0;background:#fafaff;border:1px solid #eeeff7;border-radius:14px;overflow:hidden}
.d-ops .op{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:11px 4px;background:transparent;border:0;cursor:pointer;color:#6b6b8a;font-family:inherit;position:relative;transition:background .18s,color .18s;text-decoration:none}
.d-ops .op + .op::before{content:"";position:absolute;left:0;top:22%;bottom:22%;width:1px;background:#e9e9f4}
.d-ops .op:hover{background:#f2f0ff;color:var(--pri)}
.d-ops .op:active{background:#eae6ff}
.d-ops .op-ic{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:#fff;color:inherit;box-shadow:0 2px 6px rgba(85,85,160,.09);transition:.18s}
.d-ops .op-ic svg{width:17px;height:17px;display:block}
.d-ops .op-tx{font-size:12px;line-height:1;font-weight:600}
.d-ops .op-n{font-size:11px;line-height:1;color:#a5a5c0;font-weight:600}
.d-ops .op.on{color:var(--pink)}
.d-ops .op.on .op-ic{background:#fff0f3;color:var(--pink)}
.d-ops .op.js-fav.on{color:var(--gold)}
.d-ops .op.js-fav.on .op-ic{background:#fff7e6;color:var(--gold)}
.d-ops .op.on .op-n{color:var(--pink)}
.d-ops .op.js-fav.on .op-n{color:var(--gold)}

.d-gallery{margin-top:18px}
.d-gallery-hd{font-size:13.5px;font-weight:700;color:#4a4a66;margin-bottom:10px;padding-left:9px;border-left:3px solid var(--pri);line-height:1.2}
.d-imgs{display:grid;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr))}
.d-imgs.n1{grid-template-columns:minmax(0,1fr)}
.d-imgs.n2{grid-template-columns:repeat(2,minmax(0,1fr))}
/* 竖向单列：一张一张往下排（详情页使用） */
.d-imgs.vert{grid-template-columns:minmax(0,1fr);gap:12px}
.d-imgs.vert .di{aspect-ratio:auto;border-radius:12px;border:1px solid #eeeef8;background:#f7f8fd}
.d-imgs.vert .di img{width:100%;height:auto;object-fit:contain;max-height:none}
.d-imgs .di{display:block;position:relative;min-width:0;aspect-ratio:4/3;border-radius:10px;overflow:hidden;background:#f2f3fa;cursor:zoom-in}
.d-imgs.n1 .di{aspect-ratio:16/9}
.d-imgs .di img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .35s}
.d-imgs .di:hover img{transform:scale(1.06)}

/* 大图查看浮层 */
.imgview{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;background:rgba(16,16,28,.92);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.imgview.on{display:flex}
.imgview img{max-width:92vw;max-height:82vh;object-fit:contain;border-radius:8px;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.imgview .iv-close{position:absolute;top:18px;right:20px;width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;cursor:pointer;transition:.2s}
.imgview .iv-close:hover{background:rgba(255,255,255,.28)}
.imgview .iv-nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;display:flex;align-items:center;justify-content:center;font-size:30px;line-height:1;cursor:pointer;user-select:none;transition:.2s}
.imgview .iv-nav:hover{background:rgba(255,255,255,.3)}
.imgview .iv-prev{left:16px}
.imgview .iv-next{right:16px}
.imgview .iv-idx{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);color:#fff;font-size:13px;background:rgba(255,255,255,.16);padding:3px 12px;border-radius:20px}
@media(max-width:640px){
  .d-imgs{gap:6px}
  .d-imgs.vert{gap:9px}
  .imgview .iv-nav{width:38px;height:38px;font-size:24px}
}

.d-content{margin-top:18px;font-size:14.5px;line-height:1.95;color:#3a3a55;word-break:break-word}
.d-content img{border-radius:10px;margin:10px 0}
.d-content p{margin:8px 0}
.d-content ul,.d-content ol{margin:8px 0 8px 20px;padding-left:6px;list-style:disc}
.d-content li{margin:4px 0}
.d-content strong{color:#1d1d38}
.d-content h3{margin:14px 0 6px;font-size:16px}
.d-content pre{background:#f6f7fc;padding:12px;border-radius:10px;overflow:auto}

/* 下载 / 购买 盒子 */
/* ===== 购买 / 下载 合并区（详情页） ===== */
.buy-box{border:1px dashed #ffc9d4;background:#fffafb;border-radius:14px;padding:16px;margin-top:16px}
.buy-box.is-free{border-color:#bfeeda;background:#f6fdfa}
.buy-box .dlbox-hd{display:inline-flex;align-items:center;gap:6px;background:linear-gradient(135deg,#ff5f7e,#ff3d5f);color:#fff;font-size:12.5px;font-weight:600;padding:4px 12px;border-radius:9px}
.buy-box .dlbox-hd.free{background:linear-gradient(135deg,#33d6a6,#12b98a)}
.buy-hd{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
/* 价格 + 会员免费标识：同一行左右分布 */
.buy-line{display:flex;align-items:center;gap:16px;flex-wrap:wrap;background:#fff;border:1px solid #f5eef1;border-radius:12px;padding:13px 16px;margin-bottom:12px}
.buy-price{display:flex;flex-direction:column;gap:5px;flex-shrink:0}
.buy-price .price-now{font-size:32px;font-weight:800;color:var(--pink);line-height:1.05}
.buy-price .price-now small{font-size:16px}
.buy-price .price-now .free{color:var(--green);font-size:26px}
.buy-sub{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pt-price{display:inline-block;font-size:12.5px;color:#a1720f;background:#fff8e8;border:1px solid #ffe3ad;border-radius:8px;padding:2px 9px}
/* 详情页「VIP / SVIP 会员免费」徽章标识 */
.mvip-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.mvip-tags .cv{display:inline-block;font-size:11.5px;border-radius:8px;padding:2px 9px;white-space:nowrap;font-weight:600}
.buy-vip{display:flex;gap:8px;flex-wrap:wrap;align-items:stretch;flex:1 1 auto;min-width:0;margin-left:auto;justify-content:flex-end}
/* 会员价芯片：桌面端最多两列，窄屏自动降到整行，绝不裁切徽章 */
.buy-vip .vip-chip{min-width:0;margin:0;flex:1 1 132px;max-width:190px}
/* 选择支付方式弹窗 */
.pay-sum{text-align:center;font-size:14px;margin-bottom:14px}
.pay-sum b{font-size:23px}
.pay-way{display:block;width:100%;text-align:left;border:1px solid #e8e8f4;background:#fbfbfe;border-radius:12px;padding:13px 15px;font-size:14.5px;font-weight:600;cursor:pointer;margin-bottom:10px;transition:.2s;color:var(--text);font-family:inherit}
.pay-way:hover{border-color:#c9bcff;background:#f6f4ff}
.pay-way small{display:block;font-weight:400;font-size:12px;color:var(--muted);margin-top:3px}
.quota{background:#fff;border-radius:12px;padding:13px 15px;font-size:13.5px;line-height:2.05;color:#4a4a66;border:1px solid #f5eef1}
.quota b{color:var(--pri)}
.quota-tip{margin-top:10px;background:#fff1f4;border-radius:10px;padding:11px 14px;font-size:13.5px;color:#e2374c;text-align:center;font-weight:600;line-height:1.7}
.quota-tip.ok{background:#eefaf4;color:#0f9d63}
.dl-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:13px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:11px;cursor:pointer;font-weight:600;transition:.2s;padding:11px 20px;font-size:14.5px}
.btn:hover{opacity:.93;transform:translateY(-1px)}
.btn-pri{background:var(--pri-grad);color:#fff;box-shadow:0 6px 16px rgba(91,75,232,.28)}
.btn-pink{background:linear-gradient(135deg,#ff5f7e,#ff3d5f);color:#fff;box-shadow:0 6px 16px rgba(255,61,95,.28)}
.btn-blue{background:linear-gradient(135deg,#3d8bff,#2f6bff);color:#fff;box-shadow:0 6px 16px rgba(47,107,255,.25)}
.btn-gray{background:#f2f2f8;color:#55556e}
.btn-gold{background:linear-gradient(135deg,#ffc443,#f5a623);color:#fff;box-shadow:0 6px 16px rgba(245,166,35,.3)}
.btn-block{width:100%}
.btn-lg{padding:14px 26px;font-size:16px;border-radius:13px}
.btn-sm{padding:6px 13px;font-size:13px;border-radius:9px}
.btn[disabled],.btn.disabled{opacity:.55;cursor:not-allowed;transform:none}
.kf-line{text-align:center;margin-top:12px;font-size:13px;color:var(--muted)}
.kf-line b{color:var(--pri)}

/* 侧栏 */
.side-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:14px}
.side-card h3{font-size:15px;font-weight:700;margin-bottom:12px;display:flex;align-items:center;gap:6px}
.side-card h3:before{content:"";width:3px;height:14px;border-radius:2px;background:var(--pri-grad)}
.price-box{text-align:center;padding:8px 0 14px;border-bottom:1px dashed var(--line);margin-bottom:14px}
.price-now{color:var(--pink);font-size:34px;font-weight:800;line-height:1.1}
.price-now small{font-size:15px}
.price-now .free{color:var(--green);font-size:26px}
.vip-chips{display:flex;gap:8px;margin:12px 0}
/* 会员价芯片：底色素净，靠徽章区分档位；徽章+名称一行，价格另起一行，窄屏也不裁切 */
.vip-chip{flex:1 1 0;min-width:0;background:#f8f8fd;border-radius:10px;padding:8px 9px;text-align:center;
  font-size:12px;color:#5d5d78;border:1px solid var(--line);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}
.vip-chip .vc-hd{display:inline-flex;align-items:center;gap:4px;max-width:100%;min-width:0}
.vip-chip .vc-nm{font-size:11.5px;font-weight:700;color:#4a4a66;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vip-chip b{display:block;font-size:14px;color:var(--pink);white-space:nowrap}
.vip-chip b.dim{color:#a3a3bd;font-weight:600}
/* 当前身份高亮：跟随档位（VIP 浅红 / SVIP 浅金） */
.vip-chip.on{border-color:#ffc9a8;background:#fff8f4}
.vip-chip.on.tone-2{border-color:#ffd98a;background:#fffaf0}
.meta-list{font-size:13px;line-height:2.1;color:#5d5d78}
.meta-list span{color:var(--text);font-weight:600}
.rank-item{display:flex;gap:9px;padding:8px 0;border-bottom:1px solid #f6f6fb}
.rank-item:last-child{border:0}
.rank-item img{width:60px;height:42px;object-fit:cover;border-radius:8px;background:#f0f0f8}
.rank-item .t{font-size:13px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rank-item .p{color:var(--pink);font-weight:700;font-size:12.5px;margin-top:3px}
.rank-no{width:16px;height:16px;border-radius:5px;background:#f0f0f8;color:#8b8ba7;font-size:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px}
.rank-no.top{background:var(--pri-grad);color:#fff}

/* ================= 表单 / 认证页 ================= */
.auth-wrap{max-width:440px;margin:34px auto 60px;padding:0 14px}
.auth-card{background:#fff;border-radius:20px;box-shadow:var(--shadow-lg);padding:28px 24px}
.auth-card h2{font-size:21px;font-weight:800;text-align:center}
.auth-card .sub{text-align:center;color:var(--muted);font-size:13px;margin-top:6px}
.f-item{margin-top:16px}
.f-label{display:block;font-size:13px;font-weight:600;color:#5a5a72;margin-bottom:6px}
.f-input{width:100%;height:46px;border:1px solid #e6e6f2;border-radius:12px;padding:0 14px;background:#fbfbfe;transition:.2s}
.f-input:focus{border-color:#bda9ff;background:#fff;box-shadow:0 0 0 3px rgba(123,92,255,.1)}
textarea.f-input{height:auto;min-height:110px;padding:12px 14px;line-height:1.7;resize:vertical}
.f-input.code{letter-spacing:3px}
.f-row{display:flex;gap:10px}
.f-row .f-input{flex:1}
.f-btn-code{white-space:nowrap;height:46px;padding:0 15px;border-radius:12px;border:1px solid #ded7ff;background:#f6f4ff;color:var(--pri);font-weight:600;cursor:pointer;font-size:13px}
.f-btn-code:disabled{opacity:.6;cursor:not-allowed}
.f-btn{width:100%;height:48px;border:0;border-radius:13px;background:var(--pri-grad);color:#fff;font-size:16px;font-weight:700;cursor:pointer;margin-top:22px;box-shadow:0 8px 20px rgba(91,75,232,.28);letter-spacing:1px}
.f-btn:active{transform:scale(.99)}
.f-tip{text-align:center;font-size:13px;color:var(--muted);margin-top:16px}
.f-tip a{color:var(--pri);font-weight:600}
.f-err{background:#fff1f2;color:#e2374c;font-size:13px;padding:9px 13px;border-radius:10px;margin-top:14px}
.guest-box{margin-top:18px;border-top:1px dashed var(--line);padding-top:16px}
.guest-btn{width:100%;height:44px;border-radius:12px;border:1px dashed #d5ccff;background:#faf9ff;color:var(--pri);font-weight:600;cursor:pointer}
.code-pill{margin-top:12px;background:#f6f7fc;border-radius:10px;padding:12px 14px;font-size:13.5px;line-height:1.9;font-family:Consolas,Monaco,monospace;color:#33334d;word-break:break-all}
.code-pill b{color:var(--pri)}

/* ================= 会员开通 ================= */
.vip-hero{background:var(--pri-grad);border-radius:20px;padding:28px 22px;color:#fff;text-align:center;margin-top:18px;position:relative;overflow:hidden}
.vip-hero h2{font-size:24px;font-weight:800}
.vip-hero p{opacity:.9;font-size:13.5px;margin-top:8px}
.vip-list{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:18px}
/* 3 档及以上改自适应多列：一屏内并排看到更多套餐，不用靠下滑 */
.vip-list.more{grid-template-columns:repeat(auto-fit,minmax(238px,1fr));gap:14px}
.vip-card{background:#fff;border-radius:18px;padding:22px 20px;box-shadow:var(--shadow);border:2px solid transparent;position:relative;transition:.2s}
.vip-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
.vip-card.hot{border-color:#ffd9a0}
.vip-card.d{border-color:#d5ccff}
/* --- 套餐对比总览条：所有套餐的价格 / 免费次数一屏看完 --- */
.vip-overview{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:10px;margin-top:16px}
.vo-item{background:#fff;border-radius:14px;padding:12px 12px 11px;box-shadow:var(--shadow);border:1px solid #f0eefb;text-align:center;min-width:0}
.vo-hd{display:flex;flex-direction:column;align-items:center;gap:5px}
.vo-hd .vbadge{padding:3px 11px 3px 9px;border-radius:8px}
.vo-hd .vbadge b{font-size:13.5px}
.vo-hd .vbadge .vb-crown{width:12px;height:8px}
.vo-name{font-size:12.5px;font-weight:800;color:#3d3d5c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.vo-price{color:var(--pink);font-size:19px;font-weight:800;margin-top:6px;line-height:1.2}
.vo-price small{font-size:11px;font-weight:500;color:var(--muted)}
.vo-free{font-size:11.5px;color:#6a6a88;margin-top:3px}
.vo-free b{color:var(--pri);font-size:13px}
/* --- 卡片内新增：摘要行 / 说明 / 可折叠权益 --- */
.vip-nm{font-size:17px;font-weight:800}
.vip-sum{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.vip-sum>span{font-size:11.5px;border-radius:8px;padding:3px 9px;background:#f6f4ff;color:#5b5b7d;white-space:nowrap}
.vip-sum .vs-free b{color:var(--pri);font-size:13px}
.vip-sum .vs-free-tag{background:#eafaf0;color:#18a058;font-weight:700}
.vip-desc{margin-top:9px;font-size:12.5px;line-height:1.75;color:#7a7a95;background:#fafaff;border-radius:10px;padding:8px 11px}
.vip-more{display:none;margin-top:10px}
.vip-card.open .vip-more{display:block}
.vip-toggle{display:flex;align-items:center;justify-content:center;gap:4px;width:100%;margin-top:11px;
  background:#f7f6ff;border:1px dashed #ddd6ff;color:var(--pri);font-size:12.5px;font-weight:700;
  border-radius:10px;padding:8px 10px;cursor:pointer;font-family:inherit;transition:.18s}
.vip-toggle:hover{background:#f0edff;border-color:#c9bcff}
.vip-toggle svg{width:14px;height:14px;flex-shrink:0;transition:.22s}
.vip-card.open .vip-toggle svg{transform:rotate(180deg)}

/* ================= VIP / SVIP 徽章 =================
   分档配色（文字固定白色）：
     · VIP  → 红色（与站点主色一致的喜庆红）
     · SVIP → 金黄色
   两色都是「深色底 + 白色字体」，对比度足够，好看且一眼能分清档位。 */
.vbadge{display:inline-flex;align-items:center;gap:3px;position:relative;
  padding:2px 7px 2px 6px;border-radius:6px;line-height:1.25;
  font-style:italic;font-weight:900;letter-spacing:.2px;
  color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.28);
  box-shadow:0 1px 3px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.35);
  white-space:nowrap;flex-shrink:0;overflow:hidden}
.vbadge b{font-size:10.5px;font-weight:900;color:#fff}
/* 顶部小皇冠：跟随文字宽度等比缩放，统一白色 */
.vbadge .vb-crown{width:9px;height:6px;flex-shrink:0;fill:#fff;opacity:.97}
/* 第 1 档 VIP：红色 */
.vbadge-vip1,.vbadge.vip1{
  background:linear-gradient(160deg,#ff7a59 0%,#f5533d 52%,#e0332b 100%)}
/* 第 2 档 SVIP：金黄色（深一档的金，白字才压得住） */
.vbadge-vip2,.vbadge.vip2{
  background:linear-gradient(160deg,#ffc940 0%,#f5a623 55%,#e08d0a 100%)}
/* 第 3 档及以上 VIP3+：紫色（高级感，与红/金区分） */
.vbadge-vipn,.vbadge.vipn{
  background:linear-gradient(160deg,#a48bff 0%,#7b5cff 55%,#5a3fd6 100%)}
/* 普通用户：浅灰（不参与会员配色，弱化处理） */
.vbadge-user{background:linear-gradient(160deg,#c9c9dc,#a9a9c4)}
/* 徽章 + 名称的组合 */
.vbadge-wrap{display:inline-flex;align-items:center;gap:5px;vertical-align:middle}
.vbadge-wrap i{font-style:normal;font-weight:700}
.vbadge-wrap-user{color:var(--muted);font-weight:600}
/* 大一号（用在详情页会员价卡片标题等显眼位置） */
.vbadge.lg{padding:3px 10px 3px 8px;border-radius:7px}
.vbadge.lg b{font-size:12.5px}
.vbadge.lg .vb-crown{width:11px;height:7px}
/* 后台表格里用的小号 */
.vbadge.sm{padding:1px 6px 1px 5px;border-radius:5px}
.vbadge.sm b{font-size:10px}
.vbadge.sm .vb-crown{width:8px;height:5.5px}
/* 会员价格标签里的徽章跟着小一号 */
/* 详情页会员免费标签里的徽章（卡片价格行已改为纯文字，不再走徽章） */
.mvip-tags .vbadge{padding:1px 6px 1px 5px;border-radius:5px}
.mvip-tags .vbadge b{font-size:10px}
.mvip-tags .vbadge .vb-crown{width:8px;height:5.5px}
/* 会员价 / 会员身份标签：外层浅色底跟随档位（VIP 浅红 / SVIP 浅金），徽章本身保持白字 */
.cv-uni,.tag-uni{background:#fff1f0;color:#d4380d}
.cv-uni.tone-2,.tag-uni.tone-2{background:#fff8e6;color:#a86a00}
.cv-uni.tone-n,.tag-uni.tone-n{background:#f3f0ff;color:#5a3fd6}
.vip-tag{position:absolute;right:0;top:0;background:linear-gradient(135deg,#ffc443,#f5a623);color:#fff;font-size:11px;padding:4px 12px;border-radius:0 16px 0 12px;font-weight:600}
.vip-card h3{font-size:18px;font-weight:800;display:flex;align-items:center;gap:7px}
.vip-price{color:var(--pink);font-size:32px;font-weight:800;margin:10px 0 2px}
.vip-price small{font-size:14px;font-weight:500;color:var(--muted)}
.vip-feat{margin-top:14px;font-size:13.5px;color:#55556e;line-height:2.1}
.vip-feat li:before{content:"✓";color:var(--green);font-weight:700;margin-right:7px}
.now-vip{background:#fff8e8;border:1px solid #ffe3ab;border-radius:12px;padding:12px 16px;font-size:13.5px;color:#a1720f;margin-top:16px;text-align:center}

/* ================= 用户中心 ================= */
.uc{display:grid;grid-template-columns:230px 1fr;gap:18px;align-items:start;margin-top:16px}
.uc-side{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;position:sticky;top:78px}
.uc-me{background:var(--pri-grad);padding:20px 16px;color:#fff}
.uc-me img{width:54px;height:54px;border-radius:50%;border:2px solid rgba(255,255,255,.6);background:#fff;object-fit:cover}
.uc-me .nm{font-weight:700;margin-top:8px;font-size:15px}
.uc-me .vip{display:inline-block;font-size:11px;background:rgba(255,255,255,.22);padding:2px 9px;border-radius:9px;margin-top:5px}
.uc-menu a{display:flex;align-items:center;gap:9px;padding:12px 18px;font-size:14px;color:#4c4c68;border-left:3px solid transparent}
.uc-menu a:hover{background:#faf9ff;color:var(--pri)}
.uc-menu a.on{background:#f6f4ff;color:var(--pri);font-weight:700;border-left-color:var(--pri)}
.uc-menu a .dot{margin-left:auto;background:var(--pink);color:#fff;font-size:10px;padding:1px 6px;border-radius:8px}
.stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.stat-item{background:#fff;border-radius:14px;padding:15px;box-shadow:var(--shadow)}
.stat-item .lb{font-size:12.5px;color:var(--muted)}
.stat-item .vl{font-size:23px;font-weight:800;margin-top:4px}
.stat-item .vl small{font-size:12px;font-weight:500;color:var(--muted);margin-left:2px}
.uc-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin-bottom:16px}
.uc-card h3{font-size:15.5px;font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:7px}
.uc-card h3:before{content:"";width:3px;height:15px;background:var(--pri-grad);border-radius:2px}
.uc-card h3 .more{margin-left:auto;font-size:12.5px;color:var(--muted);font-weight:400}
.quick{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.quick a{background:#fafaff;border-radius:14px;padding:16px 8px;text-align:center;font-size:13px;color:#4c4c68;border:1px solid #f2f2fa}
.quick a:hover{background:#f6f4ff;border-color:#e2daff;color:var(--pri)}
.quick .ic{font-size:23px;display:block;margin-bottom:6px}
.tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.tbl th{background:#fafaff;color:#6a6a85;font-weight:600;text-align:left;padding:10px 12px;font-size:12.5px;white-space:nowrap}
.tbl td{padding:11px 12px;border-top:1px solid #f4f4fa;vertical-align:middle}
.tbl tr:hover td{background:#fcfcff}
.tbl .t-title{max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
.tag{display:inline-block;font-size:11.5px;padding:2px 9px;border-radius:8px;background:#f2f2f8;color:#66667e}
.tag.green{background:#eafaf3;color:#0f9d63}
.tag.pink{background:#fff0f3;color:#e2374c}
.tag.blue{background:#eef4ff;color:#2f6bff}
.tag.gold{background:#fff8e8;color:#a1720f}
.tag.purple{background:#f3f0ff;color:#6c4ff0}
/* 带图标的分类标签：图标与文字垂直居中 */
.tag:has(.tag-ico){display:inline-flex;align-items:center}
.empty{text-align:center;padding:46px 0;color:var(--muted);font-size:13.5px}
.empty .ic{font-size:40px;display:block;margin-bottom:10px;opacity:.5}

/* ================= 平台优势（首页四宫格） ================= */
.adv-panel{text-align:center}
.quick.adv{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;text-align:center}
.adv-item{display:flex;flex-direction:column;align-items:center;gap:5px;padding:6px 2px;min-width:0}
.adv-ic{width:46px;height:46px;border-radius:14px;background:#f3f1ff;display:flex;align-items:center;justify-content:center;font-size:23px;line-height:1;margin-bottom:3px}
.adv-item b{font-size:14px;font-weight:700;color:var(--text);line-height:1.35;white-space:nowrap}
.adv-item .f12{line-height:1.45;font-size:11.5px;white-space:nowrap}

/* ================= 客服聊天 ================= */
.chat{display:grid;grid-template-columns:250px 1fr;gap:16px;height:calc(100vh - 150px);min-height:480px;margin-top:14px}
.chat-side{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column}
.chat-side .top{padding:16px;background:var(--pri-grad);color:#fff}
.chat-side .top h3{font-size:15px;font-weight:700}
.chat-side .top p{font-size:12px;opacity:.9;margin-top:4px}
.chat-list{flex:1;overflow-y:auto}
.chat-item{display:flex;gap:10px;padding:12px 14px;border-bottom:1px solid #f6f6fb;cursor:pointer}
.chat-item:hover{background:#fafaff}
.chat-item.on{background:#f6f4ff}
.chat-item img{width:38px;height:38px;border-radius:50%;background:#eeebff;flex-shrink:0;object-fit:cover}
.chat-item .nm{font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-item .ms{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-main{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden}
.chat-head{padding:13px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;font-weight:700;font-size:14.5px}
.chat-head .on-dot{width:8px;height:8px;border-radius:50%;background:var(--green)}
.chat-body{flex:1;overflow-y:auto;padding:18px;background:#fafbff}
.msg{display:flex;gap:9px;margin-bottom:16px}
.msg img.av{width:36px;height:36px;border-radius:50%;flex-shrink:0;background:#eeebff;object-fit:cover;object-position:left center}
.msg .bub{max-width:64%;background:#fff;border-radius:4px 14px 14px 14px;padding:10px 13px;font-size:14px;line-height:1.7;box-shadow:0 3px 12px rgba(85,85,160,.07);word-break:break-word}
.msg.me{flex-direction:row-reverse}
.msg.me .bub{background:var(--pri-grad);color:#fff;border-radius:14px 4px 14px 14px}
.msg .tm{font-size:11px;color:var(--muted);align-self:flex-end;margin:0 6px}
.msg .bub img,.msg .bub video{border-radius:9px;max-width:100%}
.chat-input{border-top:1px solid var(--line);padding:10px 14px;background:#fff}
.chat-tools{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap}
.tool-btn{width:32px;height:32px;border-radius:9px;border:0;background:#f5f5fc;color:#6a6a85;font-size:15px;cursor:pointer}
.tool-btn:hover{background:#eeebff;color:var(--pri)}
.chat-input .row{display:flex;gap:10px;align-items:flex-end}
.chat-input textarea{flex:1;border:1px solid #e6e6f2;border-radius:12px;padding:10px 13px;height:44px;max-height:110px;resize:none;background:#fbfbfe;line-height:1.6}
.chat-input textarea:focus{border-color:#bda9ff;background:#fff}
.emoji-panel{display:none;grid-template-columns:repeat(10,1fr);gap:4px;max-height:150px;overflow-y:auto;background:#fafaff;border-radius:10px;padding:8px;margin-bottom:8px}
.emoji-panel span{font-size:19px;text-align:center;cursor:pointer;border-radius:6px;padding:2px}
.emoji-panel span:hover{background:#eeebff}

/* ================= 分页 ================= */
.pager{display:flex;justify-content:center;gap:6px;margin:26px 0;flex-wrap:wrap}
.pager a,.pager span{min-width:36px;height:36px;padding:0 11px;display:inline-flex;align-items:center;justify-content:center;background:#fff;border-radius:10px;font-size:13.5px;color:#55556e;box-shadow:var(--shadow)}
.pager a:hover{color:var(--pri)}
.pager a.active{background:var(--pri-grad);color:#fff;font-weight:700}
.pg-dot{background:transparent!important;box-shadow:none!important}

/* ================= 页脚 ================= */
.ft{margin-top:40px;background:#fff;border-top:1px solid var(--line);padding:26px 0 30px;text-align:center;color:var(--muted);font-size:12.5px;line-height:2}
.ft .links a{margin:0 8px;color:#6a6a85}
.ft .links a:hover{color:var(--pri)}
.ft .warn{margin-top:8px;color:#b9b9cc}

/* ================= 悬浮客服 ================= */
.rail{position:fixed;right:14px;bottom:96px;z-index:70;display:flex;flex-direction:column;gap:9px}
.rail a,.rail button{width:46px;height:46px;border-radius:14px;border:0;background:#fff;box-shadow:var(--shadow-lg);display:flex;align-items:center;justify-content:center;font-size:19px;cursor:pointer;position:relative;color:var(--pri);transition:.2s;font-family:inherit;line-height:1;padding:0}
/* 文字版入口（会员 / 客服 / 微信 / QQ）：字号按两字宽度收紧，保证不撑破 46px 方块 */
.rail a:hover,.rail button:hover{transform:translateY(-2px)}
.rail .kf{background:var(--pri-grad);color:#fff;font-size:13px;font-weight:800;letter-spacing:.5px}
.rail .wx{background:linear-gradient(135deg,#3ddc84,#1fa855);color:#fff;font-size:12.5px;font-weight:800;letter-spacing:.5px}
.rail .qq{background:linear-gradient(135deg,#4aa8ff,#1e6fe0);color:#fff;font-size:12.5px;font-weight:800;letter-spacing:.5px}
.rail .vip{background:linear-gradient(135deg,#ffc443,#f5a623);color:#fff;font-size:13px;font-weight:800;letter-spacing:.5px}
.rail .top{color:#8b8ba7}
.rail .badge{position:absolute;right:-3px;top:-3px;min-width:17px;height:17px;border-radius:9px;background:var(--pink);color:#fff;font-size:10px;display:flex;align-items:center;justify-content:center;padding:0 4px;letter-spacing:0;font-weight:700}
/* 微信 / QQ 二维码浮层 */
.qr-pop{position:fixed;right:72px;bottom:96px;z-index:95;width:238px;background:#fff;border-radius:16px;box-shadow:var(--shadow-lg);padding:14px;display:none;text-align:center}
.qr-pop.show{display:block}
.qr-head{display:flex;align-items:center;justify-content:space-between;font-size:14px;font-weight:700;margin-bottom:10px}
.qr-x{cursor:pointer;color:#9a9ab5;font-size:13px;padding:0 3px}
.qr-body{background:#f7f7fc;border-radius:12px;padding:10px;min-height:150px;display:flex;align-items:center;justify-content:center}
.qr-body img{width:172px;height:172px;object-fit:contain;border-radius:8px;background:#fff}
.qr-none{font-size:12.5px;color:#9a9ab5;line-height:1.9}
.qr-no{margin-top:10px;font-size:12.5px;color:#5a5a72}
.qr-no b{color:var(--pri);word-break:break-all}
.qr-copy{color:var(--pri);cursor:pointer;text-decoration:underline;margin-left:4px}
.qr-tip{margin-top:8px;font-size:11.5px;color:#9a9ab5}

/* ================= 手机底部导航 ================= */
.mnav{display:none;position:fixed;left:0;right:0;bottom:0;z-index:90;background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid #eeeff7;box-shadow:0 -6px 22px rgba(85,85,160,.07);padding:7px 4px calc(7px + env(safe-area-inset-bottom))}
/* 五等分对齐：中间凸起按钮通过绝对定位实现，不再参与 flex 宽度计算，避免第 4 个入口错位 */
.mnav-in{display:flex;align-items:stretch}
.mnav a{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:3px;font-size:10px;color:#9a9ab5;position:relative;padding:3px 0;transition:color .2s}
/* 中间按钮列：为凸出圆钮预留上方空间，文字整体下移，彻底避免圆钮压住文字 */
.mnav a.mid{padding-top:32px}
.mnav a .ic{display:flex;align-items:center;justify-content:center;height:22px;flex-shrink:0}
.mnav a .ic svg{width:22px;height:22px;display:block}
.mnav a .tx{line-height:1;letter-spacing:.2px;white-space:nowrap}
.mnav a.on{color:var(--pri);font-weight:700}
/* 中间按钮：占位宽度与其它项一致，圆形按钮绝对定位向上凸出 */
.mnav a.mid{flex:1 1 0}
.mnav a.mid .ic{position:absolute;left:50%;top:-24px;transform:translateX(-50%);width:50px;height:50px;margin:0;border-radius:50%;background:var(--pri-grad);color:#fff;border:3px solid #fff;box-shadow:0 8px 20px rgba(91,75,232,.42);display:flex;align-items:center;justify-content:center}
.mnav a.mid .ic svg{width:23px;height:23px}
.mnav a.mid:active .ic{transform:translateX(-50%) scale(.93)}
.mnav a.mid .tx{padding-top:0;position:relative;z-index:1}
.mnav .badge{position:absolute;top:0;right:50%;transform:translateX(14px);background:var(--pink);color:#fff;font-size:9.5px;padding:0 5px;border-radius:8px;line-height:15px}

/* ================= 抽屉菜单 ================= */
.drawer-mask{position:fixed;inset:0;background:rgba(30,30,60,.45);z-index:100;opacity:0;visibility:hidden;transition:.25s}
.drawer-mask.show{opacity:1;visibility:visible}
.drawer{position:fixed;left:0;top:0;bottom:0;width:84%;max-width:330px;background:#f6f7fc;z-index:101;transform:translateX(-102%);transition:.28s cubic-bezier(.4,0,.2,1);overflow-y:auto;-webkit-overflow-scrolling:touch;box-shadow:6px 0 30px rgba(40,40,80,.15)}
.drawer.show{transform:none}

/* --- 顶部用户卡 --- */
.drawer .dtop{background:var(--pri-grad);padding:20px 16px 16px;color:#fff;position:relative;border-radius:0 0 22px 22px}
.drawer .dtop .close{position:absolute;right:12px;top:12px;background:rgba(255,255,255,.18);border:0;color:#fff;width:30px;height:30px;border-radius:50%;font-size:15px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.drawer .dtop .close:active{background:rgba(255,255,255,.32)}
.drawer .uinfo{display:flex;gap:11px;align-items:center}
.drawer .uinfo img{width:48px;height:48px;border-radius:50%;border:2px solid rgba(255,255,255,.55);background:#fff;object-fit:cover;flex-shrink:0}
.drawer .uinfo-tx{min-width:0;flex:1}
.drawer .uinfo .nm{font-weight:700;font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drawer .uinfo .ds{font-size:12px;opacity:.88;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 余额 / 积分 */
.drawer .d-cells{display:flex;gap:9px;margin-top:14px}
.drawer .d-cell{flex:1;min-width:0;background:rgba(255,255,255,.16);border-radius:12px;padding:9px 12px;transition:.2s}
.drawer .d-cell:active{background:rgba(255,255,255,.26)}
.drawer .d-cell .lb{font-size:11.5px;opacity:.88}
.drawer .d-cell .vl{font-size:17px;font-weight:800;margin-top:1px;letter-spacing:.3px}
.drawer .d-cell .vl.g{color:#ffe08a}

/* 会员 / 签到按钮 */
.drawer .vipbtn,.drawer .signbtn{margin-top:10px;border-radius:12px;padding:11px 13px;display:flex;align-items:center;gap:9px;font-size:13.5px;font-weight:600;transition:.2s}
.drawer .vipbtn{background:linear-gradient(135deg,#2b2b3f,#1b1b2c);color:#ffd88a}
.drawer .signbtn{background:#fff5e2;color:#c8850a}
.drawer .vipbtn .vi,.drawer .signbtn .vi{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:20px;height:20px}
.drawer .vipbtn .vi svg,.drawer .signbtn .vi svg{width:18px;height:18px;display:block}
.drawer .vipbtn .vt,.drawer .signbtn .vt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drawer .vipbtn .ar,.drawer .signbtn .ar{opacity:.6;font-size:16px;flex-shrink:0}
.drawer .vipbtn:active,.drawer .signbtn:active{transform:scale(.985)}

/* 未登录时的登录/注册按钮 */
.drawer .d-login{display:flex;gap:9px;margin-top:14px}
.drawer .d-login a{flex:1;text-align:center;padding:11px 0;border-radius:12px;font-size:14px;font-weight:700}
.drawer .dl-pri{background:#fff;color:var(--pri)}
.drawer .dl-sec{background:rgba(255,255,255,.2);color:#fff;border:1px solid rgba(255,255,255,.4)}

/* --- 白色分组卡片 --- */
.drawer .d-sec{background:#fff;margin:12px 12px 0;border-radius:16px;padding:14px 14px 4px;box-shadow:0 3px 14px rgba(85,85,160,.06)}
.drawer .d-sec:last-child{margin-bottom:16px}
.drawer .d-sec-t{font-size:12.5px;font-weight:700;color:#8b8ba7;letter-spacing:.4px;margin-bottom:12px;display:flex;align-items:center;gap:6px}
.drawer .d-sec-t:before{content:"";width:3px;height:12px;border-radius:2px;background:var(--pri-grad);display:block}

/* 图标宫格：一行 3 个，2 行刚好放 6 个，不需要滑动 */
.drawer .gnav{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:0 0 12px}
.drawer .gnav a{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 4px;border-radius:13px;font-size:11.5px;color:#55556e;background:#f8f9fd;transition:.18s}
.drawer .gnav a:active{background:#f0eeff}
.drawer .gnav a .ic{width:38px;height:38px;border-radius:12px;background:#fff;display:flex;align-items:center;justify-content:center;color:var(--pri);box-shadow:0 2px 8px rgba(85,85,160,.09)}
.drawer .gnav a .ic svg{width:20px;height:20px;display:block}
.drawer .gnav a .tx{line-height:1;white-space:nowrap}

/* 我的服务（列表式） */
.drawer .d-list{display:flex;flex-direction:column;padding-bottom:8px}
.drawer .d-list a{display:flex;align-items:center;gap:11px;padding:11px 2px;font-size:14px;color:#4c4c68;border-top:1px solid #f4f5fa}
.drawer .d-list a:first-child{border-top:0}
.drawer .d-list .li{width:30px;height:30px;border-radius:9px;background:#f4f3ff;color:var(--pri);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.drawer .d-list .li svg{width:17px;height:17px;display:block}
.drawer .d-list .tx{flex:1;min-width:0}
.drawer .d-list .ar{color:#c9c9dd;font-size:16px;flex-shrink:0}

/* 分类标签 */
.drawer .d-chips{display:flex;flex-wrap:wrap;gap:7px;padding-bottom:14px}
.drawer .d-chips a{font-size:12.5px;color:#55556e;background:#f8f9fd;border:1px solid #f0f0f8;border-radius:9px;padding:7px 11px;transition:.18s;display:inline-flex;align-items:center;gap:5px}
.drawer .d-chips a:active{background:#f0eeff;border-color:#ddd4ff;color:var(--pri)}
/* 分类图标容器（抽屉 / 分类页筛选条共用）：图片与占位字都要统一尺寸对齐 */
.d-cat-ico{width:18px;height:18px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}
.d-cat-ico img{width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit}
.d-cat-ico .cat-ph{font-size:11.5px;font-weight:800;line-height:1;color:#7b6bf0}
.tag-ico{width:16px;height:16px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;margin-right:5px;vertical-align:-3px;overflow:hidden}
.tag-ico img{width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit}
.tag-ico .cat-ph{font-size:10.5px;font-weight:800;line-height:1;color:#7b6bf0}
/* 分类标签内部：让图标与文字垂直居中 */
.tag>.tag-ico+*{vertical-align:middle}

/* ================= 弹窗 ================= */
.modal{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;padding:20px}
.modal.show{display:flex}
.modal-mask{position:absolute;inset:0;background:rgba(30,30,60,.5)}
.modal-box{position:relative;background:#fff;border-radius:18px;width:100%;max-width:480px;max-height:80vh;overflow:auto;box-shadow:0 20px 60px rgba(30,30,70,.3);animation:pop .26s}
@keyframes pop{from{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:none}}
.modal-head{padding:18px 20px 0;font-size:17px;font-weight:800;display:flex;align-items:center;gap:8px}
.modal-body{padding:14px 20px 20px;font-size:14px;line-height:1.9;color:#4a4a66}
.modal-body img{border-radius:10px}
.modal-foot{padding:0 20px 20px;display:flex;gap:10px}
.modal-foot .btn{flex:1}
.announce{background:#f7f5ff;border-radius:12px;padding:13px 15px;font-size:13.5px;line-height:1.9;color:#4a4a66;max-height:44vh;overflow:auto}
.notice-img{margin:0 0 12px}
.notice-img img{display:block;width:100%;height:auto;max-height:42vh;object-fit:contain;border-radius:12px;background:#f4f4f8}
.notice-img+.announce{margin-top:0}
@media (max-width:520px){.notice-img img{max-height:30vh;border-radius:10px}}

/* ================= 响应式 ================= */
@media (max-width:1100px){
  .grid{grid-template-columns:repeat(3,1fr)}
  .cats{grid-template-columns:repeat(3,1fr)}
}
/* 平板/窄屏：提前启用手机导航，避免 769~1100px 区间既没顶部导航又没底部导航 */
@media (max-width:1024px){
  .hd-nav,.hd-search{display:none}
  .hd-burger{display:flex;align-items:center;justify-content:center}
  .mnav{display:block}
  body{padding-bottom:74px}
}
@media (max-width:900px){
  .detail{grid-template-columns:1fr}
  .uc{grid-template-columns:1fr}
  .uc-side{position:static}
  /* 用户中心菜单：改为多行网格，全部入口一眼可见，不用横向滑动 */
  .uc-menu{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:10px}
  .uc-menu a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:0;border-radius:12px;background:#fafaff;padding:11px 2px;font-size:11.5px;line-height:1.25;text-align:center;min-width:0;white-space:normal;transition:.18s}
  .uc-menu a span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .uc-menu a.on{background:#f1eeff;color:var(--pri);font-weight:700}
  .uc-menu a.on:after{content:"";position:absolute;bottom:5px;left:50%;transform:translateX(-50%);width:16px;height:2px;border-radius:2px;background:var(--pri)}
  .uc-menu a{position:relative}
  .chat{grid-template-columns:1fr;height:calc(100vh - 170px)}
  .chat-side{display:none}
  .stat-row{grid-template-columns:repeat(2,1fr)}
  .vip-list{grid-template-columns:1fr}
  /* 手机上仍保持「一屏看到更多套餐」：2 列紧凑卡片 + 单行总览
     注意：不要给容器加 padding-right 去躲悬浮栏 —— 那会把整行推向左、右侧空一大条。
     悬浮栏是 fixed 元素，滚动时内容会从它下面经过，属于正常表现。 */
  .vip-list.more{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .vip-list.more .vip-card{padding:15px 12px;border-radius:14px}
  /* 标题行给右上角「推荐」角标留位，避免压住会员名称 */
  /* 窄卡标题：徽章与名称分两行竖排，彻底避免被「推荐」角标挤压后逐字换行 */
  .vip-list.more .vip-card h3{font-size:13.5px;gap:5px;flex-direction:column;align-items:flex-start;
    padding-right:0;min-height:38px;justify-content:flex-start}
  .vip-list.more .vip-nm{font-size:13px;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
  .vip-list.more .vip-price{font-size:23px;margin:7px 0 2px}
  .vip-list.more .vip-price small{font-size:11px}
  .vip-list.more .vip-sum{gap:4px;margin-top:7px}
  .vip-list.more .vip-sum>span{font-size:10px;padding:2px 6px;border-radius:6px}
  .vip-list.more .vip-toggle{font-size:11px;padding:6px 6px;margin-top:8px}
  .vip-list.more .vip-feat{font-size:12px;line-height:1.85}
  .vip-list.more .vip-desc{font-size:11.5px;padding:7px 9px}
  .vip-list.more .btn{margin-top:11px!important;font-size:12.5px;padding-left:4px;padding-right:4px}
  .vip-overview{grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:7px;margin-top:12px}
  .vo-item{padding:9px 7px 8px;border-radius:11px}
  .vo-name{font-size:11px}
  .vo-price{font-size:16px}
  .vo-price small{font-size:10px}
  .vo-free{font-size:10px;letter-spacing:-.2px}
  .vo-free b{font-size:11.5px}
  .vip-hero{padding:22px 16px;border-radius:16px}
  .vip-hero h2{font-size:19px}
}
@media (max-width:560px){
  .uc-menu{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:768px){
  body{padding-bottom:calc(74px + env(safe-area-inset-bottom))}
  .hd-in{height:56px;gap:10px}
  .hd-nav,.hd-search{display:none}
  .hd-burger{display:flex;align-items:center;justify-content:center}
  .hd-right .btn-login,.hd-right .btn-reg{display:none}
  .hd-logo .nm{font-size:16px}
  .hd-logo img{height:31px;max-width:140px}
  .hero{padding:26px 0 24px}
  .hero h1{font-size:22px}
  .hero p{font-size:12.5px}
  .hero-search{max-width:100%;margin-top:18px;padding:4px 4px 4px 4px}
  .hero-search .hs-ic{width:34px}
  .hero-search .hs-ic svg{width:17px;height:17px}
  .hero-search input{height:40px;font-size:14px;padding:0 4px}
  .hero-search button{height:40px;padding:0 18px;font-size:13.5px}
  .hero-search button svg{width:16px;height:16px}
  .cats{grid-template-columns:repeat(2,1fr);gap:10px;margin-top:14px}
  /* 分类卡片：手机端同样保持「图标在左、文字在右」的横排结构（与桌面一致）。
     文字截断问题已由 .cat-txt / .cat-item 的 min-width:0 解决，无需改成上下排布。 */
  .cat-item{padding:11px 10px;gap:9px}
  .cat-txt{min-width:0;flex:1 1 0%}
  .cat-ico{width:36px;height:36px;font-size:18px;border-radius:10px}
  .cat-name{font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .cat-desc{font-size:10.5px;letter-spacing:-.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .grid{grid-template-columns:repeat(2,1fr);gap:11px}
  /* 热门推荐在手机上改 2 列：3 列时卡宽仅约 105px，价格 + 会员价挤不下 */
  .grid-hot{grid-template-columns:repeat(2,1fr)}
  .card-title{font-size:14px;min-height:42px}
  .card-body{padding:10px 11px}
  .card-pricebar{gap:3px 5px;margin-top:8px}
  .cp-flag{font-size:10px;padding:2.5px 8px 2.5px 7px}
  .cp-now{font-size:16px}
  .cp-now small{font-size:10px}
  .cp-now.free{font-size:13px}
  .cp-vip{font-size:11.5px;padding:2.5px 5px}
  .cp-vip .cp-tag{font-size:10.5px}
  .cm-av{width:18px;height:18px}
  .card-meta{gap:5px}
  .cm-tm{font-size:10.5px}
  .card-like{font-size:11px}
  .card-like svg{width:13px;height:13px}
  .mnav{display:block}
  .rail{bottom:calc(150px + env(safe-area-inset-bottom));right:10px;gap:8px}
  .rail a,.rail button{width:42px;height:42px;font-size:13px;border-radius:13px}
  .rail .kf,.rail .vip{font-size:12px}
  .rail .wx,.rail .qq{font-size:11.5px}
  .rail .top{font-size:18px}
  .qr-pop{right:60px;bottom:calc(150px + env(safe-area-inset-bottom));width:206px;padding:12px}
  .qr-body img{width:150px;height:150px}
  .wrap{padding:0 12px}
  .panel{padding:15px;border-radius:14px}
  .d-title{font-size:19px;line-height:1.4}
  .d-user{gap:9px}
  .d-user .d-av{width:38px;height:38px}
  .d-user .d-stat .st{min-width:48px;padding:0 8px}
  .d-ops .op{padding:10px 2px;gap:4px}
  .d-ops .op-ic{width:28px;height:28px}
  .d-ops .op-ic svg{width:16px;height:16px}
  .d-ops .op-tx{font-size:11.5px}
  .d-ops .op-n{font-size:10.5px}
  .btn{font-size:14px}
  .btn-lg{padding:13px 20px;font-size:15px;width:100%}
  .dl-actions .btn{width:100%}
  /* 价格 + 会员标识：手机端自动换行，价格独占一行更清晰 */
  .buy-line{gap:10px;padding:12px 13px}
  .buy-price{width:100%}
  /* 会员价芯片：手机端整行铺满，横向排列（徽章+名称 一行，价格在右侧），保证完整可见不裁切 */
  .buy-vip{flex:1 1 100%;min-width:0;margin-left:0;justify-content:flex-start;flex-direction:column;gap:7px}
  .buy-vip .vip-chip{flex:0 0 auto;width:100%;max-width:none;
    flex-direction:row;align-items:center;text-align:left;gap:6px;padding:9px 12px}
  .buy-vip .vip-chip .vc-hd{flex:1 1 auto;min-width:0}
  .buy-vip .vip-chip b{display:inline-block;margin-left:auto;font-size:15px;padding-left:8px}
  .buy-price .price-now{font-size:28px}
  .quick{grid-template-columns:repeat(4,1fr);gap:9px}
  .quick a{padding:13px 4px;font-size:11.5px}
  .quick .ic{font-size:20px}
  /* 平台优势：手机端保持一行 4 个；副标题改为两行小字完整显示，不再隐藏 */
  .quick.adv{grid-template-columns:repeat(4,1fr);gap:8px 2px}
  .adv-item{gap:4px;padding:4px 0;align-items:flex-start}
  .adv-ic{width:38px;height:38px;font-size:19px;border-radius:12px;margin-bottom:2px;align-self:center}
  .adv-item b{font-size:11px;letter-spacing:-.3px;white-space:normal;word-break:break-all;line-height:1.25;text-align:center;width:100%}
  .adv-item .f12{display:-webkit-box;font-size:9.5px;line-height:1.35;color:#9a9ab5;white-space:normal;word-break:break-all;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-align:center;width:100%}
  .tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .tbl{min-width:560px;font-size:12.5px}
  .auth-wrap{margin:18px auto 40px}
  .auth-card{padding:22px 18px;border-radius:16px}
  .msg .bub{max-width:76%}
  .chat{height:calc(100vh - 210px)}
  .emoji-panel{grid-template-columns:repeat(8,1fr)}
  .modal-box{max-width:100%}
  .stat-item .vl{font-size:20px}
  /* 手机端抽屉内元素防溢出 */
  .drawer{width:86%;max-width:336px}
  .drawer .d-sec{margin-left:10px;margin-right:10px}
  .drawer .uinfo img{width:44px;height:44px}
  .drawer .uinfo .nm{font-size:15px}
  .drawer .vipbtn,.drawer .signbtn{font-size:13px;padding:10px 12px}
  .kf-line{font-size:12px;line-height:1.8}
}
/* 小屏手机：底部导航文字更紧凑，避免挤压 */
@media (max-width:400px){
  .mnav a{font-size:9.5px}
  .mnav a.mid{padding-top:29px}
  .mnav a.mid .ic{width:44px;height:44px;top:-22px}
  .mnav a .ic svg{width:20px;height:20px}
  .rail{bottom:calc(142px + env(safe-area-inset-bottom))}
  .qr-pop{bottom:calc(142px + env(safe-area-inset-bottom))}
  .buy-line{padding:11px}
  .buy-price .price-now{font-size:26px}
  .d-title{font-size:18px}
}
@media (max-width:360px){
  .grid{grid-template-columns:1fr}
  .cats{grid-template-columns:repeat(2,1fr)}
  .grid.solo{grid-template-columns:1fr}
  .grid-hot{grid-template-columns:minmax(0,1fr)}
}
/* 只有 1 个资源时，列表也用单列大卡片（全平台生效，避免图片只占一半） */
.grid.solo{grid-template-columns:minmax(0,1fr)}
.grid.solo .card{max-width:560px}
/* 单列大卡：图片改为 16:9 横幅，面积更大更醒目 */
.grid.solo .card-img{aspect-ratio:16/9}
