/* 移动端：仓库与现场用。只保留高频操作，不是电脑端的缩小版。
   点击区不小于 44px，单列布局，单页必填不超过 10 项（说明书 12.1）。 */
.m-app{display:none;flex-direction:column;height:100%;background:var(--paper)}
body.mobile .shell{display:none}
body.mobile .m-app{display:flex}

.m-top{background:var(--nav-bg);color:#fff;padding:calc(env(safe-area-inset-top,0px) + 12px) 16px 12px;
  display:flex;align-items:center;gap:10px;flex:none}
.m-top .t{font-size:16px;font-weight:600;flex:1;min-width:0;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.m-top .back{font-size:20px;line-height:1;width:28px;margin-left:-6px}
.m-top .sub{font-size:11.5px;color:#AEB8D2;margin-top:2px}

.m-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:12px 12px 16px}
.m-tabs{display:flex;background:var(--surface);border-top:1px solid var(--line);flex:none;
  padding-bottom:env(safe-area-inset-bottom,0px)}
.m-tabs button{flex:1;padding:9px 0 7px;display:flex;flex-direction:column;align-items:center;
  gap:3px;color:var(--ink-3);font-size:11px}
.m-tabs button .ic{font-size:19px;line-height:1}
.m-tabs button.on{color:var(--brand);font-weight:600}
.m-tabs button.on .ic{transform:scale(1.06)}

.m-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;
  padding:13px 14px;margin-bottom:10px;box-shadow:var(--shadow)}
.m-card .h{display:flex;align-items:flex-start;gap:8px}
.m-card .h b{font-size:14.5px;flex:1;min-width:0;line-height:1.4}
.m-card .meta{font-size:12px;color:var(--ink-2);margin-top:5px;line-height:1.6}
.m-card .foot{display:flex;gap:8px;margin-top:11px}
.m-card.crit{border-left:3px solid var(--crit)}
.m-card.warn{border-left:3px solid var(--signal)}
.m-card.info{border-left:3px solid var(--accent)}

.m-btn{border:1px solid var(--line-2);background:var(--surface);color:var(--brand);
  border-radius:9px;padding:11px 16px;font-size:14.5px;min-height:44px;flex:1;
  display:inline-flex;align-items:center;justify-content:center;gap:6px}
.m-btn.primary{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:500}
.m-btn.big{width:100%;min-height:50px;font-size:15.5px;margin-bottom:10px}
.m-btn:disabled{opacity:.5}
.m-btn.ghost{border-color:transparent;color:var(--ink-2)}

.m-fld{margin-bottom:13px}
.m-fld label{display:block;font-size:12.5px;color:var(--ink-2);margin-bottom:5px}
.m-fld label .req{color:var(--crit)}
.m-fld input,.m-fld select,.m-fld textarea{width:100%;min-height:44px;font-size:15px;
  border-radius:9px;padding:10px 12px;border:1px solid var(--line-2);background:var(--surface)}
.m-fld textarea{min-height:76px}
.m-fld .hint{font-size:11.5px;color:var(--ink-3);margin-top:4px;line-height:1.5}
.m-fld .hint.bad{color:var(--crit)}
.m-num{display:flex;align-items:center;gap:0}
.m-num button{width:44px;height:44px;border:1px solid var(--line-2);background:var(--surface);
  font-size:20px;color:var(--brand)}
.m-num button:first-child{border-radius:9px 0 0 9px}
.m-num button:last-child{border-radius:0 9px 9px 0}
.m-num input{border-radius:0;text-align:center;font-family:var(--mono);border-left:none;
  border-right:none}

.m-scan{background:var(--brand);color:#fff;border-radius:12px;padding:18px;text-align:center;
  margin-bottom:12px}
.m-scan .ic{font-size:34px;line-height:1;margin-bottom:6px}
.m-scan .t{font-size:15px;font-weight:600}
.m-scan .s{font-size:12px;color:#AEB8D2;margin-top:4px;line-height:1.5}

.m-kv{display:flex;justify-content:space-between;gap:10px;padding:8px 0;
  border-bottom:1px solid var(--line);font-size:13.5px}
.m-kv:last-child{border-bottom:none}
.m-kv .k{color:var(--ink-2);flex:none}
.m-kv .v{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}
.m-kv .v.txt{font-family:var(--sans)}

.m-empty{text-align:center;color:var(--ink-3);padding:44px 16px;font-size:13.5px;line-height:1.7}
.m-sec{font-size:12px;color:var(--ink-3);margin:14px 2px 8px;letter-spacing:.05em}
.m-photo{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.m-photo .ph{width:66px;height:66px;border-radius:9px;object-fit:cover;border:1px solid var(--line)}
.m-photo .add{width:66px;height:66px;border-radius:9px;border:1px dashed var(--line-2);
  display:grid;place-items:center;color:var(--ink-3);font-size:22px}
.m-badge{display:inline-block;padding:2px 8px;border-radius:99px;font-size:11px;
  border:1px solid var(--line-2);color:var(--ink-2)}
.m-badge.crit{border-color:var(--crit);color:var(--crit)}
.m-badge.warn{border-color:var(--signal);color:var(--signal)}
.m-badge.ok{border-color:var(--ok);color:var(--ok)}
.m-switch{display:flex;background:var(--surface-3);border-radius:9px;padding:3px;margin-bottom:12px}
.m-switch button{flex:1;padding:9px;border-radius:7px;font-size:13.5px;color:var(--ink-2)}
.m-switch button.on{background:var(--surface);color:var(--brand);font-weight:600;
  box-shadow:0 1px 3px rgba(20,45,89,.12)}
