*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;background:#f5f6f8;color:#2c2c2c;font-size:14px;line-height:1.5;-webkit-tap-highlight-color:transparent;overflow-x:hidden;max-width:100vw}
a{text-decoration:none;color:inherit}img{display:block;max-width:100%}

/* ===== 全局 placeholder ===== */
input::placeholder,textarea::placeholder{color:#bfbfbf;font-size:13px}
input:focus,textarea:focus,select:focus{outline:none;border-color:#ff6b6b!important;box-shadow:0 0 0 3px rgba(255,107,107,.12)!important}
input,textarea,select{transition:border-color .2s,box-shadow .2s}

/* ===== 搜索栏 ===== */
.search-bar{background:#f5f6f8;padding:10px 12px;position:relative}
.search-bar input{width:100%;border:none;border-radius:22px;padding:10px 18px;font-size:14px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.08)}
.catnav{display:flex;overflow-x:auto;background:#fff;border-bottom:1px solid #f0f0f0;white-space:nowrap;-webkit-overflow-scrolling:touch;box-shadow:0 1px 4px rgba(0,0,0,.03)}
.catnav a{padding:13px 16px;font-size:14px;color:#888;flex-shrink:0;border-bottom:2px solid transparent;transition:color .2s}
.catnav a.active{color:#ff6b6b;border-bottom-color:#ff6b6b;font-weight:600}

/* ===== 商品列表 ===== */
.plist{padding:10px;padding-bottom:84px}
.pgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.pcard{background:#fff;border-radius:14px;overflow:hidden;display:block;box-shadow:0 2px 10px rgba(0,0,0,.05);transition:transform .2s,box-shadow .2s}
.pcard:active{transform:scale(.97)}
.pcard:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.1)}
.pimg{width:100%;aspect-ratio:1;overflow:hidden;background:#f0f0f0;position:relative}
.pimg img{width:100%;height:100%;object-fit:cover;transition:transform .3s}
.pcard:hover .pimg img{transform:scale(1.04)}
.pinfo{padding:11px 12px 13px}.pname{font-size:14px;font-weight:500;margin-bottom:5px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:39px}
.pdesc{font-size:12px;color:#aaa;margin-bottom:8px}.pprc{display:flex;align-items:baseline;gap:6px}
.now{color:#ff4444;font-size:20px;font-weight:700;letter-spacing:-.5px}.old{color:#ccc;font-size:12px;text-decoration:line-through}.sales{margin-left:auto;font-size:11px;color:#aaa;background:#f5f5f5;padding:2px 8px;border-radius:10px}

/* ===== 底部导航 ===== */
.tabbar{position:fixed;bottom:0;left:0;right:0;background:#fff;display:flex;border-top:1px solid #f0f0f0;z-index:100;box-shadow:0 -2px 12px rgba(0,0,0,.06);padding-bottom:env(safe-area-inset-bottom);max-width:100vw;overflow:hidden}
.tabbar a{flex:1 0 0;text-align:center;padding:8px 0 6px;font-size:11px;color:#999;transition:color .2s;display:flex;flex-direction:column;align-items:center;gap:2px;min-height:54px;justify-content:center;min-width:0;overflow:hidden}
.tabbar a.active{color:#ff6b6b;font-weight:600}
.ticon{font-size:22px;line-height:1}.tlabel{font-size:11px;line-height:1.2}

/* ===== 商品详情 ===== */
.back{display:inline-flex;align-items:center;gap:4px;padding:7px 14px 7px 10px;color:#fff;font-size:14px;background:rgba(0,0,0,.45);border-radius:20px;position:fixed;top:12px;left:12px;z-index:50;backdrop-filter:blur(8px);font-weight:500}
.back:active{background:rgba(0,0,0,.65)}
.dimg{width:100%;aspect-ratio:1;overflow:hidden;background:#f0f0f0}.dimg img{width:100%;height:100%;object-fit:cover}
.dinfo{background:#fff;padding:18px 16px;margin-bottom:8px;border-radius:14px 14px 0 0;margin-top:-10px;position:relative;z-index:2}
.dprc{display:flex;align-items:baseline;gap:10px;margin-bottom:12px;background:linear-gradient(135deg,rgba(255,107,107,.06),rgba(255,142,83,.06));padding:12px 14px;border-radius:12px}.now-lg{color:#ff4444;font-size:30px;font-weight:700;letter-spacing:-.5px}
.dname{font-size:18px;font-weight:600;margin-bottom:10px;line-height:1.4}.dmeta{display:flex;gap:24px;color:#999;font-size:13px;margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid #f0f0f0}
.ddesc{font-size:14px;color:#666;line-height:1.8;padding-left:10px;border-left:3px solid #ff8e53}
.buyform{background:#fff;padding:16px;margin-bottom:20px}.fs{margin-bottom:16px}.fs label{display:block;margin-bottom:7px;font-weight:600;color:#333}
.fs input,.fs textarea,.fs select{width:100%;border:1px solid #e0e0e0;border-radius:10px;padding:11px 13px;font-size:14px;background:#fff}
.qty{display:flex;align-items:center;gap:12px}.qty button{width:36px;height:36px;border:1px solid #ddd;background:#fff;border-radius:50%;font-size:18px;cursor:pointer;transition:all .15s}.qty button:active{background:#ff6b6b;color:#fff;border-color:#ff6b6b}
.qty input{width:60px;text-align:center;border:1px solid #ddd;border-radius:8px;padding:8px;font-size:16px}
.btn-buy{width:100%;padding:14px;background:linear-gradient(135deg,#ff6b6b,#ff8e53);color:#fff;border:none;border-radius:24px;font-size:16px;font-weight:600;cursor:pointer;box-shadow:0 4px 14px rgba(255,107,107,.3);transition:all .2s}.btn-buy:active{transform:translateY(1px);box-shadow:0 2px 8px rgba(255,107,107,.3)}

/* ===== 订单 ===== */
.page{padding:10px;padding-bottom:84px}
.ocard{background:#fff;border-radius:14px;margin-bottom:10px;overflow:hidden;box-shadow:0 2px 10px rgba(0,0,0,.05);position:relative}.ocard:before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:#ff9800}.ocard[data-st=paid]:before{background:#2196f3}.ocard[data-st=shipped]:before{background:#9c27b0}.ocard[data-st=completed]:before{background:#4caf50}.ocard[data-st=cancelled]:before{background:#ccc}
.ohdr{display:flex;justify-content:space-between;align-items:center;padding:13px 16px 13px 18px;border-bottom:1px solid #f5f5f5;font-size:13px}
.ohdr span:first-child{font-family:Consolas,Monaco,monospace;color:#888;font-size:12px}
.st-pend{color:#ff9800;background:#fff7e6;padding:3px 10px;border-radius:11px;font-size:12px;font-weight:600}.st-paid{color:#2196f3;background:#e6f7ff;padding:3px 10px;border-radius:11px;font-size:12px;font-weight:600}.st-ship{color:#9c27b0;background:#f9f0ff;padding:3px 10px;border-radius:11px;font-size:12px;font-weight:600}.st-done{color:#4caf50;background:#f0fdf4;padding:3px 10px;border-radius:11px;font-size:12px;font-weight:600}.st-cancel{color:#999;background:#f5f5f5;padding:3px 10px;border-radius:11px;font-size:12px;font-weight:600}
.obody{display:flex;gap:12px;padding:13px 16px 13px 18px}.othumb{width:78px;height:78px;border-radius:10px;object-fit:cover;flex-shrink:0;box-shadow:0 2px 6px rgba(0,0,0,.08)}
.oinfo{flex:1;min-width:0}.oname{font-weight:600;margin-bottom:5px;font-size:14px;color:#2c2c2c}.oqty{color:#999;font-size:12px;margin-bottom:6px}.oamt{color:#ff4444;font-weight:700;margin-top:4px;font-size:15px}.ocp{color:#4caf50;font-size:12px;margin-top:3px}
.ostip{font-size:12px;color:#aaa;margin-top:6px}.oft{padding:10px 16px 10px 18px;color:#bbb;font-size:12px;border-top:1px solid #f5f5f0;display:flex;align-items:center;justify-content:space-between;gap:12px}

/* ===== 优惠券 ===== */
.clist{padding:12px;padding-bottom:84px}
.ccard{display:flex;background:#fff;border-radius:14px;overflow:hidden;margin-bottom:12px;box-shadow:0 3px 12px rgba(0,0,0,.07);transition:transform .2s}
.ccard:active{transform:scale(.98)}
.c-dis{opacity:.55;filter:grayscale(1)}.cleft{background:linear-gradient(135deg,#ff6b6b,#ff8e53);color:#fff;padding:22px 16px;text-align:center;min-width:104px;display:flex;flex-direction:column;justify-content:center;position:relative}
.cleft:after{content:'';position:absolute;right:-6px;top:0;bottom:0;width:12px;background-image:radial-gradient(circle,#fff 3px,transparent 3px);background-size:12px 12px;background-position:0 6px}
.camt{font-size:30px;font-weight:700}.cmin{font-size:11px;opacity:.9;margin-top:4px}
.cright{flex:1;padding:16px 18px;position:relative}.cname{font-weight:600;font-size:15px;margin-bottom:5px}.ccode{font-size:12px;color:#aaa;margin-bottom:4px;font-family:Consolas,Monaco,monospace;word-break:break-all;overflow-wrap:anywhere}.cdate{font-size:12px;color:#aaa}
.cstat{position:absolute;top:12px;right:12px;padding:3px 10px;border-radius:11px;font-size:11px;font-weight:600}
.st-unused{background:#e8f5e9;color:#4caf50}.st-used{background:#f5f5f5;color:#999}.st-expired{background:#ffebee;color:#f44336}
.empty{text-align:center;padding:70px 20px;color:#bbb}.empty p{font-size:14px;margin-bottom:8px}.empty a{display:inline-block;margin-top:16px}

/* ===== 个人中心 ===== */
.phead{background:linear-gradient(135deg,#ff6b6b,#ff8e53);color:#fff;padding:36px 20px 30px;text-align:center;position:relative}
.phead:after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:20px;background:#f5f6f8;border-radius:20px 20px 0 0}
.avatar{width:76px;height:76px;border-radius:50%;border:3px solid rgba(255,255,255,.35);margin:0 auto 12px;box-shadow:0 4px 14px rgba(0,0,0,.15)}
.pname{font-size:18px;font-weight:600}.newbadge{display:inline-block;background:rgba(255,255,255,.22);padding:3px 12px;border-radius:12px;font-size:12px;margin-top:8px}
.pstat{display:flex;background:#fff;margin:0 10px 8px;border-radius:14px;box-shadow:0 2px 10px rgba(0,0,0,.05)}.si{flex:1;text-align:center;padding:18px 10px;border-right:1px solid #f5f5f5}.si:last-child{border:none}.sn{font-size:24px;font-weight:700;color:#ff6b6b}.sl{font-size:12px;color:#999;margin-top:4px}
.pmenu{background:#fff;margin:0 10px;border-radius:14px;overflow:hidden;box-shadow:0 2px 10px rgba(0,0,0,.05)}.mi{display:flex;justify-content:space-between;align-items:center;padding:15px 20px;border-bottom:1px solid #f5f5f5;font-size:15px}.mi:last-child{border:none}.mi:active{background:#fafafa}.mi b{color:#ccc;font-weight:400}

/* ===== 登录注册 ===== */
.login-wrap{max-width:400px;margin:50px auto;padding:20px}.login-wrap h2{text-align:center;margin-bottom:28px;color:#ff6b6b;font-size:24px}
.alert{background:#fff2f0;color:#cf1322;padding:12px 16px;border-radius:10px;margin-bottom:16px;border:1px solid #ffccc7;font-size:13px}.fg{margin-bottom:16px}.fg label{display:block;margin-bottom:7px;font-weight:600;color:#333}.fg input,.fg textarea{width:100%;border:1px solid #e0e0e0;border-radius:10px;padding:11px 13px;font-size:14px;background:#fff}
.reg-link{text-align:center;margin-top:18px}.reg-link a{color:#ff6b6b;font-weight:500}
.alogin{max-width:420px;margin:60px auto;background:#fff;padding:48px 40px;border-radius:16px;box-shadow:0 4px 30px rgba(0,0,0,.08)}
.alogin h2{text-align:center;margin-bottom:32px;font-size:22px}.btn-p{background:#1890ff;color:#fff;border:none;border-radius:8px;padding:10px 20px;cursor:pointer;font-size:14px;transition:all .2s}.btn-p:hover{background:#40a9ff;box-shadow:0 2px 8px rgba(24,144,255,.3)}
.btn-s{background:#1890ff;color:#fff;border:none;border-radius:6px;padding:5px 14px;cursor:pointer;font-size:12px;transition:all .2s}.btn-s:hover{background:#40a9ff}.btn-d{background:#ff4d4f}.btn-d:hover{background:#ff7875}
.hint{text-align:center;color:#999;font-size:12px;margin-top:16px}

/* ===== 后台布局 ===== */
.alayout{display:flex;min-height:100vh}
.aside{width:220px;background:linear-gradient(180deg,#001529,#002140);color:#fff;padding:0;flex-shrink:0;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;box-shadow:2px 0 8px rgba(0,0,0,.15);scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent}
.aside::-webkit-scrollbar{width:6px}
.aside::-webkit-scrollbar-thumb{background:rgba(255,255,255,.2);border-radius:3px}
.aside h3{text-align:center;padding:20px 16px;font-size:17px;border-bottom:1px solid rgba(255,255,255,.08);letter-spacing:1px;position:sticky;top:0;background:linear-gradient(180deg,#001529,#002140);z-index:1}
.aside nav a{display:block;padding:13px 24px;color:rgba(255,255,255,.65);font-size:14px;transition:all .2s;border-left:3px solid transparent}
.aside nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.aside nav a.act{background:rgba(24,144,255,.15);color:#fff;border-left-color:#1890ff;font-weight:500}
.amain{flex:1;margin-left:220px;padding:24px;min-width:0}

/* ===== 后台页面标题 ===== */
.amain h2{font-size:20px;font-weight:600;margin-bottom:16px;color:#1a1a1a;display:flex;align-items:center;gap:8px}

/* ===== 后台搜索栏 ===== */
.amain>div>div>form,.amain>form{display:flex;gap:8px;margin-bottom:16px}
.amain input[type=text]{flex:1;padding:8px 14px;border:1px solid #d9d9d9;border-radius:8px;font-size:14px;background:#fff;min-width:0}
.amain input[type=text]:focus{border-color:#40a9ff;box-shadow:0 0 0 2px rgba(24,144,255,.12)}

/* ===== 后台表格 ===== */
.atbl{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border-radius:12px;overflow:hidden;margin-top:16px;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.atbl th{background:#fafbfc;padding:14px 16px;text-align:left;font-weight:600;color:#595959;border-bottom:2px solid #f0f0f0;white-space:nowrap;font-size:13px}
.atbl td{padding:12px 16px;border-bottom:1px solid #f5f5f5;font-size:13px;color:#595959}
.atbl tbody tr:last-child td{border-bottom:none}
.atbl tbody tr:hover{background:#f0f7ff}
.thumb{width:50px;height:50px;border-radius:8px;object-fit:cover}

/* ===== 模态框 ===== */
.modal{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);z-index:1000;display:flex;align-items:flex-start;justify-content:center;padding:40px 20px;overflow-y:auto;backdrop-filter:blur(2px)}
.mcontent{background:#fff;border-radius:16px;padding:32px;width:100%;max-width:600px;box-shadow:0 8px 40px rgba(0,0,0,.12)}
.mcontent h3{margin-bottom:24px;font-size:18px;font-weight:600;color:#1a1a1a;padding-bottom:16px;border-bottom:1px solid #f0f0f0}

/* ===== 表单字段 ===== */
.fg{margin-bottom:20px}.fg label{display:block;margin-bottom:8px;font-weight:600;color:#333;font-size:13px}
.fg input,.fg textarea,.fg select{width:100%;border:1px solid #d9d9d9;border-radius:8px;padding:10px 14px;font-size:14px;background:#fff;color:#333}
.fg input:focus,.fg textarea:focus,.fg select:focus{border-color:#40a9ff;box-shadow:0 0 0 2px rgba(24,144,255,.12)}
.fg small{display:block;margin-top:6px;color:#999;font-size:12px}
.frow{display:flex;gap:16px}.frow .fg{flex:1}
.cat-actions{display:flex;gap:12px;margin-top:24px;padding-top:16px;border-top:1px solid #f0f0f0}
.modal form,.mcontent form,.amain .modal form{display:block;gap:0;margin:0}
.cat-actions .btn-p,.cat-actions .btn-s{flex:1;padding:11px 20px;font-size:14px;border-radius:8px}
.cat-actions .btn-s{background:#bbb;color:#fff;border:none;cursor:pointer;transition:background .2s}
.cat-actions .btn-s:hover{background:#999}
.rt-toolbar{display:flex;gap:6px;margin-bottom:6px}
.rt-toolbar button{padding:5px 12px;border:1px solid #d9d9d9;background:#fff;border-radius:6px;cursor:pointer;font-size:13px;transition:all .2s}
.rt-toolbar button:hover{background:#f5f5f5}
.rt-editor{min-height:140px;border:1px solid #d9d9d9;border-radius:8px;padding:12px 14px;font-size:14px;background:#fff;outline:none;line-height:1.7;max-width:100%;overflow-wrap:break-word}
.rt-editor:focus{border-color:#ff6b6b;box-shadow:0 0 0 2px rgba(255,107,107,.12)}
.rt-editor img{max-width:100%;border-radius:6px;margin:8px 0;display:block}
.rt-editor:empty:before{content:attr(placeholder);color:#bfbfbf;pointer-events:none}
.ddesc img{max-width:100%;border-radius:6px;margin:8px 0;display:block}

/* ===== 首页3D翻转轮播 ===== */
.carousel-3d{position:relative;width:100%;aspect-ratio:16/9;perspective:1000px;background:#f0f0f0;overflow:hidden}
.cr-stage{position:relative;width:100%;height:100%;transform-style:preserve-3d}
.cr-slide{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;transform:rotateY(90deg) scale(.85);transition:transform .6s cubic-bezier(.4,0,.2,1),opacity .6s}
.cr-slide.cr-active{opacity:1;transform:rotateY(0) scale(1);z-index:2}
.cr-img{width:100%;height:100%;object-fit:cover;display:block}
.cr-dots{position:absolute;bottom:8px;left:50%;transform:translateX(-50%);display:flex;gap:5px;z-index:5}
.cr-dot{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.5);transition:all .3s}
.cr-dot.active{background:#fff;width:16px;border-radius:3px}

/* ===== 圆形分类导航 ===== */
.catgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px 4px;background:#fff;padding:14px 8px 12px;border-bottom:1px solid #f0f0f0}
.cat-item{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 4px;color:#555;transition:transform .15s}
.cat-item:active{transform:scale(.93)}
.cat-icon{width:54px;height:54px;border-radius:50%;background:linear-gradient(135deg,#fff3e6,#ffe0b2);display:flex;align-items:center;justify-content:center;font-size:26px;overflow:hidden;box-shadow:0 2px 8px rgba(255,142,83,.18);border:2px solid #fff}
.cat-icon img{width:100%;height:100%;object-fit:cover}
.cat-label{font-size:12px;color:#595959;text-align:center;line-height:1.2;max-width:64px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cat-item.cat-active .cat-icon{background:linear-gradient(135deg,#ff6b6b,#ff8e53);box-shadow:0 3px 12px rgba(255,107,107,.4)}
.cat-item.cat-active .cat-label{color:#ff6b6b;font-weight:600}

/* ===== 核销 ===== */
.vbox{background:#fff;border-radius:12px;padding:24px;margin-bottom:24px;box-shadow:0 2px 8px rgba(0,0,0,.06)}.vform{display:flex;gap:12px}
.vresult{margin-top:16px;padding:16px;border-radius:8px;background:#f6ffed;font-size:16px;font-weight:500;border:1px solid #b7eb8f;color:#389e0d}

/* ===== 统计卡片 ===== */
.srow{display:flex;gap:16px;margin-bottom:24px;flex-wrap:wrap}.scard{flex:1;min-width:140px;background:#fff;border-radius:12px;padding:24px 20px;text-align:center;box-shadow:0 2px 8px rgba(0,0,0,.06);transition:transform .2s,box-shadow .2s}
.scard:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.1)}
.scard.hl{background:linear-gradient(135deg,#ff6b6b,#ff8e53);color:#fff}.sbig{font-size:28px;font-weight:700;margin-bottom:4px}.slabel{font-size:13px;color:#8c8c8c}.scard.hl .slabel{color:rgba(255,255,255,.9)}

/* ===== 徽章 ===== */
.bdg{display:inline-block;padding:3px 12px;border-radius:12px;font-size:12px;font-weight:600;line-height:1.4}.bdg.bg{background:#f6ffed;color:#389e0d;border:1px solid #b7eb8f}.bdg.gray{background:#fafafa;color:#8c8c8c;border:1px solid #d9d9d9}.bdg.red{background:#fff2f0;color:#cf1322;border:1px solid #ffccc7}
.bdg.blue{background:#e6f7ff;color:#1890ff;border:1px solid #91d5ff}
.ctag{display:inline-block;background:linear-gradient(135deg,#fff3e0,#ffe0b2);color:#e65100;padding:2px 8px;border-radius:10px;font-size:11px;margin:1px}
.ptags{margin-bottom:4px;line-height:1.8}
.dtags{background:#fffbe6;padding:12px;border-radius:8px;margin-bottom:12px;border:1px solid #ffe58f}
.dtag{display:block;padding:4px 0;color:#d48806;font-size:13px}

/* ===== 微信支付配置 ===== */
.ct-intro{background:#e6f7ff;padding:16px;border-radius:8px;margin-bottom:16px;line-height:1.8;color:#096dd9;font-size:13px;border:1px solid #91d5ff}
.ct-intro b{color:#0050b3}
.ct-intro h3{color:#0050b3;margin-bottom:8px;font-size:15px}
.ct-intro ol{padding-left:20px}.ct-intro li{margin-bottom:4px}

/* ===== 二维码弹窗 ===== */
.qrmodal{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.85);z-index:2000;display:flex;align-items:center;justify-content:center}
.qrm-content{background:#fff;border-radius:16px;padding:30px;text-align:center;max-width:340px;width:90%}
.qrm-content h3{margin-bottom:16px;color:#ff6b6b}
#qrimg{display:flex;justify-content:center;margin:12px 0}
#qrimg img{border:8px solid #fff;box-shadow:0 2px 12px rgba(0,0,0,.15);border-radius:8px}
#qrcode-text{font-size:16px;font-weight:700;margin:8px 0;color:#333}
.qr-tip{color:#999;font-size:13px;margin:8px 0 16px}

/* ===== 扫码 ===== */
.scan-box{background:#fff;border-radius:12px;padding:30px;margin-bottom:24px;text-align:center;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.scan-box h2{margin-bottom:20px}
#scanner{min-height:300px;display:flex;align-items:center;justify-content:center;margin-bottom:16px}
#scanner video{width:100%;max-width:400px;border-radius:8px}
.scan-overlay{position:relative}
.scan-frame{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:200px;height:200px;border:3px solid #00ff00;border-radius:12px;box-shadow:0 0 0 9999px rgba(0,0,0,.3)}

/* ===== 图片轮播 ===== */
.slider{position:relative;width:100%;overflow:hidden;background:#f0f0f0}
.slide{width:100%;aspect-ratio:1}
.slide img{width:100%;height:100%;object-fit:cover}
.slider-dots{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);display:flex;gap:6px;z-index:5}
.dot{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.5);cursor:pointer}
.dot.active{background:#fff;width:20px;border-radius:4px;transition:all .3s}
.slider-btn-prev,.slider-btn-next{position:absolute;top:50%;transform:translateY(-50%);background:rgba(0,0,0,.3);color:#fff;border:none;width:36px;height:36px;border-radius:50%;font-size:20px;cursor:pointer;z-index:5}
.slider-btn-prev{left:12px}
.slider-btn-next{right:12px}
.oft .btn-buy{width:auto;padding:7px 18px;border-radius:18px;font-size:13px;box-shadow:0 2px 8px rgba(255,107,107,.25)}.oft .btn-cancel{border:1px solid #ff4d4f;color:#ff4d4f;background:#fff;border-radius:18px;padding:6px 14px;font-size:13px;cursor:pointer;transition:all .15s}.oft .btn-cancel:active{background:#fff1f0}.bdg.orange{background:#fff7e6;color:#fa8c16}.bdg.purple{background:#f9f0ff;color:#722ed1}

.wx-hero{background:linear-gradient(135deg,#07c160,#10b981);color:#fff;border-radius:16px;padding:24px 28px;margin-bottom:24px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 8px 24px rgba(7,193,96,.22)}.wx-hero h2{color:#fff;margin:0 0 8px!important}.wx-hero p{margin:0;color:rgba(255,255,255,.88);font-size:14px}.wx-hero span{background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.35);border-radius:999px;padding:6px 14px;font-size:13px;white-space:nowrap}.wx-card{display:block!important;background:#fff;border-radius:16px;padding:28px;margin-bottom:24px;box-shadow:0 2px 12px rgba(0,0,0,.06);border:1px solid #f0f0f0}.wx-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.wx-card .fg{margin-bottom:18px}.wx-card .fg label{font-size:14px;color:#1f2937}.wx-card input,.wx-card textarea{width:100%;border:1px solid #d9d9d9;border-radius:10px;padding:11px 14px;font-size:14px;background:#fff;color:#333}.wx-card textarea{font-family:Consolas,Monaco,monospace;line-height:1.6;resize:vertical}.wx-card input::placeholder,.wx-card textarea::placeholder{color:#bfbfbf}.wx-actions{padding-top:8px;border-top:1px solid #f3f4f6;margin-top:4px}.wx-actions .btn-p{padding:12px 28px;font-size:15px;background:linear-gradient(135deg,#07c160,#10b981)}.wx-help{background:#f6ffed;border:1px solid #b7eb8f;border-radius:14px;padding:20px 24px;color:#3f6212}.wx-help h3{margin:0 0 12px;color:#237804;font-size:16px}.wx-help ul{margin:0;padding-left:20px;line-height:1.9}.wx-help li{margin-bottom:4px}@media(max-width:900px){.wx-grid{grid-template-columns:1fr}.wx-hero{display:block}.wx-hero span{display:inline-block;margin-top:14px}}
.ad-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.6);z-index:9999;display:flex;align-items:center;justify-content:center;animation:adFadeIn .3s ease}@keyframes adFadeIn{from{opacity:0}to{opacity:1}}.ad-modal{position:relative;background:#fff;border-radius:16px;max-width:90vw;max-height:85vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.3);animation:adScale .3s ease}@keyframes adScale{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.ad-close{position:absolute;top:8px;right:12px;width:32px;height:32px;border-radius:50%;background:rgba(0,0,0,.5);color:#fff;font-size:18px;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:1;transition:background .2s}.ad-close:hover{background:rgba(0,0,0,.8)}.ad-img{width:100%;max-height:300px;object-fit:cover;border-radius:16px 16px 0 0}.ad-body{padding:24px}.ad-body h2{margin:0 0 12px;font-size:20px;color:#1f2937}.ad-body p{margin:0 0 16px;color:#6b7280;font-size:14px;line-height:1.6}.ad-link{display:inline-block;background:linear-gradient(135deg,#ff6b6b,#ee5a24);color:#fff;padding:10px 24px;border-radius:25px;font-size:14px;font-weight:500}
.scan-hero{background:linear-gradient(135deg,#ff6b6b,#ff8e53);color:#fff;border-radius:16px;padding:32px 28px;margin-bottom:24px;box-shadow:0 6px 20px rgba(255,107,107,.22);text-align:center}.scan-hero h2{margin:0 0 6px;color:#fff;font-size:22px}.scan-hero p{margin:0;color:rgba(255,255,255,.85);font-size:13px}.scan-area{margin-top:20px;padding:24px;background:#f9fafb;border-radius:14px}.scan-divider{margin:22px 0 16px;color:#bbb;font-size:13px;position:relative}.scan-divider:before,.scan-divider:after{content:'';position:absolute;top:50%;width:35%;height:1px;background:#e5e7eb}.scan-divider:before{left:0}.scan-divider:after{right:0}.manual-verify{display:flex;gap:10px;max-width:500px;margin:0 auto}.manual-verify input{flex:1;padding:13px 18px;font-size:16px;border:2px solid #e0e0e0;border-radius:10px;outline:none;transition:border-color .2s,box-shadow .2s;letter-spacing:1px}.manual-verify input:focus{border-color:#ff6b6b;box-shadow:0 0 0 3px rgba(255,107,107,.12)}.manual-verify .btn-p{white-space:nowrap;background:linear-gradient(135deg,#ff6b6b,#ff8e53);box-shadow:0 3px 10px rgba(255,107,107,.3);border:none}#verify-result{margin-top:16px;min-height:20px}.verify-ok{background:#f0fdf4;border:1px solid #bbf7d0;color:#15803d;padding:16px 20px;border-radius:12px;font-size:15px;text-align:center;box-shadow:0 2px 8px rgba(21,128,61,.1)}.verify-fail{background:#fef2f2;border:1px solid #fecaca;color:#dc2626;padding:16px 20px;border-radius:12px;font-size:15px;text-align:center;box-shadow:0 2px 8px rgba(220,38,38,.1)}.verify-loading{color:#888;text-align:center;padding:8px}
.wx-divider{display:flex;align-items:center;text-align:center;margin:20px 0;color:#999;font-size:14px}.wx-divider:before,.wx-divider:after{content:'';flex:1;height:1px;background:#e5e7eb}.wx-divider span{padding:0 16px}.btn-wx{display:flex;align-items:center;justify-content:center;width:100%;padding:14px;background:#07c160;color:#fff;border:none;border-radius:10px;font-size:16px;font-weight:500;text-decoration:none;transition:background .2s;cursor:pointer}.btn-wx:hover{background:#06ad56}.btn-wx:active{background:#059048}

/* ===== 核销后台移动端适配 ===== */
@media(max-width:768px){
.alayout{flex-direction:column;min-height:auto}
.aside{position:relative;width:100%;height:auto;flex-shrink:0;display:flex;align-items:center;padding:0}
.aside h3{padding:14px 16px;font-size:15px;border-bottom:none;border-right:1px solid rgba(255,255,255,.08);flex-shrink:0;white-space:nowrap}
.aside nav{display:flex;flex-wrap:nowrap;flex:1;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.aside nav::-webkit-scrollbar{height:4px}
.aside nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.2);border-radius:2px}
.aside nav a{display:inline-block;padding:10px 14px;border-left:none;border-bottom:3px solid transparent;font-size:13px;flex-shrink:0;white-space:nowrap}
.aside nav a.act{border-left:none;border-bottom-color:#1890ff}
.amain{margin-left:0!important;padding:14px!important;width:100%}
.amain h2{font-size:17px;margin-bottom:12px}
.atbl{font-size:12px;display:block;overflow-x:auto;white-space:nowrap}
.atbl th,.atbl td{padding:8px 10px;font-size:12px}
.srow{flex-wrap:wrap;gap:10px}
.scard{min-width:calc(50% - 5px);padding:14px}
.sbig{font-size:22px}
.scan-hero{padding:20px 16px}
.scan-hero h2{font-size:18px;margin-bottom:14px}
.scan-area{padding:16px 12px}
.manual-verify{flex-direction:column;max-width:100%}
.manual-verify input{width:100%;font-size:16px;padding:14px 16px}
.manual-verify .btn-p{width:100%;padding:14px;font-size:16px}
.wx-card{padding:16px}
.wx-grid{grid-template-columns:1fr}
}