/* ============================================================
   来源：views/shop/index.html 内联 <style> 第 1 块（原位抽离，57 行）
   说明：在原位置以 <link rel="stylesheet"> 引入，来源顺序不变，
        层叠结果与抽离前逐字一致，不会引起样式变化。
   ============================================================ */
* { margin:0; padding:0; box-sizing:border-box; }
body { font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif; background:#f7f4f0; color:#2c2b28; }
a { text-decoration:none; color:inherit; }
.page-hero { background:linear-gradient(135deg,#b45309 0%,#d97706 55%,#f59e0b 100%); color:#fff; padding:40px 0 36px; }
.page-hero .container { max-width:1180px; margin:0 auto; padding:0 20px; }
.page-hero h2 { font-size:1.9rem; margin-bottom:8px; }
.page-hero p { opacity:.92; font-size:.95rem; }
.container { max-width:1180px; margin:0 auto; padding:20px 20px 60px; }
.cat-bar { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:20px; }
.cat-tab { padding:8px 22px; border-radius:30px; background:#fff; border:1px solid #e8e0d8; cursor:pointer; font-size:.9rem; color:#555; transition:.2s; }
.cat-tab:hover { border-color:#d97706; color:#d97706; }
.cat-tab.active { background:#d97706; color:#fff; border-color:#d97706; }
.goods-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(215px,1fr)); gap:16px; }
.goods-card { background:#fff; border:1px solid #e8e0d8; border-radius:14px; overflow:hidden; transition:.25s; }
.goods-card:hover { transform:translateY(-4px); box-shadow:0 10px 24px rgba(0,0,0,.09); border-color:#f0c27a; }
/* 退款规则标签 */
.refund-tag { font-size:.7rem; padding:1px 7px; border-radius:9px; white-space:nowrap; }
.refund-tag.ok { background:#e9f7ef; color:#22a65e; }
.refund-tag.warn { background:#fdf3e3; color:#b47a2a; }
.refund-tag.phy { background:#eef3fb; color:#2563eb; }
.refund-tag.no { background:#f1efec; color:#8a837c; }
.goods-cover { height:150px; background:linear-gradient(135deg,#fef3e2,#fdf6ec); display:flex; align-items:center; justify-content:center; font-size:3rem; position:relative; overflow:hidden; }
.goods-cover img { width:100%; height:100%; object-fit:cover; }
.goods-type { position:absolute; top:10px; left:10px; font-size:.7rem; padding:2px 10px; border-radius:30px; background:rgba(255,255,255,.9); color:#d97706; }
.goods-type.virtual { color:#7c3aed; }
.goods-info { padding:14px 16px 16px; }
.goods-name { font-weight:600; font-size:.95rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.goods-desc { font-size:.74rem; color:#aaa; margin-top:4px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.goods-sub { font-size:.75rem; color:#b0a8a0; margin-top:5px; }
.goods-row { display:flex; align-items:center; justify-content:space-between; margin-top:12px; }
.goods-shop-row { margin-top:8px; border-top:1px dashed #f0ebe6; padding-top:8px; }
.goods-shop { font-size:.76rem; color:#b47a2a; cursor:pointer; }
.goods-shop:hover { color:#eb1313; }
.goods-price { color:#eb1313; font-weight:800; font-size:1.15rem; }
.goods-price small { font-size:.75rem; font-weight:400; color:#b0a8a0; }
.goods-price .orig { font-size:.72rem; color:#ccc; text-decoration:line-through; margin-left:6px; font-weight:400; }
.btn { height:34px; padding:5px 16px; border-radius:30px; border:1px solid #e0d8d0; background:#fff; cursor:pointer; font-size:.85rem; font-weight:600; transition:.2s; display:inline-flex; align-items:center; gap:4px; white-space:nowrap; }
.btn:hover { border-color:#d97706; color:#d97706; background:#fef6ec; }
.btn-primary { background:#d97706; color:#fff; border-color:#d97706; }
.btn-primary:hover { background:#b45309; border-color:#b45309; color:#fff; }
.empty-tip { text-align:center; color:#b0a8a0; padding:50px 0; }
.hot-tag { position:absolute; top:10px; right:10px; font-size:.7rem; background:#eb1313; color:#fff; padding:2px 10px; border-radius:30px; }
/* 商品详情弹窗 */
.modal-overlay { position:fixed; inset:0; background:rgba(0,0,0,.45); z-index:9999; display:none; align-items:center; justify-content:center; padding:20px; }
.modal-overlay.open { display:flex; }
.modal-box { background:#fff; border-radius:18px; max-width:480px; width:100%; max-height:86vh; overflow-y:auto; padding:28px; position:relative; }
.modal-close { position:absolute; top:14px; right:18px; font-size:1.4rem; color:#b0a8a0; cursor:pointer; background:none; border:none; }
.modal-close:hover { color:#eb1313; }
.dg-cover { width:100%; height:150px; border-radius:14px; background:linear-gradient(135deg,#fef3e2,#fdf6ec); display:flex; align-items:center; justify-content:center; font-size:4rem; margin-bottom:16px; }
.dg-name { font-size:1.25rem; font-weight:700; }
.dg-price { color:#eb1313; font-size:1.6rem; font-weight:800; margin:8px 0 4px; }
.dg-type { display:inline-block; font-size:.78rem; background:#e8f0fe; color:#2563eb; padding:3px 12px; border-radius:30px; margin:8px 0; }
.dg-type.dg-virtual { background:#f3e8ff; color:#7c3aed; }
.dg-desc { font-size:.9rem; color:#555; line-height:1.8; margin:12px 0; background:#faf8f6; border-radius:12px; padding:14px 16px; }
.dg-sales { font-size:.8rem; color:#b0a8a0; margin-bottom:12px; }
.dg-refund { background:#fff7f0; border:1px solid #f3d9c2; border-radius:10px; padding:10px 14px; color:#a05a1a; font-size:.82rem; margin-bottom:16px; line-height:1.6; }
.dg-btns { display:flex; gap:10px; }
