/* ===== 萌宠优选 C端商城 ===== */
* { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
:root {
  --primary:#E0703A;
  --primary-dark:#C25A28;
  --primary-light:#FBEEE6;
  --bg:#F6F3EF;
  --card:#FFFFFF;
  --text:#2B2622;
  --text-sub:#9A8F86;
  --line:#EFE9E3;
  --success:#3FA672;
  --warn:#E0703A;
  --radius:14px;
  --shadow:0 3px 14px rgba(80,55,30,.07);
}
html,body {
  height:100%;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue","Microsoft YaHei",sans-serif;
  background:var(--bg); color:var(--text); font-size:14px; overflow:hidden;
}
#app { height:100%; display:flex; flex-direction:column; max-width:480px; width:100%; margin:0 auto; background:var(--bg); position:relative; overflow:hidden; }

.navbar { background:#fff; color:var(--text); padding:8px 12px 12px; display:flex; align-items:center; gap:10px; flex-shrink:0; border-bottom:1px solid var(--line); }
.navbar .back { width:28px; height:28px; display:flex; align-items:center; justify-content:center; font-size:24px; cursor:pointer; color:var(--text); }
.navbar .title { font-size:17px; font-weight:700; flex:1; text-align:center; }
.navbar .right { width:28px; text-align:center; font-size:18px; cursor:pointer; }

/* 内容区 */
.page { flex:1; overflow-y:auto; overflow-x:hidden; -webkit-overflow-scrolling:touch; padding-bottom:64px; }
.page.hidden { display:none; }

/* 底部Tab */
.tabbar { position:absolute; bottom:0; left:0; right:0; height:60px; background:#fff; border-top:1px solid var(--line); display:flex; flex-shrink:0; padding-bottom:env(safe-area-inset-bottom); z-index:20; }
.tabbar .tab { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; font-size:11px; color:var(--text-sub); cursor:pointer; position:relative; gap:3px; }
.tabbar .tab .t-icon { width:23px; height:23px; stroke:currentColor; fill:none; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round; }
.tabbar .tab.active { color:var(--primary); }
.tabbar .tab .badge { position:absolute; top:5px; right:calc(50% - 18px); background:var(--primary); color:#fff; font-size:10px; min-width:16px; height:16px; border-radius:8px; display:flex; align-items:center; justify-content:center; padding:0 4px; }

/* ===== 搜索栏 ===== */
.searchbar { background:#fff; padding:6px 12px 12px; }
.sbox { display:flex; align-items:center; background:var(--bg); border-radius:22px; height:40px; padding:0 6px 0 14px; gap:8px; }
.sbox .sicon { font-size:15px; opacity:.5; }
.sbox input { flex:1; border:none; outline:none; font-size:14px; background:transparent; height:100%; }
.sbox .btn { color:#fff; font-size:13px; font-weight:600; padding:7px 16px; border-radius:18px; background:var(--primary); cursor:pointer; }

/* ===== 首页品牌头 ===== */
.home-header { background:#fff; padding:14px 14px 12px; border-bottom:1px solid var(--line); }
.hh-top { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }
.hh-brand { display:flex; align-items:center; gap:10px; }
.hh-logo { width:38px; height:38px; border-radius:12px; background:var(--primary); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.hh-name { font-size:19px; font-weight:800; color:var(--text); line-height:1.2; }
.hh-sub { font-size:11px; color:var(--text-sub); margin-top:2px; }
.hh-kefu { display:flex; align-items:center; gap:5px; font-size:12px; color:var(--primary-dark); background:var(--primary-light); padding:7px 12px; border-radius:16px; cursor:pointer; }
.home-header .sbox { background:var(--bg); }

/* ===== Hero 促销 ===== */
.hero { margin:12px 12px 0; border-radius:18px; padding:26px 20px; color:#3D2B1E;
  background:linear-gradient(135deg,#FBE7D8 0%,#F6D2B8 55%,#EFB994 100%); position:relative; overflow:hidden; }
.hero::after { content:''; position:absolute; right:-34px; top:-34px; width:130px; height:130px; border-radius:50%; background:rgba(255,255,255,.28); }
.hero::before { content:''; position:absolute; right:26px; bottom:-46px; width:96px; height:96px; border-radius:50%; background:rgba(255,255,255,.16); }
.hero-tag { display:inline-block; font-size:11px; color:var(--primary-dark); background:rgba(255,255,255,.55); padding:4px 11px; border-radius:11px; margin-bottom:12px; font-weight:600; }
.hero h1 { font-size:27px; font-weight:800; letter-spacing:1px; margin-bottom:6px; color:#3D2B1E; }
.hero p { font-size:13px; color:#6E523E; }
.hero-tags { margin-top:14px; display:flex; gap:8px; position:relative; z-index:1; }
.hero-tags span { font-size:11px; background:rgba(255,255,255,.6); color:#6E523E; padding:4px 11px; border-radius:11px; }
.hero-note { margin-top:12px; font-size:13px; font-weight:700; line-height:1.5; color:#C25A28; background:rgba(224,112,58,.16); border:1px solid rgba(224,112,58,.45); padding:10px 12px; border-radius:10px; display:block; text-align:center; }

/* ===== 保障条 ===== */
.guarantee { margin:12px 12px 0; background:#fff; border-radius:var(--radius); display:grid; grid-template-columns:1fr 1fr; padding:10px 14px; box-shadow:var(--shadow); }
.g-item { display:flex; align-items:center; gap:8px; padding:8px 4px; }
.g-item b { width:19px; height:19px; border-radius:50%; background:var(--success); color:#fff; font-size:11px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.g-item i { font-style:normal; font-size:13px; font-weight:700; display:block; }
.g-item span { font-size:10px; color:var(--text-sub); display:block; }

/* ===== 金刚区 ===== */
.kingkong { margin:12px 12px 0; background:#fff; border-radius:var(--radius); padding:16px 8px; display:grid; grid-template-columns:repeat(3,1fr); row-gap:18px; box-shadow:var(--shadow); }
.kk-item { display:flex; flex-direction:column; align-items:center; cursor:pointer; gap:7px; min-width:0; }
.kk-icon { width:50px; height:50px; border-radius:16px; display:flex; align-items:center; justify-content:center; font-size:24px; }
.kk-name { font-size:12px; color:var(--text); }

/* ===== 区块标题 ===== */
.section-head { padding:20px 14px 8px; display:flex; justify-content:space-between; align-items:center; }
.sh-left { display:flex; align-items:baseline; gap:8px; }
.sh-left b { font-size:17px; font-weight:800; color:var(--text); }
.sh-left em { font-style:normal; font-size:11px; color:var(--text-sub); }
.sh-left .flame { font-size:16px; }
.section-head .more { font-size:12px; color:var(--text-sub); cursor:pointer; }

/* ===== 限时特惠横滑 ===== */
.deal-scroll { display:flex; gap:10px; overflow-x:auto; padding:4px 12px 8px; scrollbar-width:none; }
.deal-scroll::-webkit-scrollbar { display:none; }
.deal-card { flex-shrink:0; width:122px; background:#fff; border-radius:var(--radius); overflow:hidden; cursor:pointer; box-shadow:var(--shadow); }
.d-img { height:112px; background:#FAF6F2; display:flex; align-items:center; justify-content:center; }
.d-img img { width:72%; height:72%; object-fit:contain; }
.d-name { font-size:12px; padding:8px 10px 2px; height:34px; line-height:1.3; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.d-price { color:var(--warn); font-weight:800; font-size:15px; padding:0 10px 10px; }

/* ===== 品牌横滑 ===== */
.brand-scroll { display:flex; gap:14px; overflow-x:auto; padding:4px 12px 12px; scrollbar-width:none; }
.brand-scroll::-webkit-scrollbar { display:none; }
.bitem { flex-shrink:0; width:52px; text-align:center; cursor:pointer; }
.bitem .logo { width:44px; height:44px; border-radius:10px; margin:0 auto 4px; background-size:contain; background-position:center; background-repeat:no-repeat; background-color:#fff; padding:4px; box-sizing:border-box; box-shadow:var(--shadow); border:1px solid var(--line); }
.bitem .n { font-size:10px; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:52px; }
.brand-all { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; padding:12px; }
.ba-item { background:#fff; border-radius:12px; padding:12px 6px 10px; text-align:center; cursor:pointer; box-shadow:var(--shadow); border:1px solid var(--line); min-width:0; overflow:hidden; }
.ba-item:active { background:var(--primary-light); }
.ba-logo { width:56px; height:56px; border-radius:12px; margin:0 auto 7px; background-size:contain; background-position:center; background-repeat:no-repeat; background-color:#fff; padding:6px; box-sizing:border-box; }
.ba-name { font-size:12px; color:var(--text); font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ba-count { font-size:10px; color:var(--text-sub); margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* ===== 商品双列网格 ===== */
.goods-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:11px; padding:4px 12px; }
.goods-card { background:var(--card); border-radius:var(--radius); overflow:hidden; cursor:pointer; position:relative; box-shadow:var(--shadow); }
.goods-card .thumb { width:100%; aspect-ratio:1; background:#FAF6F2; display:flex; align-items:center; justify-content:center; position:relative; }
.goods-card .thumb img { display:block; }
.badge-hot { position:absolute; top:8px; left:8px; background:var(--primary); color:#fff; font-size:10px; padding:2px 8px; border-radius:8px; z-index:2; }
.goods-card .info { padding:9px 11px 11px; }
.goods-card .name { font-size:13px; line-height:1.35; height:2.7em; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; color:var(--text); }
.goods-card .brand { font-size:11px; color:var(--text-sub); margin-top:3px; }
.price-row { display:flex; align-items:center; justify-content:space-between; margin-top:6px; }
.goods-card .price { color:var(--warn); font-size:18px; font-weight:800; }
.goods-card .price .sym { font-size:12px; font-weight:600; }
.free { font-size:10px; color:var(--success); border:1px solid var(--success); border-radius:4px; padding:0 4px; }
.add-btn { position:absolute; right:10px; bottom:66px; width:28px; height:28px; border-radius:50%; background:var(--primary); color:#fff; font-size:18px; display:flex; align-items:center; justify-content:center; box-shadow:0 2px 8px rgba(224,112,58,.35); cursor:pointer; z-index:3; }

/* ===== 分类页 ===== */
.category-page { display:flex; height:100%; }
.cat-sidebar { width:88px; background:#fff; overflow-y:auto; flex-shrink:0; }
.cat-sidebar .ci { padding:15px 6px; text-align:center; font-size:13px; cursor:pointer; border-left:3px solid transparent; color:var(--text-sub); }
.cat-sidebar .ci.active { color:var(--primary); background:var(--bg); border-left-color:var(--primary); font-weight:700; }
.cat-main { flex:1; overflow-y:auto; padding:10px; }
.cat-bar { display:flex; justify-content:space-between; align-items:center; padding:4px 2px 10px; }
.cat-count { font-size:12px; color:var(--text-sub); }
.sort-tabs { display:flex; gap:8px; }
.sort-tabs span { font-size:11px; color:var(--text-sub); cursor:pointer; padding:2px 2px; white-space:nowrap; }
.sort-tabs span.on { color:var(--primary); font-weight:700; }
.cat-goods { display:flex; flex-direction:column; gap:10px; }
.cat-goods .row { background:#fff; border-radius:10px; padding:10px; display:flex; gap:10px; cursor:pointer; box-shadow:var(--shadow); }
.cat-goods .row .thumb { width:82px; height:82px; border-radius:8px; background:#F7F7F7; flex-shrink:0; display:flex; align-items:center; justify-content:center; }
.cat-goods .row .thumb img { display:block; }
.cat-goods .row .info { flex:1; min-width:0; display:flex; flex-direction:column; }
.cat-goods .row .name { font-size:13px; line-height:1.35; }
.cat-goods .row .spec { font-size:11px; color:var(--text-sub); margin-top:4px; }
.cat-goods .row .cat-right { flex-shrink:0; display:flex; flex-direction:column; align-items:flex-end; justify-content:center; gap:8px; min-width:66px; }
.cat-goods .row .price { color:var(--warn); font-weight:700; font-size:15px; }
.cat-goods .row .cat-add { width:30px; height:30px; border-radius:50%; border:none; background:var(--primary); color:#fff; font-size:19px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; box-shadow:0 2px 6px rgba(224,112,58,.3); padding:0; }
.cat-goods .row .cat-add:active { background:var(--primary-dark); }

/* ===== 商品详情 ===== */
.pd-hero { width:100%; aspect-ratio:1; background:linear-gradient(135deg,#FBF3EC,#F3E3D5); display:flex; align-items:center; justify-content:center; padding:18px; box-sizing:border-box; }
.pd-hero img { width:100%; height:100%; object-fit:contain; }
.pd-gallery { display:flex; overflow-x:auto; width:100%; aspect-ratio:1; scroll-snap-type:x mandatory; }
.pd-gcell { flex:0 0 100%; aspect-ratio:1; scroll-snap-align:start; }
.pd-gcell img { width:100%; height:100%; object-fit:contain; background:#fff; }
.pd-body { background:#fff; padding:16px; margin-top:8px; border-radius:12px 12px 0 0; }
.pd-price { color:var(--warn); font-size:26px; font-weight:800; }
.pd-price .sym { font-size:14px; }
.pd-name { font-size:17px; font-weight:600; margin-top:8px; line-height:1.4; }
.pd-point { font-size:13px; color:var(--warn); margin-top:6px; }
.ad-form textarea { width:100%; border:1px solid var(--line); border-radius:8px; padding:8px 10px; font-size:13px; margin-bottom:8px; box-sizing:border-box; font-family:inherit; line-height:1.5; }
.pd-tags { display:flex; gap:6px; margin-top:8px; }
.ptag { font-size:10px; padding:2px 8px; border-radius:4px; background:var(--primary-light); color:var(--primary); }
.ptag.red { color:var(--primary-dark); background:var(--primary-light); }
.ptag.green { color:var(--success); background:#E9F5EE; }
.pd-svc { background:#fff; margin:8px 0; padding:12px 16px; display:flex; flex-wrap:wrap; gap:14px; font-size:12px; color:var(--text-sub); }
.pd-svc span { color:var(--success); }
.pd-svc span::before { content:''; }
.pd-meta { font-size:12px; color:var(--text-sub); margin-top:8px; line-height:1.6; }
.pd-section { background:#fff; margin-top:8px; padding:16px; }
.pd-section h4 { font-size:14px; margin-bottom:8px; }
.pd-section p { font-size:13px; color:#555; line-height:1.7; }
.pd-actions { position:absolute; bottom:58px; left:0; right:0; background:#fff; border-top:1px solid var(--line); display:flex; padding:8px 12px; gap:10px; }
.pd-actions .act { flex:1; height:44px; border-radius:22px; border:none; font-size:15px; cursor:pointer; font-weight:600; }
.pd-actions .buy { background:var(--primary); color:#fff; }
.pd-actions .cart { background:var(--primary-light); color:var(--primary-dark); }
.qty { display:flex; align-items:center; gap:10px; margin-top:14px; }
.qty .btn { width:30px; height:30px; border:1px solid var(--line); background:#fff; border-radius:6px; font-size:16px; cursor:pointer; }
.qty .num { min-width:30px; text-align:center; font-weight:600; }

/* ===== 购物车 ===== */
.cart-topbar { display:flex; justify-content:space-between; align-items:center; padding:12px 16px 4px; }
.sel-all { display:flex; align-items:center; gap:8px; font-size:14px; cursor:pointer; }
.sel-all .chk { width:20px; height:20px; border-radius:50%; border:2px solid #ccc; display:flex; align-items:center; justify-content:center; color:#fff; font-size:12px; }
.sel-all .chk.on { background:var(--primary); border-color:var(--primary); }
.clear-cart { font-size:12px; color:var(--text-sub); cursor:pointer; }
.cart-list { padding-bottom:70px; }
.cart-item { background:#fff; margin:10px 12px 0; border-radius:var(--radius); padding:12px; display:flex; gap:10px; align-items:center; box-shadow:var(--shadow); }
.cart-item .check { width:20px; height:20px; border-radius:50%; border:2px solid #ccc; flex-shrink:0; display:flex; align-items:center; justify-content:center; cursor:pointer; color:#fff; font-size:12px; }
.cart-item .check.on { background:var(--primary); border-color:var(--primary); }
.cart-item .thumb { width:64px; height:64px; border-radius:8px; background:#F7F7F7; flex-shrink:0; display:flex; align-items:center; justify-content:center; }
.cart-item .thumb img { display:block; width:80%; height:80%; object-fit:contain; }
.cart-item .info { flex:1; min-width:0; }
.cart-item .name { font-size:13px; line-height:1.3; height:2.7em; overflow:hidden; }
.cart-item .price { color:var(--warn); font-weight:700; margin-top:6px; }
.cart-item .qty { margin-top:6px; display:flex; align-items:center; gap:8px; }
.cart-item .qty .btn { width:26px; height:26px; border:1px solid var(--line); background:#fff; border-radius:6px; cursor:pointer; }
.cart-item .qty .num { min-width:24px; text-align:center; }
.cart-item .del-link { margin-left:auto; font-size:12px; color:var(--warn); cursor:pointer; padding:6px 12px; border:1px solid var(--warn); border-radius:16px; flex-shrink:0; min-height:28px; display:flex; align-items:center; }
.cart-item .del-link:active { background:var(--warn); color:#fff; }
.go-shop { margin-top:16px; background:var(--primary); color:#fff; border:none; padding:10px 26px; border-radius:20px; font-size:14px; cursor:pointer; }
.cart-footer { position:absolute; bottom:58px; left:0; right:0; width:100%; background:#fff; border-top:1px solid var(--line); padding:10px 12px; display:flex; align-items:center; gap:12px; }
.cart-footer .total { flex:1; font-size:13px; min-width:0; }
.cart-footer .total b { color:var(--warn); font-size:19px; }
.cart-footer .settle { flex-shrink:0; background:var(--primary); color:#fff; border:none; height:42px; padding:0 24px; border-radius:21px; font-size:15px; font-weight:600; cursor:pointer; }
.empty { text-align:center; padding:70px 20px; color:var(--text-sub); }
.empty .icon { font-size:60px; margin-bottom:12px; }

/* ===== 表单 ===== */
.form-group { background:#fff; margin:10px 12px 0; border-radius:var(--radius); padding:0 14px; box-shadow:var(--shadow); }
.form-row { display:flex; align-items:center; padding:15px 0; border-bottom:1px solid var(--line); }
.form-row:last-child { border-bottom:none; }
.form-row label { width:80px; font-size:14px; color:#333; }
.form-row input, .form-row textarea, .form-row select { flex:1; border:none; outline:none; font-size:14px; background:transparent; }
.pay-method { background:#fff; margin:10px 12px 0; border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow); }
.pay-method .pm { padding:15px 12px; display:flex; align-items:center; gap:10px; border-bottom:1px solid var(--line); cursor:pointer; }
.pay-method .pm:last-child { border-bottom:none; }
.pay-method .pm .radio { width:18px; height:18px; border-radius:50%; border:2px solid #ccc; }
.pay-method .pm.on .radio { border-color:var(--primary); background:var(--primary); box-shadow:inset 0 0 0 3px #fff; }
.pay-method .pm .ico { font-size:20px; }

/* ===== 订单 ===== */
.order-card { background:#fff; margin:10px 12px 0; border-radius:var(--radius); padding:14px; box-shadow:var(--shadow); }
.order-card .oh { display:flex; justify-content:space-between; font-size:12px; color:var(--text-sub); padding-bottom:8px; border-bottom:1px solid var(--line); margin-bottom:8px; }
.order-card .oh .status { color:var(--primary); }
.order-card .oi { display:flex; gap:8px; padding:6px 0; align-items:center; }
.order-card .oi .thumb { width:50px; height:50px; border-radius:6px; background:#F7F7F7; flex-shrink:0; display:flex; align-items:center; justify-content:center; }
.order-card .oi .n { flex:1; font-size:13px; }
.order-card .oi .p { font-size:13px; color:var(--warn); font-weight:600; }
.order-card .of { padding-top:8px; border-top:1px solid var(--line); margin-top:8px; text-align:right; font-size:13px; }

/* ===== 订单明细单 ===== */
.receipt-wrap { padding:12px; }
.receipt { background:#fff; border-radius:14px; padding:18px 16px; box-shadow:var(--shadow); }
.rc-head { text-align:center; border-bottom:1px dashed var(--line); padding-bottom:12px; }
.rc-shop { font-size:19px; font-weight:800; color:var(--primary); letter-spacing:1px; }
.rc-no, .rc-time { font-size:12px; color:#888; margin-top:4px; }
.rc-addr { padding:12px 0; border-bottom:1px dashed var(--line); font-size:13px; line-height:1.9; color:#333; }
.rp-head { display:flex; justify-content:space-between; font-size:12px; color:#888; padding:10px 0 4px; }
.rp-row { display:flex; gap:8px; padding:10px 0; border-bottom:1px dashed #eee; font-size:13px; align-items:flex-start; }
.rp-no { width:18px; color:#aaa; flex-shrink:0; }
.rp-name { flex:1; min-width:0; line-height:1.5; }
.rp-spec { font-size:11px; color:#999; margin-top:2px; }
.rp-qty { color:#666; flex-shrink:0; }
.rp-sub { font-weight:700; color:var(--warn); flex-shrink:0; min-width:56px; text-align:right; }
.rc-total { display:flex; justify-content:space-between; align-items:baseline; padding:14px 0 4px; font-size:15px; }
.rc-total b { color:var(--warn); font-size:22px; }
.rc-tip { text-align:center; font-size:12px; color:#999; padding:10px 0 0; }
.rc-actions { display:flex; gap:12px; padding:16px 12px; }
.rc-btn { flex:1; height:44px; border-radius:22px; font-size:15px; cursor:pointer; border:none; }
.rc-btn.ghost { background:#fff; color:var(--primary); border:1px solid var(--primary); }
.rc-btn.main { background:var(--primary); color:#fff; font-weight:600; }

/* ===== 我的 ===== */
.user-head { background:linear-gradient(135deg,#E8875A,#D06A35); color:#fff; padding:32px 18px; display:flex; align-items:center; gap:14px; margin-bottom:12px; }
.user-head .avatar { width:60px; height:60px; border-radius:50%; background:rgba(255,255,255,.22); color:#fff; display:flex; align-items:center; justify-content:center; font-size:28px; font-weight:600; border:2px solid rgba(255,255,255,.4); }
.user-head .uname { font-size:18px; font-weight:700; }
.user-head .uid { font-size:12px; opacity:.9; margin-top:4px; }
.menu-list { background:#fff; margin:0 12px; border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow); }
.menu-list .mi { padding:16px 14px; display:flex; align-items:center; gap:12px; border-bottom:1px solid var(--line); cursor:pointer; font-size:14px; }
.menu-list .mi:last-child { border-bottom:none; }
.menu-list .mi .arr { margin-left:auto; color:#C9BFB5; }
.mi-ico { width:34px; height:34px; border-radius:10px; background:var(--primary-light); color:var(--primary-dark); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.mi-ico svg { width:18px; height:18px; stroke:currentColor; fill:none; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }

/* Toast */
.toast { position:fixed; top:50%; left:50%; transform:translate(-50%,-50%); background:rgba(0,0,0,.75); color:#fff; padding:10px 20px; border-radius:8px; font-size:14px; z-index:999; pointer-events:none; opacity:0; transition:opacity .2s; }
.toast.show { opacity:1; }

/* 进入确认弹窗 */
.enter-mask { position:fixed; inset:0; background:rgba(0,0,0,.58); z-index:2000; display:flex; align-items:center; justify-content:center; padding:28px; }
.enter-mask.hidden { display:none; }
.enter-box { background:#fff; border-radius:18px; padding:28px 22px 22px; width:100%; max-width:320px; text-align:center; box-shadow:0 14px 44px rgba(0,0,0,.28); }
.enter-title { font-size:19px; font-weight:800; color:var(--text); margin-bottom:14px; }
.enter-msg { font-size:14.5px; line-height:1.8; color:#5A4E45; margin-bottom:22px; }
.enter-btn { width:100%; height:46px; border:none; border-radius:23px; background:var(--primary); color:#fff; font-size:16px; font-weight:700; cursor:pointer; }
.enter-btn:active { background:var(--primary-dark); }

/* 加载 */
.loading { text-align:center; padding:20px; color:var(--text-sub); font-size:13px; }
.load-more { padding:8px 0; }
img { background:#FAF6F2; }

/* ===== 商家后台 ===== */
.gate-mask { position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:1000; display:flex; align-items:center; justify-content:center; padding:24px; }
.gate-card { background:#fff; border-radius:16px; padding:24px 20px; width:100%; max-width:340px; }
.gate-title { font-size:18px; font-weight:700; text-align:center; }
.gate-sub { font-size:12px; color:#888; text-align:center; margin:8px 0 16px; }
.gate-input { width:100%; height:44px; border:1px solid var(--line); border-radius:10px; padding:0 14px; font-size:16px; text-align:center; letter-spacing:4px; box-sizing:border-box; }
.gate-err { color:var(--warn); font-size:12px; height:18px; margin-top:6px; text-align:center; }
.gate-btns { display:flex; gap:12px; margin-top:10px; }
.gate-btns button { flex:1; height:42px; border-radius:21px; border:none; font-size:15px; cursor:pointer; }
.gate-cancel { background:#f2f2f2; color:#666; }
.gate-ok { background:var(--primary); color:#fff; font-weight:600; }
.admin-bar { padding:10px 12px 4px; }
.admin-search input { width:100%; height:40px; border:1px solid var(--line); border-radius:20px; padding:0 16px; font-size:14px; outline:none; background:#fff; box-sizing:border-box; }
.admin-filters { display:flex; gap:8px; margin-top:10px; }
.admin-filters select { flex:1; height:36px; border:1px solid var(--line); border-radius:8px; background:#fff; font-size:13px; padding:0 8px; }
.admin-stat { font-size:12px; color:var(--text-sub); padding:10px 2px 4px; }
.admin-tools { display:flex; gap:8px; flex-wrap:wrap; padding:4px 0 10px; }
.ad-btn { background:var(--primary); color:#fff; border:none; height:34px; padding:0 14px; border-radius:17px; font-size:13px; cursor:pointer; }
.ad-btn.ghost { background:#fff; color:var(--primary); border:1px solid var(--primary); }
.admin-list { padding:0 12px 80px; }
.ad-item { background:#fff; border-radius:10px; margin-bottom:8px; padding:10px; box-shadow:var(--shadow); }
.ad-item.off { opacity:.55; }
.ad-row { display:flex; gap:10px; align-items:center; }
.ad-thumb { width:52px; height:52px; border-radius:8px; background:#F7F7F7; flex-shrink:0; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.ad-thumb img { width:80%; height:80%; object-fit:contain; }
.ad-info { flex:1; min-width:0; }
.ad-name { font-size:13px; line-height:1.4; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.ad-meta { font-size:11px; color:#888; margin-top:4px; }
.ad-price { color:var(--warn); font-weight:700; }
.ad-ops { display:flex; flex-direction:column; align-items:center; gap:6px; flex-shrink:0; }
.ad-edit-btn { font-size:12px; color:var(--primary); cursor:pointer; padding:2px 6px; }
.switch { position:relative; width:42px; height:24px; display:inline-block; }
.switch input { display:none; }
.switch span { position:absolute; inset:0; background:#ccc; border-radius:12px; transition:.2s; cursor:pointer; }
.switch span::before { content:''; position:absolute; width:20px; height:20px; left:2px; top:2px; background:#fff; border-radius:50%; transition:.2s; box-shadow:0 1px 3px rgba(0,0,0,.3); }
.switch input:checked + span { background:var(--primary); }
.switch input:checked + span::before { transform:translateX(18px); }
.ad-form { margin-top:10px; padding-top:10px; border-top:1px dashed var(--line); }
.ad-form input { width:100%; height:38px; border:1px solid var(--line); border-radius:8px; padding:0 10px; font-size:13px; margin-bottom:8px; box-sizing:border-box; }
.ad-form .af-row { display:flex; gap:8px; }
.ad-form .af-row input { flex:1; }
.af-btns { display:flex; gap:10px; }
.af-btns button { flex:1; height:38px; border-radius:19px; border:none; font-size:14px; cursor:pointer; }
.ad-save { background:var(--primary); color:#fff; }
.ad-cancel { background:#fff; color:#666; border:1px solid var(--line) !important; }

/* ===== 收藏心形 / 相关推荐 ===== */
.fav-fab { position:absolute; top:12px; right:12px; width:40px; height:40px; border-radius:50%; border:none; background:rgba(255,255,255,.9); color:#bbb; font-size:20px; cursor:pointer; box-shadow:0 2px 8px rgba(0,0,0,.15); z-index:5; }
.fav-fab.on { color:var(--warn); }
.pd-hero { position:relative; }
.rel-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:10px; }

/* ===== 列表顶栏 / 收藏历史行 ===== */
.list-topbar { display:flex; justify-content:space-between; align-items:center; padding:12px 14px 4px; font-size:13px; color:var(--text-sub); }
.link-btn { font-size:12px; color:var(--primary); cursor:pointer; }
.fav-list { padding:4px 12px 80px; }
.fav-row { background:#fff; border-radius:10px; padding:12px; margin-bottom:8px; display:flex; gap:12px; align-items:center; box-shadow:var(--shadow); cursor:pointer; }
.fav-thumb { width:60px; height:60px; border-radius:8px; background:#F7F7F7; flex-shrink:0; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.fav-thumb img { width:80%; height:80%; object-fit:contain; }
.fav-info { flex:1; min-width:0; }
.fav-name { font-size:13px; line-height:1.4; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.fav-price { color:var(--warn); font-weight:700; margin-top:6px; }
.fav-del { font-size:12px; color:var(--text-sub); padding:6px; flex-shrink:0; cursor:pointer; }

/* ===== 搜索建议 ===== */
.search-sug { padding:14px; }
.sug-head { display:flex; justify-content:space-between; align-items:center; font-size:14px; font-weight:600; margin:10px 0 10px; }
.tag-wrap { display:flex; flex-wrap:wrap; gap:10px; }
.tag { font-size:13px; background:#fff; padding:7px 14px; border-radius:18px; color:#444; cursor:pointer; box-shadow:var(--shadow); }
.tag.hot { color:var(--warn); }

/* ===== 订单状态 / 操作 ===== */
.order-card.cancelled { opacity:.6; }
.status.st-wait { color:var(--primary); }
.status.st-cancel { color:#999; }
.o-actions { display:flex; gap:10px; justify-content:flex-end; margin-top:10px; }
.o-btn { font-size:13px; padding:7px 16px; border-radius:18px; border:1px solid var(--primary); color:var(--primary); background:#fff; cursor:pointer; }
.o-btn.ghost { border-color:var(--line); color:#666; }
.o-btn:not(.ghost) { background:var(--primary); color:#fff; }