/* ============================================================
   商城（v0.55.10）——灰雾底 · 毛玻璃陈列 · 烟灰玻璃主键；不用纯黑
   ============================================================ */
.ml-screen { background: #ececef; }
.ml-screen > .app-header { display: none; }
.ml-app { --ink: #2c2c2e; --sub: #8e8e93; --line: rgba(120,120,128,.14); --plum: #545458; --oat: rgba(255,255,255,.55); --card: rgba(255,255,255,.66);
  position: relative; flex: 1; min-height: 0; display: flex; flex-direction: column; color: var(--ink);
  font-family: -apple-system, "PingFang SC", "Noto Sans SC", sans-serif; }
.ml-scroll { flex: 1; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 0 14px calc(104px + env(safe-area-inset-bottom, 0px)); }
.ml-scroll.has-sum { padding-bottom: calc(176px + env(safe-area-inset-bottom, 0px)); }
.ml-scroll.has-buy { padding-bottom: calc(100px + env(safe-area-inset-bottom, 0px)); }

/* 顶部 */
.ml-head { display: flex; align-items: center; gap: 10px; padding: calc(18px + env(safe-area-inset-top, 0px)) 2px 12px; position: relative; }
.ml-head.float { position: absolute; left: 14px; right: 14px; top: 0; z-index: 2; justify-content: space-between; }
.ml-ib { position: relative; flex: none; width: 40px; height: 40px; border-radius: 14px; background: var(--card); color: var(--ink);
  display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 1px 2px rgba(0,0,0,.06); }
.ml-ib svg { width: 21px; height: 21px; }
.ml-ib em { position: absolute; top: -4px; right: -4px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: var(--plum);
  color: #fff; font-style: normal; font-size: 10.5px; display: flex; align-items: center; justify-content: center; box-sizing: border-box; }
.ml-ttl { flex: 1; font-size: 17px; font-weight: 600; letter-spacing: .5px; }
.ml-search { flex: 1; height: 40px; border-radius: 14px; background: var(--oat); display: flex; align-items: center; gap: 8px; padding: 0 12px; color: var(--sub); }
.ml-search svg { width: 18px; height: 18px; flex: none; }
.ml-search input { flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; font-size: 16px; color: var(--ink); }
.ml-search span { font-size: 14px; color: var(--plum); cursor: pointer; }

/* 分类 */
.ml-cats { display: flex; gap: 6px; overflow-x: auto; padding: 2px 0 10px; scrollbar-width: none; }
.ml-cats::-webkit-scrollbar { display: none; }
.ml-cats span { flex: none; height: 34px; padding: 0 14px; border-radius: 12px; display: flex; align-items: center; font-size: 14px; color: var(--sub); cursor: pointer; position: relative; }
.ml-cats span.on { background: var(--card); color: var(--ink); font-weight: 600; box-shadow: 0 1px 2px rgba(0,0,0,.06); }
.ml-cats sup { font-size: 10px; margin-left: 3px; color: var(--plum); font-weight: 600; }
.ml-cats.sm span { height: 32px; font-size: 13.5px; }

/* 标题行 */
.ml-lead { display: flex; align-items: center; justify-content: space-between; padding: 12px 2px 10px; }
.ml-lead b { font-size: 17px; font-weight: 700; letter-spacing: .5px; }
.ml-lead > span { font-size: 12px; color: var(--sub); }
.ml-tools { display: flex; gap: 6px; }
.ml-tools span { display: inline-flex; align-items: center; gap: 5px; height: 30px; padding: 0 11px; border-radius: 11px; background: var(--oat);
  font-size: 12.5px; color: var(--ink); cursor: pointer; }
.ml-tools svg { width: 16px; height: 16px; color: var(--plum); }

/* 今日橱窗 */
.ml-show { display: flex; gap: 10px; overflow-x: auto; margin: 0 -14px; padding: 0 14px 4px; scrollbar-width: none; scroll-snap-type: x mandatory; }
.ml-show::-webkit-scrollbar { display: none; }
.ml-sh { flex: none; width: 76%; border-radius: 24px; overflow: hidden; cursor: pointer; scroll-snap-align: start; display: flex; flex-direction: column; }
.ml-shp { height: 190px; position: relative; overflow: hidden; background: transparent !important; }
.ml-shp img { width: 100%; height: 100%; object-fit: cover; display: block; mix-blend-mode: multiply; }
.ml-shp .ml-nm { font-size: 22px; bottom: 34px; }
.ml-sht { padding: 12px 16px 14px; background: rgba(255,255,255,.42); display: flex; flex-direction: column; gap: 3px; }
.ml-sht span { font-size: 11px; letter-spacing: 1.5px; color: var(--sub); }
.ml-sht b { font-size: 15px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* 商品格 */
.ml-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.ml-it { background: var(--card); border-radius: 20px; overflow: hidden; cursor: pointer; }
.ml-pic, .ml-cpic, .ml-big { position: relative; overflow: hidden; }
.ml-pic { aspect-ratio: 1 / 1; margin: 6px 6px 0; border-radius: 15px; }
.ml-pic.has, .ml-cpic.has, .ml-big.has { background: #fff; }
.ml-pic img, .ml-cpic img, .ml-big img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ml-cat { position: absolute; left: 12px; top: 11px; font-size: 10.5px; letter-spacing: 2px; color: rgba(0,0,0,.55); }
.ml-nm { position: absolute; left: 12px; right: 12px; bottom: 28px; font-size: 17px; font-weight: 600; line-height: 1.25; color: #3a3a3c;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; letter-spacing: .5px; }
.ml-br { position: absolute; left: 12px; bottom: 11px; font-family: Georgia, serif; font-style: italic; font-size: 11.5px; color: rgba(0,0,0,.5); }
.ml-spin { position: absolute; right: 10px; top: 10px; width: 14px; height: 14px; border-radius: 50%; border: 2px solid rgba(0,0,0,.1);
  border-top-color: var(--plum); animation: mlSpin .8s linear infinite; }
.ml-spin.big { position: static; display: inline-block; width: 22px; height: 22px; }
@keyframes mlSpin { to { transform: rotate(360deg); } }
.ml-it-n { font-size: 13.5px; line-height: 1.42; padding: 9px 12px 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 39px; }
.ml-it-f { display: flex; align-items: baseline; justify-content: space-between; padding: 6px 12px 12px; }
.ml-pr { font-family: Georgia, serif; font-size: 18px; color: var(--ink); white-space: nowrap; }
.ml-pr small { font-size: 11.5px; }
.ml-pr.lg { font-size: 26px; }
.ml-pr.lg small { font-size: 14px; }
.ml-sold { font-size: 11px; color: #a1a1a6; }
.ml-empty { text-align: center; padding: 70px 0 40px; font-size: 13.5px; color: var(--sub); display: flex; flex-direction: column; align-items: center; gap: 16px; }
.ml-cta { display: inline-flex; align-items: center; gap: 8px; height: 48px; padding: 0 22px; border-radius: 16px; background: var(--plum); color: #fff;
  font-size: 14.5px; font-weight: 600; cursor: pointer; }
.ml-cta svg { width: 19px; height: 19px; }
.ml-cta.ghost { background: var(--card); color: var(--ink); box-shadow: 0 1px 2px rgba(0,0,0,.06); }
.ml-cta.sm { height: 34px; padding: 0 14px; font-size: 12.5px; border-radius: 12px; background: var(--card); color: var(--ink); margin: 10px auto 0; display: flex; width: fit-content; }
.ml-cta.sm svg { width: 16px; height: 16px; color: var(--plum); }

/* 底部导航 */
.ml-nav { position: absolute; left: 50%; transform: translateX(-50%); bottom: calc(14px + env(safe-area-inset-bottom, 0px)); width: 262px; height: 62px;
  border-radius: 22px; background: rgba(255,255,255,.9); backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px);
  box-shadow: 0 12px 30px -10px rgba(0,0,0,.25), 0 0 0 .5px rgba(0,0,0,.06); display: flex; padding: 0 6px; z-index: 3; }
.ml-nav > div { position: relative; flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
  font-size: 10.5px; color: #a1a1a6; cursor: pointer; }
.ml-nav svg { width: 23px; height: 23px; }
.ml-nav > div.on { color: var(--plum); font-weight: 600; }
.ml-nav > div.on span { color: var(--ink); }
.ml-nav em { position: absolute; top: 7px; left: calc(50% + 7px); min-width: 16px; height: 16px; padding: 0 4px; border-radius: 8px; background: var(--plum);
  color: #fff; font-style: normal; font-size: 10px; display: flex; align-items: center; justify-content: center; box-sizing: border-box; font-weight: 500; }

/* 盒子 / 行 */
.ml-box { background: var(--card); border-radius: 22px; padding: 4px 14px; margin-bottom: 10px; }
.ml-box.pad { padding: 14px; }
.ml-st { font-size: 12px; color: var(--sub); letter-spacing: 1px; margin-bottom: 10px; }
.ml-row { display: flex; align-items: center; justify-content: space-between; }
.ml-row .ml-st { margin: 0; }
.ml-ci, .ml-cl { position: relative; display: flex; align-items: center; gap: 12px; padding: 12px 0; }
.ml-ci + .ml-ci, .ml-cl + .ml-cl { border-top: .5px solid var(--line); }
.ml-ck { flex: none; width: 22px; height: 22px; border-radius: 8px; box-shadow: inset 0 0 0 1.6px #d1d1d6; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.ml-ck.on { box-shadow: none; background: var(--plum); }
.ml-ck svg { width: 16px; height: 16px; }
.ml-cpic { flex: none; width: 74px; height: 74px; border-radius: 16px; }
.ml-cpic .ml-cat, .ml-cpic .ml-br { display: none; }
.ml-cpic .ml-nm { font-size: 13px; left: 8px; right: 8px; bottom: 8px; }
.ml-cm { flex: 1; min-width: 0; }
.ml-cn { font-size: 14px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; cursor: pointer; }
.ml-cs { display: inline-block; font-size: 11.5px; color: var(--sub); background: var(--oat); border-radius: 7px; padding: 2px 8px; margin-top: 5px; }
.ml-cf { display: flex; align-items: center; justify-content: space-between; margin-top: 7px; }
.ml-cf .ml-pr { font-size: 17px; }
.ml-x { font-size: 12.5px; color: var(--sub); }
.ml-cx { position: absolute; right: 0; top: 12px; font-size: 11.5px; color: #aeaeb2; cursor: pointer; }
.ml-qty { display: inline-flex; align-items: center; height: 30px; border-radius: 11px; background: var(--oat); }
.ml-qty b { width: 30px; text-align: center; font-weight: 400; font-size: 16px; cursor: pointer; color: var(--ink); }
.ml-qty em { min-width: 22px; text-align: center; font-style: normal; font-size: 14px; font-family: Georgia, serif; }

/* 结算条 / 购买条 */
.ml-sum { position: absolute; left: 14px; right: 14px; bottom: calc(88px + env(safe-area-inset-bottom, 0px)); display: flex; align-items: center; justify-content: space-between;
  padding: 10px 10px 10px 18px; border-radius: 22px; background: var(--card); box-shadow: 0 10px 26px -12px rgba(0,0,0,.3); z-index: 2; }
.ml-sum-t > small { display: block; font-size: 11px; color: var(--sub); margin-bottom: 1px; }
.ml-go { height: 46px; padding: 0 22px; border-radius: 16px; background: var(--plum); color: #fff; font-size: 15px; font-weight: 600; display: flex; align-items: center; cursor: pointer; }
.ml-go.dim { opacity: .4; pointer-events: none; }
.ml-buy { position: absolute; left: 14px; right: 14px; bottom: calc(14px + env(safe-area-inset-bottom, 0px)); display: flex; gap: 10px; z-index: 2; }
.ml-buy.sum { align-items: center; justify-content: space-between; padding: 10px 10px 10px 18px; border-radius: 22px; background: var(--card);
  box-shadow: 0 10px 26px -12px rgba(0,0,0,.3); }
.ml-buy.sum .ml-b { flex: none; padding: 0 26px; }
.ml-buy.in { position: static; margin-top: 18px; }
.ml-b { flex: 1.4; height: 52px; border-radius: 18px; background: var(--plum); color: #fff; display: flex; align-items: center; justify-content: center;
  font-size: 15px; font-weight: 600; cursor: pointer; box-shadow: 0 10px 22px -12px rgba(111,100,112,.8); }
.ml-b.ghost { flex: 1; background: var(--card); color: var(--ink); box-shadow: 0 0 0 .5px var(--line), 0 8px 20px -14px rgba(0,0,0,.4); }

/* 商品详情 */
.ml-big { aspect-ratio: 1 / 1; border-radius: 0 0 32px 32px; margin: 0 -14px; }
.ml-big .ml-cat { left: 22px; top: auto; bottom: 108px; font-size: 12px; }
.ml-big .ml-nm { left: 22px; right: 22px; bottom: 44px; font-size: 26px; -webkit-line-clamp: 2; }
.ml-big .ml-br { left: 22px; bottom: 20px; font-size: 14px; }
.ml-info { padding: 18px 4px 12px; }
.ml-ip { display: flex; align-items: baseline; justify-content: space-between; }
.ml-in { font-size: 18px; font-weight: 700; line-height: 1.45; margin-top: 8px; letter-spacing: .3px; }
.ml-meta { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.ml-meta span { font-size: 11.5px; color: var(--ink); background: var(--oat); border-radius: 8px; padding: 3px 9px; }
.ml-desc { font-size: 14px; line-height: 1.8; color: #48484a; margin-top: 12px; }
.ml-specs { display: flex; flex-wrap: wrap; gap: 8px; }
.ml-specs span { font-size: 13.5px; padding: 9px 15px; border-radius: 13px; background: var(--oat); cursor: pointer; color: var(--ink); }
.ml-specs span.on { background: var(--plum); color: #fff; }
.ml-svc { display: flex; flex-wrap: wrap; gap: 12px; font-size: 12.5px; color: #48484a; }
.ml-svc span::before { content: ""; display: inline-block; width: 5px; height: 5px; border-radius: 50%; background: #aeaeb2; margin-right: 6px; vertical-align: 2px; }

/* 结算 */
.ml-addr2 { display: flex; gap: 12px; align-items: flex-start; cursor: pointer; }
.ml-addr2 > i { flex: none; width: 34px; height: 34px; border-radius: 12px; background: var(--oat); color: var(--plum); display: flex; align-items: center; justify-content: center; }
.ml-addr2 > i svg { width: 19px; height: 19px; }
.ml-addr2 > div { flex: 1; font-size: 14px; line-height: 1.55; padding-top: 6px; }
.ml-addr2 > div span { color: var(--sub); }
.ml-addr2 textarea { flex: 1; border: 0; outline: 0; background: var(--oat); border-radius: 12px; padding: 8px 10px; font-size: 16px; color: var(--ink); resize: none; font-family: inherit; }
.ml-pm { display: flex; align-items: center; gap: 12px; padding: 11px 0; cursor: pointer; }
.ml-pm + .ml-pm { border-top: .5px solid var(--line); }
.ml-pm > div { flex: 1; min-width: 0; }
.ml-pm b { display: block; font-size: 14.5px; font-weight: 600; }
.ml-pm small { display: block; font-size: 11.5px; color: var(--sub); margin-top: 2px; }
.ml-pm.no small { color: #8e8e93; }
.ml-pm > i { width: 20px; height: 20px; border-radius: 50%; box-shadow: inset 0 0 0 1.6px #d1d1d6; position: relative; flex: none; }
.ml-pm.on > i { box-shadow: inset 0 0 0 6px var(--plum); }
.ml-pmg { width: 34px; height: 34px; border-radius: 12px; display: flex; align-items: center; justify-content: center; flex: none; }
.ml-pmg.bal { background: var(--oat); font-family: Georgia, serif; font-size: 16px; color: var(--plum); }
.ml-pmg.req { background: var(--oat); color: var(--plum); }
.ml-pmg.req svg { width: 19px; height: 19px; }
.ml-pmg.kin { background: linear-gradient(140deg, #fff, #dcdce0); box-shadow: 0 0 0 .5px rgba(0,0,0,.12); }
.ml-pmg.kin .c-avatar { box-shadow: 0 0 0 1.5px rgba(255,255,255,.7); }
.ml-kv { display: flex; justify-content: space-between; align-items: baseline; font-size: 13px; color: #6c6c70; padding: 5px 0; }
.ml-kv.t { color: var(--ink); font-size: 14px; font-weight: 600; border-top: .5px solid var(--line); margin-top: 6px; padding-top: 12px; }

/* 订单 */
.ml-od { background: var(--card); border-radius: 22px; padding: 14px; margin-bottom: 10px; cursor: pointer; }
.ml-oh { display: flex; justify-content: space-between; align-items: center; }
.ml-oh small { font-size: 11.5px; color: #a1a1a6; }
.ml-chip { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; color: var(--ink); }
.ml-chip::before { content: ""; width: 8px; height: 8px; border-radius: 3px; background: var(--st); }
.ml-ol { display: flex; align-items: center; gap: 8px; margin-top: 12px; }
.ml-ol img, .ml-oph { width: 56px; height: 56px; border-radius: 14px; object-fit: cover; flex: none; }
.ml-oph { display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 700; color: rgba(0,0,0,.6); }
.ml-ot { flex: 1; min-width: 0; padding-left: 4px; }
.ml-ot b { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: 13.5px; font-weight: 500; line-height: 1.4; }
.ml-ot small { display: block; font-size: 11.5px; color: var(--sub); margin-top: 3px; }
.ml-of { display: flex; justify-content: space-between; align-items: baseline; margin-top: 12px; font-size: 12px; color: var(--sub); }
.ml-of .ml-pr { font-size: 17px; }
.ml-oa { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; }
.ml-oa b { height: 34px; padding: 0 15px; border-radius: 12px; background: var(--oat); font-weight: 500; font-size: 13px; display: flex; align-items: center; cursor: pointer; }
.ml-oa b.pri { background: var(--plum); color: #fff; }

/* 订单详情头 */
.ml-ohero { margin: 0 -14px 10px; padding: 0 16px 20px; border-radius: 0 0 30px 30px;
  background: linear-gradient(180deg, color-mix(in srgb, var(--st) 55%, #f4f4f5), #f4f4f5); }
.ml-os { font-size: 26px; font-weight: 700; padding: 6px 4px 0; letter-spacing: .5px; }
.ml-os2 { font-size: 13px; color: #6c6c70; padding: 4px 4px 0; }
.ml-trk { display: flex; margin-top: 18px; padding: 0 2px; }
.ml-trk > div { flex: 1; position: relative; display: flex; flex-direction: column; align-items: center; gap: 7px; font-size: 11px; color: #a1a1a6; }
.ml-trk > div::before { content: ""; position: absolute; top: 6px; left: -50%; right: 50%; height: 2px; background: rgba(0,0,0,.12); }
.ml-trk > div:first-child::before { display: none; }
.ml-trk > div.on::before { background: var(--plum); }
.ml-trk i { position: relative; width: 14px; height: 14px; border-radius: 50%; background: #ffffff; box-shadow: inset 0 0 0 2px rgba(0,0,0,.18); z-index: 1; }
.ml-trk > div.on i { background: var(--plum); box-shadow: none; }
.ml-trk > div.cur i { box-shadow: 0 0 0 4px rgba(111,100,112,.2); }
.ml-trk > div.on span { color: var(--ink); font-weight: 600; }
.ml-logs { display: flex; flex-direction: column; }
.ml-lg { display: flex; gap: 12px; position: relative; padding-bottom: 14px; }
.ml-lg:last-child { padding-bottom: 0; }
.ml-lg > i { width: 9px; height: 9px; border-radius: 50%; background: #dcdce0; margin-top: 5px; flex: none; position: relative; z-index: 1; }
.ml-lg.on > i { background: var(--plum); box-shadow: 0 0 0 4px rgba(111,100,112,.16); }
.ml-lg:not(:last-child)::before { content: ""; position: absolute; left: 4px; top: 14px; bottom: 0; width: 1px; background: var(--line); }
.ml-lg b { display: block; font-size: 13.5px; font-weight: 500; line-height: 1.45; color: #6c6c70; }
.ml-lg.on b { color: var(--ink); font-weight: 600; }
.ml-lg small { font-size: 11px; color: #a1a1a6; }

/* 弹层 */
.ml-ov { position: absolute; inset: 0; z-index: 40; background: rgba(46,41,38,0); display: flex; align-items: flex-end; transition: background .22s; }
.ml-ov.in { background: rgba(46,41,38,.28); }
.ml-dlg { width: 100%; background: #f7f8fa; border-radius: 28px 28px 0 0; padding: 8px 18px calc(20px + env(safe-area-inset-bottom, 0px));
  transform: translateY(100%); transition: transform .24s cubic-bezier(.2,.8,.2,1); }
.ml-ov.in .ml-dlg { transform: none; }
.ml-grab { display: block; width: 38px; height: 4px; border-radius: 2px; background: rgba(60,55,51,.16); margin: 0 auto 14px; }
.ml-dt { font-size: 16px; font-weight: 600; text-align: center; color: #2c2c2e; }
.ml-dd { font-size: 13px; color: #8e8e93; text-align: center; margin-top: 6px; }
.ml-pp { display: flex; gap: 18px; overflow-x: auto; padding: 18px 4px 6px; }
.ml-pp > div { flex: none; display: flex; flex-direction: column; align-items: center; gap: 7px; font-size: 12.5px; color: #1c1c1e; cursor: pointer; }

/* v0.55.8：无图商品＝分类线描 + 名称，黑白灰 */
.ml-gly { position: absolute; left: 50%; top: 42%; width: 38%; max-width: 110px; aspect-ratio: 1; transform: translate(-50%, -50%); color: #b8b8bd; pointer-events: none; }
.ml-gly svg { width: 100%; height: 100%; display: block; }
.ml-cpic .ml-gly { display: none; }
.ml-shp .ml-nm, .ml-shp .ml-br, .ml-pic .ml-nm, .ml-pic .ml-br, .ml-cpic .ml-nm, .ml-cpic .ml-br { display: none; }
.ml-shp .ml-gly, .ml-pic .ml-gly { top: 52%; }
.ml-cpic .ml-gly { display: block; width: 58%; top: 50%; }

/* ============================================================
   v0.55.12 商城重做：灰雾底；标题衬线大字；图标按钮一律无框无底（浅灰裸图标）；
   橱窗＝一大两小的拼板；商品＝两列错落瀑布、无卡片框；详情＝满幅大图 + 上叠磨砂信息层。
   磨砂只用在少数固定层（搜索栏 / 拼板字条 / 详情信息层 / 购买条 / 底部导航），不逐块模糊。
   ============================================================ */
.ml-app::before { content: ""; position: absolute; inset: 0; pointer-events: none; z-index: -1;
  background: radial-gradient(260px 220px at 10% 6%, rgba(199,199,204,.85), transparent 70%), radial-gradient(320px 260px at 95% 30%, rgba(174,174,178,.42), transparent 70%),
    radial-gradient(300px 240px at 18% 82%, rgba(209,209,214,.7), transparent 70%); }
.ml-app { --card: rgba(255,255,255,.82); isolation: isolate; }
.ml-screen { background: #ededf0; }

/* 裸图标按钮：无框、无底色，浅灰粗线 */
.ml-bare { position: relative; flex: none; display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px;
  color: #8e8e93; cursor: pointer; font-style: normal; background: none !important; box-shadow: none !important; border: 0 !important; }
.ml-bare svg { width: 26px; height: 26px; }
.ml-bare svg * { stroke-width: 2.4; }
.ml-bare:active { opacity: .5; }
.ml-bare em { position: absolute; top: -2px; right: -4px; min-width: 17px; height: 17px; padding: 0 5px; border-radius: 9px; background: #636366; color: #fff;
  font-style: normal; font-size: 10.5px; display: flex; align-items: center; justify-content: center; box-sizing: border-box; }
.ml-head { gap: 6px; }
.ml-head .ml-bare { margin-left: -6px; }
.ml-head.float .ml-bare:last-child { margin-right: -6px; }

/* 顶部：返回 + 衬线标题；搜索一条磨砂胶囊 */
.ml-hd2 { display: flex; align-items: center; gap: 4px; padding: calc(18px + env(safe-area-inset-top, 0px)) 2px 8px; }
.ml-hd2 .ml-bare { margin-left: -6px; }
.ml-hd2 b { font-family: Georgia, "SereinSerif", serif; font-weight: 400; font-size: 30px; letter-spacing: 3px; color: #2c2c2e; }
.ml-search { margin: 6px 0 4px; height: 46px; border-radius: 23px; background: rgba(255,255,255,.62) !important; box-shadow: inset 0 0 0 1px rgba(255,255,255,.85), 0 10px 22px -18px rgba(60,60,67,.5) !important; }
.ml-search svg * { stroke-width: 2.4; }
.ml-search svg { color: #8e8e93; }

/* 分类：纯文字 + 选中下方一道粗短杠 */
.ml-cats { gap: 2px; padding: 12px 0 8px; }
.ml-cats span { background: none !important; box-shadow: none !important; padding: 0 12px; height: 34px; font-size: 15px; color: #8e8e93; }
.ml-cats span.on { color: #2c2c2e; font-weight: 600; }
.ml-cats span.on::after { content: ""; position: absolute; left: 50%; bottom: 0; width: 16px; height: 3px; margin-left: -8px; border-radius: 2px; background: #636366; }
.ml-cats sup { color: #636366; }

.ml-lead { margin-top: 14px; }
.ml-lead > b { font-family: Georgia, "SereinSerif", serif; font-weight: 400; font-size: 20px; letter-spacing: 2px; color: #2c2c2e; }
.ml-tools span { background: none !important; box-shadow: none !important; color: #8e8e93; padding: 0 4px; }
.ml-tools svg * { stroke-width: 2.3; }

/* 橱窗拼板：一大两小 */
.ml-bento { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 10px 0 6px; }
.ml-fe { position: relative; height: 180px; border-radius: 26px; overflow: hidden; cursor: pointer; background: rgba(255,255,255,.7);
  box-shadow: 0 16px 30px -24px rgba(60,60,67,.6); }
.ml-fe.big { grid-column: 1 / -1; height: 230px; }
.ml-fe .ml-shp { position: absolute; inset: 0; height: auto; background: rgba(246,246,248,.9) !important; }
.ml-fe .ml-shp .ml-gly { top: 40%; width: 30%; }
.ml-fe.big .ml-shp .ml-gly { width: 22%; left: 30%; top: 46%; }
.ml-fe .ml-cat { display: none; }
.ml-fet { position: absolute; left: 10px; right: 10px; bottom: 10px; padding: 10px 13px; border-radius: 18px; display: flex; flex-direction: column; gap: 2px;
  background: rgba(255,255,255,.86); box-shadow: inset 0 0 0 1px rgba(255,255,255,.85); }
.ml-fe.big .ml-fet { left: auto; right: 12px; top: 12px; bottom: 12px; width: 46%; justify-content: flex-end; }
.ml-fet span { font-size: 11px; letter-spacing: 2px; color: #8e8e93; }
.ml-fet b { font-size: 14.5px; font-weight: 600; color: #2c2c2e; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ml-fe.big .ml-fet b { font-family: Georgia, "SereinSerif", serif; font-weight: 400; font-size: 20px; white-space: normal; line-height: 1.35; }

/* 商品：两列错落瀑布，无卡片框 */
.ml-mas { column-count: 2; column-gap: 14px; margin-top: 8px; }
.ml-mas .ml-it { break-inside: avoid; display: block; margin: 0 0 18px; background: none !important; box-shadow: none !important; border-radius: 0; overflow: visible; }
.ml-mas .ml-pic { position: relative; aspect-ratio: 1 / 1; height: auto; border-radius: 22px; overflow: hidden; background: rgba(255,255,255,.72) !important;
  box-shadow: 0 14px 26px -22px rgba(60,60,67,.6); }
.ml-mas .ml-it.tall .ml-pic { aspect-ratio: 4 / 5; }
.ml-mas .ml-pic img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ml-mas .ml-it-n { padding: 10px 4px 0; font-size: 14px; line-height: 1.45; color: #2c2c2e; }
.ml-mas .ml-it-f { display: flex; align-items: center; justify-content: space-between; padding: 4px 0 0 4px; }
.ml-mas .ml-sold { padding: 0 4px; font-size: 11px; color: #aeaeb2; }
.ml-add { width: 32px; height: 32px; margin-right: -4px; }
.ml-add svg { width: 22px; height: 22px; }

/* 通用浅层：列表盒 / 订单卡 —— 半透白，无描边 */
.ml-box, .ml-od, .ml-buy.sum, .ml-sum { background: rgba(255,255,255,.78) !important; box-shadow: 0 14px 28px -24px rgba(60,60,67,.55) !important; border: 0; }
.ml-cta.ghost, .ml-cta.sm, .ml-b.ghost { background: #fff !important; box-shadow: 0 10px 22px -18px rgba(60,60,67,.55) !important; border: 0; }
.ml-go, .ml-b:not(.ghost), .ml-oa b.pri, .ml-cta:not(.ghost):not(.sm) { background: #545458 !important; color: #fff; box-shadow: 0 12px 22px -14px rgba(58,58,60,.7) !important; }
.ml-ck.on, .ml-specs span.on { background: #636366 !important; }
.ml-trk > div.on::before, .ml-trk > div.on i, .ml-lg.on > i { background: #636366 !important; }
.ml-shp, .ml-pic, .ml-cpic, .ml-big { background: rgba(246,246,248,.9) !important; }
.ml-gly { color: #aeaeb2; }
.ml-gly svg * { stroke-width: 2.4; }
.ml-oph { background: rgba(246,246,248,.9) !important; color: #aeaeb2; }
.ml-oph svg { width: 60%; height: 60%; }
.ml-oph svg * { stroke-width: 2.6; }
.ml-ttl { font-family: Georgia, "SereinSerif", serif; font-weight: 400; font-size: 22px; letter-spacing: 2px; }

/* 底部导航：唯一一条磨砂胶囊 */
.ml-nav { background: rgba(255,255,255,.66) !important; backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.9), 0 14px 30px -18px rgba(60,60,67,.5) !important; border: 0; }
.ml-nav svg * { stroke-width: 2.3; }
.ml-nav > div { color: #aeaeb2; }
.ml-nav > div.on { color: #3a3a3c; }

/* 详情：满幅大图 + 上叠磨砂信息层 */
.ml-scroll.ml-det { padding-left: 0; padding-right: 0; }
.ml-scroll.ml-det > .ml-big { height: 400px; width: 100%; aspect-ratio: auto; border-radius: 0; margin: 0; }
.ml-big .ml-nm, .ml-big .ml-br { display: none; }
.ml-big .ml-gly { width: 30%; top: 44%; }
.ml-big .ml-cat { top: auto; bottom: 56px; left: 24px; }
.ml-scroll.ml-det > .ml-cta.sm { margin: -64px 0 0 20px; position: relative; z-index: 2; }
.ml-sheetinfo { position: relative; margin-top: -30px; padding: 22px 16px 10px; border-radius: 30px 30px 0 0; min-height: 60%;
  background: rgba(250,250,251,.8); box-shadow: 0 -12px 30px -24px rgba(60,60,67,.5); }
.ml-sheetinfo .ml-info { padding: 0 4px 6px; }
.ml-sheetinfo .ml-in { font-family: Georgia, "SereinSerif", serif; font-weight: 400; font-size: 24px; letter-spacing: 1px; }
.ml-sheetinfo .ml-box { background: rgba(255,255,255,.7) !important; box-shadow: none !important; }
.ml-head.float { padding-top: calc(18px + env(safe-area-inset-top, 0px)); }
.ml-buy { background: rgba(255,255,255,.62); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); padding: 8px; border-radius: 26px;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.85), 0 14px 30px -18px rgba(60,60,67,.5); }
.ml-buy .ml-b { height: 48px; border-radius: 20px; }
.ml-buy.sum { backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); }

/* v0.55.15：防左右晃动 / 转发 / 为谁购买 */
.ml-scroll { overflow-x: hidden; touch-action: pan-y; overscroll-behavior-x: none; }
.ml-app { max-width: 100%; }
.ml-hr { display: flex; align-items: center; gap: 4px; }
.ml-hfwd { margin-left: auto; margin-right: -6px; }
.ml-who { display: flex; gap: 14px; overflow-x: auto; padding: 12px 2px 2px; scrollbar-width: none; }
.ml-who::-webkit-scrollbar { display: none; }
.ml-who > div { flex: none; width: 56px; display: flex; flex-direction: column; align-items: center; gap: 7px; cursor: pointer; position: relative; }
.ml-who > div > :first-child { width: 46px; height: 46px; border-radius: 50%; opacity: .55; transition: opacity .2s; }
.ml-who > div.on > :first-child { opacity: 1; }
.ml-who em { font-style: normal; font-size: 12px; color: #8e8e93; max-width: 56px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ml-who > div.on em { color: #3a3a3c; font-weight: 600; }
.ml-who > div.on::after { content: ""; position: absolute; top: 0; right: 4px; width: 9px; height: 9px; border-radius: 50%; background: #8a7ba8; box-shadow: 0 0 0 2px #fff; }
.ml-whome { display: flex; align-items: center; justify-content: center; background: rgba(118,118,128,.12); color: #636366; }
.ml-whome svg { width: 22px; height: 22px; }
.ml-whome svg * { stroke-width: 2.2; }
/* v0.55.16：自定义商品编辑页 */
.ml-fpic { position: relative; width: 58%; margin: 4px auto 0; }
.ml-fpic .ml-pic { aspect-ratio: 1 / 1; border-radius: 24px; }
.ml-fpic .ml-nm, .ml-fpic .ml-br { display: none; }
.ml-fpa { display: flex; justify-content: center; gap: 18px; margin: 12px 0 16px; }
.ml-fpa span { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; color: #636366; cursor: pointer; }
.ml-fpa svg { width: 17px; height: 17px; }
.ml-fpa svg * { stroke-width: 2.3; }
.ml-fpa span:active { opacity: .5; }
.ml-fm { display: flex; flex-direction: column; gap: 0; padding-top: 4px !important; padding-bottom: 4px !important; }
.ml-fm label { display: flex; align-items: center; gap: 14px; min-height: 50px; border-bottom: .5px solid rgba(0,0,0,.06); }
.ml-fm label:last-child { border-bottom: 0; }
.ml-fm label.col { flex-direction: column; align-items: stretch; gap: 6px; padding: 12px 0; }
.ml-fm em { font-style: normal; flex: none; width: 36px; font-size: 13px; color: #8e8e93; }
.ml-fm input, .ml-fm textarea { flex: 1; min-width: 0; border: 0; outline: 0; background: none; font-size: 16px; color: #3a3a3c; font-family: inherit; padding: 0; }
.ml-fm textarea { resize: none; line-height: 1.55; }
.ml-fm input::placeholder, .ml-fm textarea::placeholder { color: #c7c7cc; }
/* v0.55.17：右上加号 / 分类加号 / 上新展开 / 分类管理 / 地址弹窗 */
.ml-hd2 .ml-hplus { margin-left: auto; margin-right: -6px; color: #8e8e93; }
.ml-cats .ml-catadd, .ml-specs .ml-spadd { display: inline-flex; align-items: center; justify-content: center; color: #aeaeb2; cursor: pointer; }
.ml-cats .ml-catadd { padding: 0 10px; }
.ml-cats .ml-catadd::after { display: none; }
.ml-catadd svg, .ml-spadd svg { width: 20px; height: 20px; }
.ml-catadd svg *, .ml-spadd svg * { stroke-width: 2.3; }
.ml-specs .ml-spadd { background: none !important; box-shadow: none !important; padding: 9px 10px; }
.ml-scroll { position: relative; }
.ml-pop { position: absolute; right: 14px; z-index: 6; width: 178px; padding: 6px; border-radius: 18px; background: #fff;
  box-shadow: 0 18px 36px -18px rgba(60,60,67,.55), 0 0 0 .5px rgba(0,0,0,.05); animation: mlPop .18s ease-out; transform-origin: top right; }
@keyframes mlPop { from { opacity: 0; transform: scale(.94); } to { opacity: 1; transform: none; } }
.ml-pop > div { display: grid; grid-template-columns: 20px 1fr; column-gap: 10px; align-items: center; padding: 10px 10px; border-radius: 13px; cursor: pointer; }
.ml-pop > div:active { background: rgba(118,118,128,.1); }
.ml-pop > div + div { margin-top: 2px; }
.ml-pop svg { grid-row: auto; width: 19px; height: 19px; color: #636366; }
.ml-pop svg * { stroke-width: 2.2; }
.ml-pop b { font-size: 14px; font-weight: 600; color: #2c2c2e; }
.ml-pop small { font-size: 11.5px; color: #8e8e93; }
.ml-ucs { display: flex; flex-wrap: wrap; gap: 8px; padding: 18px 0 14px; }
.ml-ucs span { display: inline-flex; align-items: center; gap: 4px; height: 36px; padding: 0 14px; border-radius: 13px; background: #fff; font-size: 14px; color: #3a3a3c; cursor: pointer;
  box-shadow: 0 8px 18px -16px rgba(60,60,67,.6); }
.ml-ucs i { display: inline-flex; margin-right: -6px; color: #aeaeb2; }
.ml-ucs i svg { width: 16px; height: 16px; }
.ml-ucs i svg * { stroke-width: 2.3; }
.ml-catin { display: flex; align-items: center; gap: 10px; height: 50px; padding: 0 8px 0 16px; border-radius: 18px; background: #fff; }
.ml-catin input { flex: 1; min-width: 0; border: 0; outline: 0; background: none; font-size: 16px; color: #2c2c2e; }
.ml-catin input::placeholder { color: #c7c7cc; }
.ml-catin span { height: 36px; padding: 0 16px; border-radius: 13px; background: #545458; color: #fff; font-size: 14px; font-weight: 600; display: flex; align-items: center; cursor: pointer; }
.ml-adbody { padding-top: 14px; max-height: 72vh; overflow-y: auto; }
.ml-adls { display: flex; flex-direction: column; gap: 8px; margin-bottom: 12px; }
.ml-adit { display: flex; align-items: center; gap: 10px; padding: 12px 10px 12px 16px; border-radius: 18px; background: #fff; cursor: pointer; }
.ml-adit > div { flex: 1; min-width: 0; }
.ml-adit b { display: flex; align-items: center; gap: 8px; font-size: 14.5px; font-weight: 600; color: #2c2c2e; }
.ml-adit b em { font-style: normal; font-weight: 400; font-size: 13px; color: #8e8e93; }
.ml-adit small { display: block; margin-top: 4px; font-size: 12.5px; color: #636366; line-height: 1.45; }
.ml-adtag { height: 19px; padding: 0 7px; border-radius: 7px; background: rgba(118,118,128,.12); color: #636366; font-size: 11px; font-weight: 500; display: inline-flex; align-items: center; }
.ml-adit > i { flex: none; display: flex; color: #c7c7cc; padding: 4px; }
.ml-adit > i svg { width: 17px; height: 17px; }
.ml-adit > i svg * { stroke-width: 2.3; }
.ml-adfm { background: #fff; border-radius: 20px; padding: 2px 16px; }
.ml-adfm label { display: flex; align-items: center; gap: 12px; min-height: 50px; border-bottom: .5px solid rgba(0,0,0,.06); }
.ml-adfm label:last-child { border-bottom: 0; }
.ml-adfm em { font-style: normal; flex: none; width: 58px; font-size: 13px; color: #8e8e93; }
.ml-adfm input { flex: 1; min-width: 0; border: 0; outline: 0; background: none; font-size: 16px; color: #2c2c2e; padding: 0; }
.ml-adfm input::placeholder { color: #c7c7cc; }
.ml-adbt { display: flex; gap: 10px; margin-top: 14px; }
.ml-adbt .ml-b { height: 50px; border-radius: 18px; flex: 1; gap: 6px; font-size: 15px; }
.ml-adbt .ml-b svg { width: 17px; height: 17px; }
.ml-adbt .ml-spin { position: static; }
/* v0.55.18：分类弹层压灰 + 不再展示确认 */
.ml-ucs span.on { background: rgba(118,118,128,.14); color: #8e8e93; box-shadow: none; }
.ml-dlg { position: relative; }
.ml-ask { position: absolute; inset: 0; z-index: 3; display: flex; align-items: center; justify-content: center; padding: 0 22px; border-radius: 28px 28px 0 0;
  background: rgba(247,248,250,.72); animation: mlPop .18s ease-out; }
.ml-askc { width: 100%; max-width: 300px; padding: 20px 18px 16px; border-radius: 22px; background: #fff; text-align: center;
  box-shadow: 0 18px 36px -18px rgba(60,60,67,.55), 0 0 0 .5px rgba(0,0,0,.05); }
.ml-askc b { display: block; font-size: 16px; font-weight: 600; color: #2c2c2e; }
.ml-askc small { display: block; margin-top: 6px; font-size: 12.5px; color: #8e8e93; line-height: 1.5; }
.ml-askb { display: flex; gap: 10px; margin-top: 16px; }
.ml-askb span { flex: 1; height: 44px; border-radius: 15px; background: rgba(118,118,128,.1); color: #3a3a3c; font-size: 14.5px; font-weight: 600;
  display: flex; align-items: center; justify-content: center; cursor: pointer; }
.ml-askb span.pri { background: #545458; color: #fff; }
/* v0.55.22：订单左滑删除 / 商品管理 / 页面级确认 */
.ml-sw { position: relative; margin-bottom: 10px; border-radius: 22px; overflow: hidden; }
.ml-sw > .ml-od { position: relative; z-index: 1; margin-bottom: 0; transition: transform .22s ease; touch-action: pan-y; }
.ml-swdel { position: absolute; right: 0; top: 0; bottom: 0; width: 96px; padding-left: 12px; display: flex; align-items: center; justify-content: center;
  background: #545458; color: #fff; font-size: 14px; font-weight: 600; cursor: pointer; }
.ml-askp { position: absolute; z-index: 45; border-radius: 0; background: rgba(46,41,38,.28); }
.ml-mgb { padding-top: 14px; }
.ml-mgb .ml-adbt { margin: 0 0 14px; }
.ml-mgls { max-height: 52vh; overflow-y: auto; display: flex; flex-direction: column; gap: 8px; padding-bottom: 4px; }
.ml-mgit { display: flex; align-items: center; gap: 12px; padding: 10px 10px 10px 10px; border-radius: 18px; background: #fff; }
.ml-mgit .ml-cpic { width: 46px; height: 46px; flex: none; border-radius: 12px; }
.ml-mgit .ml-cpic .ml-cat, .ml-mgit .ml-cpic .ml-nm, .ml-mgit .ml-cpic .ml-br { display: none; }
.ml-mgit .ml-cpic .ml-gly { width: 60%; }
.ml-mgit > div { flex: 1; min-width: 0; }
.ml-mgit b { display: block; font-size: 14px; font-weight: 600; color: #2c2c2e; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ml-mgit small { display: block; margin-top: 3px; font-size: 12px; color: #8e8e93; }
.ml-mgit > i { flex: none; display: flex; padding: 6px; color: #aeaeb2; cursor: pointer; }
.ml-mgit > i svg { width: 18px; height: 18px; }
.ml-mgit > i svg * { stroke-width: 2.3; }
.ml-mgback { display: inline-flex; align-items: center; gap: 4px; margin-left: -4px; font-size: 14px; font-weight: 600; color: #3a3a3c; cursor: pointer; }
.ml-mgback svg { width: 22px; height: 22px; }
.ml-mgback svg * { stroke-width: 2.3; }
.ml-mgnone { text-align: center; padding: 36px 0 30px; font-size: 13.5px; color: #8e8e93; }
.ml-sw > .ml-od { background: #f9f9fa !important; }
.ml-swdel { opacity: 0; transition: opacity .15s; }
.ml-sw.drag .ml-swdel, .ml-sw.open .ml-swdel { opacity: 1; }
