/* 华丰 ERP 移动端样式 — 移动优先、浅色主题 */
* { margin: 0; padding: 0; box-sizing: border-box; -webkit-tap-highlight-color: transparent; }

:root {
  --primary: #1E88E5;
  --primary-dark: #1565C0;
  --bg: #F5F6F8;
  --card: #FFFFFF;
  --text: #263238;
  --text-sub: #78909C;
  --border: #ECEFF1;
  --ok: #43A047;
  --warn: #FB8C00;
  --info: #1E88E5;
  --danger: #E53935;
}

html, body { height: 100%; overflow-x: hidden; }
body {
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;
  background: var(--bg); color: var(--text); font-size: 15px;
  max-width: 480px; margin: 0 auto; position: relative;
  display: flex; flex-direction: column;
}

/* ---------- 头部 ---------- */
#header {
  display: none; align-items: center; height: 48px;
  background: var(--primary); color: #fff; padding: 0 12px;
  position: sticky; top: 0; z-index: 100; flex-shrink: 0;
}
.hd-back { font-size: 28px; line-height: 1; padding: 0 10px 2px 0; cursor: pointer; }
.hd-title { flex: 1; text-align: center; font-size: 17px; font-weight: 500; }
.hd-spacer { width: 24px; }

#content { flex: 1; overflow-y: auto; padding-bottom: 70px; }
.page { padding: 12px; }

/* ---------- 登录 ---------- */
.login-wrap { padding: 64px 32px; text-align: center; }
.logo-circle {
  width: 84px; height: 84px; margin: 0 auto 16px; border-radius: 22px;
  background: linear-gradient(135deg, var(--primary), #42A5F5);
  color: #fff; font-size: 26px; font-weight: 700; letter-spacing: 1px;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 8px 24px rgba(30,136,229,.35);
}
.login-title { font-size: 20px; margin-bottom: 32px; color: var(--text); }
.login-form { text-align: left; }
.field { margin-bottom: 16px; }
.field label { display: block; font-size: 13px; color: var(--text-sub); margin-bottom: 6px; }
.field input {
  width: 100%; height: 46px; border: 1px solid var(--border); border-radius: 10px;
  padding: 0 14px; font-size: 15px; outline: none; background: #fff;
}
.field input:focus { border-color: var(--primary); }
.btn-primary {
  width: 100%; height: 46px; margin-top: 8px; border: 0; border-radius: 10px;
  background: var(--primary); color: #fff; font-size: 16px; cursor: pointer;
}
.btn-primary:active { background: var(--primary-dark); }
.login-tip { text-align: center; font-size: 12px; color: var(--text-sub); margin-top: 14px; }

/* ---------- 工作台 ---------- */
.user-banner {
  display: flex; align-items: center; gap: 12px; padding: 14px;
  background: linear-gradient(135deg, var(--primary), #42A5F5);
  border-radius: 14px; color: #fff; margin-bottom: 12px;
}
.user-banner.big { margin-top: 12px; }
.avatar {
  width: 44px; height: 44px; border-radius: 50%; background: rgba(255,255,255,.25);
  display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: 600;
}
.ub-name { font-size: 16px; font-weight: 600; }
.ub-sub { font-size: 12px; opacity: .85; margin-top: 2px; }

.stat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 4px; }
.stat-card { background: var(--card); border-radius: 12px; padding: 14px; }
.sc-label { font-size: 12px; color: var(--text-sub); }
.sc-value { font-size: 17px; font-weight: 700; margin-top: 6px; }
.sc-value.warn { color: var(--warn); }
.sc-value.info { color: var(--info); }
.sc-value.ok { color: var(--ok); }

.section { background: var(--card); border-radius: 12px; padding: 14px; margin-top: 12px; }
.sec-title { font-size: 14px; font-weight: 600; margin-bottom: 12px; }

.quick-grid { display: grid; grid-template-columns: repeat(4, 1fr); }
.quick-item { text-decoration: none; text-align: center; padding: 6px 0; }
.qi-icon { font-size: 26px; }
.qi-label { font-size: 12px; color: var(--text-sub); margin-top: 6px; }

.chart { display: flex; align-items: flex-end; gap: 10px; height: 80px; padding: 0 6px; }
.bar { flex: 1; background: linear-gradient(180deg, #42A5F5, var(--primary)); border-radius: 4px 4px 0 0; min-height: 8px; }

.todo-item { display: flex; align-items: center; gap: 8px; padding: 10px 0; border-bottom: 1px solid var(--border); }
.todo-item:last-child { border-bottom: 0; }
.todo-tag { font-size: 11px; color: var(--info); background: #E3F2FD; border-radius: 4px; padding: 2px 6px; flex-shrink: 0; }
.todo-title { flex: 1; font-size: 13px; }
.todo-time { font-size: 12px; color: var(--text-sub); }

/* ---------- 通用卡片 / 搜索 / 筛选 ---------- */
.card { background: var(--card); border-radius: 12px; padding: 14px; margin-bottom: 10px; display: block; text-decoration: none; color: inherit; }
.search-bar { display: flex; gap: 8px; margin-bottom: 10px; }
.search-bar input {
  flex: 1; height: 40px; border: 1px solid var(--border); border-radius: 10px;
  padding: 0 12px; font-size: 14px; outline: none; background: #fff;
}
.search-bar input:focus { border-color: var(--primary); }
.search-bar button {
  width: 64px; height: 40px; border: 0; border-radius: 10px;
  background: var(--primary); color: #fff; font-size: 14px; cursor: pointer;
}
.filter-tabs { display: flex; gap: 8px; margin-bottom: 12px; overflow-x: auto; }
.ft {
  padding: 6px 14px; border-radius: 16px; background: #fff; color: var(--text-sub);
  font-size: 13px; white-space: nowrap; cursor: pointer; border: 1px solid var(--border);
}
.ft.active { background: var(--primary); color: #fff; border-color: var(--primary); }

/* ---------- 订单 ---------- */
.oc-top { display: flex; justify-content: space-between; align-items: center; }
.oc-id { font-weight: 600; font-size: 14px; }
.oc-cust { color: var(--text-sub); font-size: 13px; margin-top: 8px; }
.oc-bottom { display: flex; justify-content: space-between; margin-top: 10px; font-size: 12px; color: var(--text-sub); }
.oc-amount { font-weight: 700; font-size: 15px; color: var(--text); }
.st { font-size: 11px; padding: 3px 8px; border-radius: 10px; }
.st-ok { color: var(--ok); background: #E8F5E9; }
.st-warn { color: var(--warn); background: #FFF3E0; }
.st-info { color: var(--info); background: #E3F2FD; }
.st-gray { color: var(--text-sub); background: #ECEFF1; }

.detail-row { display: flex; justify-content: space-between; align-items: center; padding: 8px 0; font-size: 14px; }
.detail-row + .detail-row { border-top: 1px solid var(--border); }
.dr-label { color: var(--text-sub); font-size: 13px; }
.detail-row.total { border-top: 1px solid var(--border); }
.amount-big { font-size: 17px; font-weight: 700; color: var(--danger); }
.strong { font-weight: 600; }

.goods-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.goods-table th { color: var(--text-sub); font-weight: 500; padding: 6px 2px; border-bottom: 1px solid var(--border); }
.goods-table td { padding: 10px 2px; border-bottom: 1px solid var(--border); vertical-align: top; }
.ta-r { text-align: right; }
.g-name { line-height: 1.4; }
.g-sn { color: var(--text-sub); font-size: 11px; margin-top: 2px; }

/* ---------- 商品 ---------- */
.product-card { display: flex; gap: 12px; }
.pc-thumb {
  width: 52px; height: 52px; border-radius: 10px; flex-shrink: 0;
  background: #E3F2FD; color: var(--primary); font-size: 20px; font-weight: 600;
  display: flex; align-items: center; justify-content: center;
}
.pc-main { flex: 1; min-width: 0; }
.pc-name { font-size: 14px; font-weight: 500; line-height: 1.4; }
.pc-name.big { font-size: 16px; font-weight: 600; }
.pc-sn { color: var(--text-sub); font-size: 12px; margin-top: 4px; }
.pc-bottom { display: flex; justify-content: space-between; margin-top: 8px; align-items: baseline; }
.pc-price { color: var(--danger); font-weight: 700; font-size: 15px; }
.pc-stock { font-size: 12px; color: var(--ok); }
.pc-stock.low { color: var(--danger); }

.pt-badge { font-size: 11px; padding: 2px 8px; border-radius: 4px; flex-shrink: 0; margin-right: 8px; }
.b-cust { background: #E3F2FD; color: var(--info); }
.b-sup { background: #E8F5E9; color: var(--ok); }
.partner-card .oc-top { justify-content: flex-start; }

/* ---------- 报表 ---------- */
.report-month { text-align: center; color: var(--text-sub); font-size: 13px; padding: 4px 0 10px; }
.pie-row { display: flex; align-items: center; gap: 8px; padding: 7px 0; font-size: 13px; }
.pie-dot { width: 10px; height: 10px; border-radius: 3px; flex-shrink: 0; }
.pie-name { flex: 1; }
.pie-val { font-weight: 600; }
.pie-pct { color: var(--text-sub); width: 48px; text-align: right; }

/* ---------- 我的 ---------- */
.menu-list { background: var(--card); border-radius: 12px; overflow: hidden; margin-top: 12px; }
.menu-item {
  display: flex; justify-content: space-between; align-items: center;
  padding: 15px 14px; font-size: 14px; cursor: pointer;
}
.menu-item + .menu-item { border-top: 1px solid var(--border); }
.menu-item .arrow { color: #C0C6CC; font-size: 18px; }
.btn-logout {
  width: 100%; height: 46px; margin-top: 16px; border: 0; border-radius: 12px;
  background: #fff; color: var(--danger); font-size: 15px; cursor: pointer;
}

/* ---------- 底部导航 ---------- */
#tabbar {
  display: none; justify-content: space-around; align-items: center;
  position: fixed; bottom: 0; left: 50%; transform: translateX(-50%);
  width: 100%; max-width: 480px; height: 58px;
  background: #fff; border-top: 1px solid var(--border); z-index: 100;
}
.tab { display: flex; flex-direction: column; align-items: center; gap: 2px; text-decoration: none; color: var(--text-sub); font-size: 11px; padding: 6px 16px; }
.tab .t-icon { font-size: 20px; line-height: 22px; }
.tab .t-apps { display: inline-flex; }
.tab.active { color: var(--primary); font-weight: 600; }

/* ---------- 应用中心 ---------- */
.cat-tabs {
  display: flex; background: #fff; position: sticky; top: 0; z-index: 10;
  border-bottom: 1px solid var(--border);
}
.cat-tab {
  flex: 1; text-align: center; padding: 13px 0 11px; font-size: 15px;
  color: var(--text-sub); cursor: pointer; position: relative; white-space: nowrap;
}
.cat-tab.active { color: var(--primary); font-weight: 600; }
.cat-tab.active::after {
  content: ""; position: absolute; left: 50%; transform: translateX(-50%);
  bottom: 0; width: 56px; height: 3px; border-radius: 2px; background: var(--primary);
}
.app-section { padding: 16px 14px 24px; }
.app-section .sec-title { font-size: 17px; font-weight: 600; margin-bottom: 18px; }
.app-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px 6px; }
.app-item {
  display: flex; flex-direction: column; align-items: center; gap: 8px;
  text-decoration: none; color: var(--text); cursor: pointer; -webkit-tap-highlight-color: transparent;
}
.app-item:active { opacity: .7; }
.ai-icon {
  width: 46px; height: 46px; border-radius: 12px; display: flex;
  align-items: center; justify-content: center; font-size: 30px; line-height: 1;
}
.ai-label { font-size: 12px; color: var(--text); text-align: center; }

/* ---------- 状态 ---------- */
.loading, .empty { text-align: center; color: var(--text-sub); padding: 48px 0; font-size: 13px; }
.toast {
  position: fixed; left: 50%; top: 45%; transform: translate(-50%, 0);
  background: rgba(38,50,56,.9); color: #fff; font-size: 13px;
  padding: 10px 20px; border-radius: 8px; opacity: 0; transition: opacity .3s; z-index: 999; pointer-events: none;
}
.toast.show { opacity: 1; }

/* ---------- 客户/供应商列表（截图样式） ---------- */
.partners-page { padding-bottom: 90px; }
.csearch-bar {
  display: flex; align-items: center; gap: 8px;
  background: #F2F4F6; border-radius: 20px;
  margin: 10px 12px 0; padding: 9px 14px;
}
.csearch-bar .cs-icon { font-size: 14px; opacity: .55; }
.csearch-bar input {
  flex: 1; border: 0; background: transparent; outline: none;
  font-size: 14px; color: var(--text);
}
.cfilter-bar {
  display: flex; background: var(--card); margin-top: 10px;
  border-bottom: 1px solid var(--border);
  position: sticky; top: 44px; z-index: 5;
}
.cf-item {
  flex: 1; text-align: center; padding: 11px 0;
  font-size: 14px; color: var(--text); display: flex;
  align-items: center; justify-content: center; gap: 4px;
}
.cf-item.picked { color: var(--primary); }
.cf-item .cf-arrow { font-style: normal; font-size: 12px; color: #B0BEC5; margin-top: -4px; }
.cf-item.picked .cf-arrow { color: var(--primary); }
.clist-card { background: var(--card); padding: 13px 14px; border-bottom: 1px solid var(--border); }
.cl-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.cl-name { font-size: 15px; font-weight: 600; color: var(--text); line-height: 1.4; }
.cl-status { font-size: 13px; color: var(--ok); flex-shrink: 0; }
.cl-status.off { color: #9E9E9E; }
.cl-bottom { display: flex; justify-content: space-between; align-items: center; margin-top: 8px; }
.cl-amount { font-size: 13px; color: var(--text-sub); }
.cl-tel { font-size: 13px; color: var(--primary); text-decoration: none; display: flex; align-items: center; gap: 4px; }
.cl-tel-ic { font-size: 12px; }
.float-add {
  position: fixed; right: 18px; bottom: 76px; z-index: 20;
  width: 48px; height: 48px; border-radius: 50%;
  background: var(--primary); color: #fff;
  font-size: 26px; line-height: 46px; text-align: center;
  box-shadow: 0 4px 12px rgba(30,136,229,.4); cursor: pointer;
  user-select: none;
}
.float-add:active { transform: scale(.94); }

/* ---------- 底部弹层选择器 ---------- */
.popup-mask {
  position: fixed; inset: 0; background: rgba(0,0,0,.35);
  z-index: 100; opacity: 0; transition: opacity .25s;
}
.popup-mask.show { opacity: 1; }
.popup-sheet {
  position: absolute; left: 0; right: 0; bottom: 0;
  background: #fff; border-radius: 14px 14px 0 0;
  padding: 16px 0 calc(10px + env(safe-area-inset-bottom));
  transform: translateY(100%); transition: transform .25s;
  max-height: 60vh; overflow-y: auto;
}
.popup-mask.show .popup-sheet { transform: translateY(0); }
.ps-title { text-align: center; font-size: 14px; color: var(--text-sub); padding-bottom: 6px; }
.pop-item { padding: 13px 20px; font-size: 15px; color: var(--text); display: flex; justify-content: space-between; }
.pop-item.on { color: var(--primary); font-weight: 600; }
.pop-item .pi-check { font-weight: 600; }
.pop-cancel {
  margin: 8px 14px 0; text-align: center; padding: 12px 0;
  background: #F2F4F6; border-radius: 10px; font-size: 15px; color: var(--text);
}

/* ---------- 审核/反审核确认弹窗（参考外部 ERP 大按钮配色） ---------- */
.odp-tip { text-align: center; font-size: 13px; color: var(--text-sub); padding: 2px 0 16px; }
.odp-btns { display: flex; gap: 12px; padding: 0 16px 6px; }
.odp-b { flex: 1; height: 44px; line-height: 44px; text-align: center; border-radius: 4px; font-size: 16px; cursor: pointer; }
.odp-b.teal { background: #1ec8c2; color: #fff; font-weight: 600; }
.odp-b.orange { background: #ff9d27; color: #fff; font-weight: 600; }
.odp-b.gray { background: #f7f8f9; border: 1px solid #e5e6e8; color: #9aa0a6; }

/* ---------- 添加客户/供应商表单 ---------- */
.cadd-page { background: #fff; padding-bottom: 90px; }
.form-line {
  display: flex; align-items: center; justify-content: space-between;
  padding: 15px 14px; border-bottom: 1px solid var(--border);
  background: #fff;
}
.form-line.tap { cursor: pointer; }
.form-line.tap:active { background: #FAFBFC; }
.fl-label { font-size: 15px; color: var(--text); flex-shrink: 0; }
.fl-label.small { font-size: 14px; color: var(--text-sub); }
.fl-req { font-style: normal; color: #E53935; margin-left: 2px; }
.fl-input {
  flex: 1; border: 0; outline: none; text-align: right;
  font-size: 15px; color: var(--text); background: transparent;
  margin-left: 12px;
}
.fl-input::placeholder { color: #C3CBD3; }
.fl-input.date { text-align: right; }
.fl-static { font-size: 15px; color: var(--text); }
.fl-value { font-size: 15px; color: #C3CBD3; display: flex; align-items: center; }
.fl-value.dark { color: var(--text); }
.fl-arrow { font-style: normal; font-size: 18px; color: #C3CBD3; margin-left: 6px; line-height: 1; }
.form-gap { height: 10px; background: var(--bg); }
.inv-block { background: #FAFBFC; }
.inv-block .form-line { background: #FAFBFC; }
.bottom-bar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 30;
  display: flex; align-items: center; gap: 10px;
  background: #fff; border-top: 1px solid var(--border);
  padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
}
.bb-btn {
  flex: 1; height: 42px; border-radius: 8px; font-size: 15px;
  border: 1px solid #D6DBE0; background: #fff; color: var(--text);
}
.bb-btn.primary { background: var(--primary); border-color: var(--primary); color: #fff; }
.bb-btn:disabled { opacity: .6; }
.bb-link { font-size: 15px; color: var(--primary); padding: 0 6px; flex-shrink: 0; }

/* 联系人弹层字段 */
.ps-field { display: flex; align-items: center; padding: 12px 20px; border-bottom: 1px solid var(--border); }
.ps-field label { font-size: 14px; color: var(--text); width: 80px; flex-shrink: 0; }
.ps-field input {
  flex: 1; border: 0; outline: none; font-size: 15px; color: var(--text);
  text-align: right; background: transparent;
}
.ps-field input::placeholder { color: #C3CBD3; }
.pop-cancel.ghost { background: #fff; color: var(--text-sub); margin-top: 0; border-top: none; }

/* ---------- 销售/采购记录列表（截图样式） ---------- */
.osearch-bar { display: flex; align-items: center; gap: 10px; padding: 8px 12px 4px; }
.os-input {
  flex: 1; display: flex; align-items: center; gap: 6px;
  background: #F2F4F6; border-radius: 20px; height: 38px; padding: 0 14px;
}
.os-input input { flex: 1; border: 0; outline: none; background: transparent; font-size: 14px; color: var(--text); }
.os-plus { font-size: 28px; color: var(--text); font-weight: 300; padding: 0 6px; cursor: pointer; user-select: none; }
.ofilter-bar {
  display: flex; align-items: center; background: #fff;
  border-bottom: 1px solid var(--border); position: relative; z-index: 5;
}
.ofilter-bar .cf-item { flex: none; padding: 10px 12px; font-size: 14px; }
.ofilter-bar .cf-item:first-child { padding-left: 14px; }
.ofilter-bar .of-more { margin-left: auto; padding-right: 16px; }
.ofilter-bar .cf-item.picked { color: var(--primary); }
.odate-panel { background: #fff; padding: 10px 14px 18px; border-bottom: 1px solid var(--border); box-shadow: 0 6px 10px -8px rgba(0,0,0,.12); }
.od-sec { font-size: 14px; color: var(--text); margin: 10px 0; font-weight: 500; }
.od-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.od-btn {
  text-align: center; padding: 9px 0; background: #F2F4F6; border-radius: 6px;
  font-size: 13px; color: var(--text); border: 1px solid transparent; cursor: pointer; user-select: none;
}
.od-btn.on { background: #fff; border-color: var(--primary); color: var(--primary); }
.od-custom {
  text-align: center; padding: 10px 0; background: #F2F4F6; border-radius: 6px;
  font-size: 14px; color: var(--text); cursor: pointer; user-select: none;
}
.oc-range { display: flex; align-items: center; gap: 10px; padding: 14px 16px 4px; }
.oc-range input {
  flex: 1; height: 38px; border: 1px solid var(--border); border-radius: 8px;
  padding: 0 10px; font-size: 14px; color: var(--text); background: #fff;
}
.oc-range span { color: var(--text-sub); font-size: 13px; }
.pop-confirm {
  margin: 14px 14px 0; text-align: center; padding: 12px 0;
  background: var(--primary); border-radius: 10px; font-size: 15px; color: #fff; cursor: pointer;
}
.osum-bar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 15;
  display: flex; align-items: center; gap: 14px;
  padding: 13px 16px calc(13px + env(safe-area-inset-bottom));
  background: #E0F2F1; font-size: 14px; color: var(--text);
}
.osum-bar i { font-style: normal; }
.osum-bar .osb-amt, .osum-bar .osb-qty { color: var(--primary); }
.orders-page { padding-bottom: 70px; }
.oc-pay { margin-top: 8px; font-size: 12px; display: inline-block; padding: 2px 8px; border-radius: 4px; }

/* ---------- 自定义时间滚轮选择弹窗 ---------- */
.dp-sheet { height: 56vh; max-height: none; overflow: hidden; display: flex; flex-direction: column; padding-top: 6px; }
.dp-head { display: flex; justify-content: space-between; padding: 14px 20px 6px; font-size: 16px; }
.dp-cancel { color: var(--text); cursor: pointer; }
.dp-ok { color: var(--primary); cursor: pointer; font-weight: 500; }
.dp-fields { display: flex; border-bottom: 1px solid var(--border); }
.dp-field { flex: 1; text-align: center; cursor: pointer; user-select: none; }
.dp-label { font-size: 15px; color: var(--text); margin-top: 10px; }
.dp-val { font-size: 21px; color: var(--text-sub); margin: 10px 0 0; padding-bottom: 10px; }
.dp-field.on .dp-val { color: var(--text); border-bottom: 3px solid var(--primary); }
.dp-field { border-bottom: 3px solid transparent; }
.dp-wheel { position: relative; flex: 1; display: flex; overflow: hidden; margin-top: 6px; }
.dp-col {
  flex: 1; height: 100%; overflow-y: auto; scroll-snap-type: y proximity;
  text-align: center; scrollbar-width: none; -ms-overflow-style: none;
}
.dp-col::-webkit-scrollbar { display: none; }
.dp-pad { height: 88px; }
.dp-item { height: 44px; line-height: 44px; font-size: 18px; color: #C3CCD1; scroll-snap-align: center; }
.dp-item.sel { color: var(--text); font-weight: 600; font-size: 21px; }

/* ---------- 记录列表卡片 v2（日期分组 + 徽章 + 关联单据行） ---------- */
#ord-list { padding-bottom: 4px; }
.odate-band { padding: 12px 14px 8px; font-size: 14px; color: var(--text-sub); }
.od-clock { margin-right: 6px; font-size: 13px; }
.oc2-card { display: block; background: #fff; padding: 13px 14px 12px; margin-bottom: 6px; text-decoration: none; color: inherit; }
.oc2-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.oc2-name { font-size: 17px; font-weight: 600; color: var(--text); line-height: 1.35; }
.pay-badge { font-size: 13px; padding: 3px 10px; border-radius: 4px; border: 1px solid transparent; flex-shrink: 0; }
.pb-warn { color: #E6A23C; border-color: #E6A23C; background: #FDF6EC; }
.pb-part { color: var(--primary); border-color: var(--primary); background: #E8F3FD; }
.pb-ok { color: #67C23A; border-color: #67C23A; background: #F0F9EB; }
.oc2-mid { display: flex; align-items: center; gap: 10px; margin-top: 10px; }
.oc2-no { font-size: 14px; color: var(--text); }
.oc2-qty { font-size: 14px; color: var(--text); }
.oc2-amt { font-size: 17px; color: var(--text); margin-left: auto; }
.oc2-arrow { font-size: 20px; color: #C0C6CB; margin-left: 4px; line-height: 1; }
.oc2-link { margin-top: 10px; font-size: 14px; color: var(--text-sub); cursor: pointer; }
.oc2-larr { margin-left: 2px; }

/* ---------- 关联单据（销售订单）详情弹窗 ---------- */
.oi-sheet { max-height: 80vh; overflow: hidden; display: flex; flex-direction: column; }
.oi-head { display: flex; align-items: center; justify-content: space-between; padding: 16px 18px 8px; border-bottom: 1px solid var(--border); }
.oi-title { font-size: 16px; font-weight: 600; color: var(--text); }
.oi-close { font-size: 26px; line-height: 1; color: var(--text-sub); padding: 0 4px; cursor: pointer; }
.oi-body { overflow-y: auto; padding: 4px 18px calc(16px + env(safe-area-inset-bottom)); }
.oi-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 14px; padding: 12px 0; }
.oi-kv { display: flex; align-items: baseline; gap: 8px; font-size: 13px; }
.oi-k { color: var(--text-sub); flex-shrink: 0; }
.oi-v { color: var(--text); }
.oi-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.oi-table th { text-align: left; color: var(--text-sub); font-weight: 400; padding: 8px 4px; border-bottom: 1px solid var(--border); }
.oi-table td { padding: 9px 4px; border-bottom: 1px solid var(--border); color: var(--text); vertical-align: top; }
.oi-table tfoot td { border-bottom: 0; padding-top: 10px; font-weight: 600; }
.oi-gname { font-size: 14px; }
.oi-gspec { font-size: 12px; color: var(--text-sub); margin-top: 2px; }
.oi-c { text-align: right; white-space: nowrap; }
.oi-strong { font-weight: 600; }
.oi-empty { text-align: center; color: var(--text-sub); padding: 16px 0; }
.oi-remark { margin-top: 10px; font-size: 13px; color: var(--text-sub); line-height: 1.5; }

/* ---------- 查看销售记录详情页（截图样式） ---------- */
.od-page { padding-bottom: 10px; background: #F2F4F6; min-height: 100%; }
.od-rows { background: #fff; }
.od-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 15px 14px; border-bottom: 1px solid #F0F2F4; font-size: 15px; }
.od-row:last-child { border-bottom: 0; }
.od-k { color: var(--text); flex-shrink: 0; }
.od-v { color: var(--text); text-align: right; word-break: break-all; }
.od-tap .od-v { color: var(--text); }
.od-arr { font-style: normal; color: #C0C6CB; margin-left: 2px; font-size: 18px; }
.od-big { font-size: 16px; }
.od-big .od-k { font-weight: 500; }
.od-pre { white-space: pre-wrap; }
.od-blue { color: #4A90E2; }
.od-orange { color: #E6A23C; }
.od-ghead { display: flex; justify-content: space-between; align-items: center; padding: 15px 14px 8px; font-size: 15px; }
.od-gsum { padding: 0 14px 10px; font-size: 14px; color: var(--text); }
.od-gsum i { font-style: normal; color: #4A90E2; font-size: 10px; vertical-align: 2px; margin-right: 4px; }
.od-gcard { display: flex; gap: 12px; background: #fff; padding: 14px; margin-bottom: 6px; }
.od-gthumb { width: 86px; height: 86px; border-radius: 6px; background: #F2F4F6; border: 1px solid var(--border); display: flex; align-items: center; justify-content: center; font-size: 26px; color: #C0C6CB; flex-shrink: 0; }
.od-gmain { flex: 1; min-width: 0; }
.od-gname { font-size: 15px; font-weight: 600; color: var(--text); margin-bottom: 6px; }
.od-gmeta { font-size: 13px; color: var(--text-sub); margin-bottom: 4px; }
.od-gmeta .od-blue { font-size: 13px; }
.od-gamt { font-size: 13px; color: #4A90E2; margin-top: 4px; }
.od-split { height: 3px; }
.od-split-green { background: #B8D44A; }
.od-split-yellow { background: #F0C24B; }
.od-split-red { background: #F07040; }
.od-sub { padding: 12px 14px 15px; font-size: 14px; color: var(--text); }
.od-sub i { font-style: normal; color: #B8D44A; font-size: 10px; vertical-align: 2px; margin-right: 4px; }
.od-pad { height: 76px; }
.od-btns { position: fixed; left: 0; right: 0; bottom: 0; z-index: 20; display: flex; gap: 10px; padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); background: #F2F4F6; }
.od-b { flex: 1; height: 46px; border: 0; border-radius: 6px; font-size: 16px; cursor: pointer; }
.od-b.gray { background: #E8EBEE; color: #AEB6BD; }
.od-b.teal { background: #26C6BA; color: #fff; }
.od-b.red { background: #e64340; color: #fff; }
.od-b.orange { background: #ff9d27; color: #fff; }

/* 居中确认弹窗（删除等不可逆操作，参考截图样式） */
.od-cfbox { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 300px; max-width: 82vw; background: #fff; border-radius: 10px; overflow: hidden; }
.od-cftip { padding: 36px 26px; font-size: 16px; color: #333; text-align: center; line-height: 1.65; }
.od-cfbtns { display: flex; border-top: 1px solid #EDEEF0; }
.od-cfbtns div { flex: 1; height: 50px; line-height: 50px; text-align: center; font-size: 16px; color: #333; cursor: pointer; }
.od-cfbtns div:first-child { border-right: 1px solid #EDEEF0; }
.od-cfbtns div:last-child { color: #26C6BA; font-weight: 500; }
.od-cfbtns div.od-blue { color: #4da1e8; font-weight: 500; }
.od-cftt { padding: 20px 20px 0; font-size: 16px; font-weight: 500; color: #333; text-align: center; }
.od-ctaw { padding: 14px 16px 4px; }
.od-cta { width: 100%; height: 110px; border: 1px solid #E3E6EA; border-radius: 6px; padding: 10px; font-size: 14px; color: #333; line-height: 1.5; resize: none; outline: none; box-sizing: border-box; background: #fff; font-family: inherit; }
.od-cta:focus { border-color: #4da1e8; }

/* header 右侧动作图标 + 更多下拉 */
.hd-ico { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; margin-left: 2px; cursor: pointer; }
.hd-ico svg { pointer-events: none; }
.hd-menu {
  position: fixed; top: 52px; right: 12px; z-index: 120; width: 172px;
  background: #fff; border-radius: 10px; box-shadow: 0 6px 24px rgba(0,0,0,.14);
  padding: 4px 0; animation: hmIn .15s ease-out;
}
@keyframes hmIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: translateY(0); } }
.hm-it { display: flex; align-items: center; padding: 13px 16px; font-size: 15px; color: #333; cursor: pointer; }
.hm-it:active { background: #F6F7F9; }
.hm-line { border-bottom: 1px solid #F0F1F3; }
.hm-ic { display: inline-block; width: 26px; font-size: 15px; text-align: center; margin-right: 8px; }

/* 打印预览页 */
.pt-rows { background: #fff; border-radius: 10px; margin: 10px; overflow: hidden; }
.pt-row { display: flex; justify-content: space-between; align-items: center; padding: 14px 14px; font-size: 15px; cursor: pointer; }
.pt-row + .pt-row { border-top: 1px solid #F0F1F3; }
.pt-k { color: #333; }
.pt-v { color: #9AA3AB; display: flex; align-items: center; }
.pt-wrap { padding: 0 10px; }
.pt-ticket { background: #fff; border-radius: 8px; padding: 18px 14px 24px; box-shadow: 0 2px 10px rgba(0,0,0,.06); font-size: 14px; color: #111; line-height: 1.7; }
.pt-co { text-align: center; font-size: 19px; font-weight: 700; letter-spacing: .5px; }
.pt-title { text-align: center; font-size: 15px; font-weight: 700; margin: 4px 0 10px; }
.pt-meta { word-break: break-all; }
.pt-pre { white-space: pre-wrap; }
.pt-dash { border-top: 1px dashed #999; margin: 8px 0; }
.pt-cols { display: grid; grid-template-columns: 1.7fr 1fr 1fr .8fr 1fr; font-weight: 700; padding: 2px 0; }
.pt-cols span { text-align: center; }
.pt-cols span:first-child { text-align: left; }
.pt-g1 { word-break: break-all; padding-top: 6px; }
.pt-g2 { display: grid; grid-template-columns: 1.7fr 1fr 1fr .8fr 1fr; text-align: center; padding-bottom: 6px; }
.pt-g2 span { text-align: center; }
.pt-g2 span:first-child { text-align: left; }
/* A4 模板 */
.pt-a4mode { padding: 26px 22px; }
.pt-a4-sub { text-align: center; font-size: 11px; color: #555; }
.pt-a4mode .pt-title { font-size: 20px; margin: 10px 0 14px; letter-spacing: 4px; }
.pt-a4-meta { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 4px 12px; font-size: 12.5px; margin: 3px 0; }
.pt-a4-meta.tl { display: block; }
.pt-table { width: 100%; border-collapse: collapse; margin-top: 10px; font-size: 12px; }
.pt-table th, .pt-table td { border: 1px solid #333; padding: 5px 4px; text-align: center; word-break: break-all; }
.pt-table th { background: #F2F4F6; font-weight: 700; }
.pt-table td.tl, .pt-table th:nth-child(3) { text-align: left; }
.pt-table .pt-sum td { font-weight: 700; background: #FAFBFC; }
.pt-a4-sign { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px; margin-top: 26px; font-size: 12.5px; }

@media print {
  #header, .pt-rows, .od-btns, .toast { display: none !important; }
  #content { padding: 0 !important; }
  .pt-wrap { padding: 0; }
  .pt-ticket { box-shadow: none; border-radius: 0; margin: 0 auto; max-width: 100%; }
  body { background: #fff !important; }
}

/* 销售订单开单页 */
.so-ph { color: #B8BEC4; }
.so-edit { display: inline-block; margin-left: 6px; font-size: 12px; color: #26C6BA; font-style: normal; }
.so-addr-in { flex: 1; max-width: 55%; border: 0; text-align: right; font-size: 15px; color: #333; background: transparent; }
.so-addr-in::placeholder { color: #B8BEC4; }
.so-type { display: inline-flex; gap: 12px; }
.so-type i { font-style: normal; padding: 10px 30px; border-radius: 6px; background: #B8BEC4; color: #fff; font-size: 15px; cursor: pointer; }
.so-type i.on { background: #26C6BA; }
.so-scan { font-size: 13px; color: #333; margin-left: 10px; white-space: nowrap; cursor: pointer; }

/* 选择客户整页 */
.pkc-page { background: #fff; min-height: 100%; }
.pkc-search { display: flex; align-items: center; gap: 10px; padding: 12px 14px; background: #F2F4F6; border-radius: 8px; margin: 10px 12px; }
.pkc-search input { flex: 1; border: 0; background: transparent; font-size: 15px; color: #333; outline: none; }
.pkc-plus { font-size: 24px; color: #555; padding: 0 4px; cursor: pointer; font-weight: 300; }
.pkc-cat { text-align: center; color: #888; font-size: 14px; padding: 6px 0 10px; cursor: pointer; }
.pkc-cat em { font-style: normal; font-size: 11px; }
.pkc-it { padding: 17px 16px; font-size: 17px; color: #222; border-bottom: 1px solid #F0F1F3; cursor: pointer; }
.pkc-it:active { background: #F7F8FA; }
.pkc-end { text-align: center; color: #C0C6CC; font-size: 13px; padding: 16px 0 26px; }

/* ---------- 销售开单（编辑销售单，参考外部 ERP 样式） ---------- */
.se-date-in { position: absolute; left: 0; top: 0; width: 100%; height: 100%; opacity: 0; border: 0; z-index: 2; }
.se-req { color: #ff4d4f; font-style: normal; }
.se-ghead { display: flex; justify-content: space-between; align-items: center; padding: 11px 14px; background: #F7F8FA; border-bottom: 1px solid var(--border); }
.se-gadd { font-size: 14px; color: var(--primary); cursor: pointer; }
.se-gcard { cursor: pointer; position: relative; }
.se-garr { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); color: #C2C8CE; font-size: 18px; }
.se-gap { height: 10px; background: #F2F4F6; }
.se-remark { background: #fff; padding: 12px 14px 20px; }
.se-remark textarea { width: 100%; box-sizing: border-box; border: 0; font-size: 14px; color: var(--text); min-height: 84px; resize: none; outline: none; font-family: inherit; }
.se-bottom { position: fixed; left: 0; right: 0; bottom: 0; z-index: 20; display: flex; align-items: center; gap: 10px; padding: 8px 12px calc(8px + env(safe-area-inset-bottom)); background: #F2F4F6; }
.se-sum { flex: 1; min-width: 0; }
.se-sum-1 { font-size: 14px; color: var(--text); white-space: nowrap; }
.se-sum-1 i { color: #26C6BA; font-style: normal; font-weight: 600; }
.se-sum-2 { font-size: 13px; color: var(--text-sub); margin-top: 2px; white-space: nowrap; }
.se-sum-2 i { color: #26C6BA; font-style: normal; }
.se-bottom .od-b { flex: 0 0 92px; height: 44px; }
.se-edrow { display: flex; align-items: center; justify-content: space-between; padding: 10px 16px; }
.se-edrow span { font-size: 14px; color: var(--text); }
.se-edrow input { width: 150px; text-align: right; border: 0; border-bottom: 1px solid var(--border); font-size: 15px; padding: 4px 0; outline: none; }
.se-eddel { text-align: center; color: #ff4d4f; font-size: 14px; padding: 10px 0 2px; cursor: pointer; }
.se-pick .se-pk-search { padding: 0 16px 8px; }
.se-pick .se-pk-search input { width: 100%; box-sizing: border-box; border: 1px solid var(--border); border-radius: 8px; padding: 9px 12px; font-size: 14px; outline: none; }
.se-pk-list { max-height: 46vh; overflow-y: auto; }
.se-pk-item { padding: 11px 16px; border-bottom: 1px solid var(--border); cursor: pointer; }
.se-pk-meta { font-size: 12px; color: var(--text-sub); margin-top: 2px; }
.od-gthumb img.od-gimg { width: 100%; height: 100%; object-fit: cover; border-radius: 6px; display: block; }

/* ---------- 收款页 ---------- */
.rc-page { background: #F2F4F6; min-height: 100%; padding-bottom: 10px; }
.rc-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; background: #fff; padding: 20px 16px 18px; }
.rc-cust { font-size: 18px; font-weight: 600; color: var(--text); }
.rc-debt { font-size: 17px; color: #E64340; white-space: nowrap; }
.rc-zigzag {
  height: 6px;
  background: repeating-linear-gradient(105deg, #E64340 0 10px, #fff 10px 20px, #4A90E2 20px 30px, #fff 30px 40px);
  opacity: .55;
}
.rc-yellow { background: #FDF9E3; padding: 12px 16px 14px; }
.rc-yrow { display: flex; justify-content: space-between; align-items: center; padding: 10px 0; font-size: 15px; cursor: pointer; }
.rc-yk { color: var(--text); }
.rc-yv { color: var(--text); }
.rc-sec { font-size: 16px; font-weight: 600; color: var(--text); padding: 16px 14px 4px; }
.rc-input { flex: 1; border: 0; outline: none; background: transparent; text-align: right; font-size: 15px; color: var(--text); min-width: 0; }
.rc-input::placeholder { color: #C0C6CB; }
.rc-pad { height: 90px; }
.rc-bottom { position: fixed; left: 0; right: 0; bottom: 0; z-index: 20; background: #fff; padding: 10px 14px calc(12px + env(safe-area-inset-bottom)); box-shadow: 0 -4px 12px rgba(0,0,0,.05); }
.rc-amts { display: flex; align-items: baseline; justify-content: space-around; padding: 2px 0 10px; }
.rc-amt-in {
  width: 46%; border: 0; outline: none; background: transparent;
  font-size: 30px; font-weight: 600; color: #26C6BA; text-align: center; font-family: inherit;
}
.rc-amt-in::placeholder { color: #B9E8E4; }
.rc-amt-ow { font-size: 26px; font-weight: 600; color: #F5A623; }
.rc-amt-ow i { font-style: normal; }
.rc-save { display: block; width: 100%; height: 48px; border: 0; border-radius: 8px; background: #26C6BA; color: #fff; font-size: 17px; cursor: pointer; }
.rc-save:disabled { opacity: .6; }
/* 弹层选择列表 */
.pop-list { max-height: 46vh; overflow-y: auto; }
.pop-item { padding: 14px 20px; font-size: 15px; color: var(--text); border-bottom: 1px solid #F0F2F4; cursor: pointer; display: flex; justify-content: space-between; align-items: center; }
.pop-item.on { color: var(--primary); }
.pop-check { font-style: normal; }

/* ---------- 销售退货页 ---------- */
.sr-page { background: #F2F4F6; min-height: 100%; }
.sr-req { font-style: normal; color: #E64340; }
.sr-gtitle { font-size: 17px; font-weight: 600; color: #E64340; padding: 16px 14px 4px; }
.sr-gtip { font-size: 13px; color: var(--text-sub); padding: 2px 14px 10px; }
.sr-card { cursor: pointer; }
.sr-card .oc2-arrow { align-self: center; }
.sr-textarea { width: 100%; border: 0; outline: none; background: transparent; resize: vertical; min-height: 72px; font-size: 15px; color: var(--text); font-family: inherit; }
.sr-textarea::placeholder { color: #C0C6CB; }
.sr-bottom {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 20;
  display: flex; align-items: center; gap: 10px;
  background: #fff; padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
  box-shadow: 0 -4px 12px rgba(0,0,0,.05);
}
.sr-sums { flex: 1; min-width: 0; padding-left: 2px; }
.sr-sum1 { font-size: 14px; color: var(--text); }
.sr-sum1 b { color: var(--primary); font-weight: 600; }
.sr-sum2 { font-size: 15px; color: var(--primary); margin-top: 2px; }
.sr-btn { width: 88px; height: 44px; border: 0; border-radius: 8px; font-size: 16px; cursor: pointer; flex-shrink: 0; }
.sr-btn:disabled { opacity: .6; }
.sr-btn.audit { background: #F5B427; color: #fff; }
.sr-btn.save { background: #26C6BA; color: #fff; }
.sr-edqty { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px 4px; font-size: 15px; color: var(--text); }
.sr-edqty input { width: 130px; height: 42px; border: 1px solid var(--border); border-radius: 8px; text-align: center; font-size: 17px; color: var(--text); outline: none; }
.sr-edtip { text-align: center; font-size: 13px; color: var(--text-sub); padding: 4px 0 6px; }

/* ---------- 商品扫码页（sc-*） ---------- */
.sc-wrap { padding: 10px 12px 0; }
/* iOS：Safari 相机权限横幅（系统浮层约 60px）会短暂盖住页顶，取景区整体下移避让 */
.sc-wrap.sc-ios { padding-top: calc(10px + 58px + env(safe-area-inset-top)); }
.sc-cam { background: #14181D; border-radius: 12px; min-height: 340px; display: flex; align-items: center; justify-content: center; overflow: hidden; position: relative; }
.sc-cam video { width: 100% !important; height: 100% !important; object-fit: cover !important; display: block; border-radius: 12px; position: relative; z-index: 1; }
.sc-cam #qr-shaded-region { display: none !important; }
.sc-camwrap { position: relative; border-radius: 12px; overflow: hidden; }
/* 微信式取景遮罩：暗化四周 + 角框 + 扫描线 + 手电筒（sc-cam 兄弟层，防库清空容器） */
.sc-camwrap .sc-mask { position: absolute; left: 0; top: 0; right: 0; bottom: 0; pointer-events: none; z-index: 2; }
.sc-camwrap .sc-torch { pointer-events: auto; }
.sc-cam .sc-frame { position: absolute; left: 50%; top: 50%; width: 250px; height: 250px; transform: translate(-50%, -50%); box-shadow: 0 0 0 200vmax rgba(0, 0, 0, .42); }
.sc-cb { position: absolute; width: 28px; height: 28px; border: 3px solid #19c3a6; }
.sc-cb.tl { left: -3px; top: -3px; border-right: 0; border-bottom: 0; border-radius: 8px 0 0 0; }
.sc-cb.tr { right: -3px; top: -3px; border-left: 0; border-bottom: 0; border-radius: 0 8px 0 0; }
.sc-cb.bl { left: -3px; bottom: -3px; border-right: 0; border-top: 0; border-radius: 0 0 0 8px; }
.sc-cb.br { right: -3px; bottom: -3px; border-left: 0; border-top: 0; border-radius: 0 0 8px 0; }
.sc-line { position: absolute; left: 4%; right: 4%; height: 3px; border-radius: 2px; background: linear-gradient(90deg, rgba(25,195,166,0), #19c3a6 18%, #52ffd9 50%, #19c3a6 82%, rgba(25,195,166,0)); box-shadow: 0 0 14px rgba(37,230,196,.95), 0 0 30px rgba(37,230,196,.45); animation: scline 2.2s ease-in-out infinite; will-change: top; }
.sc-line::after { content: ""; position: absolute; left: 15%; right: 15%; top: -14px; height: 14px; background: linear-gradient(180deg, rgba(37,230,196,0), rgba(37,230,196,.28)); border-radius: 2px; }
@keyframes scline { 0%, 100% { top: 12%; } 50% { top: 86%; } }
.sc-tip { position: absolute; left: 0; right: 0; top: calc(50% + 140px); text-align: center; color: rgba(255,255,255,.85); font-size: 13px; text-shadow: 0 1px 4px rgba(0,0,0,.6); }
.sc-torch { position: absolute; right: 16px; bottom: 14px; color: #fff; font-size: 11px; text-align: center; cursor: pointer; text-shadow: 0 1px 4px rgba(0,0,0,.6); }
.sc-torch .torch-ic { display: block; width: 36px; height: 36px; margin: 0 auto 3px; border-radius: 50%; background: rgba(255,255,255,.22); text-align: center; line-height: 36px; font-size: 18px; }
.sc-torch.lit .torch-ic { background: #19c3a6; }
.sc-hint { color: #9AA7B4; font-size: 14px; text-align: center; line-height: 1.9; padding: 20px 10px; }
.sc-hint i { font-style: normal; font-size: 12px; color: #6E7B88; }
.sc-acts { display: flex; gap: 10px; margin-top: 10px; }
.sc-btn { flex: 1; height: 42px; border: 0; border-radius: 8px; background: #26C6BA; color: #fff; font-size: 15px; cursor: pointer; }
.sc-btn.gray { background: #F2F4F6; color: var(--text); }
.sc-list { margin-top: 10px; }
.sc-empty { text-align: center; color: #C0C6CB; font-size: 13px; padding: 26px 0; }
.sc-it { display: flex; align-items: center; background: #fff; border-radius: 10px; padding: 10px 12px; margin-bottom: 8px; }
.sc-it-main { flex: 1; min-width: 0; }
.sc-it-n { font-size: 15px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sc-it-sub { font-size: 12px; color: var(--text-sub); margin-top: 3px; }
.sc-it-right { display: flex; align-items: center; gap: 8px; }
.sc-minus, .sc-plus { width: 28px; height: 28px; border: 0; border-radius: 50%; background: #F2F4F6; color: var(--text); font-size: 16px; cursor: pointer; }
.sc-it-qty { min-width: 22px; text-align: center; font-size: 16px; color: var(--text); }
.sc-del { width: 26px; height: 26px; border: 0; background: none; color: #C0C6CB; font-size: 14px; cursor: pointer; margin-left: 2px; }
.sc-pad { height: 86px; }
.sc-bottom {
  position: fixed; left: 50%; transform: translateX(-50%); bottom: 0; z-index: 20;
  width: 100%; max-width: 480px;
  background: #F7F8FA; padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
  box-shadow: 0 -2px 10px rgba(0,0,0,.06);
}
.sc-wh {
  display: inline-flex; align-items: center; gap: 6px;
  background: #fff; border-radius: 16px; padding: 7px 14px;
  font-size: 14px; color: var(--text); margin-bottom: 8px;
}
.sc-wh-pin { font-size: 14px; }
.sc-sum { display: inline-block; margin-left: 6px; }
.sc-sum .se-sum-1 { font-size: 13px; color: var(--text-sub); }
.sc-sum .se-sum-2 { font-size: 17px; color: #F43F3F; font-weight: 600; margin-top: 2px; }
.sc-submit {
  float: right; width: 110px; height: 58px; border: 0; border-radius: 30px;
  background: #26C6BA; color: #fff; font-size: 17px; cursor: pointer; margin-top: 4px;
}
/* 仓库选择弹层选项 */
.ps-opts { max-height: 46vh; overflow-y: auto; }
.ps-opt { padding: 14px 20px; font-size: 15px; color: var(--text); border-bottom: 1px solid #F2F4F6; }
.ps-opt.on { color: #26C6BA; }
.pop-cancel2 { padding: 13px 0; text-align: center; font-size: 15px; color: var(--text-sub); border-top: 1px solid #EDEEF0; margin-top: 14px; }
.ret-red { color: #F43F3F !important; font-weight: 600; }

/* ---------- 销售开票（iv-*） ---------- */
.iv-card { display: flex; align-items: flex-start; background: #fff; border-radius: 10px; padding: 12px; margin: 0 12px 8px; }
.iv-card.off { opacity: .45; }
.iv-circle { flex: 0 0 22px; width: 22px; height: 22px; border-radius: 50%; border: 1.5px solid #C9D0D6; margin-right: 10px; margin-top: 14px; display: flex; align-items: center; justify-content: center; font-size: 13px; color: #fff; background: #fff; }
.iv-circle.on { background: #26C6BA; border-color: #26C6BA; }
.iv-main { flex: 1; min-width: 0; }
.iv-r1 { display: flex; align-items: center; justify-content: space-between; }
.iv-r1 b { font-size: 15px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.iv-no { font-size: 14px; color: #26C6BA; margin-top: 4px; }
.iv-r2 { display: flex; justify-content: space-between; font-size: 13px; color: var(--text-sub); margin-top: 8px; padding-bottom: 8px; border-bottom: 1px solid #F2F4F6; }
.iv-r3 { font-size: 15px; color: var(--text); margin-top: 8px; text-align: right; }
.iv-edit { font-style: normal; cursor: pointer; }
.iv-mini { margin: 0 12px 8px; }
.iv-bottom {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 20;
  background: #F7F8FA; padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
  display: flex; align-items: center; justify-content: space-between;
}
.iv-sum { display: flex; align-items: center; gap: 10px; }
.iv-sum-t b { display: block; font-size: 15px; color: var(--text); font-weight: 600; }
.iv-sum-t i { font-style: normal; font-size: 12px; color: var(--text-sub); }
.iv-go { width: 110px; height: 52px; margin: 0; }
.iv-pad { height: 90px; }
.iv-amt-txt { font-size: 16px; color: var(--text); }

/* ---------- 开票记录列表 ---------- */
.ivl-page { padding-bottom: 70px; }
.ivl-plus { font-size: 26px; font-weight: 300; color: var(--text-sub); padding: 0 6px; line-height: 1; }
.ivl-card { background: #fff; margin: 0 12px 10px; border-radius: 10px; padding: 14px 14px 13px; }
.ivl-row { font-size: 15px; color: var(--text); line-height: 27px; word-break: break-all; }
.ivl-src { background: #F6F8F9; border-radius: 8px; padding: 10px 12px; margin-top: 10px; }
.ivl-cu { font-size: 14px; color: var(--text); }
.ivl-billrow { display: flex; align-items: center; margin-top: 6px; }
.ivl-bk { font-size: 14px; color: var(--text); flex-shrink: 0; }
.ivl-bno { font-size: 14px; color: #26C6BA; flex: 1; margin-right: 8px; word-break: break-all; }
.ivl-srow { display: flex; justify-content: space-between; font-size: 13px; color: var(--text-sub); margin-top: 6px; }
.ivl-foot { text-align: center; font-size: 13px; color: #B9C2CA; padding: 18px 0 10px; }
.ivl-foot::before, .ivl-foot::after { content: "———"; margin: 0 10px; color: #E3E8EC; }
.ivl-bottom {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 20;
  background: #fff; border-top: 1px solid #EEF1F3;
  padding: 13px 16px calc(13px + env(safe-area-inset-bottom));
  font-size: 16px; color: var(--text);
}
.ivl-bottom i { font-style: normal; font-weight: 600; }
.ivl-amt { color: var(--primary); margin-left: 12px; font-weight: 600; }

/* ---------- 时间范围下拉面板（常用时间chips + 自定义） ---------- */
.rp-mask { position: fixed; left: 0; right: 0; top: 0; bottom: 0; z-index: 40; background: rgba(0,0,0,.28); opacity: 0; transition: opacity .2s; }
.rp-mask.show { opacity: 1; }
.rp-panel {
  position: absolute; left: 0; right: 0; background: #fff;
  padding: 16px 14px calc(16px + env(safe-area-inset-bottom));
  border-radius: 0 0 12px 12px; box-shadow: 0 6px 16px rgba(0,0,0,.08);
  transform: translateY(-10px); transition: transform .2s;
}
.rp-mask.show .rp-panel { transform: translateY(0); }
.rp-sec { font-size: 14px; color: var(--text); margin: 4px 0 12px; }
.rp-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px 10px; margin-bottom: 18px; }
.rp-chip { background: #F5F6F7; border: 1px solid #F5F6F7; border-radius: 6px; text-align: center; padding: 10px 0; font-size: 14px; color: var(--text); }
.rp-chip.on { background: #fff; border-color: #26C6BA; color: #26C6BA; }
.rp-custom-btn { background: #F5F6F7; border-radius: 6px; text-align: center; padding: 11px 0; font-size: 14px; color: var(--text); }
.rp-dates { display: flex; align-items: center; gap: 8px; margin-top: 12px; }
.rp-dates input[type=date] { flex: 1; min-width: 0; border: 1px solid #E3E8EC; border-radius: 6px; padding: 8px; font-size: 13px; color: var(--text); background: #fff; }
.rp-dates i { font-style: normal; color: var(--text-sub); }
.rp-ok { flex: none; color: #26C6BA; font-size: 14px; font-weight: 600; padding: 0 4px; }
.od-chint { text-align: center; font-size: 12px; color: var(--text-sub); margin-top: -6px; }

/* ---------- 销售利润表（SP_V2 参考截图样式） ---------- */
.sp-sumcard { margin: 8px 10px; background: #26BFAE; border-radius: 10px; padding: 14px 18px; color: #fff; }
.sp-sumcard .ss-row { display: flex; }
.sp-sumcard .ss-row + .ss-row { margin-top: 10px; }
.sp-sumcard .ss-cell { flex: 1; }
.sp-sumcard .ss-label { font-size: 14px; opacity: .95; }
.sp-sumcard .ss-val { font-size: 18px; font-weight: 600; margin-top: 2px; }
.sp-band { display: flex; align-items: center; }
.sp-band .sp-band-no { margin-left: auto; font-size: 13px; color: var(--text-sub); }
.sp-card { position: relative; display: block; background: #fff; padding: 13px 40px 13px 14px; margin-bottom: 6px; text-decoration: none; color: inherit; }
.sp-card .sp-line { font-size: 14px; color: var(--text); line-height: 1.75; }
.sp-card .sp-line:first-child { font-size: 15px; font-weight: 600; }
.sp-card .sp-line .neg { color: #e64340; }
.sp-card .sp-type { position: absolute; right: 34px; bottom: 13px; font-size: 12px; color: var(--primary); background: #E3F2FD; border-radius: 12px; padding: 2px 10px; }
.sp-card .sp-arrow { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); font-size: 20px; color: #C1C8CE; }

/* ---------- 销售利润详情（SD_V1） ---------- */
.spdetail { background: #F2F4F6; min-height: 100%; padding-bottom: 20px; }
.sd-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; background: #fff; padding: 14px; }
.sd-head .sd-cust { font-size: 16px; font-weight: 700; color: var(--text); }
.sd-head .sd-date { flex: none; font-size: 14px; color: var(--text-sub); }
.sd-block { background: #fff; margin-top: 8px; padding: 4px 14px; }
.sd-row { display: flex; align-items: center; justify-content: space-between; padding: 8px 0; }
.sd-row .sd-kv { flex: 1; padding: 0; }
.sd-2col { display: flex; flex-wrap: wrap; }
.sd-2col .sd-kv { width: 50%; box-sizing: border-box; padding: 8px 0; }
.sd-kv { padding: 8px 0; font-size: 14px; }
.sd-kv .sd-k { color: var(--text); }
.sd-kv .sd-v { color: var(--text); }
.sd-kv .sd-v.neg { color: #e64340; }
.sd-hero { background: #fff; margin-top: 8px; padding: 26px 14px; text-align: center; }
.sd-hero-label { font-size: 15px; color: var(--text); }
.sd-hero-val { font-size: 34px; font-weight: 700; color: var(--text); margin-top: 8px; }
.sd-money { font-size: 20px; font-weight: 700; color: var(--primary); padding: 2px 0 8px; }

/* ---------- 销售订单跟踪表（OT_V1 参考截图样式） ---------- */
.ot-card { display: block; background: #fff; margin-bottom: 6px; padding: 12px 14px; }
.ot-no { display: flex; align-items: center; font-size: 15px; font-weight: 600; color: var(--text); }
.ot-no .sp-type { margin-left: auto; }
.ot-goods { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border); }
.ot-g-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.ot-g-name { font-size: 16px; font-weight: 700; color: var(--text); line-height: 1.4; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ot-st { flex: none; font-size: 12px; border-radius: 4px; padding: 2px 9px; }
.ot-st-out { border: 1px solid #26BFAE; color: #26BFAE; background: #fff; }
.ot-st-part { border: 1px solid #FF9800; color: #FF9800; background: #fff; }
.ot-st-none { border: 1px solid #C1C8CE; color: #98A4AE; background: #fff; }
.ot-g-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 12px; margin-top: 8px; font-size: 14px; color: var(--text); line-height: 1.65; }
.ot-g-grid > div { word-break: break-all; }
.ot-sum { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--border); }
.ot-sum-amt { font-size: 15px; color: var(--text); }
.ot-sum-amt b { color: #e64340; font-weight: 700; margin-left: 4px; }
.ot-sum-sub { margin-top: 4px; font-size: 13px; color: var(--text-sub); }

/* ---------- 销售提成表（CM_V1） ---------- */
.cm-card { display: block; background: #fff; margin: 8px 10px 6px; border-radius: 8px; padding: 13px 14px; }
.cm-head { display: flex; align-items: center; }
.cm-name { font-size: 16px; font-weight: 700; color: var(--text); }
.cm-badge { margin-left: auto; font-size: 12px; color: var(--primary); background: #E3F2FD; border-radius: 10px; padding: 2px 10px; }
.cm-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin-top: 11px; padding-top: 10px; border-top: 1px dashed var(--border); }
.cm-grid > div { text-align: right; }
.cm-grid i { display: block; font-style: normal; font-size: 11px; color: var(--text-sub); margin-bottom: 3px; }
.cm-grid b { font-size: 13px; font-weight: 600; color: var(--text); }
.cm-grid b.neg { color: #e64340; }
.cm-grid b.cm-comm { color: #26BFAE; }
.cm-sum .osb-amt i { margin-left: 2px; }

/* ---------- 客户对账单（CS_V1 参考截图样式） ---------- */
.odate-toggle { text-align: center; padding: 10px 0 2px; }
.odate-toggle .cf-item { font-size: 15px; color: #26BFAE; }
.cs-card { margin: 8px 10px; background: #26BFAE; border-radius: 10px; padding: 14px 16px; color: #fff; }
.cs-card .cs-name { font-size: 17px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cs-card .cs-opening { margin-top: 12px; font-size: 15px; }
.cs-card .cs-opening b { font-weight: 700; }
.cs-card .cs-3col { display: flex; margin-top: 14px; }
.cs-card .cs-3col > div { flex: 1; min-width: 0; }
.cs-card .cs-3col i { display: block; font-style: normal; font-size: 13px; opacity: .95; }
.cs-card .cs-3col b { display: block; margin-top: 3px; font-size: 14px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cs-row { display: flex; align-items: center; background: #fff; padding: 12px 14px; margin-bottom: 6px; }
.cs-row.pre { font-size: 15px; }
.cs-row.pre .csr-no { font-weight: 400; }
.cs-row .csr-main { flex: 1; min-width: 0; }
.cs-row .csr-no { font-size: 14px; font-weight: 600; color: var(--text); }
.cs-row .csr-sub { margin-top: 4px; font-size: 12px; color: var(--text-sub); display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.cs-row .csr-sub .sp-type { position: static; }
.cs-row .csr-inc { color: #26BFAE; }
.cs-row .csr-out { color: var(--primary); }
.cs-row .csr-bal { flex: none; text-align: right; margin-left: 10px; }
.cs-row .csr-bal i { display: block; font-style: normal; font-size: 11px; color: var(--text-sub); }
.cs-row .csr-bal b { font-size: 15px; color: var(--text); }
.cs-row.pre .csr-bal b { font-size: 16px; }
.csp-card-arrow, .csr-arrow { margin-left: auto; font-size: 20px; color: #C1C8CE; }

/* ===== PI_V1: 采购开票 ===== */
.pi-card{background:#fff;border-radius:10px;margin:0 10px 8px;padding:10px 12px;box-shadow:0 1px 4px rgba(0,0,0,.05)}
.pi-card.picked{box-shadow:0 0 0 2px #26BFAE inset}
.pi-top{display:flex;align-items:center;gap:8px}
.pi-name{font-size:16px;font-weight:600;color:#222;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pi-circle{width:20px;height:20px;border-radius:50%;border:1.5px solid #bbb;background:#fff;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;font-size:13px;color:#fff;cursor:pointer}
.pi-circle.on{background:#26BFAE;border-color:#26BFAE}
.pi-circle.on::after{content:"✓"}
.pi-circle.big{width:24px;height:24px;font-size:15px}
.pi-no{color:#2b7bd6;font-size:14px;margin:6px 0 2px;padding-left:0}
.pi-mid{display:flex;justify-content:space-between;color:#555;font-size:13px;margin-top:4px}
.pi-un{display:flex;justify-content:flex-end;align-items:center;gap:6px;color:#333;font-size:13px;font-weight:600;margin-top:6px;border-top:1px dashed #eee;padding-top:6px}
.pi-edit{cursor:pointer;font-size:14px}
.pi-bottom{position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid #eee;display:flex;align-items:center;gap:10px;padding:8px 12px calc(8px + env(safe-area-inset-bottom));z-index:30}
.pi-sum{flex:1;min-width:0}
.pi-sum1{font-size:14px;color:#222;font-weight:600}
.pi-sum1 i{color:#26BFAE;font-style:normal}
.pi-sum2{font-size:12px;color:#888;margin-top:2px}
.pi-sum2 i{font-style:normal}

/* ===== PO_V1: 采购订单 业务类别切换 ===== */
.po-tgl{display:inline-flex;gap:10px}
.po-tg-btn{min-width:96px;height:34px;border:none;border-radius:5px;background:#9e9e9e;color:#fff;font-size:14px;padding:0 16px}
.po-tg-btn.on{background:#26C6BA}

/* ===== PIR_V1: 采购开票记录 ===== */
.ivl-phead{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.ivl-sup{font-size:16px;font-weight:600;color:#222;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;margin-right:10px}
.ivl-pamt{font-size:15px;font-weight:600;color:#26BFAE;flex-shrink:0}
.pir-amtrow b{color:#26BFAE;font-weight:600}
.pir-bamt{color:#26BFAE;font-weight:600}
.pir-bills .ivl-src{margin:0 12px 10px;background:#fff;border:1px solid #eef1f4}
.pir-sum{color:#26BFAE;font-weight:600}
a.ivl-card{display:block;text-decoration:none}

/* ===== STS_V1: 供应商对账单 ===== */
.sus-pad{height:70px}
.sus-bottom{position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid #eef1f4;display:flex;justify-content:space-around;align-items:center;padding:12px 8px calc(12px + env(safe-area-inset-bottom));font-size:13px;color:#666;z-index:30}
.sus-bottom b{color:#26BFAE;font-weight:600;margin-left:2px}
.sts-card{background:#fff;border-radius:10px;margin:0 12px 10px;padding:12px 14px;box-shadow:0 1px 4px rgba(0,0,0,.04)}
.sts-card.pay{background:#fafbfc}
.sts-head{display:flex;align-items:center;justify-content:space-between}
.sts-l{flex:1;min-width:0}
.sts-date{font-size:16px;font-weight:600;color:#222;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.sts-no{font-size:13px;color:#999;margin-top:3px}
.sts-body{border-top:1px solid #f0f2f5;margin-top:10px;padding-top:10px;text-align:right}
.sts-amt b{font-size:17px;font-weight:600;color:#222}
.sts-amt b.sts-neg{color:#FF7043}
.sts-amt b.sts-paid{color:#26BFAE}
.sts-amt i{display:block;font-style:normal;font-size:12px;color:#999;margin-top:2px}
.sts-goods{text-align:left;font-size:15px;color:#222;margin-top:8px;word-break:break-all}
.sts-spec{text-align:left;font-size:13px;color:#999;margin-top:3px}
.sts-unck{font-size:11px;color:#FF9800;background:#FFF3E0;border-radius:4px;padding:1px 5px;font-weight:400}
.sp-type.pay{background:#E0F2F1;color:#26BFAE}

/* ===== PBL_V1: 查看购货单 ===== */
.pbl-page{padding-bottom:80px}
.pbl-icons{display:flex;justify-content:flex-end;gap:18px;padding:12px 16px 4px;font-size:20px;color:#555}
.pbl-gsec{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 4px;background:#f7f8fa;border-top:8px solid #f7f8fa;margin-top:8px}
.pbl-gt{font-size:16px;font-weight:600;color:#222}
.pbl-gsum{font-size:14px;color:#666}
.pbl-gamtc{padding:2px 16px 10px;background:#f7f8fa;font-size:14px;color:#26BFAE}
.pbl-gamtc span{font-weight:600}
.pbl-remark{padding:10px 12px;font-size:14px;color:#666;white-space:pre-wrap}
.pbl-bottom{position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid #eef1f4;display:flex;gap:10px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));z-index:30}
.pbl-btn{flex:1;height:44px;border:none;border-radius:8px;font-size:16px;font-weight:600}
.pbl-btn.uncheck{background:#fff;border:1px solid #FF7043;color:#FF7043}
.pbl-btn.teal{background:#26BFAE;color:#fff}
.pbl-payrow{display:flex;align-items:center;justify-content:space-between;padding:10px 4px;border-bottom:1px solid #f0f2f5}
.pbl-payno{font-size:14px;color:#222}
.pbl-paymeta{font-size:12px;color:#999;margin-top:2px}
.pbl-payrow b{color:#26BFAE}
.pbl-paysheet{padding-bottom:0}
.pbl-frow{display:flex;align-items:center;justify-content:space-between;padding:13px 4px;border-bottom:1px solid #f0f2f5}
.pbl-fk{font-size:15px;color:#222;flex-shrink:0}
.pbl-fv{font-size:14px;color:#666}
.pbl-frow input{border:none;text-align:right;font-size:15px;outline:none;flex:1;margin-left:20px;color:#222}
.pbl-fow{text-align:right;font-size:13px;color:#999;padding:10px 4px}
.pbl-fow b{color:#FF7043}
.pbl-sbtns{display:flex;align-items:center;gap:14px;padding:6px 0 18px}
.pbl-sbtns span{font-size:15px;color:#999;padding:10px}
.pbl-save{flex:1;height:42px;border:none;border-radius:8px;background:#26BFAE;color:#fff;font-size:16px;font-weight:600}

/* ===== POT_V1: 采购订单跟踪表 ===== */
.pt-sum{background:#26BFAE;border-radius:10px;margin:0 12px 10px;padding:14px 16px;color:#fff}
.pt-sum .pts-label{font-size:14px;opacity:.9}
.pt-sum .pts-amt{font-size:26px;font-weight:600;margin:4px 0 8px}
.pt-sum .pts-row{display:flex;gap:26px;font-size:13px;opacity:.95}
.pt-sum .pts-row b{font-weight:600;margin-left:2px}
.pt-ord{background:#fff;border-radius:10px;margin:0 12px 10px;padding:12px 14px;box-shadow:0 1px 4px rgba(0,0,0,.04)}
.pt-onum{display:flex;justify-content:space-between;align-items:center;padding-bottom:8px;border-bottom:1px solid #f0f2f5}
.pt-onum b{font-size:15px;color:#222;font-weight:600}
.pt-obiz{font-size:13px;color:#666}
.pt-line{display:block;padding:10px 0 4px;border-bottom:1px dashed #f0f2f5}
.pt-lname{font-size:15px;font-weight:600;color:#222;display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.pt-lgrid{display:grid;grid-template-columns:1fr 1fr;gap:4px 14px;font-size:13px;color:#666}
.pt-sub{display:flex;justify-content:flex-end;gap:8px;padding-top:10px;font-size:14px;color:#666}
.pt-sub b{color:#FF7043;font-weight:600}
.pt-line,.pt-line:hover{text-decoration:none;color:inherit}
.pt-line span,.pt-lname b{color:inherit}

/* ============ 商品列表 GLS_V1 ============ */
.glist-page{padding-bottom:70px}
.gd-card{display:flex;align-items:center;padding:12px;margin:0 0 10px;position:relative}
.gd-thumb{width:86px;height:86px;border-radius:8px;background:#f5f6f8;flex:0 0 86px;overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:30px;color:#b8bec8;margin-right:12px}
.gd-thumb img{width:100%;height:100%;object-fit:cover}
.gd-main{flex:1;min-width:0}
.gd-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}
.gd-name{font-size:16px;font-weight:600;color:#222;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gd-status{flex:0 0 auto;font-size:13px}
.gd-status.ok{color:#2eaf62}
.gd-status.off{color:#98a1ad}
.gd-row{font-size:13px;color:#8a919c;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gd-arrow{flex:0 0 auto;margin-left:6px;color:#c3c9d1;font-size:18px}
.gd-card,.gd-card:hover{text-decoration:none;color:inherit}

/* ============ 新增商品 GDA_V1 ============ */
.gadd-page{padding-bottom:86px}
.ga-row{display:flex;align-items:center;background:#fff;border-bottom:1px solid #f0f2f5;padding:14px 16px}
.ga-row label{flex:0 0 96px;font-size:15px;color:#333}
.ga-req{color:#ee4d38;font-style:normal;margin-left:2px}
.ga-val{flex:1;display:flex;align-items:center;justify-content:flex-end;min-width:0}
.ga-val input{flex:1;border:0;outline:0;font-size:15px;color:#222;text-align:right;background:transparent}
.ga-val input::placeholder{color:#c0c6cf}
.ga-picker{color:#c0c6cf;font-size:15px;cursor:pointer}
.ga-picker em{font-style:normal;color:#c3c9d1;margin-left:6px;font-size:16px}
.ga-picker .ga-val-t{color:#222}
.ga-scan{font-size:22px;color:#3d7fff;margin-left:10px;cursor:pointer}
.ga-imgsec{display:flex;align-items:center;background:#fff;border-bottom:1px solid #f0f2f5;padding:14px 16px}
.ga-imgsec label{flex:0 0 96px;font-size:15px;color:#333}
.ga-imgbox{width:92px;height:92px;background:#f7f8fa;border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;position:relative;overflow:hidden}
.ga-imgbox .ga-plus{font-size:30px;color:#c0c6cf;line-height:1}
.ga-imgbox .ga-plus-t{font-size:11px;color:#98a1ad;margin-top:4px}
.ga-imgbox.has{background:#fff;border:1px dashed #dfe3e9}
.ga-imgbox img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ga-imgbox .ga-del{position:absolute;top:0;right:0;width:22px;height:22px;background:rgba(0,0,0,.45);color:#fff;border-radius:0 0 0 6px;font-size:14px;display:flex;align-items:center;justify-content:center;z-index:2}
.ga-pad{height:14px;background:#f5f6f8}
.ga-bottom{position:fixed;left:0;right:0;bottom:0;display:flex;align-items:center;gap:10px;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid #eef0f3;z-index:30}
.ga-btn{flex:1;height:42px;border-radius:6px;font-size:15px;border:1px solid #dfe3e9;background:#fff;color:#333}
.ga-btn.primary{background:#3d7fff;border-color:#3d7fff;color:#fff}
.ga-btn:disabled{opacity:.55}
.ga-listlink{flex:0 0 auto;font-size:15px;color:#3d7fff;padding:0 6px;cursor:pointer}
.ga-scanmask{position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:99;display:flex;align-items:center;justify-content:center}
.ga-scanbox{width:86%;max-width:330px;background:#111;border-radius:12px;padding:14px}
#ga-scanview{width:100%;aspect-ratio:1/1;background:#000;border-radius:8px;overflow:hidden;position:relative}
#ga-scanview video{width:100%!important;height:100%!important;object-fit:cover}
#ga-scanwrap{position:relative}
#ga-scanwrap .ga-scanline{position:absolute;left:4%;right:4%;height:3px;top:12%;z-index:3;border-radius:2px;background:linear-gradient(90deg,rgba(25,195,166,0),#19c3a6 18%,#52ffd9 50%,#19c3a6 82%,rgba(25,195,166,0));box-shadow:0 0 14px rgba(37,230,196,.95),0 0 30px rgba(37,230,196,.45);animation:scline 2.2s ease-in-out infinite;pointer-events:none}
#ga-scanwrap .ga-scanline::after{content:"";position:absolute;left:15%;right:15%;top:-14px;height:14px;background:linear-gradient(180deg,rgba(37,230,196,0),rgba(37,230,196,.28));border-radius:2px}
.ga-scantip{color:#eee;font-size:13px;text-align:center;padding:10px 0 6px}
.ga-scanclose{display:block;margin:0 auto;background:#2a2a2a;color:#fff;border:0;border-radius:6px;padding:8px 26px;font-size:14px}
.ga-scanacts{display:flex;gap:10px;padding:10px 0 2px}
.ga-scanbtn{flex:1;border:0;border-radius:8px;padding:10px 0;font-size:14px;background:#3d7fff;color:#fff}
.ga-scanbtn.gray{background:#2a2a2a;color:#ddd}
.ga-scandbg{color:#ffb84d;font-size:12px;min-height:18px;text-align:center;word-break:break-all;padding:0 4px}
.ga-scanver{color:#777;font-size:11px;text-align:center;padding:2px 0 8px}
.sc-dbg{font-size:12px;color:#e67e22;min-height:16px;text-align:center;word-break:break-all;padding:2px 8px}

/* ============ 商品库存表 SSS_V1（左分类侧栏 + 右库存列表） ============ */
.os-scan{font-size:20px;color:#3d7fff;padding:0 4px 0 10px;cursor:pointer;user-select:none}
.ss-page{padding:0 0 20px}
.ss-body{display:flex;align-items:stretch;min-height:calc(100vh - 190px)}
.ss-cats{flex:0 0 92px;background:#f7f8fa;overflow-y:auto;max-height:calc(100vh - 190px);-webkit-overflow-scrolling:touch}
.ss-cat{position:relative;padding:16px 8px;font-size:14px;color:#444;text-align:center;cursor:pointer;word-break:break-all}
.ss-cat.on{background:#fff;color:#222;font-weight:600}
.ss-cat.on::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:3px;background:#26BFAE;border-radius:0 2px 2px 0}
.ss-list{flex:1;min-width:0;background:#fff;padding:0 12px;overflow-y:auto;max-height:calc(100vh - 190px);-webkit-overflow-scrolling:touch}
.ss-card{display:flex;align-items:flex-start;padding:12px 0;border-bottom:1px solid #f0f2f5;position:relative;text-decoration:none;color:inherit}
.ss-card:last-child{border-bottom:0}
.ss-card .gd-thumb{width:76px;height:76px;flex:0 0 76px;margin-right:10px;font-size:26px}
.ss-name{font-size:15px;font-weight:600;color:#222;line-height:20px;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:26px}
.ss-row{font-size:13px;color:#333;line-height:19px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ss-row .ss-dim{color:#8a919c}
.ss-more{position:absolute;top:12px;right:0;color:#98a1ad;font-size:15px;letter-spacing:1px}
.ss-gear{font-style:normal;font-size:13px;margin-left:2px}

/* ============ 成本统计 CST_V1 ============ */
.cst-page{padding:0 0 64px}
.cs-datewrap{display:flex;align-items:baseline;gap:6px}
.cs-dlabel{font-size:14px;color:#333}
.cs-datewrap input[type=date]{border:0;outline:0;background:transparent;font-size:15px;color:#26BFAE;font-family:inherit;padding:0;width:130px}
.cst-card{display:flex;align-items:flex-start;padding:12px 14px;border-bottom:1px solid #f0f2f5;position:relative;text-decoration:none;color:inherit;background:#fff}
.cst-card .gd-thumb{width:78px;height:78px;flex:0 0 78px;margin-right:10px;font-size:26px}
.cst-name{font-size:15px;font-weight:600;color:#222;line-height:20px;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:30px}
.cst-costrow{display:flex;align-items:baseline;justify-content:space-between;font-size:13px;color:#333;line-height:19px;margin-top:2px;padding-right:26px}
.cst-cost{color:#333}
.cst-card .gd-arrow{position:absolute;right:12px;top:50%;transform:translateY(-50%);color:#c3c9d1;font-size:18px}
.cst-sumbar{position:fixed;left:0;right:0;bottom:0;background:#d9f7f1;color:#1e9e8e;font-size:15px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));z-index:30;text-align:center}
.cst-sumbar i{font-style:normal;font-weight:600;margin:0 2px}

/* ============ 成本统计明细 CSI_V1 ============ */
.csi-page{padding:0 0 30px}
.csi-head{background:#fff;padding:16px 16px 18px;margin-bottom:12px}
.csi-name{font-size:17px;font-weight:600;color:#222;margin-bottom:8px}
.csi-row{font-size:14px;color:#333;line-height:24px}
.csi-row .ss-dim{color:#8a919c}
.csi-grp{background:#fff;padding:16px;margin-bottom:12px}
.csi-grpname{font-size:15px;font-weight:600;color:#222;margin-bottom:6px;display:flex;align-items:center}
.csi-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#8bc34a;margin-right:8px}

/* ============ 其他入库单 OIU_V1 ============ */
.oi-upblk{background:#fff;padding:12px 16px}
.oi-uphint{font-size:13px;color:#333;line-height:20px;margin-bottom:12px}
.oi-uptiles{display:flex;flex-wrap:wrap;gap:10px}
.oi-uptile{width:96px;height:96px;border-radius:4px;position:relative;overflow:hidden}
.oi-upimg{width:100%;height:100%;object-fit:cover;display:block}
.oi-updel{position:absolute;top:0;right:0;width:22px;height:22px;line-height:20px;text-align:center;background:rgba(0,0,0,.55);color:#fff;font-size:12px;border-radius:0 0 0 6px}
.oi-upadd{background:#f5f6f8;border:1px dashed #d5d9e0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.oi-upplus{font-size:30px;color:#b9bfc9;line-height:34px}
.oi-uptxt{font-size:12px;color:#8a919c;margin-top:2px}
.se-edlink{color:#26BFAE;font-size:15px}

/* ============ 调拨单 TFW_V1 ============ */
.tf-whgrid{display:flex;background:#fff;margin-top:10px}
.tf-whcell{flex:1;padding:12px 16px;position:relative}
.tf-whcell+.tf-whcell{border-left:1px solid #f0f1f4}
.tf-whk{font-size:14px;color:#333;margin-bottom:4px}
.tf-whv{font-size:13px;color:#26BFAE;min-height:18px}
.tf-whv.so-ph{color:#b9bfc9}
.tf-whcell .od-arr{color:#c3c9d2;font-style:normal}

/* ============ 仓库管理 WHU_V1 ============ */
.wh-list { background: #fff; margin-top: 8px; }
.wh-row { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid #f0f1f4; }
.wh-main { min-width: 0; }
.wh-name { font-size: 15px; color: #222; }
.wh-off { color: #b9bfc9; }
.wh-tag { font-size: 11px; color: #fff; background: #c0c4cc; border-radius: 3px; padding: 1px 5px; margin-left: 6px; }
.wh-no { font-size: 12px; color: #999; margin-top: 2px; }
.wh-acts { display: flex; gap: 16px; flex-shrink: 0; }
.wh-acts span { font-size: 14px; color: #4da1e0; cursor: pointer; }
.wh-fab { position: fixed; right: 20px; bottom: 90px; width: 52px; height: 52px; border-radius: 50%; background: #26C6BA; color: #fff; font-size: 30px; line-height: 50px; text-align: center; box-shadow: 0 4px 12px rgba(38,198,186,.4); z-index: 50; cursor: pointer; }
.wh-manage { color: #4da1e0; }
.pb-loss { color: #F56C6C; border-color: #F56C6C; background: #FEF0F0; }
.pb-gray { color: #909399; border-color: #CDD0D6; background: #F4F4F5; }

/* ============ 组装拆卸 ASU_V1 ============ */
.as-sec { font-size: 17px; color: #333; margin: 26px 16px 14px; }
.as-card { display: flex; align-items: center; margin: 0 16px 18px; padding: 22px 18px; border-radius: 10px; color: #fff; cursor: pointer; }
.as-blue { background: linear-gradient(135deg, #4D9FEC, #3D87E0); }
.as-purple { background: linear-gradient(135deg, #8B7CF6, #7A66F0); }
.as-ico { width: 40px; height: 40px; border-radius: 8px; background: rgba(255,255,255,.25); font-size: 22px; line-height: 40px; text-align: center; margin-right: 14px; flex-shrink: 0; }
.as-ico.round { border-radius: 50%; }
.as-main { min-width: 0; flex: 1; }
.as-t { font-size: 18px; }
.as-d { font-size: 13px; opacity: .85; margin-top: 4px; }
.as-arr { font-size: 22px; opacity: .8; margin-left: 10px; }
.atp-grp { background: #fff; margin-top: 10px; padding: 4px 16px 14px; }
.atp-name { display: flex; align-items: center; justify-content: space-between; font-size: 17px; color: #222; padding: 12px 0; border-bottom: 1px solid #f0f1f4; }
.atp-del { font-size: 16px; color: #999; cursor: pointer; }
.atp-sub { display: flex; align-items: center; justify-content: space-between; padding: 12px 0 4px; }
.atp-nm { font-size: 15px; color: #333; }
.atp-qty { font-size: 15px; color: #999; }
.atp-act { text-align: right; padding-top: 8px; }
.atp-use { display: inline-block; background: #26C6BA; color: #fff; font-size: 14px; border-radius: 16px; padding: 7px 18px; cursor: pointer; }
.od-in { border: none; outline: none; text-align: right; font-size: 15px; color: #333; flex: 1; background: transparent; }
.sc-del { color: #b9bfc9; font-size: 15px; padding: 0 4px; cursor: pointer; flex-shrink: 0; }

/* ============ 组装拆卸记录 ZZR_V1 ============ */
.zz-tabs { display: flex; justify-content: center; padding: 12px 0 4px; }
.zz-tab { min-width: 118px; text-align: center; font-size: 15px; padding: 9px 0; background: #fff; color: #333; border: 1px solid #e3e5e9; cursor: pointer; }
.zz-tab:first-child { border-radius: 18px 0 0 18px; }
.zz-tab:last-child { border-radius: 0 18px 18px 0; border-left: none; }
.zz-tab.on { background: #2b2f36; color: #fff; border-color: #2b2f36; }
.hd-more { font-size: 19px; color: #333; padding: 0 8px; cursor: pointer; letter-spacing: 1px; }

/* ===== CBP_V1 成本调整·选择商品整页（左侧分类栏+仓库筛选+商品卡多选） ===== */
.gp-page { padding: 10px 12px 0; }
.gp-search { display: flex; align-items: center; background: #fff; border-radius: 8px; padding: 8px 10px; gap: 8px; }
.gp-search input { flex: 1; border: none; outline: none; font-size: 14px; background: transparent; min-width: 0; }
.gp-sicon { font-size: 14px; color: #999; }
.gp-scan, .gp-addnew { font-size: 19px; color: #666; padding: 0 3px; cursor: pointer; }
.gp-filter { display: flex; align-items: center; gap: 26px; padding: 10px 4px; color: #666; font-size: 14px; }
.gp-fitem { cursor: pointer; }
.gp-fitem.picked { color: #26C6BA; }
.gp-fitem em { font-style: normal; font-size: 11px; margin-left: 2px; }
.gp-fset { margin-left: auto; color: #555; }
.gp-gear { font-size: 13px; margin-left: 2px; }
.gp-body { display: flex; height: calc(100vh - 252px); background: #fff; border-radius: 8px 8px 0 0; overflow: hidden; }
.gp-side { width: 108px; overflow-y: auto; background: #F7F8FA; flex-shrink: 0; }
.gp-side-item { padding: 15px 10px 15px 12px; font-size: 13px; color: #555; position: relative; cursor: pointer; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gp-side-item.on { background: #fff; color: #26C6BA; font-weight: 600; }
.gp-side-item.on::before { content: ""; position: absolute; left: 0; top: 12px; bottom: 12px; width: 3px; background: #26C6BA; border-radius: 0 2px 2px 0; }
.gp-main { flex: 1; overflow-y: auto; padding: 4px 12px 70px; min-width: 0; }
.gp-card { display: flex; gap: 10px; padding: 12px 0; border-bottom: 1px solid #F0F2F4; position: relative; }
.gp-img { width: 86px; height: 86px; border-radius: 6px; background: #F2F4F6; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-size: 26px; color: #BBB; overflow: hidden; }
.gp-img img { width: 100%; height: 100%; object-fit: cover; }
.gp-info { flex: 1; min-width: 0; padding-right: 42px; }
.gp-name { font-size: 15px; font-weight: 600; color: #222; margin-bottom: 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gp-meta { font-size: 12px; color: #999; margin-bottom: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gp-plus { position: absolute; right: 2px; top: 50%; transform: translateY(-50%); width: 30px; height: 30px; border-radius: 50%; background: #26C6BA; color: #fff; font-size: 20px; line-height: 28px; text-align: center; border: none; cursor: pointer; }
.gp-plus.on { background: #fff; color: #26C6BA; border: 2px solid #26C6BA; line-height: 24px; }
.gp-ftbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 20; display: flex; align-items: center; background: #fff; padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); border-top: 1px solid #EEE; }
.gp-cart { flex: 1; font-size: 14px; color: #333; }
.gp-cart i { font-style: normal; color: #26C6BA; font-weight: 600; margin: 0 2px; }
.gp-ok { background: #26C6BA; color: #fff; border: none; border-radius: 8px; padding: 11px 34px; font-size: 15px; cursor: pointer; }

/* ===== SNB_V1 序列号跟踪 + 批次清单 ===== */
.snb-in { background: #E3F7F5; color: #26C6BA; }
.snb-out { background: #FFF1E3; color: #FF9800; }
.snf-sheet { max-height: 72vh; display: flex; flex-direction: column; }
.snf-list { overflow-y: auto; max-height: 52vh; padding: 0 14px; }
.snf-row { display: flex; gap: 8px; align-items: flex-start; padding: 11px 0; border-bottom: 1px solid #F0F2F4; }
.snf-row:last-child { border-bottom: none; }
.snf-row .pay-badge { flex-shrink: 0; margin-top: 2px; }
.snf-main { flex: 1; min-width: 0; }
.snf-t1 { font-size: 14px; font-weight: 600; color: #222; }
.snf-t2 { font-size: 12px; color: #888; margin-top: 2px; }
.snf-t3 { font-size: 12px; color: #AAA; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.btl-io { display: flex; gap: 22px; padding: 6px 0 2px; font-size: 12px; color: #999; }
.btl-io i { font-style: normal; color: #222; font-weight: 600; margin-left: 4px; }
.btl-io .btl-bal i { color: #26C6BA; }

/* ===== BTLP_V1 批次清单·内联商品分类面板 ===== */
.btp-panel { background: #fff; border-radius: 8px; margin: 0 0 8px; overflow: hidden; }
.btp-row { position: relative; padding: 17px 14px 17px 40px; font-size: 15px; color: #333; border-bottom: 1px solid #F5F6F8; cursor: pointer; }
.btp-row:last-child { border-bottom: none; }
.btp-dot { position: absolute; left: 18px; top: 50%; transform: translateY(-50%); width: 7px; height: 7px; border-radius: 50%; background: #C6C9CE; }
.btp-row.on { color: #26C6BA; }
.btp-row.on .btp-dot { background: #26C6BA; }
.btp-sub { padding-left: 62px; font-size: 14px; color: #666; background: #FBFCFD; }
.btp-sub .btp-dot { left: 40px; width: 6px; height: 6px; }
.btp-toggle { position: absolute; right: 16px; top: 50%; transform: translateY(-50%); font-style: normal; font-size: 15px; color: #888; padding: 4px 6px; }

/* ===== SKD_V1 资金管理·收款单（表单/客户选择/账户页/类型弹层） ===== */
#skd-check, #skd-save { flex: 1; }
#skd-check { margin-right: 10px; }
.skd-group { background: #fff; border-radius: 8px; margin-bottom: 8px; overflow: hidden; }
.skd-row { display: flex; align-items: center; min-height: 52px; padding: 6px 14px; border-bottom: 1px solid #F3F5F7; }
.skd-row:last-child { border-bottom: none; }
.skd-lb { font-size: 15px; color: #333; flex-shrink: 0; }
.skd-req { color: #E64340; font-style: normal; margin-left: 2px; }
.skd-val { margin-left: auto; font-size: 15px; color: #222; display: flex; align-items: center; text-align: right; }
.skd-val.ph { color: #BBB; }
.skd-val .oc2-arrow { margin-left: 4px; color: #C2C7CC; font-style: normal; }
.skd-input { margin-left: auto; border: 0; outline: none; text-align: right; font-size: 15px; color: #222; width: 160px; background: transparent; }
.skd-acchead { display: flex; align-items: center; justify-content: space-between; padding: 9px 14px 2px; background: #F7F8FA; font-size: 13px; color: #999; }
.skd-acchead em { font-style: normal; color: #E64340; padding: 2px 6px; cursor: pointer; }
.skd-addacc { padding: 14px; font-size: 15px; color: #333; cursor: pointer; }
.skd-addacc i { font-style: normal; color: #26C6BA; font-size: 19px; margin-right: 6px; vertical-align: -2px; }
.skc-filter { background: #fff; text-align: center; padding: 13px 0; font-size: 15px; color: #333; margin-bottom: 8px; border-radius: 8px; cursor: pointer; }
.skc-filter .cf-arrow { font-style: normal; color: #999; font-size: 12px; margin-left: 3px; }
.skc-row { background: #fff; padding: 19px 16px; font-size: 16px; color: #222; border-bottom: 1px solid #F3F5F7; cursor: pointer; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.skc-row:last-child { border-bottom: none; }
.skt-row { background: #fff; display: flex; align-items: center; padding: 0 16px; min-height: 58px; border-bottom: 1px solid #F3F5F7; }
.skt-name { font-size: 16px; color: #222; }
.skt-ops { margin-left: auto; }
.skt-ops em { font-style: normal; font-size: 14px; color: #4DA1FF; margin-left: 14px; cursor: pointer; }
.skt-ops em[data-del] { color: #4DA1FF; }
.skt-end { text-align: center; color: #BBB; font-size: 13px; padding: 18px 0 80px; }
.skt-fab { position: fixed; right: 18px; bottom: 46px; width: 56px; height: 56px; border-radius: 50%; background: #26C6BA; color: #fff; font-size: 30px; line-height: 54px; text-align: center; box-shadow: 0 4px 12px rgba(38,198,186,.4); cursor: pointer; z-index: 30; }
.skt-sheet { padding-bottom: 4px; }
.skt-head { display: flex; justify-content: space-between; padding: 14px 16px; font-size: 15px; }
.skt-cancel { color: #999; }
.skt-ok { color: #26C6BA; cursor: pointer; }
.skt-opt { text-align: center; padding: 17px 0; font-size: 16px; color: #BBB; border-top: 1px solid #F3F5F7; cursor: pointer; }
.skt-opt.on { color: #222; font-weight: 600; }
.skt-src { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border-bottom: 1px solid #F0F2F4; cursor: pointer; }
.skt-src.on { background: #F0FBFA; }
.skt-src .snf-main { flex: 1; min-width: 0; }
.skt-nc { font-size: 12px; color: #999; text-align: right; flex-shrink: 0; }
.skt-nc i { display: block; font-style: normal; color: #26C6BA; font-weight: 600; font-size: 14px; }
.skt-asp { padding-bottom: 4px; }
.skt-field { display: flex; align-items: center; padding: 12px 16px; border-bottom: 1px solid #F3F5F7; }
.skt-field label { width: 76px; font-size: 14px; color: #666; flex-shrink: 0; }
.skt-field input { flex: 1; border: 0; outline: none; font-size: 15px; color: #222; background: transparent; }
.skt-okbtn { text-align: center; padding: 13px 0; color: #26C6BA; font-size: 16px; font-weight: 600; cursor: pointer; }
/* ===== QTS_V1 资金管理·其他收入（选择类别页） ===== */
.qtc-row { display: flex; align-items: center; justify-content: space-between; }
.qtc-name { font-size: 15px; color: #222; flex: 1; }
.qtc-ops { flex-shrink: 0; }
.qtc-ops em { font-style: normal; font-size: 14px; color: #1F8FF9; padding: 4px 0 4px 14px; cursor: pointer; }
.qtc-ops em[data-del] { color: #1F8FF9; }

/* ===== HXD_V1 资金管理·核销单（预收冲应收） ===== */
.skd-sub { font-size: 13px; color: #888; }
.skd-sub b { font-weight: 600; color: #26a2ff; }
.skd-sub .skd-amt, .skd-amt { color: #FF7700; font-weight: 600; }
.ps-item.ps-disabled { color: #C2C7CC; }
.hxb-center { justify-content: center; }
.hxb-item { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; border-bottom: 1px solid #F0F2F4; background: #fff; }
.hxb-chk { flex-shrink: 0; width: 20px; height: 20px; border-radius: 50%; border: 1.5px solid #C6CBD2; margin-top: 3px; box-sizing: border-box; }
.hxb-item.on .hxb-chk { border-color: #1DBEA3; background: #1DBEA3 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' d='M6.5 10.2 3.8 7.5l-1 1 3.7 3.7 7-7-1-1z'/%3E%3C/svg%3E") center/12px no-repeat; }
.hxb-main { flex: 1; min-width: 0; }
.hxb-t1 { font-size: 14px; font-weight: 600; color: #222; }
.hxb-t2 { font-size: 12px; color: #888; margin-top: 2px; }
.hxb-t3 { font-size: 12px; color: #888; margin-top: 2px; }
.hxb-t3 i { font-style: normal; color: #FF7700; font-weight: 600; margin-left: 6px; }
.hxd-pickbar { align-items: center; }
.hxd-all { flex-shrink: 0; width: 22px; height: 22px; border-radius: 50%; border: 1.5px solid #C6CBD2; box-sizing: border-box; cursor: pointer; }
.hxd-all.on { border-color: #1DBEA3; background: #1DBEA3 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' d='M6.5 10.2 3.8 7.5l-1 1 3.7 3.7 7-7-1-1z'/%3E%3C/svg%3E") center/14px no-repeat; }
.hxd-suminfo { flex: 1; text-align: left; font-size: 13px; color: #666; padding-left: 10px; }
.hxd-suminfo b { color: #FF7700; font-size: 16px; }
.hxd-suminfo span { margin-left: 8px; color: #999; font-size: 12px; }
.hxd-pickbar .od-b { flex: 0 0 96px; }
.od-custom-row { display: flex; align-items: center; gap: 8px; padding: 10px 14px; }
.od-custom-row input[type="date"] { flex: 1; height: 34px; border: 1px solid #E0E4E8; border-radius: 6px; padding: 0 8px; font-size: 13px; }

/* ===== ACCT_V1 资金账户/流水 ===== */
.acct-tabs{display:flex;align-items:center;background:#fff;border-bottom:1px solid #eee;padding:0 8px}
.acct-tab{flex:1;text-align:center;padding:12px 0;font-size:15px;color:#666;border-bottom:2px solid transparent}
.acct-tab.on{color:#26C6BA;border-bottom-color:#26C6BA;font-weight:600}
.acct-plus{font-size:24px;color:#333;padding:0 6px 0 14px}
.acct-nav{display:flex;align-items:center;justify-content:space-between;background:#fff;padding:10px 16px;border-bottom:1px solid #f0f0f0}
.an-btn{color:#26C6BA;font-size:14px}
.an-label{font-size:16px;color:#222}
.acct-page{padding-bottom:64px}
.acct-row{display:flex;align-items:center;background:#fff;padding:14px 16px;border-bottom:1px solid #f0f0f0}
.ar-name{flex:1;font-size:15px;color:#333}
.ar-amt{font-size:15px;color:#333;margin-right:8px}
.ar-arrow{color:#bbb;font-size:18px}
.acct-total{position:fixed;left:0;right:0;bottom:0;background:#d9f3f1;padding:14px 16px;font-size:14px;color:#333;z-index:6}
.am-row{display:flex;align-items:center;background:#fff;padding:16px;border-bottom:1px solid #f0f0f0}
.am-name{flex:1;font-size:15px;color:#333}
.am-ops em{font-style:normal;color:#3aa2ff;font-size:14px;margin-left:16px}
.list-end{text-align:center;color:#bbb;font-size:13px;padding:18px 0}
.acct-form{width:82%;max-width:340px}
.af-row{display:flex;align-items:center;margin:14px 8px}
.af-row label{width:80px;font-size:14px;color:#333;text-align:right;margin-right:10px}
.af-row label i{color:#e6533c;font-style:normal;margin-left:2px}
.af-row input{flex:1;border:1px solid #ddd;border-radius:4px;padding:9px 10px;font-size:14px;min-width:0}
.flow-filters{display:flex;align-items:center;background:#fff;padding:10px 16px;border-bottom:1px solid #f0f0f0}
.ff-item{font-size:14px;color:#666;margin-right:24px}
.ff-item .cf-arrow{margin-left:3px;color:#999}
.flow-page{background:#f5f6f7;min-height:100vh}
.fs-card{background:#fff;margin:10px;border-radius:6px;padding:12px 14px;font-size:14px;color:#666}
.fs-line{padding:3px 0}
.fs-line b{color:#222;font-weight:600}
.fs-io{display:flex;padding:3px 0}
.fs-io span{flex:1}
.fs-io b,.fs-acc b{color:#222;font-weight:600}
.fs-acc{display:flex;justify-content:space-between;background:#fff;margin:0 10px;border-radius:6px;padding:13px 14px;font-size:15px;color:#222}
.fl-date{background:#4a90e2;color:#fff;font-size:13px;padding:5px 14px;margin:10px 10px 0;border-radius:4px}
.fl-card{background:#fff;margin:0 10px;border-bottom:1px solid #f0f0f0;padding:10px 14px}
.fl-card:last-of-type{border-bottom:none;border-radius:0 0 6px 6px;margin-bottom:10px}
.fc-top{display:flex;justify-content:space-between;align-items:center}
.fc-name{font-size:15px;color:#222;font-weight:600}
.fc-badge{background:#e8f3ff;color:#4a90e2;font-size:12px;padding:2px 8px;border-radius:3px}
.fc-mid{display:flex;justify-content:space-between;align-items:center;color:#888;font-size:13px;margin:7px 0}
.fc-arrow{color:#bbb}
.fc-bot{display:flex;justify-content:space-between;font-size:13px;color:#333}
.fc-in{color:#e6533c}
.ff-row{display:flex;align-items:center;background:#fff;padding:16px;border-bottom:1px solid #f0f0f0}
.ffr-name{flex:1;font-size:15px;color:#333}
.ffr-val{font-size:14px;color:#26C6BA;margin-right:6px}
.ff-btns{display:flex;position:fixed;left:0;right:0;bottom:0;background:#fff;padding:10px;gap:10px}
.ff-btns button{flex:1;border:none;border-radius:4px;padding:12px 0;font-size:15px}
.ff-reset{background:#f2f3f5;color:#666}
.ff-ok{background:#26C6BA;color:#fff}
.fbu-row{background:#fff;padding:15px 16px;border-bottom:1px solid #f0f0f0;font-size:15px;color:#333}

/* ===== PSE_V1 采销费用清单 ===== */
.pse-item{display:flex;align-items:flex-start;background:#fff;padding:12px 14px;border-bottom:1px solid #f0f0f0}
.pse-chk{width:20px;height:20px;border:1.5px solid #ccc;border-radius:50%;margin:12px 10px 0 0;flex:none;display:flex;align-items:center;justify-content:center;font-size:12px;color:#fff}
.pse-chk.on{background:#26C6BA;border-color:#26C6BA}
.pse-main{flex:1;min-width:0}
.pse-top{display:flex;justify-content:space-between;align-items:center}
.pse-name{font-size:15px;color:#222;font-weight:600}
.pse-badge{font-size:12px;padding:2px 8px;border-radius:3px;flex:none;margin-left:8px}
.pse-badge.ok{background:#e5f6f0;color:#26a68a}
.pse-badge.un{background:#fdeeee;color:#e6533c}
.pse-badge.part{background:#fff7e8;color:#e6a23c}
.pse-mid{display:flex;justify-content:space-between;font-size:13px;color:#888;margin:7px 0;gap:8px}
.pse-bot{display:flex;justify-content:space-between;font-size:13px;color:#333}
.pse-amt{color:#222;font-weight:600}
.pse-un{color:#e6533c}
.pse-sub{font-size:12px;color:#bbb;margin-top:5px}
.pse-bottom{position:fixed;left:0;right:0;bottom:0;background:#fff;display:flex;align-items:center;padding:10px 12px;z-index:6;box-shadow:0 -1px 6px rgba(0,0,0,.05)}
.pse-all{width:22px;height:22px;border:1.5px solid #ccc;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;color:#fff;margin-right:10px;flex:none}
.pse-all.on{background:#26C6BA;border-color:#26C6BA}
.pse-cnt{flex:1;font-size:14px;color:#333}
.pse-cnt i{font-style:normal;color:#26C6BA;padding:0 2px}
.pse-paybtn{background:#26C6BA;color:#fff;border:none;border-radius:4px;padding:11px 22px;font-size:15px}
.pse-paybtn.dis{background:#b2e6e0;color:#fff}
.pop-list{max-height:58vh;overflow-y:auto}

/* ---------- 统计报表页（四页签 m2 v20260907a） ---------- */
.rp-tabs { display: flex; background: var(--card); border-radius: 12px; padding: 4px; margin-bottom: 10px; }
.rp-tab { flex: 1; text-align: center; font-size: 13px; padding: 8px 0; border-radius: 9px; color: var(--text-sub); }
.rp-tab.on { background: var(--primary); color: #fff; font-weight: 600; }
.rp-ranges { display: flex; gap: 8px; margin-bottom: 12px; }
.rp-range { flex: 1; text-align: center; font-size: 13px; padding: 7px 0; background: var(--card); border-radius: 9px; color: var(--text-sub); }
.rp-range.on { background: var(--primary); color: #fff; font-weight: 600; }
.rp-title { font-size: 13px; color: var(--text-sub); padding: 2px 2px 10px; }
.rp-dates { display: flex; align-items: center; gap: 8px; padding: 4px 16px 12px; }
.rp-dates input { flex: 1; border: 1px solid var(--border); border-radius: 8px; padding: 8px; font-size: 13px; color: var(--text); }
.pop-ok { text-align: center; padding: 12px 0; color: var(--primary); font-weight: 600; border-top: 1px solid var(--border); }

/* ---------- 统计报表 v2（旧版青绿风格 v20260907b） ---------- */
.rp2-tabs { display: flex; background: var(--card); border-bottom: 1px solid var(--border); }
.rp2-tab { flex: 1; text-align: center; font-size: 15px; padding: 13px 0 11px; color: var(--text); position: relative; }
.rp2-tab.on { color: #19c3a6; font-weight: 600; }
.rp2-tab.on::after { content: ''; position: absolute; left: 22%; right: 22%; bottom: 0; height: 3px; background: #19c3a6; border-radius: 2px; }
.rp2-ranges { display: flex; gap: 10px; padding: 12px 14px 2px; }
.rp2-range { flex: 1; text-align: center; font-size: 14px; padding: 8px 0; border-radius: 8px; color: var(--text); background: var(--card); }
.rp2-range.on { background: #19c3a6; color: #fff; font-weight: 600; }
.rp2-sec { background: var(--card); border-radius: 12px; margin: 12px 12px 0; padding: 14px; }
.rp2-sec-hd { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.rp2-sec-hd span:first-child { font-size: 16px; font-weight: 600; color: var(--text); }
.rp2-more { font-size: 13px; color: #19c3a6; }
.rp2-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.rp2-card { background: linear-gradient(150deg, #eafaf6, #ddf3ec); border-radius: 10px; padding: 18px 10px; text-align: center; }
.rp2-val { font-size: 22px; font-weight: 700; color: #19c3a6; word-break: break-all; }
.rp2-lab { font-size: 13px; color: var(--text-sub); margin-top: 6px; }
.rp2-donut { position: relative; display: flex; justify-content: center; padding: 10px 0 6px; }
.rp2-donut-c { position: absolute; top: 0; left: 0; right: 0; bottom: 6px; display: flex; flex-direction: column; align-items: center; justify-content: center; pointer-events: none; }
.rp2-donut-v { font-size: 19px; font-weight: 700; color: var(--text); max-width: 120px; text-align: center; }
.rp2-donut-l { font-size: 13px; color: var(--text-sub); margin-top: 4px; }
.rp2-accrow { display: flex; justify-content: space-between; padding: 12px 2px; font-size: 14px; color: var(--text); border-bottom: 1px solid var(--border); }
.rp2-accrow:last-child { border-bottom: none; }
.hd-act { font-size: 13px; color: #19c3a6; }
/* 资金账户页 */
.fa-tabs { display: flex; background: var(--card); border-bottom: 1px solid var(--border); }
.fa-tab { flex: 1; text-align: center; font-size: 14px; padding: 11px 0; color: var(--text); position: relative; }
.fa-tab.on { color: #19c3a6; font-weight: 600; }
.fa-tab.on::after { content: ''; position: absolute; left: 30%; right: 30%; bottom: 0; height: 3px; background: #19c3a6; border-radius: 2px; }
.fa-datebar { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; background: var(--card); border-bottom: 1px solid var(--border); font-size: 14px; color: var(--text); }
.fa-datebar .lnk { color: #19c3a6; }
.fa-row { display: flex; justify-content: space-between; padding: 14px 16px; background: var(--card); border-bottom: 1px solid var(--border); font-size: 15px; color: var(--text); }
.fa-row .neg, .rp2-val-neg { color: #E5763C; }
.fa-total { position: fixed; left: 0; right: 0; bottom: 0; background: #eafaf6; padding: 14px 16px; font-size: 15px; color: var(--text); }
.fa-page { padding-bottom: 52px; }
/* 往来单位欠款页 */
.db-filter { text-align: center; font-size: 14px; color: var(--text); padding: 12px 0 4px; }
.db-filter em { font-style: normal; color: var(--text-sub); }
.db-row { background: var(--card); padding: 14px 16px; border-bottom: 1px solid var(--border); display: flex; justify-content: space-between; align-items: center; }
.db-name { font-size: 15px; color: var(--text); font-weight: 500; }
.db-debt { font-size: 13px; color: var(--text-sub); margin-top: 5px; }
.db-tag { font-size: 12px; padding: 2px 8px; border-radius: 4px; border: 1px solid; flex-shrink: 0; }
.db-tag.cust { color: #19c3a6; border-color: #19c3a6; }
.db-tag.sup { color: #4a90d9; border-color: #4a90d9; }
.am-cards { margin: 12px; }

/* ---------- 采购统计 v20260907c ---------- */
.pr-payamt { font-size: 15px; color: var(--text); padding: 14px 2px 2px; }
.pr-sup3 { display: grid; grid-template-columns: 1fr 1.2fr 1.2fr; gap: 8px; }
.pr-sup3c { background: #eefaf7; border-radius: 10px; padding: 14px 6px; text-align: center; }
.pr-sup3c .rp2-val { font-size: 19px; }
.pr-sup3c.hl .rp2-val { font-size: 22px; }
.pr-pills { display: flex; gap: 8px; margin: 8px 0; flex-wrap: wrap; }
.pr-pill { font-size: 13px; padding: 6px 14px; border-radius: 8px; background: #eefaf7; color: var(--text); border: 1px solid transparent; }
.pr-pill.on { background: #19c3a6; color: #fff; font-weight: 600; }
.pr-rkrow { display: flex; align-items: center; padding: 11px 2px; border-bottom: 1px solid var(--border); font-size: 14px; }
.pr-rkrow:last-of-type { border-bottom: none; }
.pr-rkno { width: 22px; height: 22px; border-radius: 50%; background: #eee; color: #999; font-size: 12px; text-align: center; line-height: 22px; margin-right: 10px; flex-shrink: 0; }
.pr-rkno.top { background: #19c3a6; color: #fff; }
.pr-rkname { flex: 1; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pr-rkval { color: #19c3a6; font-weight: 600; margin-left: 8px; }
.pr-all { text-align: center; color: #19c3a6; font-size: 14px; padding: 12px 0 2px; }
.tr-legend { text-align: center; font-size: 13px; color: #19c3a6; padding: 6px 0 2px; }
/* 供应商管理页 */
.sm-searchbar { display: flex; align-items: center; gap: 10px; padding: 10px 14px; background: var(--card); }
.sm-searchbar .os-input { flex: 1; }
.sm-add { font-size: 26px; color: var(--text); padding: 0 6px; }
.sm-row .sm-l { flex: 1; min-width: 0; }
.sm-pay { font-size: 13px; color: var(--text-sub); margin-top: 5px; }
.sm-pay .neg { color: #19c3a6; }
.sm-date { font-size: 13px; color: var(--text-sub); flex-shrink: 0; margin-left: 8px; }
.sm-total { display: flex; justify-content: space-between; background: #eafaf6; }
.sm-total em { font-style: normal; color: #19c3a6; font-weight: 600; }
/* 采购汇总页 */
.ps-filter { display: flex; justify-content: space-between; align-items: center; padding: 10px 16px 2px; font-size: 14px; color: var(--text); }
.ps-time { color: #19c3a6; }
.ps-sum { font-size: 13px; color: var(--text-sub); }
.ps-card { background: var(--card); border-radius: 12px; margin: 10px 12px 0; padding: 13px 14px; }
.ps-hd { display: flex; align-items: baseline; flex-wrap: wrap; }
.ps-name { font-size: 15px; font-weight: 600; color: var(--text); }
.ps-code { font-size: 12px; color: var(--text-sub); }
.ps-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 7px 10px; margin-top: 10px; font-size: 13px; color: var(--text-sub); }
/* 时间选择弹层网格 */
.ps-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; padding: 6px 0 12px; }
.ps-cell { text-align: center; font-size: 14px; padding: 9px 0; background: #f3f5f7; border-radius: 8px; color: var(--text); border: 1px solid transparent; }
.ps-cell.on { background: #fff; color: #19c3a6; border-color: #19c3a6; }
.ps-cell.wide { display: block; margin: 4px 0 12px; }

/* ---------- 库存统计 v20260907e ---------- */
/* 页签入口卡（维护商品/查库存） */
.iv-entries { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 12px; }
.iv-entry { background: var(--card); border-radius: 12px; padding: 14px; }
.iv-en-t { font-size: 16px; font-weight: 600; color: var(--text); margin-bottom: 10px; }
.iv-en-box { background: #e8f8f5; border-radius: 10px; padding: 16px 8px; text-align: center; }
.iv-en-box .rp2-val { font-size: 26px; color: var(--text); }
/* 库存金额占比环形图 + 图例 */
.iv-donut { position: relative; width: 150px; height: 150px; margin: 6px auto 2px; }
.iv-donut-c { top: 0; left: 0; right: 0; bottom: 0; }
.iv-donut-v { font-size: 13px; font-weight: 600; color: var(--text); padding: 0 4px; text-align: center; }
.iv-legend { margin-top: 6px; }
.iv-lgrow { display: flex; align-items: center; padding: 9px 2px; border-bottom: 1px solid var(--border); font-size: 14px; }
.iv-lgrow:last-of-type { border-bottom: none; }
.iv-lgname { flex: 1; color: var(--text); margin-left: 8px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.iv-lgval { color: var(--text); font-weight: 600; }
.iv-lgval em { font-style: normal; font-size: 12px; color: var(--text-sub); margin-left: 2px; }
/* 商品列表页 */
.gl-filter { display: flex; justify-content: space-between; padding: 12px 24px 6px; }
.gl-row { background: var(--card); padding: 12px 14px; border-bottom: 1px solid var(--border); display: flex; align-items: center; }
.gl-img { width: 72px; height: 72px; border-radius: 8px; background: #f3f5f7; overflow: hidden; flex-shrink: 0; display: flex; align-items: center; justify-content: center; }
.gl-img img { width: 100%; height: 100%; object-fit: cover; }
.gl-main { flex: 1; min-width: 0; margin-left: 12px; }
.gl-name { font-size: 15px; font-weight: 500; color: var(--text); display: flex; align-items: center; justify-content: space-between; }
.gl-tag { font-size: 12px; color: #19c3a6; font-weight: 400; flex-shrink: 0; }
.gl-tag.off { color: #bbb; }
.gl-line { font-size: 12px; color: var(--text-sub); margin-top: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gl-arrow { color: #ccc; font-size: 18px; margin-left: 6px; flex-shrink: 0; }
/* 商品库存表（左分类边栏 + 商品行） */
.sl-filter { display: flex; justify-content: space-between; padding: 12px 24px 6px; }
.sl-wrap { display: flex; align-items: flex-start; }
.sl-side { width: 92px; flex-shrink: 0; background: #f3f5f7; min-height: 60vh; }
.sl-cat { font-size: 13px; color: var(--text); padding: 15px 8px; text-align: center; border-left: 3px solid transparent; word-break: break-all; }
.sl-cat.on { background: var(--card); color: #19c3a6; font-weight: 600; border-left-color: #19c3a6; }
.sl-list { flex: 1; min-width: 0; }
.sl-row { background: var(--card); padding: 12px; border-bottom: 1px solid var(--border); display: flex; }
.sl-row .gl-img { width: 64px; height: 64px; }
.sl-info { flex: 1; min-width: 0; margin-left: 10px; }
.sl-name { font-size: 14px; font-weight: 500; color: var(--text); display: flex; justify-content: space-between; align-items: center; }
.sl-dots { color: #bbb; letter-spacing: 1px; flex-shrink: 0; }
.sl-line { font-size: 12px; color: var(--text-sub); margin-top: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 设置开关弹层 */
.stg-row { display: flex; justify-content: space-between; align-items: center; font-size: 15px; color: var(--text); padding: 14px 2px; border-bottom: 1px solid var(--border); }
.stg-sw { width: 44px; height: 24px; border-radius: 12px; background: #ddd; position: relative; transition: background .2s; flex-shrink: 0; cursor: pointer; }
.stg-sw i { position: absolute; left: 2px; top: 2px; width: 20px; height: 20px; border-radius: 50%; background: #fff; transition: left .2s; box-shadow: 0 1px 3px rgba(0,0,0,.2); }
.stg-sw.on { background: #19c3a6; }
.stg-sw.on i { left: 22px; }
.stg-pills { display: flex; gap: 12px; justify-content: center; padding: 16px 0 4px; }
.stg-pill { font-size: 14px; padding: 8px 22px; border-radius: 18px; background: #f3f5f7; color: var(--text-sub); }
.stg-pill.on { background: #19c3a6; color: #fff; font-weight: 600; }
/* 库存统计明细 */
.id-row { background: var(--card); padding: 15px 16px; border-bottom: 1px solid var(--border); display: flex; justify-content: space-between; font-size: 15px; }
.id-name { color: var(--text); }
.id-val { color: var(--text); }

/* ---------- 首页 v20260908a ---------- */
.hm-page { min-height: 100vh; background: #f5f6fa; padding-bottom: 24px; }
.hm-hero { position: relative; background: linear-gradient(150deg, #4a5cd0 0%, #3a49ae 55%, #2e3a92 100%); padding: 22px 20px 74px; border-radius: 0 0 0 0; }
.hm-hero::after { content: ""; position: absolute; right: -40px; top: -30px; width: 180px; height: 180px; border-radius: 50%; background: rgba(255,255,255,.06); }
.hm-hero-title { display: flex; align-items: center; font-size: 18px; color: #fff; font-weight: 600; }
.hm-eye { margin-left: 10px; display: inline-flex; cursor: pointer; opacity: .9; }
.hm-hero-amt { font-size: 40px; color: #fff; font-weight: 600; margin: 14px 0 18px; letter-spacing: 1px; }
.hm-hero-metrics { display: flex; }
.hm-m { flex: 1; min-width: 0; cursor: pointer; }
.hm-m:active { opacity: .7; }
.hm-amt { cursor: pointer; }
.hm-amt:active { opacity: .7; }
.hm-m-arr { font-style: normal; font-size: 14px; color: rgba(255,255,255,.65); margin-left: 2px; }
.hm-m-l { display: block; font-size: 13px; color: rgba(255,255,255,.75); margin-bottom: 6px; white-space: nowrap; }
.hm-m-v { display: block; font-size: 17px; color: #fff; font-weight: 600; }
.hm-dots { display: flex; gap: 8px; justify-content: center; margin-top: 16px; padding: 8px 0; }
.hm-dot { width: 8px; height: 8px; border-radius: 50%; background: rgba(255,255,255,.4); cursor: pointer; box-shadow: 0 0 0 6px rgba(255,255,255,0); }
.hm-dot.on { background: #fff; }
/* 四入口悬浮卡 */
.hm-entries { position: relative; margin: -54px 12px 0; background: #fff; border-radius: 12px; padding: 18px 6px 14px; display: grid; grid-template-columns: repeat(4, 1fr); box-shadow: 0 4px 14px rgba(50,60,140,.08); }
.hm-en { display: flex; flex-direction: column; align-items: center; text-decoration: none; }
.hm-en-ic { width: 46px; height: 46px; border-radius: 12px; display: flex; align-items: center; justify-content: center; }
.hm-en-icin { width: 34px; height: 34px; border-radius: 9px; display: flex; align-items: center; justify-content: center; }
.hm-en-t { font-size: 13px; color: #333; margin-top: 8px; }
/* 常用应用 */
.hm-apps-head { display: flex; justify-content: space-between; align-items: center; padding: 18px 16px 10px; }
.hm-apps-title { font-size: 17px; font-weight: 700; color: #333; }
.hm-edit { display: inline-flex; cursor: pointer; }
.hm-apps-card { margin: 0 12px; background: #fff; border-radius: 12px; padding: 18px 4px 8px; box-shadow: 0 2px 10px rgba(50,60,140,.06); }
.hm-apps-grid { display: grid; grid-template-columns: repeat(4, 1fr); row-gap: 18px; }
.hm-app { display: flex; flex-direction: column; align-items: center; text-decoration: none; cursor: pointer; }
.hm-app-ic { width: 42px; height: 42px; border-radius: 11px; display: flex; align-items: center; justify-content: center; }
.hm-app-t { font-size: 12px; color: #333; margin-top: 7px; text-align: center; }
/* 帮助中心 */
.hm-help-head { font-size: 17px; font-weight: 700; color: #333; padding: 18px 16px 10px; }
.hm-help-card { margin: 0 12px 8px; background: #fff; border-radius: 12px; padding: 15px 16px; display: flex; justify-content: space-between; align-items: center; box-shadow: 0 2px 10px rgba(50,60,140,.06); text-decoration: none; }
.hm-help-t { font-size: 14px; color: #333; }
.hm-help-arrow { color: #ccc; font-size: 20px; }
/* ---------- 待审核/待出入库 pd-* ---------- */
.pd-page { background: #f5f6fa; min-height: 100vh; padding-bottom: 24px; }
.pd-group { font-size: 14px; color: #888; padding: 16px 16px 10px; }
.pd-cards { display: flex; flex-wrap: wrap; gap: 10px; padding: 0 12px; }
.pd-card { width: calc(50% - 5px); background: #fff; border-radius: 4px; padding: 26px 8px 20px; text-align: center; box-shadow: 0 1px 4px rgba(0,0,0,.04); text-decoration: none; }
.pd-num { font-size: 34px; color: #26c6ae; font-weight: 500; line-height: 1.1; }
.pd-name { font-size: 14px; color: #555; margin-top: 12px; }
/* ---------- 库存预警/保质期预警 sw-* ---------- */
.sw-page { background: #f5f6fa; min-height: 100vh; display: flex; flex-direction: column; }
.sw-search { margin: 12px 12px 0; background: #eceff3; border-radius: 18px; padding: 9px 14px; display: flex; align-items: center; gap: 8px; }
.sw-search input { flex: 1; min-width: 0; border: none; background: transparent; font-size: 14px; color: #333; outline: none; }
.sw-filters { display: flex; padding: 12px 24px 4px; }
.sw-f { flex: 1; text-align: center; font-size: 15px; color: #333; cursor: pointer; }
.sw-f em { font-style: normal; font-size: 12px; color: #999; margin-left: 2px; }
.sw-list { flex: 1; padding: 8px 12px 90px; }
.sw-row { background: #fff; border-radius: 8px; padding: 13px 14px; margin-bottom: 8px; display: flex; justify-content: space-between; align-items: center; }
.sw-main { flex: 1; min-width: 0; }
.sw-name { font-size: 15px; color: #333; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sw-sub { font-size: 12px; color: #999; margin-top: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sw-qty { text-align: right; flex-shrink: 0; margin-left: 10px; }
.sw-qty-v { font-size: 16px; color: #e4393c; font-weight: 600; }
.sw-qty-l { font-size: 11px; color: #999; margin-top: 3px; }
.sw-bottom { position: fixed; left: 50%; transform: translateX(-50%); bottom: 58px; width: 100%; max-width: 480px; background: #19c3a6; display: flex; align-items: center; z-index: 90; }
.sw-count { color: #fff; font-size: 13px; padding: 14px 10px 14px 14px; white-space: nowrap; }
.sw-count b { font-size: 16px; }
.sw-btn { flex: 1; text-align: center; color: #fff; font-size: 15px; font-weight: 600; padding: 14px 0; border-left: 1px solid rgba(255,255,255,.25); text-decoration: none; }

/* ---------- 选择商品页 kp-* v20260908b ---------- */
.kp-page { background: #fff; min-height: 100vh; display: flex; flex-direction: column; }
.kp-search { margin: 12px 12px 0; background: #f3f5f7; border-radius: 20px; padding: 9px 12px; display: flex; align-items: center; gap: 8px; }
.kp-sicon { font-size: 15px; opacity: .5; }
.kp-search input { flex: 1; min-width: 0; border: none; background: transparent; font-size: 14px; color: #333; outline: none; }
.kp-tool { font-size: 20px; color: #666; padding: 0 3px; flex-shrink: 0; cursor: pointer; }
.kp-filters { display: flex; padding: 12px 14px 10px; }
.kp-f { flex: 1; text-align: center; font-size: 15px; color: #333; cursor: pointer; }
.kp-f em { font-style: normal; font-size: 12px; color: #999; margin-left: 2px; }
.kp-wrap { flex: 1; display: flex; align-items: flex-start; padding-bottom: 70px; }
.kp-wrap .sl-side { min-height: 56vh; }
.kp-list { flex: 1; min-width: 0; }
.kp-row { background: #fff; padding: 12px 12px 12px 6px; border-bottom: 1px solid #f0f2f4; display: flex; align-items: center; }
.kp-row.on { background: #f0fbf9; }
.kp-img { width: 76px; height: 76px; border-radius: 8px; background: #f7f8fa; overflow: hidden; flex-shrink: 0; display: flex; align-items: center; justify-content: center; }
.kp-img img { width: 100%; height: 100%; object-fit: cover; }
.kp-main { flex: 1; min-width: 0; margin-left: 12px; }
.kp-name { font-size: 16px; font-weight: 500; color: #222; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kp-line { font-size: 13px; color: #999; margin-top: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kp-add { width: 34px; height: 34px; border-radius: 50%; background: #19c3a6; color: #fff; font-size: 22px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-right: 2px; }
.kp-add.on { background: #12a88d; font-size: 16px; }
.kp-bottom { position: fixed; left: 0; right: 0; bottom: 58px; margin: 0 auto; max-width: 480px; background: #fff; border-top: 1px solid var(--border); display: flex; align-items: center; padding: 10px 14px calc(10px + env(safe-area-inset-bottom)); }
.kp-cart { flex: 1; display: flex; align-items: center; gap: 8px; font-size: 14px; color: #333; min-width: 0; }
.kp-cart-ic { font-size: 22px; }
.kp-cart-t b { color: #19c3a6; font-size: 16px; }
.kp-sum { color: #e4393c; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kp-ok { background: #19c3a6; color: #fff; font-size: 16px; font-weight: 600; padding: 12px 34px; border-radius: 24px; flex-shrink: 0; cursor: pointer; }

/* ---------- 选择商品·设置全页 kp-set* v20260908c（对齐旧版：8 开关 + 底部保存） ---------- */
.kp-setpage { position: fixed; inset: 0; max-width: 480px; margin: 0 auto; background: #f4f5f7; z-index: 200; display: flex; flex-direction: column; opacity: 0; transform: translateX(24px); transition: opacity .22s, transform .22s; }
.kp-setpage.show { opacity: 1; transform: translateX(0); }
.kp-sethead { background: #fff; display: flex; align-items: center; height: 48px; padding: 0 6px; border-bottom: 1px solid #eee; flex-shrink: 0; }
.kp-setback { font-size: 30px; line-height: 1; color: #333; padding: 4px 12px; cursor: pointer; }
.kp-settt { flex: 1; text-align: center; font-size: 17px; font-weight: 500; color: #222; margin-right: 42px; }
.kp-setph { width: 42px; }
.kp-setbody { flex: 1; overflow-y: auto; padding: 10px 14px; }
.kp-setbody .stg-row { background: #fff; border-bottom: none; border-radius: 0; padding: 16px 14px; margin-bottom: 1px; }
.kp-setsave { flex-shrink: 0; background: #19c3a6; color: #fff; text-align: center; font-size: 16px; font-weight: 600; padding: 14px 0 calc(14px + env(safe-area-inset-bottom)); cursor: pointer; }

/* ---------- 编辑常用应用页 ---------- */
.ae-page { padding-bottom: 30px; }
.ae-top { display: flex; justify-content: space-between; align-items: center; padding: 14px 16px 10px; }
.ae-title { font-size: 17px; font-weight: 700; color: #222; }
.ae-done { font-size: 16px; color: #1a8cff; cursor: pointer; padding: 4px 6px; }
.ae-card { background: #fff; border-radius: 10px; margin: 0 12px; padding: 18px 6px 20px; }
.ae-sel { display: grid; grid-template-columns: repeat(4, 1fr); row-gap: 18px; min-height: 60px; }
.ae-grid { display: grid; grid-template-columns: repeat(4, 1fr); row-gap: 18px; background: #fff; padding: 18px 6px 20px; }
.ae-item { position: relative; display: flex; flex-direction: column; align-items: center; text-decoration: none; cursor: pointer; }
.ae-ic { width: 44px; height: 44px; border-radius: 10px; background: #f2f4f7; display: flex; align-items: center; justify-content: center; font-size: 24px; }
.ae-label { margin-top: 6px; font-size: 12px; color: #333; text-align: center; line-height: 1.3; padding: 0 2px; }
.ae-badge { position: absolute; top: -7px; right: calc(50% - 30px); width: 18px; height: 18px; border-radius: 50%; color: #fff; font-style: normal; font-size: 14px; line-height: 17px; text-align: center; z-index: 2; }
.ae-minus { background: #ee4d38; }
.ae-plus { background: #1a8cff; }
.ae-check { background: #c2c9d4; }
.ae-cat { font-size: 14px; color: #8a94a6; padding: 16px 16px 8px; }
.ae-empty { grid-column: 1 / -1; text-align: center; color: #98a1b0; font-size: 13px; padding: 14px 0; }
.sc-manualbar { display: flex; gap: 8px; margin-top: 8px; }
.sc-manualbar input { flex: 1; min-width: 0; height: 40px; border: 1px solid var(--border); border-radius: 8px; padding: 0 12px; font-size: 14px; color: var(--text); background: #fff; outline: none; }
.sc-manualbar input:focus { border-color: #26C6BA; }
.sc-manualbar button { width: 84px; height: 40px; border: 0; border-radius: 8px; background: #1a8cff; color: #fff; font-size: 15px; cursor: pointer; flex-shrink: 0; }

/* ---------- 我的：修改密码 / 关于系统 ---------- */
.me-pwd-sheet { padding: 18px 16px 14px; }
.me-pwd-in { display: block; width: 100%; box-sizing: border-box; height: 42px; margin-bottom: 10px; padding: 0 12px; border: 1px solid #e2e6ee; border-radius: 8px; font-size: 14px; background: #f7f9fc; color: #333; }
.me-pwd-in:focus { border-color: #1E88E5; background: #fff; outline: none; }
.me-pwd-btns { display: flex; gap: 10px; margin-top: 6px; }
.me-pwd-btns > div { flex: 1; box-sizing: border-box; height: 42px; line-height: 42px; margin: 0; padding: 0; text-align: center; border-radius: 8px; font-size: 15px; }
.me-pwd-btns .pop-cancel { background: #f0f2f6; color: #666; }
.me-pwd-ok { background: #1E88E5; color: #fff; font-weight: bold; }
.me-about { padding: 20px 20px 14px; text-align: center; }
.me-about-logo { width: 64px; height: 64px; line-height: 64px; margin: 6px auto 10px; border-radius: 16px; background: linear-gradient(135deg, #1E88E5, #42A5F5); color: #fff; font-size: 30px; font-weight: bold; }
.me-about-name { font-size: 17px; font-weight: bold; color: #333; }
.me-about-ver { font-size: 12px; color: #1E88E5; margin: 6px 0 12px; }
.me-about-line { font-size: 12px; color: #888; line-height: 22px; }
.me-about .pop-cancel { margin-top: 14px; text-align: center; height: 40px; line-height: 40px; border-radius: 8px; background: #f0f2f6; color: #666; font-size: 14px; }
