/* ===== 公共变量与基础样式 ===== */
*{box-sizing:border-box}
:root{
  --bg:#fff;--soft:#f7f7f8;--hover:#f1f1f1;--card:#fff;--text:#171717;--muted:#6b6b6b;--subtle:#999;--border:#e7e7e7;
  --success:#18864b;--successbg:#eaf8f0;
  --danger:#c1352b;--dangerbg:#fceceb;
  --info:#2458c9;--infobg:#eaf0fd;
  --warn:#9a6b06;--warnbg:#fbf1df;
  --star:#e3a512;
  --shadow:0 8px 28px rgba(0,0,0,.04);
}
html.dark{
  --bg:#212121;--soft:#2a2a2a;--hover:#303030;--card:#252525;--text:#f5f5f5;--muted:#b4b4b4;--subtle:#777;--border:#3a3a3a;
  --success:#55c987;--successbg:rgba(55,180,115,.12);
  --danger:#e2695f;--dangerbg:rgba(226,105,95,.13);
  --info:#6d97ea;--infobg:rgba(109,151,234,.13);
  --warn:#e0b356;--warnbg:rgba(224,179,86,.13);
  --star:#e3b23c;
  --shadow:0 8px 30px rgba(0,0,0,.16);
}
body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
a{text-decoration:none;color:inherit}
button,input,textarea{font:inherit}
button{cursor:pointer}

/* ===== Header / 导航 ===== */
.header{height:64px;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--bg) 90%,transparent);backdrop-filter:blur(18px)}
.header-in{width:min(1180px,calc(100% - 40px));height:100%;margin:auto;display:flex;align-items:center;justify-content:space-between}
.logo{display:flex;align-items:center;gap:10px;font-weight:650}
.logo i{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--text);color:var(--bg);font-style:normal;font-size:14px;font-weight:700}
.nav{display:flex;align-items:center;gap:5px}
.nav a,.theme{padding:8px 12px;border-radius:8px;color:var(--muted);font-size:14px;background:transparent;border:0}
.nav a:hover,.theme:hover{background:var(--hover);color:var(--text)}
.nav a.current{color:var(--text);font-weight:600}

/* ===== 主体容器 / 面包屑 / 返回链接 ===== */
main{width:min(960px,calc(100% - 40px));margin:auto auto 80px}
.crumb{padding:27px 0 18px;color:var(--subtle);font-size:12px}
.crumb a:hover{color:var(--text)}
.back{display:inline-block;margin-top:20px;color:var(--muted);font-size:12px}
.back:hover{color:var(--text)}

/* ===== 按钮 ===== */
.primary,.secondary{padding:10px 17px;border-radius:10px;font-size:13px;font-weight:600}
.primary{background:var(--text);color:var(--bg);border:0}
.secondary{background:transparent;color:var(--text);border:1px solid var(--border)}
.primary:hover,.secondary:hover{opacity:.85}
.primary:disabled{opacity:.45;cursor:not-allowed}

/* ===== 操作按钮组 ===== */
.actions{display:flex;gap:8px;flex:none}

/* ===== 标签 ===== */
.tag{padding:5px 8px;border-radius:6px;background:var(--soft);color:var(--muted);font-size:11px}
.tags{display:flex;gap:6px;flex-wrap:wrap}

/* ===== 区块标题 ===== */
.section{margin-top:30px}
.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.section-title{font-size:17px;font-weight:650}
.muted{font-size:12px;color:var(--subtle)}
.link-more{font-size:12px;color:var(--muted)}
.link-more:hover{color:var(--text)}

/* ===== 统计卡片 ===== */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:20px}
.stat{border:1px solid var(--border);border-radius:14px;padding:18px;background:var(--card)}
.stat-value{font-size:22px;font-weight:700}
.stat-label{font-size:11px;color:var(--subtle);margin-top:5px}

/* ===== 商品列表（商家页/首页复用） ===== */
.products{display:flex;flex-direction:column;gap:10px}
.product{border:1px solid var(--border);border-radius:15px;padding:20px;background:var(--card);transition:.15s}
.product:hover{border-color:#d2d2d2;box-shadow:var(--shadow);transform:translateY(-1px)}
.product-top{display:flex;justify-content:space-between;gap:20px}
.product h2{margin:0;font-size:16px}
.product h2 a:hover{text-decoration:underline}
.product-desc{margin-top:6px;color:var(--muted);font-size:13px}
.stock{white-space:nowrap;color:var(--success);font-size:12px;font-weight:600;display:flex;align-items:center;gap:6px}
.stock i{width:7px;height:7px;background:currentColor;border-radius:50%}
.product-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:16px}
.price{font-size:17px;font-weight:650}
.price small{font-size:11px;color:var(--muted);font-weight:400}
/*.coupon{margin-top:14px;padding-top:13px;border-top:1px solid var(--border);display:flex;align-items:center;gap:10px}*/
.coupon{margin-top:14px;padding-top:13px;display:flex;align-items:center;gap:10px}
.coupon-label{font-size:11px;color:var(--subtle)}
.code{border:1px dashed #bbb;background:var(--soft);border-radius:8px;padding:7px 10px;font:600 12px ui-monospace,SFMono-Regular,Menlo,monospace}
.code button{border:0;background:transparent;color:var(--muted);margin-left:8px}

/* ===== 补货历史 ===== */
.history{border:1px solid var(--border);border-radius:15px;padding:20px;background:var(--card)}
.row{display:grid;grid-template-columns:150px 1fr auto;gap:14px;padding:14px 0;border-bottom:1px solid var(--border);font-size:13px}
.row:last-child{border-bottom:0}
.time{font-size:12px;color:var(--subtle)}
.pill{padding:5px 8px;border-radius:7px;background:var(--successbg);color:var(--success);font-size:11px;white-space:nowrap}

/* ===== 事件类型标签（商家页/事件列表/事件详情复用） ===== */
.etag{padding:4px 8px;border-radius:6px;font-size:11px;font-weight:600;white-space:nowrap}
.etag.restock{background:var(--successbg);color:var(--success)}
.etag.positive{background:var(--infobg);color:var(--info)}
.etag.negative{background:var(--dangerbg);color:var(--danger)}
.etag.announce{background:var(--warnbg);color:var(--warn)}

/* ===== 评分展示（商家页/评价页复用） ===== */
.rating-score{text-align:center;padding-right:26px;border-right:1px solid var(--border)}
.rating-num{font-size:44px;font-weight:700;letter-spacing:-1px}
.stars{color:var(--star);font-size:16px;letter-spacing:2px;margin:6px 0}
.rating-count{font-size:12px;color:var(--subtle)}
.rating-dims{display:flex;flex-direction:column;gap:14px;justify-content:center}
.dim-row{display:grid;grid-template-columns:90px 1fr 34px;align-items:center;gap:12px;font-size:13px}
.dim-name{color:var(--muted)}
.dim-bar{height:6px;border-radius:4px;background:var(--soft);overflow:hidden}
.dim-fill{height:100%;background:var(--text);border-radius:4px}
.dim-val{text-align:right;font-weight:650;font-size:13px}

/* ===== Footer ===== */
.footer{border-top:1px solid var(--border);margin-top:60px}
.footer-in{width:min(1180px,calc(100% - 40px));margin:auto;padding:34px 0;display:flex;justify-content:space-between;align-items:flex-start;gap:20px;flex-wrap:wrap}
.footer-brand{display:flex;align-items:center;gap:10px;font-weight:650;font-size:14px}
.footer-desc{font-size:12px;color:var(--subtle);margin-top:8px;max-width:340px;line-height:1.7}
.footer-links{display:flex;gap:36px;flex-wrap:wrap}
.footer-col{display:flex;flex-direction:column;gap:9px}
.footer-col-title{font-size:11px;color:var(--subtle);margin-bottom:2px}
.footer-col a{font-size:12.5px;color:var(--muted)}
.footer-col a:hover{color:var(--text)}
.footer-bottom{border-top:1px solid var(--border)}
.footer-bottom-in{width:min(1180px,calc(100% - 40px));margin:auto;padding:16px 0;font-size:11.5px;color:var(--subtle);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}

/* ===== 响应式 ===== */
@media(max-width:720px){
  .nav a{display:none}
  .header-in{width:calc(100% - 28px)}
  main{width:calc(100% - 28px)}
  .actions{width:100%}
  .actions a,.actions button{flex:1}
  .stats{grid-template-columns:1fr 1fr}
  .product-top{flex-direction:column}
  .product-bottom{align-items:flex-end}
  .row{grid-template-columns:1fr auto}
  .time{grid-column:1/-1}
  .rating-score{border-right:0;border-bottom:1px solid var(--border);padding:0 0 20px;margin-bottom:16px}
  .footer-in{flex-direction:column}
  .footer-links{gap:24px}
}



/* =========================
   Footer
========================= */

footer {
    border-top: 1px solid var(--border);
    padding: 30px 20px;
    color: var(--text-tertiary);
    font-size: 12px;
}

.footer-inner {
    width: min(860px, 100%);
    margin: auto;
    display: flex;
    justify-content: space-between;
    gap: 20px;
}




/* =========================
   Coupon
========================= */

.coupon-area {
    margin-top: 18px;
    padding-top: 17px;
    border-top: 1px solid var(--border);
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.coupon-label {
    color: var(--text-tertiary);
    font-size: 12px;
}

.coupon {
    position: relative;
    border: 1px dashed var(--border-hover);
    background: var(--bg-soft);
    color: var(--text);
    border-radius: 8px;
    padding: 7px 10px 7px 12px;
    display: inline-flex;
    align-items: center;
    gap: 12px;
    font-family:
        ui-monospace,
        SFMono-Regular,
        Menlo,
        Monaco,
        Consolas,
        monospace;
    font-size: 12px;
    font-weight: 600;
    transition: .15s;
}

.coupon:hover {
    border-color: var(--text-tertiary);
    background: var(--bg-hover);
}

.copy-icon {
    color: var(--text-tertiary);
    font-family: sans-serif;
    font-size: 13px;
}

.coupon.copied {
    color: var(--success);
    border-color: var(--success);
}

.coupon-message {
    color: var(--success);
    font-size: 12px;
    opacity: 0;
    transform: translateX(-4px);
    transition: .15s;
}

.coupon-message.show {
    opacity: 1;
    transform: translateX(0);
}

/* =========================
   Empty
========================= */

.empty {
    display: none;
    padding: 60px 20px;
    text-align: center;
    color: var(--text-tertiary);
    border: 1px dashed var(--border);
    border-radius: var(--radius);
}



/* =========================
   Card Bottom
========================= */


.card-bottom {
    margin-top: 17px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.tags {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.tag {
    padding: 4px 8px;
    border-radius: 6px;
    background: var(--bg-soft);
    color: var(--text-secondary);
    font-size: 11px;
}

.detail-link {
    color: var(--text-secondary);
    font-size: 12px;
    transition: .15s;
}

.detail-link:hover {
    color: var(--text);
}
