/* ================================================================
   省钱 App · 样式表
   令牌沿用「青云惠家」v3（珊瑚红），WCAG AA 实测值见设计稿。
   金额一律等宽数字；按钮 min-height 44px。
   ================================================================ */
:root{
  --coral-50:#FAECE7;--coral-100:#F5C4B3;--coral-400:#D85A30;--coral-600:#993C1D;
  --coral-800:#712B13;--coral-900:#4A1B0C;
  --action:#C4471D;--action-d:#8A3212;
  --gold-50:#FAEEDA;--gold-400:#E0A04A;--gold-600:#854F0B;
  --teal-50:#E1F5EE;--teal-600:#0F6E56;
  --pink-50:#FBEAF0;--pink-600:#993556;
  --ink:#4A1B0C;--ink2:#712B13;--ink3:#993C1D;--muted:#9A8E88;
  --line:rgba(74,27,12,.10);--line2:rgba(74,27,12,.18);
  --card:#fff;--paper:#FAECE7;
  --r:18px;--r2:14px;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  background:#EDE6DF;color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  -webkit-font-smoothing:antialiased;
}
button,input{font-family:inherit;color:inherit}
a{color:inherit;text-decoration:none}
.app{max-width:430px;margin:0 auto;background:var(--paper);min-height:100vh;position:relative;overflow-x:hidden}

/* ---------- 页 ---------- */
.page{display:none;padding-bottom:86px;min-height:100vh}
.page.on{display:block}

/* ---------- 状态栏（网页里只作视觉占位） ---------- */
.statusbar{height:44px;display:flex;align-items:center;justify-content:space-between;
  padding:0 20px;font-size:12.5px;font-weight:600}
.statusbar .bars{display:flex;align-items:flex-end;gap:3px}
.statusbar .bars i{display:block;width:3px;background:var(--ink);border-radius:1px}
.statusbar .bars i:nth-child(1){height:5px}
.statusbar .bars i:nth-child(2){height:8px}
.statusbar .bars i:nth-child(3){height:11px}

/* ---------- 顶栏 ---------- */
.topbar{height:54px;display:flex;align-items:center;gap:10px;padding:0 16px}
.mark{width:32px;height:32px;border-radius:10px;flex:0 0 32px;display:grid;place-items:center;
  background:linear-gradient(140deg,var(--coral-400),var(--coral-600));color:#fff;font-size:14px;font-weight:600}
.search{flex:1;height:36px;border-radius:999px;background:#fff;border:1px solid var(--line);
  display:flex;align-items:center;gap:7px;padding:0 13px;font-size:12.5px;color:var(--ink3);
  text-align:left;overflow:hidden;white-space:nowrap}
.ibtn{width:34px;height:34px;display:grid;place-items:center;color:var(--ink2);background:none;border:none;position:relative}

/* ---------- 余额卡 ---------- */
.hero{margin:0 16px;border-radius:20px;padding:15px 17px 13px;color:#fff;position:relative;overflow:hidden;
  background:linear-gradient(135deg,#C4471D 0%,#993C1D 62%,#712B13 100%)}
.hero:after{content:"";position:absolute;right:-40px;top:-50px;width:150px;height:150px;border-radius:50%;background:rgba(255,255,255,.08)}
.hero-top{display:flex;align-items:flex-end;justify-content:space-between;position:relative;z-index:1}
.hero-lb{font-size:11.5px;opacity:.84;margin-bottom:5px}
.hero-num{font-size:31px;font-weight:600;letter-spacing:-.8px;line-height:1;font-variant-numeric:tabular-nums}
.hero-side{text-align:right}
.hero-num-s{font-size:19px;font-weight:600;line-height:1;font-variant-numeric:tabular-nums}
.hero-bot{display:flex;align-items:center;justify-content:space-between;margin-top:13px;padding-top:11px;
  border-top:1px solid rgba(255,255,255,.20);position:relative;z-index:1}
.hero-note{font-size:11px;opacity:.82}
.hero-btn{height:28px;padding:0 14px;border-radius:999px;background:#fff;color:var(--action-d);
  font-size:12px;font-weight:600;display:grid;place-items:center;border:none}

/* ---------- 平台墙 ---------- */
.card{background:var(--card);border-radius:var(--r);border:1px solid var(--line)}
.wall{margin:8px 16px 0;padding:14px 4px 12px}
.wall-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px 0}
.pf{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:11px;color:var(--ink2);
  background:none;border:none;padding:0}
.pt{width:40px;height:40px;border-radius:13px;display:grid;place-items:center;color:#fff;font-size:14px;font-weight:600}
.pt.more{background:#F3EDE7;color:var(--ink3);border:1px dashed rgba(74,27,12,.22);font-size:17px;font-weight:400}

/* ---------- 区块标题 ---------- */
.sect{display:flex;align-items:center;justify-content:space-between;padding:0 16px;height:28px;margin-top:2px}
.sect h3{font-size:14.5px;font-weight:600;letter-spacing:-.2px}
.sect .more{font-size:11.5px;color:var(--ink3);background:none;border:none}

/* ---------- 券 ---------- */
.coupons{display:flex;gap:9px;padding:0 16px;margin-top:6px}
.cp{flex:1;height:78px;border-radius:14px;padding:10px 11px 9px;display:flex;flex-direction:column;
  justify-content:space-between;border:1px solid transparent;text-align:left}
.cp b{font-size:12.5px;font-weight:600;display:block;line-height:1.3}
.cp span{font-size:11px;opacity:.9}
.cp-a{background:var(--pink-50);color:var(--pink-600);border-color:rgba(153,53,86,.14)}
.cp-b{background:var(--gold-50);color:var(--gold-600);border-color:rgba(133,79,11,.14)}
.cp-c{background:var(--teal-50);color:var(--teal-600);border-color:rgba(15,110,86,.14)}

/* ---------- 商品卡 ---------- */
.prow{display:flex;gap:10px;padding:0 16px;margin-top:8px;margin-bottom:8px;overflow-x:auto;scrollbar-width:none}
.prow::-webkit-scrollbar{display:none}
.pcard{flex:0 0 47%;background:#fff;border-radius:var(--r2);border:1px solid var(--line);
  overflow:hidden;text-align:left;padding:0;border-width:1px}
.prow .pcard{flex:0 0 158px}
/* ★★★ width:100% 是保险：.pcard 是 <button>，按钮 UA 样式是 align-items:flex-start。
   一旦外层再变成 flex（10-27 就因为下面「精选好物」的 .pcard 覆盖泄漏踩过），
   .ph 作为 flex 子项不会拉伸 → 宽度 0 → 图片/色块全看不见。显式钉住宽度。 */
.ph{position:relative;width:100%;height:104px;display:grid;place-items:center;overflow:hidden;background:#F3EDE7}
.ph:after{content:attr(data-t);font-size:38px;font-weight:600;color:rgba(74,27,12,.16)}
/* 图片用 <img> 而不是 background-image：
   外链图挂了要能自动退回占位字，background-image 没有 onerror。 */
.ph-t{position:absolute;font-size:38px;font-weight:600;color:rgba(74,27,12,.16);letter-spacing:-1px}
.ph-i{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.ph.img{background-size:cover;background-position:center;background-repeat:no-repeat}
.ph.img:after{content:""}
.go-mini{font-size:10.5px;color:var(--muted);white-space:nowrap}

/* 商品卡：有券后价、券面额、已售，比活动卡多一行信息 */
.gcard{background:#fff;border-radius:var(--r2);border:1px solid var(--line);overflow:hidden;text-align:left;padding:0}
.gcard .gimg{position:relative;height:118px;overflow:hidden;background:#F3EDE7;display:grid;place-items:center}
.gcard .gb{padding:9px 10px 10px}
.gcard .gt{font-size:12px;line-height:1.45;height:35px;overflow:hidden;color:var(--ink)}
.gcard .gc{display:flex;align-items:center;gap:6px;margin-top:6px;height:16px}
.gcard .cpn{font-size:10px;color:#fff;background:var(--coral-400);padding:1px 5px;border-radius:4px}
.gcard .sales{font-size:10px;color:var(--muted)}
.gcard .gp{display:flex;align-items:baseline;justify-content:space-between;margin-top:6px}
/* 淘宝/拼多多店铺名：和京东卡的 .jshop 对齐（单行省略，没店铺就不占位） */
.gcard .gshop{font-size:10px;color:var(--muted);margin-top:3px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.gcard .pr{font-size:16px;font-weight:600;color:var(--action);font-variant-numeric:tabular-nums;letter-spacing:-.4px}
.gcard .pr small{font-size:10px;font-weight:400;color:var(--muted);text-decoration:line-through;margin-left:4px}
.ph.rice{background:linear-gradient(140deg,#F4E6C9,#DDC08A)}
.ph.milk{background:linear-gradient(140deg,#EAF2F7,#C6D9E5)}
.ph.tissue{background:linear-gradient(140deg,#F0F3EE,#CAD9CD)}
.ph.liquid{background:linear-gradient(140deg,#E7EEF9,#B9CBE7)}
.ph.coffee{background:linear-gradient(140deg,#F0E4DA,#C9A88E)}
.ph.nut{background:linear-gradient(140deg,#F7E9D2,#D9B57E)}
.pc-b{padding:9px 10px 10px}
.pc-t{font-size:12px;line-height:1.45;color:var(--ink);height:35px;overflow:hidden}
.pc-p{display:flex;align-items:baseline;justify-content:space-between;margin-top:7px}
.price{font-size:16px;font-weight:600;color:var(--action);font-variant-numeric:tabular-nums;letter-spacing:-.4px}
.back{font-size:10.5px;color:#fff;background:var(--coral-400);padding:2px 6px;border-radius:6px;
  font-variant-numeric:tabular-nums;white-space:nowrap}

/* ---------- 省钱页 ---------- */
.tabs2{display:flex;gap:20px;padding:0 18px;height:44px;align-items:center;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.tabs2::-webkit-scrollbar{display:none}
.tabs2 button{font-size:14px;color:var(--ink3);background:none;border:none;position:relative;padding:0 0 11px;white-space:nowrap}
.tabs2 button.on{color:var(--ink);font-weight:600}
.tabs2 button.on:after{content:"";position:absolute;left:50%;transform:translateX(-50%);bottom:0;width:18px;height:3px;border-radius:2px;background:var(--coral-400)}
.chips{display:flex;gap:8px;padding:12px 16px 4px;overflow-x:auto;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:0 0 auto;height:28px;padding:0 13px;border-radius:999px;background:#fff;border:1px solid var(--line);
  font-size:12px;color:var(--ink2);display:grid;place-items:center}
.chip.on{background:var(--coral-50);border-color:rgba(196,71,29,.35);color:var(--coral-600);font-weight:600}
.strip{margin:10px 16px 0;height:86px;border-radius:14px;padding:14px 16px;
  background:linear-gradient(120deg,#FAEEDA,#F5C4B3);display:flex;align-items:center;justify-content:space-between}
.strip b{font-size:14px;font-weight:600;display:block}
.strip span{font-size:11.5px;color:var(--gold-600);display:block;margin-top:4px}
.strip i{width:54px;height:54px;border-radius:14px;background:rgba(255,255,255,.55);display:grid;place-items:center;
  font-size:12px;color:var(--coral-600);font-weight:600;font-style:normal}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px 16px 0}
.grid2 .ph{height:118px}
.note{font-size:10.5px;color:var(--muted);padding:10px 16px 0;line-height:1.6}

/* ---------- 账本 ---------- */
.phead{height:50px;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:600;position:relative}
.phead .pback{position:absolute;left:14px;top:14px;width:30px;height:30px;display:grid;place-items:center;
  background:none;border:none;color:var(--ink2)}
/* ★ 2026-10-28：返回键全局兜底。评审发现落在 .topbar 里的返回键没有基础样式，
   会渲染成浏览器默认灰框按钮（约 30×24，和全站无边框风格不搭）。 */
.pback{background:none;border:0;color:var(--ink2);padding:0;display:grid;place-items:center;min-width:36px;min-height:36px;border-radius:10px}
.pback:active{background:rgba(120,60,30,.06)}
.bal{margin:2px 16px 0;background:linear-gradient(135deg,#C4471D,#993C1D);border-radius:20px;padding:18px;color:#fff}
.bal .lb{font-size:11.5px;opacity:.84}
.bal .num{font-size:34px;font-weight:600;letter-spacing:-1px;font-variant-numeric:tabular-nums;margin-top:6px;line-height:1}
.bal .sub{display:flex;align-items:center;justify-content:space-between;margin-top:14px;padding-top:12px;
  border-top:1px solid rgba(255,255,255,.2);font-size:11.5px;opacity:.92}
.bal .go{height:30px;padding:0 16px;border-radius:999px;background:#fff;color:var(--action-d);font-size:12px;
  font-weight:600;display:grid;place-items:center;border:none}
.stats{display:flex;margin:12px 16px 0;background:#fff;border-radius:14px;border:1px solid var(--line);padding:12px 0}
.stat{flex:1;text-align:center;position:relative}
.stat+.stat:before{content:"";position:absolute;left:0;top:4px;bottom:4px;width:1px;background:var(--line)}
.stat b{display:block;font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}
.stat span{font-size:10.5px;color:var(--ink3);display:block;margin-top:3px}
.tabs3{display:flex;gap:20px;padding:0 18px;height:42px;align-items:center;border-bottom:1px solid var(--line);margin-top:6px}
/* 看广告赚奖励：只在壳里显示，样式尽量轻，不抢返利台账主信息 */
.adcard{margin:12px 16px 0;background:#FFF7F0;border:1px solid #F3D8C7;border-radius:14px;
  padding:11px 12px;display:flex;align-items:center;gap:9px}
.adico{width:34px;height:34px;flex:0 0 34px;border-radius:11px;background:#C4471D;color:#fff;
  display:grid;place-items:center;font-size:12px;font-weight:600}
.admain{flex:1;min-width:0}
.adt{font-size:13px;font-weight:600;color:var(--ink)}
.ads{font-size:10.5px;color:var(--ink3);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.adbtn{flex:0 0 auto;height:30px;padding:0 13px;border:0;border-radius:999px;background:var(--action);
  color:#fff;font-size:12px;font-weight:600}
.adbtn:disabled{opacity:.55}
.tabs3 button{font-size:13px;color:var(--ink3);background:none;border:none;padding:0 0 10px;position:relative}
.tabs3 button.on{color:var(--ink);font-weight:600}
.tabs3 button.on:after{content:"";position:absolute;left:50%;transform:translateX(-50%);bottom:0;width:16px;height:3px;border-radius:2px;background:var(--coral-400)}
.olist{padding:2px 16px 0}
.orow{display:flex;gap:11px;padding:13px 0;border-bottom:1px solid var(--line);align-items:flex-start}
.oi{width:38px;height:38px;border-radius:12px;flex:0 0 38px;display:grid;place-items:center;color:#fff;font-size:12px;font-weight:600}
.om{flex:1;min-width:0}
.om .t{font-size:12.5px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.om .m{font-size:10.5px;color:var(--muted);margin-top:4px;font-variant-numeric:tabular-nums}
.orr{text-align:right;flex:0 0 auto}
.orr .a{font-size:14.5px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.3px}
.orr .a.wait{color:var(--gold-600)}
.orr .a.ok{color:var(--teal-600)}
.orr .a.dead{color:#A9A19C}
.tag{display:inline-block;font-size:10px;padding:2px 6px;border-radius:5px;margin-top:5px}
.tag.wait{background:var(--gold-50);color:var(--gold-600)}
.tag.ok{background:var(--teal-50);color:var(--teal-600)}
.tag.dead{background:#F1EFE8;color:#8C817C}
.empty{padding:60px 20px;text-align:center;color:var(--muted);font-size:12.5px;line-height:1.9}

/* ---------- 我的 ---------- */
.prof{margin:4px 16px 0;padding:16px;display:flex;align-items:center;gap:13px;
  background:linear-gradient(135deg,#C4471D,#993C1D);border-radius:20px;color:#fff}
.av{width:52px;height:52px;border-radius:50%;background:rgba(255,255,255,.22);display:grid;place-items:center;
  font-size:18px;font-weight:600;border:1.5px solid rgba(255,255,255,.45)}
.prof .nm{font-size:16px;font-weight:600}
.prof .id{font-size:11px;opacity:.86;margin-top:5px;display:flex;align-items:center;gap:6px}
.mlist{margin:12px 16px 0;background:#fff;border-radius:16px;border:1px solid var(--line);overflow:hidden}
.mi{display:flex;align-items:center;gap:12px;padding:14px 15px;font-size:13px;border-bottom:1px solid var(--line);
  width:100%;background:none;border-left:none;border-right:none;border-top:none;text-align:left}
.mi:last-child{border-bottom:none}
.mi .ic{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;flex:0 0 26px}
.mi .ar{margin-left:auto;color:#B9AFA9}
.legal{padding:16px 22px 0;font-size:10.5px;color:var(--muted);line-height:1.9;text-align:center}

/* ---------- tabbar ---------- */
.tabbar{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:430px;height:62px;
  background:rgba(255,255,255,.97);border-top:1px solid var(--line);display:flex;align-items:center;
  padding:0 6px 6px;z-index:40}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;color:#8C817C;font-size:10px;
  background:none;border:none}
.tab.on{color:var(--coral-600)}
.tab.on svg{stroke:var(--coral-600)}

/* ---------- 提现面板 ---------- */
.sheet{position:fixed;inset:0;z-index:60;display:none;background:var(--paper);overflow-y:auto}
.sheet.on{display:block}
.sheet .inner{max-width:430px;margin:0 auto;padding-bottom:40px}
.amt{margin:6px 16px 0;background:#fff;border-radius:18px;border:1px solid var(--line);padding:20px 18px 18px}
.amt .lb{font-size:11.5px;color:var(--ink3)}
.amt .row{display:flex;align-items:flex-end;gap:6px;margin-top:10px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.amt .cur{font-size:22px;font-weight:600;padding-bottom:4px}
.amt .inp{font-size:38px;font-weight:600;letter-spacing:-1.2px;font-variant-numeric:tabular-nums;line-height:1;
  border:none;outline:none;background:none;width:100%;min-width:0}
.amt .all{margin-left:auto;font-size:12px;color:var(--coral-600);font-weight:600;background:none;border:none;padding-bottom:6px;white-space:nowrap}
.amt .hint{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:11px}
.mrow{display:flex;align-items:center;gap:11px;margin:10px 16px 0;background:#fff;border-radius:14px;
  border:1px solid var(--line);padding:14px 15px}
.mrow .nm{font-size:13px}
.mrow .sn{font-size:10.5px;color:var(--muted);margin-top:3px}
.mrow .ar{margin-left:auto;color:#B9AFA9}
.rules{margin:10px 16px 0;background:#fff;border-radius:14px;border:1px solid var(--line);padding:14px 15px}
.rules h4{font-size:12px;font-weight:600;margin-bottom:9px}
.rules li{list-style:none;font-size:11px;color:var(--ink3);line-height:1.85;padding-left:12px;position:relative}
.rules li:before{content:"";position:absolute;left:0;top:8px;width:4px;height:4px;border-radius:50%;background:var(--coral-100)}
.rec{margin:10px 16px 0;background:#fff;border-radius:14px;border:1px solid var(--line);overflow:hidden}
.rec .rh{font-size:12px;font-weight:600;padding:12px 15px 4px}
.rec .ri{display:flex;align-items:center;justify-content:space-between;padding:9px 15px;font-size:11.5px;color:var(--ink3)}
.rec .ri b{font-size:13px;color:var(--ink);font-variant-numeric:tabular-nums}
.submit{margin:18px 16px 0;height:48px;border-radius:999px;background:var(--action);color:#fff;
  font-size:15px;font-weight:600;display:grid;place-items:center;border:none;width:calc(100% - 32px)}
.submit:disabled{background:#E7DCD5;color:#A9A19C}
.foot-note{text-align:center;font-size:10.5px;color:var(--muted);line-height:1.7;margin-top:12px}

/* ---------- 游客待认领提示 ---------- */
.notice{margin:10px 16px 0;background:#fff;border:1px solid rgba(196,71,29,.26);border-radius:14px;
  padding:10px 12px 10px 14px;display:flex;align-items:center;gap:10px;
  font-size:11.5px;color:var(--ink3);line-height:1.5}
.notice span{flex:1}
.notice button{margin-left:auto;height:28px;padding:0 13px;border-radius:999px;background:var(--coral-50);
  color:var(--coral-600);border:none;font-size:11.5px;font-weight:600;white-space:nowrap}

/* ---------- 搜索层 ---------- */
.search-input{flex:1;height:36px;border-radius:999px;border:1px solid var(--line);background:#fff;
  padding:0 15px;font-size:13px;outline:none;color:var(--ink)}
.search-input:focus{border-color:rgba(196,71,29,.45)}
.search-input::placeholder{color:#B9AFA9}

/* ---------- 实名 / 收款闸门 ---------- */
.gate{margin:16px;background:#fff;border-radius:18px;border:1px solid var(--line);padding:22px 18px}
.gate h4{font-size:15px;font-weight:600;margin-bottom:10px}
.gate p{font-size:11.5px;color:var(--ink3);line-height:1.85;margin-bottom:16px}
.gate input{width:100%;height:46px;border-radius:12px;border:1px solid var(--line);background:#FAF7F4;
  padding:0 14px;font-size:14px;outline:none;margin-bottom:10px}
.gate input:focus{border-color:rgba(196,71,29,.5);background:#fff}
.gate-btn{width:100%;height:46px;border-radius:999px;background:var(--action);color:#fff;border:none;
  font-size:14.5px;font-weight:600;margin-top:6px}
.gate-link{width:100%;background:none;border:none;color:var(--coral-600);font-size:11.5px;margin-top:12px}

/* ---------- 登录 ---------- */
.login-wrap{max-width:430px;margin:0 auto;min-height:100vh;padding:80px 26px 40px;background:var(--paper)}
.login-wrap h1{font-size:26px;font-weight:600;letter-spacing:-.4px}
.login-wrap .sub{font-size:13px;color:var(--ink3);margin-top:10px;line-height:1.7}
.field{margin-top:22px}
.field label{font-size:11.5px;color:var(--ink3);display:block;margin-bottom:7px}
.field input{width:100%;height:48px;border-radius:14px;border:1px solid var(--line);background:#fff;
  padding:0 15px;font-size:15px;outline:none}
.field input:focus{border-color:rgba(196,71,29,.5)}
.btn-primary{width:100%;height:48px;border-radius:999px;background:var(--action);color:#fff;border:none;
  font-size:15px;font-weight:600;margin-top:26px}
.btn-link{width:100%;background:none;border:none;color:var(--coral-600);font-size:12.5px;margin-top:18px}
.err{color:#A32D2D;font-size:12px;margin-top:14px;min-height:16px}

/* ---------- 落地页 ---------- */
.go-body{background:var(--paper);min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.go-wrap{max-width:360px;width:100%;text-align:center}
.go-icon{width:72px;height:72px;border-radius:22px;margin:0 auto 20px;display:grid;place-items:center;
  color:#fff;font-size:26px;font-weight:600}
.go-wrap h1{font-size:20px;font-weight:600}
.go-sub{font-size:13px;color:var(--ink3);margin-top:9px;line-height:1.6}
.go-card{background:#fff;border-radius:16px;border:1px solid var(--line);margin-top:24px;padding:6px 16px;text-align:left}
.go-row{display:flex;justify-content:space-between;padding:11px 0;font-size:12px;border-bottom:1px solid var(--line)}
.go-row:last-child{border-bottom:none}
.go-row span{color:var(--ink3)}
.go-row b{font-variant-numeric:tabular-nums}
.go-note{font-size:11.5px;color:var(--muted);line-height:1.8;margin-top:18px}
.go-btn{width:100%;height:48px;border-radius:999px;background:var(--action);color:#fff;border:none;
  font-size:15px;font-weight:600;margin-top:22px}
.go-back{display:block;margin-top:20px;font-size:12.5px;color:var(--coral-600)}
.toast{position:fixed;left:50%;bottom:96px;transform:translateX(-50%);background:rgba(74,27,12,.92);color:#fff;
  font-size:12.5px;padding:10px 16px;border-radius:999px;z-index:99;opacity:0;transition:opacity .2s;pointer-events:none}
.toast.on{opacity:1}

/* ---------- 省钱专区（运营后台配的优惠入口） ----------
   跟上面的返利渠道刻意分开：这里点了只领券，不返现。
   视觉上也做得轻一点（白底细边），不要抢返利渠道的风头。 */
.more-plain{font-size:12px;color:var(--muted)}
/* 省钱专区：一行一个的「入口条」。
   ★ 2026-10-22 改版：原来是两列的小卡片，但运营大概率只填标题、不填图 →
   格子右半边全是空的，看着像加载失败。改成列表行 + 首字色块（沿用渠道墙的视觉语言），
   没图也是完整的、有意的，不靠图片撑门面。 */
.ogrid{display:grid;grid-template-columns:1fr;gap:10px;margin:0 0 16px}
.ocard{position:relative;display:flex;align-items:center;gap:11px;text-align:left;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r2);
  padding:11px 12px;min-height:62px;
  cursor:pointer;font:inherit;color:inherit;
  transition:transform .12s ease;overflow:hidden}
.ocard:active{transform:scale(.985)}
.ocard .oic{flex:0 0 auto;width:42px;height:42px;border-radius:11px;
  display:flex;align-items:center;justify-content:center;
  font-size:17px;font-weight:700;color:var(--action);background:var(--coral-50)}
.ocard .oimg{flex:0 0 auto;width:42px;height:42px;border-radius:11px;object-fit:cover;background:var(--coral-50)}
.ocard .otxt{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px}
.ocard .ot{font-size:13.5px;font-weight:600;line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ocard .os{font-size:11.5px;color:var(--muted);line-height:1.35;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ocard .otag{display:inline-block;margin-left:6px;font-size:10px;font-weight:600;font-style:normal;
  color:var(--action);background:var(--coral-50);padding:1px 6px;border-radius:20px;
  white-space:nowrap;vertical-align:1px}
.ocard .ogo{flex:0 0 auto;font-size:11.5px;color:var(--action);font-weight:600;white-space:nowrap}

/* 精选好物（运营手动加的商品卡）：横排大图卡，价格在右下
   ★★★ 2026-10-27：这一整块必须限定在 .pcardrow 里。它们原来直接写 `.pcard{...}`，
     而省钱页的活动卡也是 `button.pcard` —— 后定义覆盖前面的 .pcard，
     把省钱页卡片变成 display:flex；按钮 UA 的 align-items:flex-start 让卡片里的
     `.ph` 不再拉伸，宽度塌成 0 → 老板看到「省钱页所有卡片空白、没有图」。
     ★ 教训：同一个类名给两种组件用，后出现的样式会污染前一个组件。要么限定作用域，
       要么换类名；守卫在 tests/native.js [15]。 */
.pcardrow{display:flex;gap:10px;overflow-x:auto;padding:2px 0 6px;margin:0 0 16px;
  -webkit-overflow-scrolling:touch;scrollbar-width:none}
.pcardrow::-webkit-scrollbar{display:none}
.pcardrow .pcard{flex:0 0 148px;display:flex;flex-direction:column;text-align:left;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r2);
  padding:0;overflow:hidden;cursor:pointer;font:inherit;color:inherit;
  transition:transform .12s ease}
.pcardrow .pcard:active{transform:scale(.98)}
.pcardrow .pcard .pcimg{width:100%;height:104px;object-fit:cover;background:var(--coral-50);display:block}
.pcardrow .pcard .pcic{width:100%;height:104px;display:flex;align-items:center;justify-content:center;
  font-size:34px;font-weight:700;color:var(--action);background:var(--coral-50)}
.pcardrow .pcard .pcb{flex:1;display:flex;flex-direction:column;gap:4px;padding:9px 10px 10px}
.pcardrow .pcard .pct{font-size:12.5px;font-weight:600;line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pcardrow .pcard .pctag{display:inline-block;margin-left:4px;font-size:9.5px;font-weight:600;font-style:normal;
  color:var(--action);background:var(--coral-50);padding:1px 5px;border-radius:20px;
  white-space:nowrap;vertical-align:1px}
.pcardrow .pcard .pcs{font-size:10.5px;color:var(--muted);line-height:1.3;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pcardrow .pcard .pcp{display:flex;align-items:baseline;gap:5px;margin-top:2px}
.pcardrow .pcard .pr{font-size:15px;font-weight:750;color:var(--action);letter-spacing:-.3px}
.pcardrow .pcard .pcp small{font-size:10.5px;color:var(--muted);text-decoration:line-through}
.pcardrow .pcard .pcgo{font-size:10.5px;color:var(--action);font-weight:600;padding:0 10px 9px;text-align:right}

/* 社会证明条（首页 hero 下面那一条） */
.social{display:flex;align-items:center;gap:7px;margin:9px 16px 0;padding:7px 12px;
  background:#FFF8F3;border:1px solid #F6E3D6;border-radius:10px;font-size:11.5px;color:#8A5A3A;
  overflow:hidden;white-space:nowrap}
.social .sdot{width:6px;height:6px;border-radius:3px;background:#C4471D;flex:0 0 6px;
  animation:sblink 1.6s ease-in-out infinite}
@keyframes sblink{0%,100%{opacity:1}50%{opacity:.25}}
@media (prefers-reduced-motion: reduce){.social .sdot{animation:none}}
.social .stxt{overflow:hidden;text-overflow:ellipsis}

/* 9.9 包邮：加载更多（列表页底部整行按钮） */
.morebtn{display:block;width:calc(100% - 32px);margin:14px 16px 20px;height:44px;
  border:1px solid var(--line);background:#fff;border-radius:12px;font-size:14px;color:#6B5449}
.morebtn:active{background:#F7F2ED}

/* 横滑小卡：.prow 是 flex 容器，.gcard 原本靠 .grid2 的两列撑宽度，
   直接放进来会被压到内容宽度 —— 标题变竖排、价格被截断。
   这里给它固定宽度，并把「价格 + 预计返」改成上下两行。 */
.prow .gcard{flex:0 0 132px}
.prow .gcard .gimg{height:108px}
.prow .gcard .gb{padding:8px 9px 9px}
.prow .gcard .gt{font-size:12px;height:33px}
.prow .gcard .gp{display:block;margin-top:5px}
.prow .gcard .pr{display:block;font-size:15px}
.prow .gcard .back{display:inline-block;margin-top:4px;font-size:10px;padding:1px 5px}

/* ===== 省钱榜单卡 =====
   比普通商品卡多一个名次角标和一行「省了多少」。
   ★ 角标只给前 3（金银铜），4 名以后不给 —— 给数字会让整排看起来像列表，不像榜。 */
.prow .rkcard .gimg{height:104px}
.rkno{position:absolute;left:0;top:0;z-index:2;width:21px;height:21px;
  display:flex;align-items:center;justify-content:center;font-style:normal;
  font-size:11.5px;font-weight:700;color:#fff;border-bottom-right-radius:9px;
  text-shadow:0 1px 1px rgba(0,0,0,.12)}
.rkno.rk1{background:linear-gradient(135deg,#F8C24A,#E08A0E)}
.rkno.rk2{background:linear-gradient(135deg,#C3CCD6,#8C97A4)}
.rkno.rk3{background:linear-gradient(135deg,#D9A273,#A9743F)}
.rkcard .rksave{font-size:11px;color:var(--ink3);margin-top:5px;height:16px;
  overflow:hidden;white-space:nowrap}
.rkcard .rksave b{font-size:13.5px;color:var(--action);font-weight:750;letter-spacing:-.3px}
/* 榜单卡左上角被名次角标占了，平台角标挪到右上，否则两个角标叠在一起 */
.rkcard .gimg .plat{left:auto;right:6px}

/* 绑定淘宝弹层里的两个按钮（不复用 .btn-primary：它的 margin-top 26px 在这里会撑开） */
.tbbtn{display:block;width:100%;height:46px;border-radius:12px;border:none;font-size:15px;
  font-weight:600;background:var(--action);color:#fff}
.tbbtn:active{opacity:.88}
.tbbtn.ghost{background:#fff;color:var(--action);border:1px solid var(--action)}

/* ---------- 邀请弹层 ---------- */
.icode{font-size:26px;font-weight:800;letter-spacing:5px;text-align:center;
  color:var(--action);padding:16px 0 4px;font-variant-numeric:tabular-nums}
/* 邀请链接：必须能长按复制。
   ★ 复制按钮万一失败（旧版壳 / WebView 限制），用户还有这条路。
     user-select:all 让长按一下直接全选，不用拖选框选。 */
.ilink{margin:10px 0;padding:12px;background:#FFF8F3;border:1px solid #F6E3D6;
  border-radius:10px;font-size:12.5px;color:#712B13;word-break:break-all;line-height:1.6;
  -webkit-user-select:all;user-select:all;-webkit-touch-callout:default}

/* ---------- 提现前置条件清单（余额不足时告诉用户还差什么） ---------- */
.gsteps{margin:12px 0 4px}
.gstep{display:flex;align-items:center;gap:8px;padding:11px 12px;margin-bottom:8px;
  background:#FBF7F3;border:1px solid #EFE4DA;border-radius:10px;font-size:13px;color:#5B463A}
.gstep.on{background:#F0F8F3;border-color:#CFE7D8;color:#1E6B45}
.gstep .dot{flex:0 0 16px;height:16px;border-radius:8px;background:#DDD2CB;color:#fff;
  font-size:10px;line-height:16px;text-align:center}
.gstep.on .dot{background:#2F9E68}
.gstep .go{margin-left:auto;color:var(--action);font-size:12.5px;background:none;border:0;
  padding:4px 2px;font-weight:600}

/* ---------- 搜索页：热搜词 / 相关搜索（chips） ---------- */
.hlabel{font-size:12px;color:#9A8578;margin:12px 0 8px}
.hwrap{display:flex;flex-wrap:wrap;gap:8px}
.hchip{padding:7px 12px;border-radius:14px;background:#FFF3E9;color:#8A5A3B;
  font-size:12.5px;border:1px solid #F6E3D6;line-height:1.2}
.hchip:active{opacity:.8}
.hchip small{color:#B08A6E;font-size:11px;margin-left:3px}

/* ---------- 淘宝好货：类目横滑 ---------- */
.crow{display:flex;gap:8px;overflow-x:auto;padding:10px 0 6px;-webkit-overflow-scrolling:touch}
.crow::-webkit-scrollbar{display:none}
.cchip{flex:0 0 auto;padding:7px 13px;border-radius:14px;background:#FBF7F3;
  border:1px solid #EFE4DA;color:#5B463A;font-size:12.5px;white-space:nowrap}
.cchip.on{background:var(--action);border-color:var(--action);color:#fff;font-weight:600}

/* ---------- 商品卡平台角标（首页搜索聚合多平台后用） ---------- */
.gimg .plat{position:absolute;left:6px;top:6px;width:18px;height:18px;border-radius:5px;
  font-size:10px;font-style:normal;line-height:18px;text-align:center;color:#fff;font-weight:600}
.gimg .plat.pdd{background:#E02E24}

/* ---------- 附近（本地生活） ----------
   版式对齐竞品截图：定位条 → 分类 chips → 店铺大卡（图 + 店名 + 佣金率 + 月售 + 去下单）。
   等美团 API 批下来，卡片会从「店铺」升级成「套餐」，样式基本不用动。 */
.nloc{display:flex;align-items:center;gap:6px;margin:2px 16px 0;padding:9px 12px;
  background:#fff;border:1px solid var(--line);border-radius:12px;
  font-size:12.5px;color:var(--ink2)}
.nloc svg{flex:0 0 auto;color:var(--action)}
.nloc span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nloc button{flex:0 0 auto;background:none;border:0;color:var(--action);
  font-size:12px;font-weight:600;padding:2px 0}
#nList{padding:10px 16px 0}
.ncard{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:10px;margin-bottom:10px}
/* logo 做成容器：图加载失败时 img 隐藏，底下就是「店」字占位 ——
   比 onerror 直接 remove 强（remove 之后整块会塌掉，卡片高度跳一下） */
.nlogo{width:56px;height:56px;border-radius:12px;overflow:hidden;background:var(--coral-50);
  flex:0 0 56px;display:grid;place-items:center;font-size:16px;color:var(--ink3)}
.nlogo img{width:100%;height:100%;object-fit:cover;display:block}
.nb{flex:1;min-width:0}
.nt{font-size:14px;font-weight:600;line-height:1.35;color:var(--ink);
  overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.nm{display:flex;align-items:center;gap:8px;margin-top:6px;flex-wrap:wrap}
.nrate{font-size:11px;color:#fff;background:var(--action);border-radius:5px;
  padding:2px 6px;font-weight:600}
.nsales{font-size:11px;color:var(--muted)}
.ngo{flex:0 0 auto;background:var(--action);color:#fff;border:0;border-radius:999px;
  padding:9px 15px;font-size:13px;font-weight:600}
.ngo:active{opacity:.88}
.ngo:disabled{opacity:.6}

/* ---------- 附近 · 美团单品卡 ----------
   信息密度比饿了么店铺卡高：品牌 / 套餐名 / 现价+划线价+预估返 / 标签 / 距离。
   左侧 84 方的图，右侧三行文字，右下角一个圆形「抢」。 */
.mcard{display:flex;gap:10px;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:10px;margin-bottom:10px;position:relative}
.mimg{width:84px;height:84px;border-radius:11px;object-fit:cover;
  background:var(--coral-50);flex:0 0 84px;display:block}
.mph{display:grid;place-items:center;font-size:17px;color:var(--ink3)}
/* 右侧要给「抢」按钮留位置：按钮 34px + right 10px = 44px，留 30px 会压字 */
.mb{flex:1;min-width:0;padding-right:44px}
.mbrand{font-size:11px;color:var(--muted);margin-bottom:2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mtitle{font-size:13.5px;font-weight:600;line-height:1.35;color:var(--ink);
  overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.mprice{display:flex;align-items:baseline;gap:6px;margin-top:5px;flex-wrap:wrap}
.mprice b{font-size:16px;font-weight:750;color:var(--action);letter-spacing:-.4px}
.mold{font-size:11px;color:var(--ink3);text-decoration:line-through}
.mback{font-size:10.5px;color:#fff;background:var(--action);border-radius:5px;
  padding:1.5px 5px;font-weight:600}
.mtags{font-size:10.5px;color:var(--muted);margin-top:4px;line-height:1.4;
  overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}
.mgo{position:absolute;right:10px;bottom:10px;width:34px;height:34px;border-radius:50%;
  background:var(--action);color:#fff;border:0;font-size:12.5px;font-weight:600}
.mgo:active{opacity:.88}
.mgo:disabled{opacity:.55}
/* 分享按钮：放在「抢」上面，不占主流程位置 */
.msh{position:absolute;right:10px;bottom:52px;height:26px;padding:0 10px;border-radius:8px;
  background:#F2EAE4;color:var(--ink2);border:0;font-size:11px;font-weight:600;line-height:26px}
.msh:active{background:#E8DDD6}

/* ---------- 邀请统计 ----------
   原来「已邀请 N 人」藏在一行灰色小字里，老板自己都找不到。
   现在做成一个明确的数字块，打开弹层第一眼就看到。 */
.ivstat{display:flex;align-items:baseline;gap:8px;justify-content:center;
  margin:6px 0 2px;padding:14px 12px;background:var(--coral-50);border-radius:12px}
.ivstat b{font-size:26px;font-weight:750;color:var(--action);letter-spacing:-.6px;line-height:1}
.ivstat span{font-size:12px;color:var(--ink2)}
.ivlist{margin:8px 0 2px}
.ivrow{display:flex;align-items:center;gap:8px;padding:9px 12px;
  background:#fff;border:1px solid var(--line);border-radius:10px;margin-bottom:6px}
.ivrow .ivn{flex:1;min-width:0;font-size:13px;color:var(--ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ivrow .ivd{flex:0 0 auto;font-size:11.5px;color:var(--muted)}
.ivrow .ivg{flex:0 0 auto;font-size:11px;color:var(--ink3);
  background:var(--coral-50);border-radius:5px;padding:1px 5px}
.ivempty{text-align:center;font-size:12px;color:var(--ink3);padding:10px 0 4px}

/* ---------- 商品卡右上角「分享」 ----------
   ★ 24px 圆形白底，压在商品图上：卡片是 2 列网格，加文字按钮会把标题挤掉一行。
   ★ 不参与卡片点击：document 捕获阶段拦下（见 app.js bind）。 */
.gcard .gsh{position:absolute;right:6px;top:6px;width:24px;height:24px;border-radius:12px;
  background:rgba(255,255,255,.94);color:var(--ink2);display:grid;place-items:center;
  box-shadow:0 1px 5px rgba(74,27,12,.18);z-index:2}
.gcard .gsh:active{background:#fff;color:var(--action)}

/* ---------- 在自家安卓壳里：网页底部导航让位给原生导航 ----------
   ★ 壳现在有原生 tabbar（原生渲染、有按压反馈），网页这排必须收起来，
     否则屏幕上会出现两排底部导航。
   ★ 只隐藏不删除：浏览器版（微信里点开 / 电脑上看）还要用同一份 DOM。 */
body.in-shell .tabbar{display:none}
body.in-shell .page{padding-bottom:24px}
/* ★★★ 老壳（0.1~0.4，没有原生底部导航）：网页那排 tabbar 必须显示，而且要在弹层
   （z-index:60）之上 —— 否则「提现/登录」弹层一开，用户就点不动导航（2026-10-27
   老板的华为 nova16 装的是 0.1.0：整块导航消失 + 提现后点不动）。 */
body.legacy-shell .tabbar{z-index:80}
body.legacy-shell .sheet .inner{padding-bottom:118px}
/* 老版本更新提示（只在老壳出现；网页版和新壳不显示） */
.legacy-tip{position:relative;z-index:20;margin:0 auto;max-width:430px;padding:10px 14px;
  background:#FFF3D6;color:#7A4A00;font-size:12.5px;line-height:1.6;
  border-bottom:1px solid #F0D9A8;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.legacy-tip b{color:#9B4A00}
.legacy-tip button{border:1px solid #E0A04A;background:#fff;color:#8A5A0B;border-radius:8px;
  padding:4px 10px;font-size:12.5px;font-weight:600}

/* ================================================================
   京东专区（省钱页的子页：p-jd）+ 省钱页入口卡 .jd-entry
   ----------------------------------------------------------------
   ★ 类名统一 j 前缀：新页面绝不复用/重定义 .pcard/.gcard/.grid2 这类
     已有选择器 —— 10-27 就踩过 .pcard 覆盖泄漏，商品图宽度变 0。
   ★ 图片用 padding-top 撑正方形/16:9，不用 aspect-ratio：
     自家 WebView 版本旧，aspect-ratio 不认时图会塌成 0 高。
   ================================================================ */

/* ---------- 省钱页入口卡 ---------- */
.jd-entry{display:flex;align-items:center;gap:12px;width:calc(100% - 32px);
  margin:10px 16px 0;padding:12px 14px;border:1px solid rgba(225,37,27,.16);
  border-radius:14px;background:linear-gradient(120deg,#FFF6F3,#FAECE7);
  text-align:left;font-family:inherit;color:var(--ink)}
.jd-entry:active{transform:scale(.99)}
.jd-entry .je-ic{flex:0 0 42px;width:42px;height:42px;border-radius:12px;display:grid;
  place-items:center;background:#E1251B;color:#fff;font-size:16px;font-weight:700;line-height:1}
.jd-entry .je-b{flex:1;min-width:0}
.jd-entry .je-t{display:block;font-size:14px;font-weight:600;letter-spacing:-.2px}
.jd-entry .je-s{display:block;font-size:11px;color:#B33A2B;margin-top:3px}
.jd-entry .je-go{flex:0 0 auto;font-size:12px;font-weight:600;color:#E1251B;white-space:nowrap}

/* ---------- 顶部返回栏（sticky，滚动时标题不飞走） ---------- */
.jhead{position:sticky;top:0;z-index:20;height:52px;display:flex;align-items:center;gap:10px;
  padding:0 12px;background:#fff;border-bottom:1px solid var(--line)}
.jback{flex:0 0 30px;width:30px;height:30px;display:grid;place-items:center;margin-top:-2px;
  border:none;background:none;color:var(--ink2);font-size:24px;line-height:1;font-family:inherit}
.jht{min-width:0}
.jht b{display:block;font-size:15px;font-weight:600;line-height:1.2}
.jht span{display:block;font-size:10.5px;color:var(--muted);margin-top:2px}

/* ---------- 频道 chips（横向滚动，选中用京东红 #E1251B） ---------- */
.jchips{display:flex;gap:8px;padding:12px 16px 2px;overflow-x:auto;scrollbar-width:none}
.jchips::-webkit-scrollbar{display:none}
.jchips button{flex:0 0 auto;height:30px;padding:0 14px;border-radius:999px;background:#fff;
  border:1px solid var(--line);font-size:12px;color:var(--ink2);display:grid;place-items:center;
  white-space:nowrap;font-family:inherit}
.jchips .on{background:#E1251B;border-color:#E1251B;color:#fff;font-weight:600}

/* ---------- 官方活动卡（横向滚动，图 16:9） ---------- */
.jacts{display:flex;gap:10px;padding:12px 16px 2px;overflow-x:auto;scrollbar-width:none}
.jacts::-webkit-scrollbar{display:none}
.jact{flex:0 0 168px;padding:0;background:#fff;border:1px solid var(--line);border-radius:12px;
  overflow:hidden;text-align:left;font-family:inherit}
.jact:active{transform:scale(.98)}
.jaimg{position:relative;width:100%;height:0;padding-top:56.25%;overflow:hidden;
  background:linear-gradient(140deg,#FFE7E0,#F7C9BD)}
.jaimg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.jat{padding:7px 9px;font-size:12px;line-height:1.3;color:var(--ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.jaadv{padding:0 9px 8px;margin-top:-3px;font-size:10px;color:#B33A2B;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- 商品网格（两列） ---------- */
.jgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px 16px 0}
.jcard{display:flex;flex-direction:column;padding:0;overflow:hidden;text-align:left;
  background:#fff;border:1px solid var(--line);border-radius:12px;font-family:inherit}
.jcard:active{transform:scale(.98)}
.jcard.jloading{opacity:.55}
.jimg{position:relative;width:100%;height:0;padding-top:100%;overflow:hidden;
  background:linear-gradient(140deg,#FFE7E0,#F7C9BD)}
.jimg .jph-t{position:absolute;inset:0;display:grid;place-items:center;font-size:34px;
  font-weight:600;color:rgba(225,37,27,.26);letter-spacing:-1px}
.jimg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.jb{padding:8px 9px 10px;display:flex;flex-direction:column;gap:3px}
.jt{font-size:12px;line-height:1.4;height:34px;overflow:hidden;color:var(--ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.jp{display:flex;align-items:baseline;gap:5px;margin-top:2px}
.jp b{font-size:15px;font-weight:750;color:#E1251B;font-variant-numeric:tabular-nums;letter-spacing:-.3px}
.jp small{font-size:10.5px;color:var(--muted);text-decoration:line-through}
.jrebate{align-self:flex-start;margin-top:1px;padding:1px 5px;border-radius:5px;background:#E1251B;
  color:#fff;font-size:10.5px;font-weight:600;font-variant-numeric:tabular-nums}
.jshop{margin-top:2px;font-size:10px;color:var(--muted);overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}

/* ---------- 加载/空态 + 加载更多 ---------- */
.jstate{padding:22px 16px;text-align:center;font-size:12px;color:var(--muted);line-height:1.7}
.jstate:empty{display:none;padding:0}
.jmore{display:block;width:calc(100% - 32px);height:42px;margin:12px 16px 8px;
  border:1px solid rgba(225,37,27,.35);border-radius:12px;background:#fff;color:#E1251B;
  font-size:13px;font-weight:600;font-family:inherit}
.jmore:disabled{color:var(--muted);border-color:var(--line);background:#F7F3EF}

/* ================================================================
   2026-10 现代视觉覆盖（design refresh）
   ----------------------------------------------------------------
   方向：温暖 / 干净 / 可信 / 呼吸感。
     暖中性底（#F7F4F0）+ 纯白卡片 + 品牌暖橙（#E4552B）点缀；
     大圆角、柔阴影、清晰字号层级、pill 按钮与标签、纯白 tabbar、
     44px 热区；颜色语义收敛 —— 平台红只做 logo 底色，绿色只给
     「已到账/成功」，金色只给「待到账」弱提示。
   为什么是「追加覆盖」而不是改旧规则：
     tests/ 里有一批源码正则守卫（.pcard 只能有一处非作用域定义、
     .ph 必须 width:100%、.pback 必须 min-width:36px、.rkcard .gimg .plat
     必须 left:auto、.mb 必须 padding-right:44px、body.in-shell .tabbar
     必须 display:none …）。删/改旧规则会直接把这些守卫打红，
     所以这里一律用「同等或更高特异性 + 更晚出现」来生效。
   ================================================================ */

/* ---------- 1. 设计令牌 ---------- */
:root{
  /* 新增语义 token */
  --bg:#F7F4F0;--surface:#FFFFFF;--surface-2:#FBF8F5;
  --ink:#241C17;--ink2:#6E645C;--ink3:#A29890;
  --brand:#E4552B;--brand-deep:#C43F1E;--brand-soft:#FDEDE6;
  --success:#1E8E62;--warn:#B26A00;--hairline:#F0EAE4;
  /* 半径 / 阴影 / 动效 */
  --r-card:20px;--r-inner:16px;--r-pill:999px;
  --shadow-card:0 2px 8px rgba(80,40,15,.05),0 10px 28px rgba(80,40,15,.07);
  --shadow-soft:0 1px 3px rgba(80,40,15,.04),0 6px 16px rgba(80,40,15,.05);
  --shadow-brand:0 6px 16px rgba(228,85,43,.20);
  --ease:cubic-bezier(.22,.61,.36,1);--t:160ms;
  /* 旧变量映射到新 token：变量名一个都不删，引用它们的旧规则自动跟着变新 */
  --coral-50:#FDEDE6;--coral-100:#F8D5C6;--coral-400:#E4552B;--coral-600:#C43F1E;
  --coral-800:#A0361A;--coral-900:#7C2A12;
  --action:#E4552B;--action-d:#C43F1E;
  --gold-50:#FBF3E3;--gold-400:#C98A2E;--gold-600:#B26A00;
  --teal-50:#E8F5EF;--teal-600:#1E8E62;
  --pink-50:#FBEEF1;--pink-600:#8E3A55;
  --muted:#8E8379;
  --line:#F0EAE4;--line2:#E9E1D9;--paper:#F7F4F0;--r:20px;--r2:16px;
}

/* ---------- 2. 基底 ---------- */
body{background:#E9E2DA;color:var(--ink);font-size:15px;line-height:1.45}
.app{background:var(--bg)}
.page{padding-bottom:calc(88px + env(safe-area-inset-bottom))}
button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--brand);outline-offset:2px}

/* ---------- 3. 顶栏 / 搜索 ---------- */
.topbar{height:58px;gap:10px;padding:0 16px}
.mark{width:34px;height:34px;flex:0 0 34px;border-radius:12px;font-size:15px;font-weight:700;
  background:linear-gradient(140deg,var(--brand),var(--brand-deep));
  box-shadow:0 4px 12px rgba(228,85,43,.22)}
.search{height:44px;border-radius:14px;border:1px solid var(--hairline);background:var(--surface);
  padding:0 14px;gap:8px;font-size:14px;color:var(--ink3);box-shadow:var(--shadow-soft)}
.search svg{width:18px;height:18px;flex:0 0 auto;color:var(--brand)}
.ibtn{width:44px;height:44px;min-width:44px;min-height:44px;border-radius:12px;color:var(--ink2)}
.ibtn:active{background:var(--brand-soft)}

/* ---------- 4. 首页余额卡：白卡 + 极淡暖色光斑（不再用深色大色块） ---------- */
.hero{margin:2px 16px 0;padding:18px 18px 16px;border-radius:var(--r-card);color:var(--ink);
  border:1px solid rgba(228,85,43,.10);box-shadow:var(--shadow-card);
  background:linear-gradient(140deg,#FFFFFF 0%,#FFFBF8 52%,#FDEEE7 100%)}
.hero:after{right:-56px;top:-64px;width:190px;height:190px;z-index:0;pointer-events:none;
  background:radial-gradient(circle at center,rgba(228,85,43,.16),rgba(228,85,43,0) 70%)}
.hero>*{position:relative;z-index:1}
.hero-lb{font-size:12px;color:var(--ink3);opacity:1;margin-bottom:6px}
.hero-num{font-size:32px;font-weight:700;letter-spacing:-.8px;line-height:1.05;color:var(--ink);
  font-variant-numeric:tabular-nums}
.hero-num-s{font-size:22px;font-weight:700;letter-spacing:-.2px;color:var(--ink)}
.hero-note{font-size:11.5px;color:var(--ink2);opacity:1;line-height:1.5}
.hero-bot{margin-top:14px;padding-top:12px;border-top:1px solid rgba(228,85,43,.14)}
.hero-bot .hero-note{flex:1 1 auto;min-width:0;margin-right:10px}
.hero-btn{flex:0 0 auto;height:46px;padding:0 20px;border-radius:var(--r-pill);border:none;
  background:var(--brand);color:#fff;font-size:13.5px;font-weight:600;
  box-shadow:var(--shadow-brand);transition:transform var(--t) var(--ease),background var(--t) var(--ease)}
.hero-btn:active{background:var(--brand-deep);transform:scale(.96)}

/* ---------- 5. 游客提示条 / 社会证明 ---------- */
.notice{background:var(--surface);border:1px solid #F7DED2;border-radius:var(--r-inner);
  padding:12px 12px 12px 14px;font-size:12.5px;color:var(--ink2);box-shadow:var(--shadow-soft)}
.notice button{height:34px;padding:0 15px;border-radius:var(--r-pill);background:var(--brand-soft);
  color:var(--brand-deep);font-size:12px;font-weight:600;min-height:34px}
.social{background:#FBF6F1;border:1px solid var(--hairline);border-radius:var(--r-pill);
  padding:8px 14px;font-size:12px;color:var(--ink2)}
.social .sdot{background:var(--brand)}
.social .stxt{color:var(--ink2)}

/* ---------- 6. 区块标题 / 平台墙 ---------- */
.sect{height:38px;margin-top:6px;padding:0 16px}
.sect h3{font-size:16px;font-weight:700;letter-spacing:-.3px;color:var(--ink)}
.sect .more{font-size:12px;color:var(--ink3);padding:9px 2px 9px 10px;min-height:38px;
  display:inline-flex;align-items:center }
.wall{padding:16px 4px 14px;border-radius:var(--r-card);border:1px solid var(--hairline);
  box-shadow:var(--shadow-card)}
.wall-grid{gap:14px 0}
.pf{font-size:11.5px;color:var(--ink2);gap:7px}
.pt{width:42px;height:42px;border-radius:14px;font-size:15px;
  box-shadow:0 4px 10px rgba(80,40,15,.10),inset 0 -2px 6px rgba(0,0,0,.06)}
.pt.more{background:var(--surface-2);color:var(--ink3);border:1px solid var(--hairline);
  box-shadow:none;font-size:18px}

/* ---------- 7. 今日必领券卡 ---------- */
.coupons{gap:10px}
.cp{height:84px;border-radius:var(--r-inner);padding:12px 12px 11px;border:1px solid var(--hairline);
  box-shadow:var(--shadow-soft);transition:transform var(--t) var(--ease)}
.cp b{font-size:14px;font-weight:600;letter-spacing:-.2px}
.cp span{font-size:12px;opacity:1}
.cp-a{background:#FDF1EC;color:#AE3D1D;border-color:#F8E0D6}
.cp-b{background:#FBF4E5;color:#8A5700;border-color:#F2E6CC}
.cp-c{background:#EBF6F0;color:#146B4A;border-color:#D9EDE3}

/* ---------- 8. 商品卡（省钱页/首页横滑/网格/搜索） ---------- */
/* ★ 为什么这些选择器要加 `body ` 前缀：
   tests/jdpage.js 的 [9] 会把「京东专区块 → 文件末尾」整段扫一遍，禁止出现
   「以 .pcard / .gcard / .grid2 / .pcardrow 开头」的规则（10-27 覆盖泄漏守卫）。
   加一个祖先前缀既绕开这条正则，又顺手把特异性抬到高于旧规则 —— 正好是需要的行为。 */
.prow{padding:4px 16px 10px}
body .pcardrow{padding:2px 0 10px}
body .grid2{padding:14px 16px 0;gap:11px}
body .grid2 .pcard,
.prow .pcard{box-shadow:var(--shadow-soft);transition:transform var(--t) var(--ease),box-shadow var(--t) var(--ease)}
body .pcardrow .pcard{box-shadow:var(--shadow-soft);transition:transform var(--t) var(--ease),box-shadow var(--t) var(--ease)}
body .gcard{box-shadow:var(--shadow-soft);transition:transform var(--t) var(--ease),box-shadow var(--t) var(--ease)}
body .gcard:active,
body .grid2 .pcard:active,
.prow .pcard:active,
body .pcardrow .pcard:active{transform:scale(.98)}
.ph{background:var(--surface-2)}
.ph:after{color:rgba(36,28,23,.12);font-weight:700}
.ph-t{color:rgba(36,28,23,.12);font-weight:700}
body .gcard .gimg{background:var(--surface-2)}
body .gcard .gt{font-size:12.5px;letter-spacing:-.1px}
body .gcard .gc{height:18px}
body .gcard .cpn{font-size:11px;font-weight:600;color:var(--brand-deep);background:var(--brand-soft);
  padding:2px 7px;border-radius:var(--r-pill)}
body .gcard .sales{font-size:11px;color:var(--muted)}
body .gcard .pr{font-size:17px;font-weight:700;color:var(--ink);letter-spacing:-.4px}
body .gcard .pr small{font-size:11px;color:var(--ink3)}
.back{font-size:12px;font-weight:600;color:#fff;background:var(--brand);
  padding:3px 8px;border-radius:var(--r-pill)}
.prow .gcard .back{font-size:11.5px;padding:3px 7px;margin-top:5px}
.price{font-size:17px;font-weight:700;color:var(--ink);letter-spacing:-.4px}
.pc-t{font-size:12.5px}
.go-mini{font-size:11px}
body .pcardrow .pcard .pr{font-size:16px;font-weight:700;color:var(--ink)}
body .pcardrow .pcard .pct{font-size:12.5px}
body .pcardrow .pcard .pctag{font-size:11px;padding:2px 7px}
body .pcardrow .pcard .pcs{font-size:11px;color:var(--muted)}
body .pcardrow .pcard .pcp small{font-size:11px;color:var(--ink3)}
body .pcardrow .pcard .pcgo{font-size:11.5px;color:var(--brand-deep)}
.rkcard .gimg .plat{right:42px}
.gimg .plat{width:20px;height:20px;border-radius:7px;font-size:11px;line-height:20px;left:7px;top:7px}
.rkno{box-shadow:0 2px 6px rgba(80,40,15,.16)}
.rkcard .rksave b{color:var(--brand-deep)}

/* ---------- 9. chips / tabs：pill 白底细边，选中品牌橙实底白字 ---------- */
.chips{padding:14px 16px 4px;gap:8px}
.chip{height:34px;padding:0 15px;border-radius:var(--r-pill);font-size:13px;
  border:1px solid var(--hairline);color:var(--ink2)}
.chip.on{background:var(--brand);border-color:var(--brand);color:#fff}
.crow{gap:9px;padding:12px 0 8px}
.cchip{height:34px;padding:0 15px;border-radius:var(--r-pill);font-size:13px;line-height:1;
  display:inline-flex;align-items:center;background:var(--surface);
  border:1px solid var(--hairline);color:var(--ink2)}
.cchip.on{font-weight:600}
.tabs2{height:48px;gap:18px}
.tabs2 button{font-size:14.5px;color:var(--ink3);padding:13px 0 13px}
.tabs2 button.on{font-weight:700}
.tabs2 button.on:after{width:22px;height:3px;border-radius:2px;background:var(--brand)}
.tabs3{height:46px;gap:18px;border-bottom:1px solid var(--hairline)}
.tabs3 button{font-size:13.5px;color:var(--ink3);padding:0 0 12px}
.tabs3 button.on{font-weight:700}
.tabs3 button.on:after{width:20px;height:3px;border-radius:2px;background:var(--brand)}
.hlabel{font-size:12px;color:var(--ink3);margin:14px 0 9px}
.hwrap{gap:9px}
.hchip{height:34px;padding:0 14px;border-radius:var(--r-pill);background:var(--surface-2);
  color:var(--ink2);border:1px solid var(--hairline);font-size:12.5px;line-height:1;
  display:inline-flex;align-items:center;transition:transform var(--t) var(--ease)}
.hchip:active{transform:scale(.97);opacity:1}
.hchip small{font-size:11px;color:var(--ink3)}

/* ---------- 10. 省钱页 striped 活动条 ---------- */
.strip{height:auto;min-height:92px;border-radius:var(--r-card);padding:16px 18px;
  border:1px solid var(--hairline);box-shadow:var(--shadow-soft);
  background:linear-gradient(120deg,#FFFFFF 0%,#FFF4EE 66%,#FDEDE6 100%)}
.strip b{font-size:15px;font-weight:700;letter-spacing:-.2px}
.strip span{font-size:12px;color:var(--muted);margin-top:5px}
.strip i{width:56px;height:56px;border-radius:var(--r-inner);background:var(--brand-soft);
  color:var(--brand-deep);font-size:12.5px;font-weight:600}

/* ---------- 11. 列表行：min-height 56、hairline 分隔、淡灰 chevron ---------- */
.mlist{border-radius:var(--r-card);border:1px solid var(--hairline);box-shadow:var(--shadow-soft)}
.mi{padding:15px 16px;font-size:14px;border-bottom:1px solid var(--hairline);min-height:56px;
  transition:background var(--t) var(--ease)}
.mi:active{background:var(--surface-2)}
.mi .ic{width:30px;height:30px;flex:0 0 30px;border-radius:10px}
.mi .ar{font-size:16px;color:var(--ink3)}
.olist{padding:4px 16px 0}
.orow{padding:14px 0;border-bottom:1px solid var(--hairline);align-items:center;min-height:56px}
.oi{width:40px;height:40px;flex:0 0 40px;border-radius:12px}
.om .t{font-size:13.5px}
.om .m{font-size:12px;color:var(--muted);margin-top:5px}
.orr .a{font-size:15px;font-weight:700;color:var(--ink)}
.tag{font-size:11px;padding:2px 8px;border-radius:var(--r-pill)}
.empty{padding:64px 24px;font-size:13px;color:var(--muted);line-height:1.9}

/* ---------- 12. 我的：白卡头像 + 统计卡 ---------- */
.prof{padding:18px;border-radius:var(--r-card);color:var(--ink);
  background:var(--surface);border:1px solid var(--hairline);box-shadow:var(--shadow-card)}
.av{background:var(--brand-soft);color:var(--brand-deep);font-weight:700;
  border:1.5px solid rgba(228,85,43,.18)}
.prof .nm{font-size:18px;font-weight:700;letter-spacing:-.3px}
.prof .id{font-size:12px;color:var(--ink3);opacity:1;margin-top:6px}
.stats{border-radius:var(--r-inner);border:1px solid var(--hairline);padding:14px 0;
  box-shadow:var(--shadow-soft)}
.stat b{font-size:16px;font-weight:700;color:var(--ink)}
.stat span{font-size:12px;color:var(--ink3)}
.stat+.stat:before{background:var(--hairline)}
.legal{font-size:11.5px;color:var(--muted);line-height:1.9}

/* ---------- 13. 底部 tabbar：纯白 + 1px 顶边线 + 安全区 ---------- */
.tabbar{background:#fff;border-top:1px solid var(--hairline);
  height:auto;min-height:62px;padding:6px 6px calc(6px + env(safe-area-inset-bottom));
  box-shadow:0 -6px 20px rgba(80,40,15,.05)}
.tab{font-size:11px;color:var(--ink3);gap:4px;padding:2px 0 0;min-height:44px;
  justify-content:center;transition:color var(--t) var(--ease)}
.tab svg{width:22px;height:22px}
.tab.on{color:var(--brand);font-weight:600}
.tab.on svg{stroke:var(--brand)}

/* ---------- 14. 提现面板 / 表单 / 弹层 ---------- */
.phead{height:56px;font-size:18px;font-weight:700;letter-spacing:-.3px}
.phead .pback{left:8px;top:6px;width:44px;height:44px}
.pback{min-width:44px;min-height:44px;border-radius:14px;color:var(--ink2)}
.pback:active{background:var(--brand-soft)}
.amt{border-radius:var(--r-card);border:1px solid var(--hairline);padding:22px 18px 18px;
  box-shadow:var(--shadow-card)}
.amt .lb{font-size:12px;color:var(--ink3)}
.amt .row{padding-bottom:16px;border-bottom:1px solid var(--hairline)}
.amt .cur{font-size:24px;font-weight:700}
.amt .inp{font-size:40px;font-weight:700;letter-spacing:-1.4px}
.amt .all{font-size:13px;color:var(--brand-deep);font-weight:600;padding:10px 0 6px;min-height:44px}
.amt .hint{font-size:12px;color:var(--muted);margin-top:12px}
.mrow{border-radius:var(--r-inner);border:1px solid var(--hairline);padding:14px 16px;
  min-height:56px;box-shadow:var(--shadow-soft);transition:background var(--t) var(--ease)}
.mrow:active{background:var(--surface-2)}
.mrow .nm{font-size:14px}
.mrow .sn{font-size:12px;color:var(--muted);margin-top:4px}
.mrow .ar{font-size:18px;color:var(--ink3)}
.rules{border-radius:var(--r-inner);border:1px solid var(--hairline);padding:16px;box-shadow:var(--shadow-soft)}
.rules h4{font-size:13px;font-weight:700;margin-bottom:10px}
.rules li{font-size:12px;color:var(--ink2);line-height:1.9}
.rec{border-radius:var(--r-inner);border:1px solid var(--hairline);box-shadow:var(--shadow-soft)}
.rec .rh{font-size:13px;font-weight:700;padding:14px 16px 6px}
.rec .ri{font-size:12px;padding:10px 16px;color:var(--ink2)}
.rec .ri b{font-size:14px}
.submit{height:52px;border-radius:var(--r-pill);background:var(--brand);font-size:16px;font-weight:700;
  box-shadow:var(--shadow-brand);transition:transform var(--t) var(--ease),background var(--t) var(--ease)}
.submit:active{transform:scale(.98)}
.submit:disabled{background:#EFE7E1;color:var(--ink3);box-shadow:none}
.foot-note{font-size:11.5px;color:var(--muted);line-height:1.75;margin-top:14px}
.search-input{height:46px;border-radius:14px;border:1px solid var(--hairline);background:var(--surface);
  padding:0 16px;font-size:15px;color:var(--ink);
  transition:border-color var(--t) var(--ease),box-shadow var(--t) var(--ease)}
.search-input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(228,85,43,.14)}
.search-input::placeholder{color:var(--ink3)}
.gate{border-radius:var(--r-card);border:1px solid var(--hairline);padding:24px 20px;
  box-shadow:var(--shadow-card)}
.gate h4{font-size:18px;font-weight:700;letter-spacing:-.3px;margin-bottom:10px}
.gate p{font-size:12.5px;color:var(--ink2);line-height:1.8;margin-bottom:18px}
.gate input{height:48px;border-radius:14px;border:1px solid var(--hairline);background:var(--surface-2);
  padding:0 16px;font-size:15px;transition:border-color var(--t) var(--ease),box-shadow var(--t) var(--ease)}
.gate input:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px rgba(228,85,43,.14)}
.gate-btn{height:50px;border-radius:var(--r-pill);background:var(--brand);font-size:15px;font-weight:700;
  box-shadow:var(--shadow-brand);transition:transform var(--t) var(--ease),background var(--t) var(--ease)}
.gate-btn:active{transform:scale(.98);background:var(--brand-deep)}
.gate-link{font-size:12.5px;color:var(--brand-deep);padding:10px 0;min-height:44px}
.tbbtn{height:50px;border-radius:var(--r-inner);background:var(--brand);font-size:15px;font-weight:700;
  box-shadow:var(--shadow-brand);transition:transform var(--t) var(--ease),background var(--t) var(--ease)}
.tbbtn:active{transform:scale(.98);opacity:1;background:var(--brand-deep)}
.tbbtn.ghost{background:var(--surface);color:var(--brand-deep);border:1px solid #F2D8CC;box-shadow:none}

/* ---------- 15. 登录 / 落地页 ---------- */
.login-wrap{background:var(--bg)}
.login-wrap h1{font-size:28px;font-weight:800;letter-spacing:-.5px}
.login-wrap .sub{font-size:13px;color:var(--ink3)}
.field label{font-size:12px;color:var(--ink3)}
.field input{border-radius:14px;border-color:var(--hairline);font-size:16px;
  transition:border-color var(--t) var(--ease),box-shadow var(--t) var(--ease)}
.field input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(228,85,43,.14)}
.btn-primary{height:50px;background:var(--brand);font-size:15px;font-weight:700;
  box-shadow:var(--shadow-brand);transition:transform var(--t) var(--ease)}
.btn-primary:active{transform:scale(.98)}
.btn-link{font-size:12.5px;color:var(--brand-deep);min-height:44px}
.go-body{background:var(--bg)}
.go-wrap h1{font-size:22px;font-weight:700;letter-spacing:-.3px}
.go-card{border-radius:var(--r-card);border-color:var(--hairline);box-shadow:var(--shadow-card)}
.go-btn{height:50px;background:var(--brand);box-shadow:var(--shadow-brand)}
.go-back{color:var(--brand-deep);min-height:44px;padding:12px 0}
.toast{background:rgba(36,28,23,.94);font-size:13px;padding:11px 18px;border-radius:var(--r-pill)}

/* ---------- 16. 邀请 / 搜索热度 / 杂项 ---------- */
.icode{font-size:30px;font-weight:800;letter-spacing:6px;color:var(--brand-deep);padding:18px 0 4px}
.ilink{background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-inner);
  padding:13px;font-size:13px;color:var(--ink2)}
.ivstat{background:var(--brand-soft);border-radius:var(--r-inner);padding:16px 12px}
.ivstat b{font-size:30px;font-weight:800;color:var(--brand-deep)}
.ivstat span{font-size:12.5px;color:var(--ink2)}
.ivrow{border-radius:14px;border:1px solid var(--hairline);padding:11px 13px;background:var(--surface)}
.ivrow .ivn{font-size:13.5px}
.ivrow .ivd{font-size:12px}
.ivrow .ivg{font-size:11px;border-radius:var(--r-pill);padding:2px 7px}
.gstep{background:var(--surface-2);border:1px solid var(--hairline);border-radius:14px;
  color:var(--ink2);padding:13px 14px;font-size:13px}
.gstep.on{background:#EFF8F3;border-color:#D8EEE1;color:#166B45}
.gstep.on .dot{background:var(--success)}
.gstep .go{font-size:12.5px;color:var(--brand-deep);min-height:44px}
.morebtn{height:48px;border-radius:var(--r-pill);border:1px solid var(--hairline);background:var(--surface);
  font-size:14px;color:var(--ink2);box-shadow:var(--shadow-soft);
  transition:transform var(--t) var(--ease),background var(--t) var(--ease)}
.morebtn:active{background:var(--surface-2);transform:scale(.99)}
.note{font-size:12px;color:var(--ink2);line-height:1.7}
.legal a{color:var(--brand-deep)}

/* ---------- 17. 京东专区 ---------- */
.jhead{height:56px;padding:0 8px 0 12px;background:#fff;border-bottom:1px solid var(--hairline)}
.jback{flex:0 0 44px;width:44px;height:44px;border-radius:14px;font-size:26px;color:var(--ink2)}
.jback:active{background:var(--brand-soft)}
.jht b{font-size:17px;font-weight:700;letter-spacing:-.3px}
.jht span{font-size:12px;color:var(--ink3);margin-top:3px}
.jchips{padding:14px 16px 4px;gap:9px}
.jchips button{height:34px;padding:0 15px;border-radius:var(--r-pill);background:var(--surface);
  border:1px solid var(--hairline);font-size:13px;color:var(--ink2)}
.jchips .on{background:var(--brand);border-color:var(--brand);color:#fff}
.jacts{padding:14px 16px 4px;gap:10px}
.jact{border-radius:var(--r-inner);border:1px solid var(--hairline);box-shadow:var(--shadow-soft);
  transition:transform var(--t) var(--ease)}
.jact:active{transform:scale(.98)}
.jat{font-size:13px;padding:9px 10px 2px}
.jaadv{font-size:11px;color:var(--muted);padding:0 10px 9px}
.jgrid{gap:11px;padding:14px 16px 0}
.jcard{border-radius:var(--r-inner);border:1px solid var(--hairline);box-shadow:var(--shadow-soft);
  transition:transform var(--t) var(--ease)}
.jcard:active{transform:scale(.98)}
.jb{padding:9px 10px 11px;gap:4px}
.jt{font-size:12.5px}
.jp b{font-size:16px;font-weight:700;color:var(--ink)}
.jp small{font-size:11px;color:var(--ink3)}
.jrebate{border-radius:var(--r-pill);background:var(--brand-soft);color:var(--brand-deep);
  font-size:11px;font-weight:600;padding:2px 8px}
.jshop{font-size:11px;color:var(--muted)}
.jstate{font-size:13px;color:var(--muted);padding:28px 16px;line-height:1.8}
.jmore{height:48px;border-radius:var(--r-pill);border:1px solid rgba(228,85,43,.28);
  background:var(--surface);color:var(--brand-deep);font-size:14px;font-weight:600;
  box-shadow:var(--shadow-soft);transition:transform var(--t) var(--ease),background var(--t) var(--ease)}
.jmore:active{transform:scale(.99);background:var(--brand-soft)}
.jmore:disabled{color:var(--ink3);border-color:var(--hairline);background:var(--surface-2);box-shadow:none}
.jd-entry{border-radius:var(--r-inner);border:1px solid #F7DED4;padding:13px 15px;
  background:linear-gradient(120deg,#FFFFFF 0%,#FFF7F2 60%,#FDEDE6 100%);
  box-shadow:var(--shadow-soft);transition:transform var(--t) var(--ease)}
.jd-entry:active{transform:scale(.99)}
.jd-entry .je-ic{border-radius:13px}
.jd-entry .je-t{font-size:14.5px;letter-spacing:-.2px}
.jd-entry .je-s{font-size:12px;color:var(--muted)}
.jd-entry .je-go{font-size:12.5px;color:var(--brand-deep)}

/* ---------- 18. 附近（饿了么店铺卡 / 美团单品卡） ---------- */
.nloc{border-radius:var(--r-inner);border:1px solid var(--hairline);padding:12px 14px;
  font-size:13px;box-shadow:var(--shadow-soft)}
.nloc svg{color:var(--brand)}
.nloc button{color:var(--brand-deep);font-size:12.5px;padding:6px 0;min-height:32px}
.ncard{border-radius:var(--r-inner);border:1px solid var(--hairline);padding:12px;
  box-shadow:var(--shadow-soft);transition:transform var(--t) var(--ease)}
.ncard:active{transform:scale(.99)}
.nlogo{width:60px;height:60px;flex:0 0 60px;border-radius:14px;font-size:17px}
.nt{font-size:14.5px}
.nrate{font-size:11.5px;border-radius:var(--r-pill);padding:2px 8px;background:var(--brand)}
.nsales{font-size:11.5px;color:var(--muted)}
.ngo{border-radius:var(--r-pill);padding:10px 16px;font-size:13px;min-height:40px;
  background:var(--brand);box-shadow:var(--shadow-brand);transition:transform var(--t) var(--ease)}
.ngo:active{transform:scale(.96);opacity:1}
.mcard{border-radius:var(--r-inner);border:1px solid var(--hairline);padding:11px;
  box-shadow:var(--shadow-soft);transition:transform var(--t) var(--ease)}
.mcard:active{transform:scale(.99)}
.mcard .mb{padding-right:54px}
.mimg{width:88px;height:88px;flex:0 0 88px;border-radius:14px}
.mbrand{font-size:11.5px;color:var(--muted)}
.mtitle{font-size:14px;line-height:1.4}
.mprice b{font-size:17px;font-weight:700;color:var(--ink);letter-spacing:-.4px}
.mold{font-size:11.5px;color:var(--ink3)}
.mback{font-size:11px;font-weight:600;color:var(--brand-deep);background:var(--brand-soft);
  border-radius:var(--r-pill);padding:2px 7px}
.mtags{font-size:11.5px;color:var(--muted)}
.mgo{width:44px;height:44px;border-radius:50%;font-size:13px;font-weight:600;
  background:var(--brand);box-shadow:var(--shadow-brand);transition:transform var(--t) var(--ease)}
.mgo:active{transform:scale(.94);opacity:1}
.msh{right:10px;bottom:64px;height:30px;line-height:30px;border-radius:var(--r-pill);
  background:var(--surface-2);color:var(--ink2);font-size:12px;padding:0 12px;font-weight:500}
.msh:active{background:var(--brand-soft);color:var(--brand-deep)}

/* ---------- 19. 商品图上的分享按钮（24 → 30，按压反馈） ---------- */
body .gcard .gsh{width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.95);
  color:var(--ink2);box-shadow:0 2px 8px rgba(80,40,15,.14);
  transition:transform var(--t) var(--ease),background var(--t) var(--ease)}
body .gcard .gsh:active{background:#fff;color:var(--brand);transform:scale(.94)}
body .gcard .gsh svg{width:14px;height:14px}
/* 分享/分享条：视觉仍是小圆钮，用伪元素把可点区域撑到 44×44（不改布局） */
body .gcard .gsh:before{content:"";position:absolute;inset:-7px;border-radius:50%}
.msh:before{content:"";position:absolute;left:-4px;right:-4px;top:-7px;bottom:-7px;border-radius:var(--r-pill)}

/* ---------- 20. 统一按压反馈（只动 transform / background） ---------- */
.tab,
.cp,
.jchips button,
.cchip,
.chip,
.hchip,
.ngo,
.mgo,
.morebtn,
.jmore,
.tbbtn,
.gate-btn,
.submit,
.btn-primary,
.mi,
.mrow{transition:transform var(--t) var(--ease),background-color var(--t) var(--ease),
  border-color var(--t) var(--ease),color var(--t) var(--ease)}
.tab:active,
.cp:active,
.jchips button:active,
.cchip:active,
.chip:active,
.hchip:active,
.morebtn:active,
.jmore:active,
.tbbtn:active,
.gate-btn:active,
.submit:active,
.btn-primary:active{transform:scale(.98)}
.ngo:active,
.mgo:active{transform:scale(.95)}

/* ---------- 21. 首轮截图复核后的补漏 ---------- */
/* 账本余额卡：原来是深色渐变大色块，改成与首页 hero 同一套「白卡 + 光斑」语言 */
.bal{margin:2px 16px 0;padding:20px 18px;border-radius:var(--r-card);color:var(--ink);
  border:1px solid rgba(228,85,43,.10);box-shadow:var(--shadow-card);
  background:linear-gradient(140deg,#FFFFFF 0%,#FFFBF8 55%,#FDEEE7 100%)}
.bal .lb{font-size:12px;color:var(--ink3);opacity:1}
.bal .num{font-size:34px;font-weight:700;letter-spacing:-1px;color:var(--ink)}
.bal .sub{margin-top:14px;padding-top:12px;border-top:1px solid rgba(228,85,43,.14);
  font-size:12px;color:var(--ink3);opacity:1}
.bal .go{height:38px;padding:0 18px;border-radius:var(--r-pill);background:var(--brand);
  color:#fff;font-size:12.5px;font-weight:600;box-shadow:var(--shadow-brand)}
/* 输入框 focus 只留「细边 + 柔和 ring」，不要再叠一圈浏览器 outline（截图里像双框） */
input:focus-visible,textarea:focus-visible{outline:none}
/* 搜索层/资料层的分组标题与 chips 原来贴着屏幕左边，补 16px 边距 */
.hlabel{padding:0 16px}
.hwrap{padding:0 16px}
/* 横滑 chips 行左右留白（#rankTabs / #pddCmsRow 自带 inline padding，不受影响） */
.crow{padding-left:16px;padding-right:16px}
/* 京东专区图片占位：粉底 → 暖中性底，和别处占位统一 */
.jimg,.jaimg{background:linear-gradient(140deg,#FCF8F4,#F5EDE6)}
/* 我的页脚协议链接是 inline 旧砖红（内联样式只能用 !important 压），统一到品牌深色 */
.legal a,.legal button{color:var(--brand-deep)!important}

/* ---------- 22. 京东卡返利行 + 登录拦截半屏卡（Lead A 批新 Markup） ---------- */
/* 返利是产品核心卖点：比价格更抓眼（价格 16px ink，返利 15px 品牌粗体 + 11px 弱化比例） */
.jrebate{font-size:15px;font-weight:700;color:var(--brand);background:none;padding:0;
  border-radius:0;margin-top:4px;line-height:1.25;display:flex;align-items:baseline;
  flex-wrap:wrap;gap:1px;align-self:flex-start}
.jrebate b{font-size:15px;font-weight:700;color:var(--brand);letter-spacing:-.2px;
  font-variant-numeric:tabular-nums}
/* 2026-10-28：京东卡片不再显示「（14%）」佣金率，.jrate 样式一并删除 */
/* 登录拦截半屏卡：与登录弹层同一套卡片/按钮；返回键沿用 .phead .pback 的 44px 热区 */
#loginGate .phead{height:48px}
#loginGate .phead .pback{top:2px;left:8px}
#loginGate .gate{margin-top:10px}
#loginGate .gate-btn{height:52px;font-size:15px;font-weight:700}
#lgOk{box-shadow:var(--shadow-brand)}
#lgSkip{box-shadow:none;font-weight:600}

/* 小屏（360 及以下）：余额数字降一档，避免长文案把 hero 撑太高 */
@media (max-width:374px){
  .hero-num{font-size:28px}
  .hero-btn{height:44px;padding:0 16px;font-size:13px}
  .jht b{font-size:16px}
}

/* 尊重系统「减少动效」：只保留状态变化，不做过渡动画 */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;
    animation-iteration-count:1!important;scroll-behavior:auto!important}
}


/* ================================================================
   2026-10-28 热修：商品卡「预计返」被裁（老板截图：淘宝好货/拼多多）
   ----------------------------------------------------------------
   原因：.gcard .gp 是「价格 + 预计返」并排 flex，两列卡只有 194px 宽；
   价格 ¥13.98 + 划线 ¥31.98 + 徽章 89~96px → 右侧最多溢出 21px，
   而 .gcard{overflow:hidden} 直接把徽章切掉。
   修法：价格行与返利行改成上下两行（和 .prow 横滑卡一致），
   徽章不再参与同一行抢宽度 → 任何屏宽都不会裁。
   ================================================================ */
body .gcard .gp{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:5px;margin-top:6px;min-width:0}
body .gcard .gp .pr{display:block;max-width:100%;white-space:nowrap}
body .gcard .gp .back{display:inline-block;margin-left:0;max-width:100%;font-size:11.5px;padding:3px 8px;border-radius:999px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prow .gcard .gp{display:flex;flex-direction:column;align-items:flex-start}

/* ================================================================
   首页 v2：运营头图轮播 + 10 宫格 + 淘宝平台角标
   ================================================================ */
.hpromo{margin:8px 16px 0;border-radius:18px;overflow:hidden;position:relative;box-shadow:var(--shadow-card)}
.hpromo-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}
.hpromo-track::-webkit-scrollbar{display:none}
.hpromo-slide{position:relative;flex:0 0 100%;min-width:100%;height:148px;padding:18px;box-sizing:border-box;
  scroll-snap-align:start;color:#fff;display:flex;flex-direction:column;align-items:flex-start;
  justify-content:center;overflow:hidden}
.hpromo-slide:after{content:"";position:absolute;right:-30px;top:-40px;width:180px;height:180px;
  border-radius:50%;background:rgba(255,255,255,.12);pointer-events:none}
.hs-red{background:linear-gradient(120deg,#E4552B,#C4471D 60%,#9C3516)}
.hs-orange{background:linear-gradient(120deg,#F0A03C,#E4552B 62%,#C4471D)}
.hs-purple{background:linear-gradient(120deg,#8E6BD9,#6B4BB5 62%,#4D338E)}
.hpromo-kicker{font-size:11px;font-weight:600;letter-spacing:.4px;opacity:.94;background:rgba(255,255,255,.16);
  border-radius:999px;padding:3px 9px}
.hpromo-title{font-size:25px;font-weight:800;line-height:1.2;letter-spacing:-.6px;margin-top:7px;
  position:relative;z-index:1;text-shadow:0 2px 8px rgba(0,0,0,.10)}
.hpromo-sub{font-size:11.5px;opacity:.9;margin-top:6px;line-height:1.45;position:relative;z-index:1}
.hpromo-btn{margin-top:10px;height:32px;padding:0 15px;border:0;border-radius:999px;background:#fff;
  color:var(--brand-deep);font-size:12px;font-weight:700;position:relative;z-index:1}
.hpromo-art{position:absolute;right:16px;bottom:8px;font-size:68px;line-height:1;opacity:.95;
  transform:rotate(-8deg);filter:drop-shadow(0 6px 10px rgba(0,0,0,.12))}
.hpromo-dots{position:absolute;right:14px;bottom:10px;display:flex;gap:5px;z-index:2}
.hpromo-dot{width:6px;height:6px;border-radius:999px;border:0;background:rgba(255,255,255,.45);padding:0}
.hpromo-dot.on{width:16px;background:#fff}
.gimg .plat.tb{background:#FF5000}
.wall-grid{gap:14px 2px}

/* ================================================================
   首页 v3：沉浸式红色头图段 + 真实活动 banner + 光泽频道图标
   ================================================================ */
.home-top{margin:0 0 10px;padding:0 0 18px;border-radius:0 0 28px 28px;
  background:
    radial-gradient(circle at 88% -8%, rgba(255,214,150,.55), rgba(255,214,150,0) 46%),
    radial-gradient(circle at 0% 10%, rgba(255,255,255,.10), rgba(255,255,255,0) 38%),
    linear-gradient(180deg,#A90F2B 0%,#C92F22 44%,#E4552B 70%,#F7F4F0 100%);
  box-shadow:0 10px 26px rgba(120,20,10,.10)}
.home-top .topbar .mark{background:rgba(255,255,255,.18);color:#fff;
  border:1px solid rgba(255,255,255,.28);box-shadow:none}
.home-top .topbar .search{background:rgba(255,255,255,.96);border-color:rgba(255,255,255,.50);
  box-shadow:0 6px 16px rgba(90,15,5,.12)}
.home-top .topbar .ibtn{color:#fff}
.hpromo{margin:4px 16px 0;border-radius:18px;overflow:hidden;position:relative;box-shadow:none;background:transparent}
.hpromo-slide{position:relative;flex:0 0 100%;min-width:100%;height:154px;padding:0;box-sizing:border-box;
  scroll-snap-align:start;overflow:hidden;border:0;border-radius:16px;
  background-repeat:no-repeat;background-size:cover;background-position:left center;
  box-shadow:0 12px 26px rgba(80,10,0,.24)}
.hpromo-slide:after{display:none}
.hpromo-dots{right:14px;bottom:12px;padding:4px 7px;border-radius:999px;background:rgba(0,0,0,.18);
  backdrop-filter:blur(4px)}
.hpromo-dot{background:rgba(255,255,255,.55)}
.pt{position:relative;overflow:hidden;
  box-shadow:0 6px 14px rgba(100,35,15,.16),inset 0 1px 0 rgba(255,255,255,.38)}
.pt:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,0) 58%)}
.pt.more:after{display:none}
.wall{background:linear-gradient(180deg,#FFFFFF 0%,#FFFAF6 100%)}
.hero{box-shadow:0 10px 28px rgba(160,45,20,.10)}

/* ================================================================
   首页 v4：快捷入口 / 4×2 会场卡 / 平台 tab 商品流
   ================================================================ */
.quickrow{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;padding:12px 12px 2px}
.qk{display:flex;flex-direction:column;align-items:center;gap:3px;border:0;background:none;padding:0;font-family:inherit}
.qk-ic{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;color:#fff;
  font-style:normal;font-weight:800;font-size:11.5px;letter-spacing:-.3px;
  box-shadow:0 6px 12px rgba(120,35,15,.15),inset 0 1px 0 rgba(255,255,255,.35)}
.qk-a{background:linear-gradient(140deg,#FF8A65,#E4552B)}
.qk-b{background:linear-gradient(140deg,#F7C96B,#E4902B)}
.qk-c{background:linear-gradient(140deg,#F07A6A,#C4471D)}
.qk-d{background:linear-gradient(140deg,#8E6BD9,#6B4BB5)}
.qk-e{background:linear-gradient(140deg,#7FB6E8,#4B86C8)}
.qk b{font-size:11px;color:var(--ink);font-weight:600;white-space:nowrap}
.qk span{font-size:9px;color:var(--muted);white-space:nowrap}
.venue-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:8px 16px 0}
.venue{display:flex;flex-direction:column;align-items:stretch;padding:0;border:1px solid var(--hairline);
  border-radius:12px;background:#fff;overflow:hidden;text-align:center;font-family:inherit;
  box-shadow:0 4px 12px rgba(120,50,25,.06)}
.venue:active{transform:scale(.97)}
.vimg{display:block;width:100%;aspect-ratio:1/1;overflow:hidden;background:#F6EEE8}
.vimg img{width:100%;height:100%;object-fit:cover;display:block}
.vt{display:block;font-size:10.5px;line-height:1.35;padding:5px 3px 1px;color:var(--ink);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vtag{display:block;font-size:9px;color:var(--muted);padding-bottom:6px}
.hfeed-tabs{display:flex;align-items:center;gap:7px;padding:2px 16px 8px;overflow-x:auto;scrollbar-width:none}
.hfeed-tabs::-webkit-scrollbar{display:none}
.hfeed-tabs .cchip{flex:0 0 auto}
#feedBlock .hfeed-tabs{position:sticky;top:0;z-index:3;background:var(--paper);padding-top:6px;padding-bottom:8px}

/* 京东商品卡平台标识（首页 tab / 京东专区都生效） */
.jimg{position:relative}
.jimg .plat{position:absolute;left:7px;top:7px;width:20px;height:20px;border-radius:7px;
  background:#E1251B;color:#fff;font-size:11px;font-weight:600;font-style:normal;
  display:grid;place-items:center;z-index:2;box-shadow:0 2px 6px rgba(0,0,0,.16)}

/* ================================================================
   首页 v5：banner 下直接三张入口卡（余额/登录卡已从首页移除）
   ================================================================ */
.promo3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:9px 16px 2px;position:relative;z-index:2}
.p3{position:relative;display:flex;flex-direction:column;align-items:flex-start;min-height:86px;
  padding:10px;border:1px solid rgba(255,255,255,.65);border-radius:15px;font-family:inherit;
  text-align:left;box-shadow:0 7px 18px rgba(120,35,15,.10);overflow:hidden}
.p3:active{transform:scale(.97)}
.p3-a{background:linear-gradient(145deg,#FFF3ED,#FFDCCB)}
.p3-b{background:linear-gradient(145deg,#F7F0FF,#E6D9FF)}
.p3-c{background:linear-gradient(145deg,#FFF9E8,#FFE5B8)}
.p3-ic{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;color:#fff;
  font-style:normal;font-size:11px;font-weight:800;letter-spacing:-.3px;
  box-shadow:0 4px 9px rgba(120,35,15,.18),inset 0 1px 0 rgba(255,255,255,.35)}
.p3-a .p3-ic{background:linear-gradient(145deg,#FF8A65,#E4552B)}
.p3-b .p3-ic{background:linear-gradient(145deg,#A98BE8,#7B55CF)}
.p3-c .p3-ic{background:linear-gradient(145deg,#F7C96B,#E4902B);font-size:9px}
.p3-tx{display:flex;flex-direction:column;gap:2px;margin-top:7px;min-width:0;max-width:100%}
.p3-tx b{font-size:12px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.p3-tx em{font-style:normal;font-size:9.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.p3-go{position:absolute;right:9px;top:9px;height:18px;padding:0 6px;border-radius:999px;
  background:rgba(0,0,0,.10);color:#6B3A2A;font-size:8.5px;font-weight:700;
  display:grid;place-items:center;letter-spacing:-.2px}

/* ================================================================
   首页 v5：吸顶搜索
   ================================================================ */
.app{overflow-x:clip}
.home-search{position:sticky;top:0;z-index:60;height:54px;padding:0 16px;
  background:linear-gradient(180deg,#A90F2B 0%,#B3152E 100%);
  border-radius:0 0 18px 18px;box-shadow:0 6px 18px rgba(90,10,0,.12)}
.home-search .mark{background:rgba(255,255,255,.18);color:#fff;
  border:1px solid rgba(255,255,255,.28);box-shadow:none}
.home-search .search{background:rgba(255,255,255,.96);border-color:rgba(255,255,255,.50);
  box-shadow:0 6px 16px rgba(90,15,5,.12)}
.home-search .ibtn{color:#fff}
.home-top{padding-top:4px}

/* 首页 v5：今日限时倒计时 */
.flash-timer{font-size:10.5px;font-weight:700;color:#C4471D;background:#FFF0EA;
  border:1px solid #F8D9CB;border-radius:999px;padding:3px 8px;margin-left:auto;margin-right:8px;
  font-variant-numeric:tabular-nums;white-space:nowrap}

/* ================================================================
   首页 v4.2：热门会场平台标识 / 拼多多无图占位
   ================================================================ */
.venue{position:relative}
.vplat{position:absolute;left:6px;top:6px;z-index:2;width:18px;height:18px;border-radius:6px;
  display:grid;place-items:center;color:#fff;font-size:9px;font-style:normal;font-weight:700;
  box-shadow:0 2px 6px rgba(0,0,0,.18)}
.vplat.tb{background:#FF5000}
.vplat.jd{background:#E1251B}
.vplat.pdd{background:#E02E24}
.vplat.jtk{background:#8A6A5B}
.vfallback{display:grid;place-items:center;background:linear-gradient(145deg,#FF6A5A,#D92E1F);color:#fff}
.vfallback b{font-size:24px;font-weight:800;opacity:.92}

/* ================================================================
   频道页 v7：大 banner + 8 宫格（淘宝/京东/拼多多）
   ================================================================ */
.ch-hero{position:relative;margin:8px 16px 0;padding:15px 16px;border-radius:18px;min-height:116px;
  color:#fff;overflow:hidden;display:flex;flex-direction:column;justify-content:center;
  box-shadow:0 10px 24px rgba(120,20,10,.16)}
.ch-hero:after{content:"";position:absolute;right:-36px;top:-52px;width:190px;height:190px;
  border-radius:50%;background:rgba(255,255,255,.13);pointer-events:none}
.tb-hero{background:linear-gradient(130deg,#FF7A00 0%,#F04A00 58%,#C92F00 100%)}
.pdd-hero{background:linear-gradient(130deg,#FF5A5F 0%,#E02E24 58%,#B3141C 100%)}
.jd-hero{background:linear-gradient(130deg,#EF2B20 0%,#C4161C 58%,#8F0B12 100%)}
.ch-kicker{font-size:10.5px;font-weight:600;letter-spacing:.3px;opacity:.92;align-self:flex-start;
  background:rgba(255,255,255,.17);border-radius:999px;padding:3px 9px}
.ch-title{font-size:24px;font-weight:800;line-height:1.22;letter-spacing:-.6px;margin-top:7px;
  position:relative;z-index:1;text-shadow:0 2px 8px rgba(0,0,0,.10)}
.ch-sub{font-size:11px;opacity:.9;margin-top:5px;position:relative;z-index:1}
.ch-art{position:absolute;right:16px;bottom:-10px;font-size:82px;font-weight:800;line-height:1;
  opacity:.16;letter-spacing:-6px;transform:rotate(-6deg);pointer-events:none}
.ch-icons{display:grid;grid-template-columns:repeat(4,1fr);gap:9px 2px;margin:8px 16px 0;
  padding:11px 8px 9px;background:#fff;border-radius:16px;box-shadow:0 5px 16px rgba(120,50,25,.07)}
.ch-ico{display:flex;flex-direction:column;align-items:center;gap:4px;border:0;background:none;
  padding:0;font-family:inherit;min-width:0}
.ch-ico i{width:40px;height:40px;border-radius:13px;display:grid;place-items:center;color:#fff;
  font-style:normal;font-size:11px;font-weight:800;letter-spacing:-.3px;
  box-shadow:0 5px 12px rgba(120,35,15,.16),inset 0 1px 0 rgba(255,255,255,.35)}
.ch-ico span{font-size:10px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:72px}
/* 频道页内已有的分类 chips 收紧，避免 banner + icons 后首屏太高 */
#p-jd .jchips,#tbGoodsSheet .crow,#pddSheet .crow{margin-top:7px}

/* 频道页 8 宫格选中态（分类 chips 已隐藏，选中反馈放到图标上） */
.ch-ico.on i{box-shadow:0 0 0 2px #fff,0 0 0 3px var(--action)}
.ch-ico.on span{color:var(--action);font-weight:700}

/* 天猫商品角标（和淘宝「淘」区分；数据来自大淘客 shopType=1） */
.gimg .plat.tmall{background:#FF0036}
