/* 寝室零食点单 —— 浅色温馨主题
   配色思路：暖白底 + 奶白卡片 + 一点杏橙色点缀，不吃灰不吃黑。 */

:root{
  --bg:#FBF7F1;
  --bg2:#F5EFE6;
  --card:#FFFFFF;
  --line:#EDE4D9;
  --text:#3B3530;
  --sub:#948A80;
  --accent:#E08A5B;
  --accent-2:#F2C4A3;
  --accent-soft:#FCEEDF;
  --ok:#6F9E7C;
  --ok-soft:#EAF3EC;
  --danger:#C96A5B;
  --danger-soft:#FBEDEA;
  --r:16px;
  --r-s:10px;
  --sh:0 2px 10px rgba(90,70,50,.05);
  --sh-up:0 -3px 16px rgba(90,70,50,.07);
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{
  background:var(--bg);color:var(--text);
  font:15px/1.55 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",Roboto,sans-serif;
  padding-bottom:calc(96px + env(safe-area-inset-bottom));
}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}

/* ---------- 顶部 ---------- */
.top{
  position:sticky;top:0;z-index:20;
  display:flex;align-items:center;gap:10px;
  padding:calc(10px + env(safe-area-inset-top)) 16px 10px;
  background:rgba(251,247,241,.94);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
}
.brand{font-size:17px;font-weight:600;letter-spacing:.2px;flex:1;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.brand small{display:block;font-size:11px;font-weight:400;color:var(--sub);letter-spacing:0}
.ghost{
  display:inline-flex;align-items:center;gap:4px;
  padding:6px 11px;border-radius:999px;
  background:var(--bg2);color:var(--text);font-size:12.5px;
}
.ghost svg{width:13px;height:13px;opacity:.7}

/* ---------- 店铺信息条 ---------- */
.notice{margin:12px 16px 0;padding:11px 14px;border-radius:var(--r-s);
  background:var(--accent-soft);color:#8A5A3C;font-size:12.5px;line-height:1.6}
.notice.closed{background:var(--danger-soft);color:#9A4A3D}
.notice b{font-weight:600}

/* ---------- 分类 ---------- */
.rail{
  position:sticky;top:calc(57px + env(safe-area-inset-top));z-index:15;
  display:flex;gap:8px;overflow-x:auto;padding:12px 16px;
  background:linear-gradient(var(--bg) 70%,rgba(251,247,241,0));
  scrollbar-width:none;
}
.rail::-webkit-scrollbar{display:none}
/* 二级分类：小一号，贴着第一排 */
.rail.sub{padding-top:0;padding-bottom:10px}
.rail.sub .chip{padding:4px 11px;font-size:12px;background:transparent;border-color:transparent;color:var(--sub)}
.rail.sub .chip.on{background:var(--accent-soft);border-color:transparent;color:#9A5F3A;font-weight:500}
.chip{
  flex:0 0 auto;padding:6px 13px;border-radius:999px;
  background:var(--card);border:1px solid var(--line);
  font-size:13px;color:var(--sub);white-space:nowrap;
}
.chip.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:500}
.chip .n{font-size:10.5px;opacity:.65;margin-left:3px}

/* ---------- 商品 ---------- */
.wrap{padding:0 16px}
.sec{font-size:12px;color:var(--sub);margin:6px 0 8px;letter-spacing:.4px}
.list{display:flex;flex-direction:column;gap:10px}
.row{
  display:flex;align-items:center;gap:12px;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:12px 14px;box-shadow:var(--sh);
}
.row .pic{flex:0 0 auto;width:54px;height:54px;border-radius:12px;overflow:hidden;
  background:var(--bg2);display:flex;align-items:center;justify-content:center;
  font-size:17px;color:#CDC3B8}
.row .pic img{width:100%;height:100%;object-fit:cover;display:block;background:var(--bg2)}
.row .info{flex:1;min-width:0}
.row .nm{font-size:14.5px;font-weight:500;display:flex;align-items:baseline;gap:6px}
.row .ds{font-size:11.5px;color:var(--sub);margin-top:2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row .pr{font-size:15px;color:var(--accent);font-weight:600;margin-top:5px}
.row .pr i{font-size:11px;font-style:normal;font-weight:400;margin-right:1px}
.unit{font-size:10.5px;color:var(--sub);font-weight:400}

/* 数量控件：故意做小 */
.step{display:flex;align-items:center;gap:0;flex:0 0 auto}
.step button{
  width:26px;height:26px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:16px;line-height:1;font-weight:400;
}
.step .minus{background:var(--bg2);color:var(--sub)}
.step .plus{background:var(--accent);color:#fff}
.step .q{min-width:22px;text-align:center;font-size:13.5px;font-weight:600}
.step .q.zero{color:#CFC7BE;font-weight:400}

/* ---------- 底部购物车 ---------- */
.bar{
  position:fixed;left:0;right:0;bottom:0;z-index:30;
  padding:10px 16px calc(10px + env(safe-area-inset-bottom));
  background:rgba(251,247,241,.96);backdrop-filter:blur(10px);
  border-top:1px solid var(--line);box-shadow:var(--sh-up);
  display:flex;align-items:center;gap:12px;
}
.cart-btn{position:relative;flex:0 0 auto;width:44px;height:44px;border-radius:14px;
  background:var(--bg2);display:flex;align-items:center;justify-content:center}
.cart-btn svg{width:20px;height:20px;opacity:.65}
.badge{position:absolute;top:-4px;right:-4px;min-width:17px;height:17px;padding:0 4px;
  border-radius:9px;background:var(--accent);color:#fff;font-size:10.5px;font-weight:600;
  display:flex;align-items:center;justify-content:center}
.sum{flex:1;min-width:0}
.sum .t{font-size:16.5px;font-weight:600}
.sum .t i{font-size:11.5px;font-style:normal;font-weight:400}
.sum .s{font-size:11.5px;color:var(--sub);margin-top:1px}
.primary{
  flex:0 0 auto;padding:12px 22px;border-radius:14px;
  background:var(--accent);color:#fff;font-size:14.5px;font-weight:600;
  box-shadow:0 4px 12px rgba(224,138,91,.28);
}
.primary:disabled{background:#E4DBD1;color:#A79D93;box-shadow:none}

/* ---------- 表单页 ---------- */
.page{padding:16px 16px 0}
.card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:16px;box-shadow:var(--sh);margin-bottom:12px;
}
.card h3{margin:0 0 12px;font-size:13px;color:var(--sub);font-weight:500;letter-spacing:.3px}
.field{margin-bottom:14px}
.field:last-child{margin-bottom:0}
.field label{display:block;font-size:12.5px;color:var(--sub);margin-bottom:6px}
.field input,.field textarea{
  width:100%;padding:11px 13px;border-radius:var(--r-s);
  border:1px solid var(--line);background:var(--bg);color:var(--text);
  font-size:15px;outline:none;
}
.field input:focus,.field textarea:focus{border-color:var(--accent-2);background:#fff}
.field textarea{resize:none;height:60px}
.hint{font-size:11.5px;color:var(--sub);margin-top:6px}

.items{display:flex;flex-direction:column;gap:9px}
.item{display:flex;align-items:baseline;gap:8px;font-size:14px}
.item .n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item .q{color:var(--sub);font-size:12.5px;flex:0 0 auto}
.item .p{color:var(--text);flex:0 0 auto;min-width:56px;text-align:right}
.total{display:flex;justify-content:space-between;align-items:baseline;
  margin-top:14px;padding-top:12px;border-top:1px dashed var(--line)}
.total .l{font-size:13px;color:var(--sub)}
.total .v{font-size:20px;font-weight:600;color:var(--accent)}

/* ---------- 订单详情 ---------- */
.status{display:flex;align-items:center;gap:10px;margin-bottom:4px}
.dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex:0 0 auto}
.dot.ok{background:var(--ok)}
.dot.dim{background:#CFC7BE}
.status .tx{font-size:17px;font-weight:600}
.status .sub{font-size:12px;color:var(--sub)}
.tl{margin-top:14px;padding-left:6px}
.tl .s{display:flex;gap:10px;font-size:12.5px;color:var(--sub);padding:5px 0}
.tl .s .d{width:7px;height:7px;border-radius:50%;background:#DCD3C8;margin-top:6px;flex:0 0 auto}
.tl .s.on{color:var(--text)}
.tl .s.on .d{background:var(--accent)}
.tl .s.doneon .d{background:var(--ok)}

.btns{display:flex;gap:10px;margin-top:14px}
.btn-line{flex:1;padding:11px;border-radius:var(--r-s);border:1px solid var(--line);
  background:var(--card);font-size:13.5px;color:var(--sub)}
.btn-line.danger{color:var(--danger);border-color:#F0DAD5}

/* ---------- 历史订单 ---------- */
.olist{display:flex;flex-direction:column;gap:10px}
.ord{background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:13px 14px;box-shadow:var(--sh)}
.ord .h{display:flex;align-items:center;gap:8px;font-size:13px}
.ord .h .no{font-weight:600;font-size:13.5px}
.ord .h .st{margin-left:auto;font-size:11.5px;padding:2px 8px;border-radius:999px;
  background:var(--accent-soft);color:#9A5F3A}
.ord .h .st.ok{background:var(--ok-soft);color:#4C7A5A}
.ord .h .st.dim{background:#F1ECE5;color:var(--sub)}
.ord .b{font-size:12px;color:var(--sub);margin-top:6px;line-height:1.6}
.ord .b b{color:var(--text);font-weight:600}

/* ---------- 弹窗 ---------- */
.mask{position:fixed;inset:0;z-index:60;background:rgba(48,38,30,.36);
  display:flex;align-items:center;justify-content:center;padding:28px;
  animation:fade .14s ease}
.dlg{width:100%;max-width:330px;background:var(--card);border-radius:18px;padding:22px 20px 16px;
  box-shadow:0 18px 50px rgba(60,45,32,.22);animation:pop .16s ease}
.dlg h4{margin:0 0 8px;font-size:16.5px;font-weight:600}
.dlg p{margin:0 0 18px;font-size:13.5px;color:var(--sub);line-height:1.65}
.dlg .acts{display:flex;gap:10px}
.dlg .acts button{flex:1;padding:11px;border-radius:12px;font-size:14px}
.dlg .acts .no{background:var(--bg2);color:var(--sub)}
.dlg .acts .yes{background:var(--accent);color:#fff;font-weight:600}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes pop{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}

/* ---------- 小提示 ---------- */
.toast{position:fixed;left:50%;bottom:110px;transform:translateX(-50%);z-index:80;
  max-width:76vw;padding:9px 16px;border-radius:12px;
  background:rgba(58,48,40,.92);color:#fff;font-size:13px;text-align:center;
  animation:fade .15s ease}
.empty{text-align:center;color:var(--sub);font-size:13px;padding:44px 0}
.loading{text-align:center;color:var(--sub);font-size:13px;padding:40px 0}
.retry{margin-top:14px;padding:9px 20px;border-radius:12px;background:var(--accent);color:#fff;font-size:13.5px}
