/* 收银台 H5 原型 · 新样式近似 */
:root {
  --purple: #5b4fd6;
  --purple-deep: #4a3fc4;
  --blue: #3d6bf3;
  --blue-soft: #5b8cff;
  --green: #22c55e;
  --green-btn: #1fc45c;
  --red: #ef4444;
  --orange: #f59e0b;
  --warn-bg: #fff7e6;
  --warn-border: #f5c542;
  --bg: #f2f3f7;
  --card: #fff;
  --text: #1f2329;
  --muted: #8a8f99;
  --line: #e8eaef;
  --radius: 12px;
  --phone-w: 414px;
  --phone-h: 896px;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; }
body {
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Helvetica Neue", Arial, sans-serif;
  background: #e9ebf2;
  color: var(--text);
  font-size: 14px;
}

.proto-shell {
  display: grid;
  grid-template-columns: 1fr var(--phone-w) 280px;
  gap: 20px;
  max-width: 1100px;
  margin: 0 auto;
  padding: 16px 20px 40px;
  align-items: start;
}
@media (max-width: 980px) {
  .proto-shell { grid-template-columns: 1fr; justify-items: center; }
  .proto-side { width: min(375px, 100%); }
}

.proto-toolbar {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  background: #fff;
  border-radius: 12px;
  padding: 12px 16px;
  box-shadow: 0 1px 4px rgba(0,0,0,.06);
}
.proto-brand { font-weight: 700; font-size: 15px; margin-right: auto; }
.role-switch { display: inline-flex; background: #f0f1f5; border-radius: 999px; padding: 3px; }
.role-btn {
  border: 0; background: transparent; padding: 6px 16px; border-radius: 999px;
  cursor: pointer; font-size: 13px; color: var(--muted); font-weight: 600;
}
.role-btn.is-active { background: var(--purple); color: #fff; }
.proto-actions { display: flex; gap: 8px; }
.link-btn {
  border: 1px solid var(--line); background: #fff; border-radius: 8px;
  padding: 6px 10px; cursor: pointer; font-size: 12px; color: var(--blue);
}

.conflict-banner {
  grid-column: 1 / -1;
  background: var(--warn-bg);
  border: 1px solid var(--warn-border);
  color: #8a5a00;
  border-radius: 10px;
  padding: 10px 14px;
  font-size: 13px;
  line-height: 1.5;
}
.conflict-banner strong { color: #b45309; }

.phone-wrap { display: flex; justify-content: center; }
/* 外框：装饰用 outline/box-shadow，不吃 414×896 内容区 */
.phone-frame {
  box-sizing: content-box;
  width: var(--phone-w);
  height: var(--phone-h);
  padding: 0;
  background: #111;
  border-radius: 36px;
  box-shadow:
    0 0 0 12px #111,
    0 20px 50px rgba(40, 40, 80, 0.25);
  position: relative;
  overflow: visible;
}
/* 内容画布：唯一 414×896 原点；#app 与 #onion-skin 同父同尺寸 */
.phone-canvas {
  box-sizing: content-box;
  width: var(--phone-w);
  height: var(--phone-h);
  position: relative;
  overflow: hidden;
  border-radius: 28px;
  background: var(--bg);
}
.app-root {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  background: var(--bg);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  border-radius: 28px;
}
/* 已去掉单独占位 .status-bar；状态栏画进 .nav-bar 计进 896 */

.proto-side h3 { font-size: 13px; margin: 12px 0 6px; color: var(--muted); }
.state-dump {
  background: #1e1e2e; color: #cdd6f4; padding: 10px; border-radius: 8px;
  font-size: 11px; line-height: 1.45; overflow: auto; max-height: 220px;
}
.jump-list { list-style: none; display: flex; flex-direction: column; gap: 4px; }
.jump-list button {
  width: 100%; text-align: left; border: 1px solid var(--line); background: #fff;
  border-radius: 8px; padding: 8px 10px; cursor: pointer; font-size: 12px;
}
.jump-list button:hover { border-color: var(--blue); color: var(--blue); }
.hint { font-size: 12px; color: var(--muted); margin-top: 10px; line-height: 1.5; }

/* —— 页面通用 —— */
.page { display: flex; flex-direction: column; height: 100%; min-height: 0; }
.nav-bar {
  background: linear-gradient(180deg, var(--purple-deep), var(--purple));
  color: #fff; flex-shrink: 0; position: relative;
  display: flex; flex-direction: column;
}
.nav-status {
  height: 44px; display: flex; align-items: flex-end;
  justify-content: space-between; padding: 0 16px 6px;
  font-size: 12px; font-weight: 600; letter-spacing: 0.2px;
}
.nav-main {
  height: 44px; display: flex; align-items: center;
  padding: 0 12px; position: relative;
}
.nav-bar .back {
  width: 32px; height: 32px; border: 0; background: transparent; color: #fff;
  font-size: 22px; cursor: pointer; line-height: 1; z-index: 1;
}
.nav-bar .title {
  position: absolute; left: 0; right: 0; text-align: center;
  font-weight: 600; pointer-events: none;
}
.nav-bar .right {
  margin-left: auto; display: flex; align-items: center; gap: 4px;
  background: transparent; border: 0; color: #fff; font-size: 13px; cursor: pointer; z-index: 1;
}
.nav-bar .right .ico { font-size: 16px; }

.page-body { flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch; padding-bottom: 12px; }
.page-body.pad { padding: 12px; }

/* 存款首页 */
.tabs {
  display: flex; gap: 4px; padding: 6px 12px 0; overflow-x: auto;
  background: #fff;
}
.tab {
  flex-shrink: 0; padding: 8px 14px; border-radius: 10px 10px 0 0;
  border: 0; background: transparent; color: var(--muted); font-weight: 600; cursor: pointer;
}
.tab.is-active { background: #fff; color: var(--blue); box-shadow: 0 -1px 0 #fff; }

.channel-panel { background: #fff; padding: 19px 14px 0 8px; } /* R8: 底 pad 60→0，对消 channel 加高 */
.channel-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px 8px;
}
.channel {
  border: 1.5px solid transparent; background: #f7f8fb; border-radius: 10px;
  padding: 2px 2px 1px; text-align: center; cursor: pointer; position: relative;
  height: 90px; box-sizing: border-box; /* R8: 50→90，选中环底≈238 */
  display: flex; flex-direction: column; align-items: center; justify-content: center;
} /* R7: 选中环收矮 ~20px，底边对齐稿 */
.channel.is-selected { border-color: var(--blue); background: #eef3ff; }
.channel .ch-ico {
  width: 36px; height: 36px; margin: 0 auto 6px; border-radius: 6px; /* R8 */
  display: block; object-fit: contain; background: #fff;
} /* R7: 随选中环收矮 */
.channel .ch-ico.ch-ico-fallback {
  display: flex; align-items: center; justify-content: center; font-size: 18px; color: #fff;
  object-fit: unset;
}
.channel .ch-name { font-size: 11px; color: var(--text); white-space: nowrap; }
.channel .badge {
  position: absolute; top: 0; right: -6px; background: var(--red); color: #fff;
  font-size: 9px; padding: 1px 4px; border-radius: 6px;
} /* R6 基线；USDT 单独右移 */
.channel:nth-child(3) .badge {
  right: -13px;
} /* R7: USDT 偏左~7 → 右移 */

.amount-section { background: #fff; margin-top: 44px; padding: 8px 18px 10px; } /* R8: mt 104→44 对消加高；左右 pad 6→18 两端内收 */ /* R7: 左右 pad 12→6，档位两端张开 */
.amount-head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
.amount-section h4 { font-size: 14px; margin: 0; }
.amount-hint { font-size: 12px; color: var(--blue); margin: 0; white-space: nowrap; }
.amount-hint .name { color: var(--blue); }
.amount-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px 2px; padding: 0; } /* R8: 列 gap 8→2，800 落稿列 */
.amt-btn {
  border: 1.5px solid var(--line); background: #fff; border-radius: 8px;
  padding: 8px 0; font-size: 15px; font-weight: 600; cursor: pointer; color: var(--text);
}
.amt-btn.is-selected { border-color: var(--blue); color: var(--blue); background: #eef3ff; }
.limit-tip { font-size: 12px; color: var(--muted); margin-top: 6px; }

.footer-fixed {
  flex-shrink: 0; background: #fff; padding: 10px 12px 16px;
  border-top: 1px solid var(--line);
}
/* 存款首页：确认紧跟金额；客服贴画布底（中间自然留白，无额外空洞 spacer） */
.page-body.deposit-body {
  display: flex;
  flex-direction: column;
  padding-bottom: 8px;
}
.deposit-actions {
  background: #fff; padding: 0 16px 8px; margin-top: -13px; /* R6: pad-top 59→0 + 负 margin，确认存款 y≈614 */
}
.deposit-cs {
  margin-top: auto;
  flex-shrink: 0;
  display: flex; align-items: center; justify-content: center; gap: 4px;
  padding: 12px 16px 20px;
  font-size: 13px; color: var(--muted); cursor: pointer;
  background: transparent;
}
.btn-primary {
  width: 100%; height: 46px; border: 0; border-radius: 10px;
  background: var(--blue); color: #fff; font-size: 16px; font-weight: 600; cursor: pointer;
}
.btn-primary:disabled { opacity: .45; cursor: not-allowed; }
.btn-primary.green { background: var(--green-btn); }
.btn-primary.purple { background: var(--purple); }
.btn-ghost {
  width: 100%; height: 44px; border: 1.5px solid var(--blue); border-radius: 10px;
  background: #fff; color: var(--blue); font-size: 15px; font-weight: 600; cursor: pointer;
}
.cs-link {
  display: flex; align-items: center; justify-content: center; gap: 4px;
  margin-top: 10px; color: var(--muted); font-size: 13px; text-decoration: none; cursor: pointer;
}

/* 聊天室 */
.chat-scroll { flex: 1; overflow-y: auto; padding: 12px; background: var(--bg); }
.msg-row { display: flex; gap: 8px; margin-bottom: 16px; align-items: flex-start; }
.msg-row.me { flex-direction: row-reverse; }
.avatar {
  width: 36px; height: 36px; border-radius: 50%; background: var(--blue);
  color: #fff; display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 700; flex-shrink: 0;
}
.avatar.seller { background: #3b82f6; }
.avatar.buyer { background: #6366f1; }
.bubble {
  max-width: 78%; background: #fff; border-radius: 10px; padding: 10px 12px;
  font-size: 13px; line-height: 1.5; box-shadow: 0 1px 2px rgba(0,0,0,.04);
}
.msg-row.me .bubble { background: #dbeafe; }
.bubble .time { display: block; font-size: 11px; color: var(--muted); margin-top: 4px; }

.order-card {
  background: #fff; border-radius: var(--radius); padding: 16px;
  box-shadow: 0 1px 4px rgba(0,0,0,.05); margin-bottom: 10px;
}
.order-card .oc-head {
  display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--muted);
  margin-bottom: 2px; flex-wrap: wrap;
} /* R7: 减 mb，金额上移 */
.order-card .oc-head .copy {
  color: var(--blue); border: 0; background: transparent; cursor: pointer; font-size: 12px;
}
.order-card .amount {
  font-size: 34px; font-weight: 700; color: var(--blue); text-align: center;
  margin: 4px 0 2px; /* R7: mt 12→4 上移 ~8；与 oc-head mb 对消 */
  padding-left: 8px; /* R8: 原 padding-right:12 去掉，整体右移 ~10 */
  line-height: 1.2;
}
.order-card .amount small { font-size: 14px; font-weight: 500; color: var(--text); margin-left: 4px; }
.order-card .amount-lab {
  text-align: center; color: var(--muted); font-size: 13px; margin-bottom: 9px; padding-left: 14px; /* R8: 右移 ~7 */
} /* R7: mb 12→9，卡区上移约13（配合 amount/oc-head） */
.order-card .payee { display: none; } /* 稿无姓名大标题，收款人在信息行 */
.oc-head .union-ico {
  width: 20px; height: 20px; border-radius: 50%; object-fit: cover; flex-shrink: 0;
}

.pay-info {
  background: #f7f8fb; border-radius: 10px; padding: 12px 8px; margin: 2px 0 25px; /* R7: mt↓ 卡区上移；mb↑ 保上传回单 y≈503 */
}
.pay-info.bank .row {
  display: flex; justify-content: flex-start; align-items: center; gap: 4px; /* R6: gap 10→4 值贴标签 */
  padding: 8px 0; font-size: 13px; border-bottom: 1px dashed var(--line);
}
.pay-info.bank .row:last-child { border-bottom: 0; }
.pay-info.bank .label { color: var(--muted); flex-shrink: 0; min-width: 100px; } /* R8: val 起始列对稿 */
.pay-info.bank .val { font-weight: 600; display: inline-flex; align-items: center; gap: 6px; margin-left: 0; }
.pay-info .copy-ico { color: var(--blue); cursor: pointer; font-size: 12px; border: 0; background: transparent; }

.qr-box {
  text-align: center; padding: 16px; border-radius: 10px; margin-bottom: 10px; color: #fff;
}
.qr-box.alipay { background: linear-gradient(135deg, #1677ff, #3b9cff); }
.qr-box.wechat { background: linear-gradient(135deg, #07c160, #2ad178); }
.qr-box .qr-fake {
  width: 140px; height: 140px; margin: 10px auto; background: #fff;
  border-radius: 8px; display: flex; align-items: center; justify-content: center;
  color: #333; font-size: 12px; position: relative;
}
.qr-fake::before {
  content: ""; position: absolute; inset: 12px;
  background:
    linear-gradient(#333 0 0) 0 0/28% 28%,
    linear-gradient(#333 0 0) 100% 0/28% 28%,
    linear-gradient(#333 0 0) 0 100%/28% 28%,
    repeating-linear-gradient(90deg,#333 0 4px,transparent 4px 8px) 35% 40%/30% 4px,
    repeating-linear-gradient(#333 0 4px,transparent 4px 8px) 40% 35%/4px 30%;
  background-repeat: no-repeat;
  opacity: .85;
}

.timer-row {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  color: var(--red); font-size: 13px; margin: 12px 0 22px;
}
.bonus-tip { text-align: center; color: var(--red); font-size: 12px; margin-top: 10px; }
.tutorial-link {
  display: block; text-align: center; color: var(--blue); font-size: 13px;
  margin: 4px 0 10px; cursor: pointer;
}

/* prepay 态：无收款信息 */
.prepay-card {
  background: #fff; border-radius: var(--radius); padding: 20px 16px; text-align: center;
  margin-bottom: 12px;
}
.prepay-card .amt { font-size: 32px; font-weight: 700; color: var(--blue); margin: 8px 0; }
.prepay-card .desc { color: var(--muted); font-size: 13px; line-height: 1.5; margin-bottom: 16px; }
.prepay-warn {
  background: #fff1f0; color: var(--red); border-radius: 8px; padding: 8px 10px;
  font-size: 12px; margin-bottom: 14px; text-align: left;
}

/* 待确认 */
.status-done {
  text-align: center; padding: 16px 0 8px;
}
.status-done .icon {
  width: 48px; height: 48px; border-radius: 50%; background: var(--green);
  color: #fff; display: inline-flex; align-items: center; justify-content: center;
  font-size: 26px; margin-bottom: 8px;
}
.status-done .st { font-size: 18px; font-weight: 700; }
.status-done .sub { color: var(--muted); font-size: 13px; margin-top: 4px; }
.dual-btns { display: flex; gap: 10px; margin-top: 12px; }
.dual-btns .btn-ghost, .dual-btns .btn-primary { flex: 1; height: 42px; font-size: 14px; }
.dual-btns .btn-ghost:disabled { opacity: .5; border-color: #ccc; color: #999; }

.receipt-thumb {
  width: 120px; height: 80px; background: #e8eaf0; border-radius: 8px;
  display: flex; align-items: center; justify-content: center; font-size: 11px; color: var(--muted);
  border: 1px solid var(--line); overflow: hidden;
}
.receipt-thumb img { width: 100%; height: 100%; object-fit: cover; }

.hongbao {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  background: linear-gradient(90deg, #fff5f0, #fff); border: 1px solid #ffd4c2;
  border-radius: 10px; padding: 10px; margin: 10px 0; color: #e11;
  font-weight: 600; font-size: 14px;
}
.hongbao .hb-ico { font-size: 22px; }

.seller-actions { display: flex; gap: 10px; margin-top: 12px; }
.seller-actions .btn-ghost { flex: 0 0 38%; }
.seller-actions .btn-primary { flex: 1; }

.chat-input-bar {
  flex-shrink: 0; display: flex; align-items: center; gap: 8px;
  padding: 8px 10px 12px; background: #fff; border-top: 1px solid var(--line);
}
.chat-input-bar .fake-input {
  flex: 1; height: 36px; background: #f2f3f7; border-radius: 18px;
  display: flex; align-items: center; padding: 0 14px; color: var(--muted); font-size: 13px;
  cursor: pointer;
}
.chat-input-bar .plus {
  width: 32px; height: 32px; border-radius: 50%; background: var(--blue);
  color: #fff; border: 0; font-size: 20px; cursor: pointer; line-height: 1;
}

.quick-panel {
  background: #fff; border-top: 1px solid var(--line); padding: 10px 12px 14px;
  display: flex; flex-wrap: wrap; gap: 8px;
}
.quick-chip {
  border: 1px solid var(--line); background: #f7f8fb; border-radius: 16px;
  padding: 6px 12px; font-size: 12px; cursor: pointer; color: var(--text);
}
.quick-chip:disabled { opacity: .4; }

/* 订单列表 */
.list-tabs {
  display: flex; background: #fff; border-bottom: 1px solid var(--line);
}
.list-tabs button {
  flex: 1; height: 44px; border: 0; background: transparent; font-size: 15px;
  font-weight: 600; color: var(--muted); cursor: pointer; position: relative;
}
.list-tabs button.is-active { color: var(--blue); }
.list-tabs button.is-active::after {
  content: ""; position: absolute; left: 30%; right: 30%; bottom: 0; height: 3px;
  background: var(--blue); border-radius: 2px;
}
.order-item {
  background: #fff; margin: 10px 12px; border-radius: 12px; padding: 14px;
  box-shadow: 0 1px 3px rgba(0,0,0,.04); cursor: pointer;
}
.order-item .oi-top { display: flex; justify-content: space-between; align-items: flex-start; }
.order-item .oi-amt { font-size: 20px; font-weight: 700; }
.order-item .oi-bonus {
  display: inline-block; background: #fff1f0; color: var(--red);
  font-size: 11px; padding: 2px 6px; border-radius: 4px; margin-left: 6px;
}
.order-item .oi-meta { color: var(--muted); font-size: 12px; margin-top: 8px; display: flex; gap: 10px; }
.order-item .oi-status { color: var(--blue); font-size: 13px; font-weight: 600; }
.order-item .oi-status.done { color: var(--green); }
.order-item .oi-status.cancel { color: var(--muted); }
.empty-state {
  text-align: center; padding: 60px 20px; color: var(--muted);
}
.empty-state .ico { font-size: 48px; margin-bottom: 10px; opacity: .5; }

/* 详情页 */
.detail-hero {
  background: #fff; text-align: center; padding: 28px 16px 20px;
}
.detail-hero .big { font-size: 36px; font-weight: 700; }
.detail-hero .st-row {
  display: inline-flex; align-items: center; gap: 6px; margin-top: 10px;
  font-size: 14px; font-weight: 600;
}
.detail-hero .st-row.ok { color: var(--green); }
.detail-hero .st-row.bad { color: var(--red); }
.detail-card {
  background: #fff; margin-top: 10px; padding: 4px 16px;
}
.detail-row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 14px 0; border-bottom: 1px solid var(--line); font-size: 14px;
}
.detail-row:last-child { border-bottom: 0; }
.detail-row .lab { color: var(--muted); }
.detail-row .val { font-weight: 500; display: flex; align-items: center; gap: 6px; }
.detail-row .val.green { color: var(--green); }
.detail-row .val.orange { color: #f97316; }

/* 弹层 */
.overlay {
  position: absolute; inset: 0; background: rgba(0,0,0,.45);
  z-index: 20; display: flex; align-items: flex-end; justify-content: center;
}
.overlay.center { align-items: center; padding: 20px; }
.sheet {
  width: 100%; background: #fff; border-radius: 16px 16px 0 0;
  padding: 16px 16px 24px; max-height: 85%; overflow-y: auto;
}
.modal {
  width: 100%; background: #fff; border-radius: 14px; padding: 16px;
  max-height: 80%; overflow-y: auto;
}
.sheet-head, .modal-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 12px; font-size: 16px; font-weight: 700;
}
.sheet-head .x, .modal-head .x {
  border: 0; background: transparent; font-size: 20px; cursor: pointer; color: var(--muted);
}
.upload-tips {
  background: #fff7ed; color: #c2410c; border-radius: 8px; padding: 10px 12px;
  font-size: 12px; line-height: 1.6; margin-bottom: 14px;
}
.upload-tips a { color: var(--blue); }
.upload-box {
  width: 100px; height: 100px; border: 1.5px dashed #c5c9d4; border-radius: 10px;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  color: var(--muted); cursor: pointer; margin-bottom: 16px; overflow: hidden;
  font-size: 28px;
}
.upload-box.has-img { border-style: solid; border-color: var(--blue); }
.upload-box img { width: 100%; height: 100%; object-fit: cover; }

.tip-list { list-style: none; margin: 8px 0 14px; }
.tip-list li {
  display: flex; gap: 8px; align-items: flex-start; padding: 8px 0;
  font-size: 13px; line-height: 1.45; color: var(--text);
}
.tip-list input { margin-top: 3px; }
.check-all {
  display: flex; gap: 8px; align-items: center; padding: 10px 0; font-size: 13px;
  border-top: 1px solid var(--line); margin-bottom: 12px;
}
.warn-box {
  background: #fff1f0; color: var(--red); border-radius: 8px; padding: 10px 12px;
  font-size: 12px; line-height: 1.5; margin-bottom: 12px;
}
.q-block { margin-bottom: 14px; }
.q-block .q-title { font-size: 13px; font-weight: 600; margin-bottom: 8px; }
.radio-row {
  display: flex; flex-direction: column; gap: 8px;
}
.radio-row label {
  display: flex; align-items: center; gap: 8px; font-size: 13px;
  padding: 8px 10px; background: #f7f8fb; border-radius: 8px; cursor: pointer;
}
.radio-row label.is-picked { background: #eef3ff; outline: 1px solid var(--blue); }
.err-inline { color: var(--red); font-size: 12px; margin-top: 6px; }

.toast {
  position: absolute; left: 50%; top: 45%; transform: translate(-50%, -50%);
  background: rgba(0,0,0,.78); color: #fff; padding: 10px 18px; border-radius: 8px;
  font-size: 13px; z-index: 40; pointer-events: none; white-space: nowrap;
}

.page-note {
  background: #f0f7ff; color: #1d4ed8; font-size: 11px; padding: 6px 10px;
  border-bottom: 1px solid #dbeafe; line-height: 1.4;
}

.expired-mask {
  position: relative; text-align: center; padding: 30px 10px;
  background: #f0f1f5; border-radius: 10px; margin-bottom: 10px;
}
.expired-mask .xmark {
  width: 44px; height: 44px; border-radius: 50%; background: #c4c7cf;
  color: #fff; display: inline-flex; align-items: center; justify-content: center;
  font-size: 22px; margin-bottom: 8px;
}
.expired-mask .lab { font-size: 16px; font-weight: 700; color: #6b7280; }
.expired-mask .sub { color: var(--red); font-size: 13px; margin-top: 4px; }


.modal-mask {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.45);
  z-index: 20;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}
.modal-mask.center { align-items: center; padding: 20px; }
/* .overlay 与 .modal-mask 同义，兼容旧类名 */
.overlay.modal-mask { /* combined */ }

/* —— 洋葱皮：与 .app-root 同父同原点同尺寸 414×896 —— */
.onion-skin {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 30;
  pointer-events: none;
  border-radius: 28px;
  overflow: hidden;
  mix-blend-mode: normal;
}
.onion-skin img {
  width: 100%;
  height: 100%;
  object-fit: none; /* 禁止拉伸；帧已是 414×896 顶对齐 pad */
  object-position: left top;
  opacity: 1;
}
.link-btn.is-on { background: #fff7e6; border-color: #f5c542; color: #b45309; }
.onion-op-wrap {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px; color: #6b7280;
}
.onion-op-wrap input { width: 80px; vertical-align: middle; }

/* —— 高保真微调：主色/按钮/卡片贴近新样式 —— */
:root {
  --purple: #5c4ce0;
  --purple-deep: #4a3fc8;
  --blue: #3b6af0;
  --green-btn: #1db954;
}
/* nav-bar 含 status+main，高度由子项决定 */
.btn-primary { height: 48px; border-radius: 24px; font-size: 16px; letter-spacing: 0.5px; }
.btn-primary.green { background: var(--green-btn); border-radius: 24px; }
.btn-ghost { height: 48px; border-radius: 24px; }
.order-card { border-radius: 16px; padding: 16px; }
.prepay-card { border-radius: 16px; }
.channel { border-radius: 12px; }
.amt-btn { border-radius: 10px; height: 40px; padding: 0; }
.footer-fixed { padding: 12px 16px 20px; }
.chat-input-bar { padding: 10px 12px 14px; }
.sheet { border-radius: 20px 20px 0 0; padding: 18px 16px 28px; }
.modal { border-radius: 16px; }
.status-done .st { font-size: 20px; margin-top: 6px; }
.amount { font-size: 34px; letter-spacing: -0.5px; }
.page-body { -webkit-overflow-scrolling: touch; }
.plus { background: transparent; padding: 0; width: 32px; height: 32px; }
.chat-input-bar.cs-link .fake-input { color: #b0b4bc; cursor: default; }
[data-page="buyer-chat"] .chat-input-bar.cs-link .fake-input { flex: 1 1 auto; width: auto; }
.chat-input-bar .plus.is-spin {
  width: 24px; height: 24px; box-sizing: border-box; border-radius: 50%;
  border: 2px solid #f3c4c4; border-top-color: #e23d3d; background: transparent;
  animation: cs-spin .8s linear infinite;
}
@keyframes cs-spin { to { transform: rotate(360deg); } }
.plus img { display: block; }
.back img { display: block; }
.ch-ico { width: 36px; height: 36px; border-radius: 6px; object-fit: cover; } /* R8 */

/* —— R6 洋葱皮：上传回单对齐稿 x≈59 w≈308 —— */
.order-card > .btn-primary,
.order-card > .btn-primary.green {
  width: 308px;
  display: block;
  margin-left: 31px;
  margin-right: auto;
  box-sizing: border-box;
}

/* ===== R9（第九轮洋葱皮）· 全部从对照帧像素实测 ===== */
/* 首页通道：稿格 x 23/118.5/214/309.5 w85；y 148/246.5/345 h90（行距 98.5） */
.channel-panel { padding: 19px 0 0 23px; }
.channel-grid { grid-template-columns: repeat(4, 85px); gap: 8.5px 10.5px; }
.channel { height: 90px; }
.channel .badge { right: -4px; }
.channel:nth-child(3) .badge { right: -4px; }
/* 存款金额：稿标题 17px 字形 x23；提示带 ⓘ 字形 x235–391 */
.amount-section { padding: 8px 21px 10px 23px; }
.amount-section h4 { font-size: 17px; }
.amount-hint { font-size: 14px; display: inline-flex; align-items: center; gap: 4px; }
.amount-hint::before {
  content: "i"; width: 12px; height: 12px; border: 1.3px solid var(--blue); border-radius: 50%;
  font-size: 10px; line-height: 12px; text-align: center; font-weight: 700; font-family: Georgia, serif;
}
/* 金额档：稿 x 24/118.5/213/307.5 w84；h33；行距 44 */
.amount-grid { grid-template-columns: repeat(4, 84px); gap: 11px 10.5px; margin-left: 1px; }
.amt-btn { height: 33px; padding: 0; font-size: 17px; }
.amount-section { margin-top: 32px; } /* R9: 44→32，标题上提 12 对稿 */
.amount-head { margin-bottom: 12px; } /* R9: 6→12，档位只上提 6 */
.deposit-actions { margin-top: -9px; } /* R9: -13→-9，保确认存款 y=614 */
.amount-hint { position: relative; top: -4px; } /* R9: 提示字形中心 491→487 对稿 486.5 */

/* R9 买家聊天室（稿 buyer-waiting / buyer-pending 实测） */
[data-page="buyer-chat"] .chat-scroll { padding: 16px 16px 16px; }
[data-page="buyer-chat"] .avatar { width: 32px; height: 32px; font-size: 15px; }
[data-page="buyer-chat"] .msg-row { gap: 12px; margin-bottom: 17px; }
[data-page="buyer-chat"] .msg-row.me .avatar { display: none; }
[data-page="buyer-chat"] .bubble { max-width: none; width: 308px; box-sizing: border-box; font-size: 15px; line-height: 21px; padding: 11px 12px 2px 10px; position: relative; }
[data-page="buyer-chat"] .bubble .time { text-align: right; font-size: 10px; margin-top: 0; line-height: 14px; }
[data-page="buyer-chat"] .order-card {
  margin: 0 0 0 43px; width: 308px; box-sizing: border-box; padding: 8px 15px 0; border-radius: 10px; box-shadow: none;
}
[data-page="buyer-chat"] .order-card .oc-head {
  height: 26px; gap: 0; flex-wrap: nowrap; margin: 0; padding-bottom: 8px; border-bottom: 1px solid #f0f1f4;
  font-size: 13px; color: #8a8f99;
}
[data-page="buyer-chat"] .oc-head .union-ico { width: 26px; height: 26px; margin-right: 10px; }
[data-page="buyer-chat"] .oc-head .oc-no { color: #222; font-size: 14px; margin-left: 13px; }
[data-page="buyer-chat"] .oc-head .copy { color: #333; background: #f0f1f4; border-radius: 13px; height: 26px; padding: 0 10px; margin-left: 12px; font-size: 13px; }
[data-page="buyer-chat"] .order-card .amount { font-size: 30px; font-weight: 500; letter-spacing: 0; color: #2d7cf0; padding: 0; margin: 12px 0 0; line-height: 36px; }
[data-page="buyer-chat"] .order-card .amount small { font-size: 14px; margin-left: 5px; }
[data-page="buyer-chat"] .order-card .amount-lab { padding: 0; font-size: 13.5px; color: #444; margin: 9px 0 0; line-height: 19px; }
[data-page="buyer-chat"] .pay-info { margin: 16px 0 0; padding: 7px 0 7px 10px; border-radius: 8px; }
[data-page="buyer-chat"] .pay-info.bank .row { border: 0; padding: 0; height: 36.5px; gap: 0; font-size: 14px; }
[data-page="buyer-chat"] .pay-info.bank .label { min-width: 0; width: 64px; color: #9aa0aa; }
[data-page="buyer-chat"] .pay-info.bank .val { font-weight: 500; color: #222; }
[data-page="buyer-chat"] .pay-info .copy-ico { margin-left: auto; margin-right: 8px; padding: 0; display: flex; }
[data-page="buyer-chat"] .timer-row {
  justify-content: flex-start; color: #333; font-size: 14px; gap: 6px;
  margin: 14px -15px 0; padding: 0 15px; height: 44px; border-top: 1px solid #f0f1f4;
}
[data-page="buyer-chat"] .timer-row .t-red { color: #ef3b3b; font-weight: 400; font-size: 16px; font-family: "DS-Digital", "Courier New", monospace; letter-spacing: -0.5px; }
[data-page="buyer-chat"] .oc-actions { margin: 19px 0 0 43px; width: 308px; }
[data-page="buyer-chat"] .oc-actions .btn-primary { width: 308px; margin: 0; height: 46px; border-radius: 10px; }
[data-page="buyer-chat"] .oc-actions .bonus-tip {
  width: 235px; margin: 13px auto 0; height: 25px; line-height: 25px; border-radius: 13px;
  background: #fff0f0; font-size: 12px; transform: translateX(-1px);
}
/* 已付款等待 */
[data-page="buyer-chat"] .pend-row { margin-bottom: 17px; }
[data-page="buyer-chat"] .pend-card { margin: 0; width: 307px; }
[data-page="buyer-chat"] .pend-st { position: relative; height: 278px; padding: 0; }
[data-page="buyer-chat"] .pend-qr { position: absolute; left: 64px; top: 52px; width: 178px; height: 176px; background: #dfeafd; border-radius: 4px; }
[data-page="buyer-chat"] .pend-st img { position: absolute; left: 138px; top: 75px; }
[data-page="buyer-chat"] .pend-st .st { position: absolute; left: 0; right: 0; top: 116px; margin: 0; font-size: 14px; font-weight: 500; color: #1aa260; }
[data-page="buyer-chat"] .pend-st .sub { position: absolute; left: 0; right: 0; top: 205px; margin: 0; font-size: 14px; color: #ef3b3b; }
[data-page="buyer-chat"] .pend-card .timer-row { margin-top: 0; height: 42px; }
[data-page="buyer-chat"] .pend-msg .bubble { width: auto; margin-left: auto; margin-right: -1px; background: #cfe2fb; padding: 6px 30px 6px 9px; font-size: 14px; }
[data-page="buyer-chat"] .pend-msg .bubble .time { position: absolute; right: 5px; bottom: 3px; }
[data-page="buyer-chat"] .pend-receipt {
  width: 118px; height: 178px; margin: 0 -1px 17px auto; background: #fff; border-radius: 8px; position: relative;
  border: 1px solid #eceef2; box-sizing: border-box;
}
[data-page="buyer-chat"] .pend-receipt .r-amt { position: absolute; top: 46px; width: 100%; text-align: center; font-size: 13px; font-weight: 700; }
[data-page="buyer-chat"] .pend-receipt .r-dur { position: absolute; right: 4px; bottom: 6px; background: #8a8f99; color: #fff; font-size: 10px; border-radius: 8px; padding: 1px 8px; }
[data-page="buyer-chat"] .pend-btns { justify-content: flex-end; gap: 13px; margin: 0 -1px 0 0; }
[data-page="buyer-chat"] .pend-btns .btn-ghost, [data-page="buyer-chat"] .pend-btns .btn-primary { flex: 0 0 109px; height: 39px; border-radius: 6px; font-size: 14px; }
[data-page="buyer-chat"] .pend-btns .btn-ghost:disabled { background: #fff; border: 1px solid #d6d8dd; color: #9aa0aa; opacity: 1; }
[data-page="buyer-chat"] .msg-row:not(.pend-msg) .bubble { padding-bottom: 0; line-height: 19px; padding-top: 10px; }
[data-page="buyer-chat"] .order-card .amount { font-size: 26px; margin-top: 16px; line-height: 32px; }
[data-page="buyer-chat"] .pay-info { padding: 0 0 0 10px; }
[data-page="buyer-chat"] .order-card .amount { margin-top: 23px; }
[data-page="buyer-chat"] .order-card .amount-lab { margin-top: 6px; }
[data-page="buyer-chat"] .timer-row .t-red { font-size: 15px; }
[data-page="buyer-chat"] .oc-actions .bonus-tip { transform: translateX(-11px); font-size: 11.5px; display: flex; align-items: center; justify-content: center; gap: 4px; }
[data-page="buyer-chat"] .oc-actions .bonus-tip::before { content: ""; width: 10px; height: 13px; border-radius: 2px; background: #f04848; }
[data-page="buyer-chat"] .pend-row { gap: 10px; }
[data-page="buyer-chat"] .pend-st { height: 288px; }
[data-page="buyer-chat"] .pend-st img { left: 121px; }
[data-page="buyer-chat"] .pend-msg .bubble { padding-right: 39px; margin-right: 1px; }
[data-page="buyer-chat"] .oc-actions .bonus-tip { font-size: 11px; }
[data-page="buyer-chat"] .pend-qr { left: 49px; top: 93px; width: 179px; height: 179px; }
[data-page="buyer-chat"] .pend-receipt { margin-right: 1px; }
[data-page="buyer-chat"] .pend-btns { margin-right: 1px; }
/* 输入栏按 buyer-pending 帧：框 16–365 × 795–826，＋号 374–397 */
[data-page="buyer-chat"] .chat-input-bar { padding: 8px 17px 70px 16px; gap: 9px; border-top: 0; }
[data-page="buyer-chat"] .chat-input-bar .fake-input { flex: 0 0 349px; height: 31px; border-radius: 6px; font-size: 15px; padding: 0 8px; box-sizing: border-box; }
[data-page="buyer-chat"] .chat-input-bar .plus, [data-page="buyer-chat"] .chat-input-bar .plus img { width: 24px; height: 24px; }
[data-page="buyer-chat"] .msg-row:not(.pend-msg) .bubble { padding-right: 24px; } /* R9: 折行照稿在「转」后 */

/* R9 上传弹层（稿 upload-sheet.png 实测：顶 432，标题字形 17,453，示例 168，X 376–392，提示 505/529，分隔 564，框 16–79×581–644，钮 16–397×669–718） */
.sheet.up-sheet { position: relative; height: 464px; max-height: none; box-sizing: border-box; padding: 0; border-radius: 16px 16px 0 0; overflow: hidden; }
.up-sheet .sheet-head { position: absolute; left: 16px; right: 16px; top: 17px; height: 24px; margin: 0; justify-content: flex-start; font-size: 17px; font-weight: 600; color: #222; }
.up-sheet .up-eg { margin-left: 10px; color: #1677ff; font-size: 15px; font-weight: 400; text-decoration: underline; text-underline-offset: 3px; }
.up-sheet .sheet-head .x { margin-left: auto; padding: 0; width: 18px; height: 18px; display: flex; margin-right: 6px; }
.up-sheet .upload-tips { position: absolute; left: 16px; right: 16px; top: 66px; margin: 0; padding: 0 0 8px 24px; background: none; color: #8a8f99; font-size: 15px; line-height: 24px; border-bottom: 1px solid #ececec; border-radius: 0; }
.up-sheet .upload-tips::before { content: ""; position: absolute; left: 8px; top: 10px; width: 4px; height: 4px; border-radius: 50%; background: #aaa; }
.up-sheet .upload-tips em { font-style: normal; color: #f53b3b; }
.up-sheet .upload-box { position: absolute; left: 16px; top: 149px; width: 64px; height: 64px; margin: 0; border: 1px dashed #c8cdd8; border-radius: 6px; background: #f5f7fb; color: #222; font-size: 30px; font-weight: 300; box-sizing: border-box; }
.up-sheet .btn-primary { position: absolute; left: 16px; top: 237px; width: 382px; height: 50px; border-radius: 8px; font-size: 16px; font-weight: 500; letter-spacing: 0; }
.up-sheet .btn-primary:disabled { opacity: 1; background: #f2f2f2; color: #9a9a9a; }
.up-sheet .sheet-head { font-size: 18px; }
.up-sheet .up-eg { margin-left: 8px; font-size: 16px; }
.up-sheet .upload-tips { top: 69px; padding-bottom: 15px; }
.up-sheet .upload-tips em { display: block; }
.up-sheet .upload-box { font-size: 42px; font-weight: 200; }
.up-sheet .upload-tips { font-size: 16px; }

/* ===== R10（第十轮洋葱皮）· 坐标均由对照帧全分辨率像素实测（ink bbox），与复检数字冲突处以像素为准 ===== */
/* 1) 首页通道格内：格框不动。字 dy −5（稿字形顶 204/304/402 vs 原 210/308/407）；图标 dy −2（中心 175/279/377.5 vs 177/281/379.5）；
      角标 稿 x76–108 y147/148–164（w32 h16）vs 原 81–111 y149–164 → right −4→−1、top 0→−1、宽 +2 */
.channel .ch-ico { position: relative; top: -2px; }
.channel .ch-name { position: relative; top: -5px; }
.channel .badge, .channel:nth-child(3) .badge { top: -1px; right: -1px; padding: 1px 5px 2px; }
/* 4) 订单号行：稿行字形中心 waiting 206 / pending 126（原 200/121），分隔线 226/147（原 216/137）
      → 行内容 +5、分隔线 +10；下方内容用负边距回补，保持已对齐的金额/已付款区不动 */
[data-page="buyer-chat"] .order-card .oc-head { height: 36px; box-sizing: border-box; padding: 5px 0 13px; }
[data-page="buyer-chat"] .order-card .amount { margin-top: 13px; }
[data-page="buyer-chat"] .pend-st { margin-top: -10px; }
/* 3) 赠送提示：稿 pill x84–329（w245）y565–588，红包+文字 x94–318；字 12px，「5分钟内」「10元」红，其余深灰 */
[data-page="buyer-chat"] .oc-actions .bonus-tip { width: 245px; font-size: 12px; letter-spacing: 0.35px; color: #555; transform: translateX(-7px); }
[data-page="buyer-chat"] .oc-actions .bonus-tip .b-red { color: #f04848; font-weight: 400; }
[data-page="buyer-chat"] .oc-actions .bonus-tip b.b-red { font-weight: 700; }
[data-page="buyer-chat"] .oc-actions .bonus-tip::before { width: 12px; height: 16px; }
/* 5) 回单缩略图：稿框 278–398 × 534–714（含 1px 边），原 279–397 × 535–713；改用稿裁图 */
[data-page="buyer-chat"] .pend-receipt { width: 120px; height: 180px; border: 0; margin: -1px 0 16px auto; overflow: hidden; background: none; }
[data-page="buyer-chat"] .pend-receipt img { display: block; width: 120px; height: 180px; }
/* R10：通道名稿字宽 52.5/66（电子钱包/支付宝扫码，含模糊）vs 原 43/55，中心一致 → 11px→12.5px，居中不变 */
.channel .ch-name { font-size: 12.5px; }
[data-page="buyer-chat"] .oc-actions .bonus-tip { gap: 0; letter-spacing: 0.2px; }
[data-page="buyer-chat"] .oc-actions .bonus-tip::before { width: 13px; height: 18px; margin-right: 5px; }
[data-page="buyer-chat"] .order-card .amount { font-size: 33px; } /* R10 追加：金额 26→33px；稿 ink 176–233×244–269（阈值含模糊≈+2/边，净≈53×21），33px 实测 178–230×244–267，中心 Δ(+0.5,+1)；作用于买家聊天室所有 .order-card .amount（待付款/超时/取消） */
[data-page="buyer-chat"] .order-card .amount { height: 36px; } /* R10 追加：33px 后行盒 36→38，钉回 36 保下方「交易金额」/收款行不动 */

/* ===== R11（第十一轮）· 坐标按对照帧全分辨率像素实测 ===== */
/* 2) 金额：R10 误用「100」量宽（脚本点了首档），按稿「1000」重量：稿数字 176–233×244–269（t60，含模糊），33px 时原型 169–239 偏宽；
      宽回到 26px（≈55），高用 scaleY 拉回 33px 时的 23px（稿字形更窄更高） */
[data-page="buyer-chat"] .order-card .amount { font-size: 26px; }
[data-page="buyer-chat"] .order-card .amount .amt-num { display: inline-block; transform: scaleY(1.27); transform-origin: 50% 62%; }
[data-page="buyer-chat"] .order-card .amount .amt-num { position: relative; top: 1px; }
[data-page="buyer-chat"] .order-card .amount small { font-size: 12.5px; position: relative; top: 1px; margin-left: 6px; }
/* 1) 首页提示：R10 用 t60 阈值只截到 ⓘ 右侧淡边（235），漏了图标左半；t40 重量：稿 ⓘ 228–244、字 248–393（宽 145），原型 ⓘ 235–249、字 253–393（140）
      → 字 14→14.4px，ⓘ 12→14px，间距 4→5，右缘（393）不动 */
.amount-hint { font-size: 14.4px; gap: 5px; }
.amount-hint::before { width: 14px; height: 14px; line-height: 14px; font-size: 11px; box-sizing: border-box; }
.amount-hint { top: -3px; } /* R11: 字形 478–494 → 稿 480–495，下移 1 */
/* 5a) 首页页签：稿灰底胶囊容器 x20–394 y97–129、选中蓝胶囊 25–96×99–128（白字），5 槽等距 ≈73.5；
       稿有「钱包」页签，原型按初轮打回已去掉（4 个）→ 只能对齐容器与「热门」，其余三个整体比稿左移一槽，见报告 */
.deposit-top .tabs { margin: 9px 20px 0; padding: 2px 5px; height: 32px; box-sizing: border-box; gap: 0; background: #f1eff0; border-radius: 16px; overflow: hidden; align-items: center; }
.deposit-top .tab { flex: 0 0 73.5px; height: 29px; padding: 0; border-radius: 15px; font-size: 14px; font-weight: 500; color: #555; text-align: center; }
.deposit-top .tab.is-active { background: linear-gradient(90deg, #5468ee, #3f48dc); color: #fff; box-shadow: none; }
/* 5b) 待付款页输入栏：稿 buyer-waiting 输入栏白底起 708、框 717–748、其下白至 896（无浏览器栏）；
       buyer-pending 帧框在 795 且下方有浏览器地址栏 → 两帧底部不同，按状态分开 */
[data-page="buyer-chat"][data-phase="waiting_payment"] .chat-input-bar { padding-top: 9px; padding-bottom: 148px; }
/* R11b：加回「钱包」页签（5 槽 73.5，与稿一致）；稿字形中心 热门61/钱包131.5/支付宝208.5/微信281/其它354.5 */

/* ===== R12（第十二轮）· 像素以对照帧全分辨率为准 ===== */
/* 1) 输入框占位「发送常用语句」：稿 buyer-pending.png 字形 25–118×804–819（宽 93），原型 15px 为 25–113（88）→ 16px；三帧同字号 */
[data-page="buyer-chat"] .chat-input-bar .fake-input { font-size: 16px; }
/* 2) 微信扫码/微信大额：稿为白底块内绿色圆角方块(30×27, #71B043)+白色气泡，原型用的是裸绿气泡字形(墨迹满 36 宽) → 换 assets/icons/wechat_tile.svg（views.js 映射），格子/尺寸不动 */

/* ===== B2（第二批）· 坐标按对照帧像素（低清帧为 Figma 画布截图 194px 宽 → 414×896 重采样，±1–2px 精度） ===== */
/* 离开原因弹窗（稿 b2-leave：框 36–377 × 261–598，r12；标题字形 287.5–304 居中；X 336.5–353.5×284–300；
   圆钮 16px x57.5，行中心 343.5+36k；字 x82.5 15px；确定 66.5–347.5 × 518.5–568.5 r8；
   勾选框（稿 46）52.5–362 × 518.5–544.5 蓝边，红字 12px x81.5；确定下移到 564.5；提示 105–309 × 398–443） */
.modal-mask.center:has(.lv-dlg) { padding: 0; }
.lv-dlg { position: absolute; left: 36px; top: 261px; width: 341px; max-width: none; max-height: none; box-sizing: border-box; padding: 0 0 29.5px; border-radius: 12px; overflow: visible;
  background: linear-gradient(180deg, #e3eefc 0, #fff 120px); }
.lv-head { position: relative; height: 64.5px; display: flex; justify-content: center; padding-top: 23px; box-sizing: border-box; font-size: 17px; font-weight: 500; color: #222; line-height: 24px; }
.lv-head .x { position: absolute; left: 300.5px; top: 23px; width: 17px; height: 17px; padding: 0; background: none; border: 0; display: flex; }
.lv-row { display: flex; align-items: center; height: 36px; padding-left: 21.5px; font-size: 15px; color: #333; cursor: pointer; }
.lv-row input, .lv-ack input { display: none; }
.lv-dlg .rd { width: 16px; height: 16px; border: 1px solid #b9bcc2; border-radius: 50%; box-sizing: border-box; margin-right: 9px; flex: 0 0 auto; position: relative; }
.lv-row.is-picked .rd, .lv-ack.is-on .rd { background: #1f6fe5; border-color: #1f6fe5; }
.lv-row.is-picked .rd::after, .lv-ack.is-on .rd::after { content: ""; position: absolute; left: 4.5px; top: 2px; width: 4px; height: 7px; border: solid #fff; border-width: 0 1.6px 1.6px 0; transform: rotate(45deg); }
.lv-ack { display: flex; align-items: center; margin: 13px 15px 0 16.5px; height: 26px; padding-left: 5.5px; border: 1px solid #5b9cf0; border-radius: 3px; box-sizing: border-box; font-size: 12px; color: #e53935; white-space: nowrap; cursor: pointer; }
.lv-ack .rd { width: 14px; height: 14px; margin-right: 9px; }
.lv-ok { display: block; margin: 13px 0 0 30.5px; width: 281px; height: 50px; border: 0; border-radius: 8px; font-size: 15px; color: #fff; background: linear-gradient(90deg, #5b7cf0, #4040e0); cursor: pointer; }
.lv-dlg.has-ack .lv-ok { margin-top: 20px; }
.lv-ok:disabled { background: #f2f2f2; color: #9a9a9a; cursor: default; }
.lv-toast { position: absolute; left: 69px; top: 137px; width: 204px; height: 45px; box-sizing: border-box; border-radius: 8px; background: #fdecec; box-shadow: 0 1px 4px rgba(0,0,0,.08);
  display: flex; align-items: center; gap: 9px; padding-left: 15px; font-size: 15px; color: #e53935; }
.lv-toast i { width: 21px; height: 21px; border-radius: 50%; background: #e53935; position: relative; flex: 0 0 auto; }
.lv-toast i::before, .lv-toast i::after { content: ""; position: absolute; left: 10px; top: 6px; width: 1.6px; height: 9px; background: #fff; transform: rotate(45deg); }
.lv-toast i::after { transform: rotate(-45deg); }
/* 实测修正：标题 稿 136–277（141）vs 17px 134 → 18px；选项字 稿 84–240（156）vs 149 → 15.7px；勾选字 269 vs 250 → 12.9px；提示字 → 16px；
   已勾选帧（稿 47）整框比 40/46 高 5px → is-ack 时 top 256 */
.lv-head { font-size: 18px; padding-top: 24px; }
.lv-row { font-size: 15.7px; }
.lv-ack { font-size: 12.9px; }
.lv-toast { font-size: 16px; }
.lv-dlg.is-ack { top: 256px; }
/* B2 邮件弹层（稿 18392-142280，全分辨率）：遮罩到 708，弹层 top336 h372；标题字 17–355；X 381–395×353–368；
   视频 16–398×379–533；红字 y554–568；邮箱框 16–398×579–623；复制 342–390×587–615；发送完成 16–398×639–689 */
.modal-mask.es-mask { bottom: 188px; }
.es-sheet { position: absolute; left: 0; right: 0; bottom: 0; top: auto; height: 372px; padding: 0; border-radius: 12px 12px 0 0; background: #fff; box-sizing: border-box; }
.es-title { position: absolute; left: 16px; top: 351px; top: 15px; font-size: 14px; line-height: 20px; color: #9a9a9a; }
.es-x { position: absolute; left: 381px; top: 17px; width: 15px; height: 15px; padding: 0; border: 0; background: none; line-height: 0; }
.es-video { position: absolute; left: 16px; top: 43px; width: 382px; height: 154px; display: block; }
.es-red { position: absolute; left: 16px; top: 215px; font-size: 14px; line-height: 20px; color: #fc5e5d; white-space: nowrap; }
.es-box { position: absolute; left: 16px; top: 243px; width: 382px; height: 44px; box-sizing: border-box; border: 1px solid #b9babe; border-radius: 8px; }
.es-box span { position: absolute; left: 8px; top: 0; line-height: 42px; font-size: 16px; color: #222; }
.es-copy { position: absolute; right: 7px; top: 7px; width: 48px; height: 28px; border: 0; border-radius: 4px; background: #005ce0; color: #fff; font-size: 15px; padding: 0; }
.es-done { position: absolute; left: 16px; top: 303px; width: 382px; height: 50px; border: 0; border-radius: 8px; background: #1da949; color: #fff; font-size: 17px; }
.es-box span { font-size: 16.6px; left: 7.5px; }
.es-done { font-size: 16px; }
/* B2 唤起（稿 18392-142549）：收款人 王珊珊 + 支付宝大图标；发送回单蓝钮 58–366×449–497；红字在钮下 */
[data-page="buyer-chat"] .ev-info { text-align: center; padding: 0 0 16px; border-bottom: 1px solid #eee; }
[data-page="buyer-chat"] .ev-name { font-size: 14px; color: #222; line-height: 20px; margin-top: 2px; }
[data-page="buyer-chat"] .ev-logo { display: block; margin: 9px auto 0; width: 60px; height: 60px; }
[data-page="buyer-chat"] .oc-actions .ev-btn { background: #0a5fe0; }
[data-page="buyer-chat"] .ev-red { text-align: center; color: #f04848; font-size: 14px; line-height: 20px; margin-top: 13px; }
[data-page="buyer-chat"] .ev-info { border-bottom: 0; padding-bottom: 0; }
[data-page="buyer-chat"] .ev-logo, [data-page="buyer-chat"] .oc-head .union-ico[alt="支付宝"] { border-radius: 50%; }
/* B2 实测：唤起名/图标/倒计时整体比稿高 3–7px；稿气泡在「转」后折行（R9 意图），18 字需 ≥286px，padding-right 24→18 */
[data-page="buyer-chat"] .msg-row:not(.pend-msg) .bubble { padding-right: 18px; }
[data-page="buyer-chat"] .ev-name { margin-top: 5px; }
[data-page="buyer-chat"] .ev-logo { margin-top: 12px; }
[data-page="buyer-chat"] .ev-info { padding-bottom: 1px; }
[data-page="buyer-chat"] .oc-actions .ev-btn { height: 48px; margin-top: -2px; }
[data-page="buyer-chat"] .ev-red { transform: translateX(-6.5px); }
/* B2 唤起页气泡跟三期稿 142549：16px/24px（与一/二期 webp 的 15/19 不同，只作用唤起页，见冲突清单 C-B2-3） */
[data-page="buyer-chat"]:has(.ev-info) .msg-row:not(.pend-msg) .bubble { font-size: 16px; line-height: 24px; padding-top: 8px; padding-right: 6px; padding-left: 9.5px; }
[data-page="buyer-chat"]:has(.ev-info) .msg-row:not(.pend-msg) .bubble { padding-top: 10px; padding-bottom: 6px; padding-left: 8px; }
[data-page="buyer-chat"]:has(.ev-info) .msg-row:not(.pend-msg) .bubble .time { position: absolute; right: 9px; bottom: 6px; font-size: 12px; line-height: 12px; }
[data-page="buyer-chat"]:has(.ev-info) .msg-row:not(.pend-msg) .bubble { padding-bottom: 4px; }
[data-page="buyer-chat"]:has(.ev-info) .msg-row:not(.pend-msg) .bubble .time { font-size: 11px; bottom: 4px; }
/* B2 驳回（稿 18392-141963 全分辨率）：卡 16–324×103–470；我要催单 16–324×485–533；买家 173–398×549–585；
   官 头像 16–50×601–635、气泡 58–366×601–663；重新发送 58–366×681–728 */
[data-page="buyer-chat"] .rj-card { width: 308px; margin: 0; }
[data-page="buyer-chat"] .rj-remind { display: block; width: 308px; height: 48px; margin: 15px 0 0; border-radius: 10px; background: #005ce0; font-size: 16px; }
[data-page="buyer-chat"] .rj-me { margin-top: 16px; }
[data-page="buyer-chat"] .rj-off { margin-top: 16px; gap: 8px; }
[data-page="buyer-chat"] .avatar.off { background: #ffbe0c; color: #fff; }
[data-page="buyer-chat"] .rj-off .bubble { width: 308px; }
[data-page="buyer-chat"] .rj-re { display: block; width: 308px; height: 48px; margin: 18px 0 0 42px; border-radius: 10px; background: #1da949; font-size: 16px; }
/* B2 驳回卡内：稿勾 32px@154,230；已付款 y274；请等待对方查收 y333（与 buyer-pending webp 不同帧，单独作用 .rj-card） */
[data-page="buyer-chat"] .rj-card .oc-head { padding-top: 9px; height: 40px; }
[data-page="buyer-chat"] .rj-card .pend-st { margin-top: -14px; }
[data-page="buyer-chat"] .rj-card .pend-st img { width: 32px; height: 32px; left: 138px; margin-top: 17px; }
[data-page="buyer-chat"] .rj-card .pend-st .sub { margin-top: -14px; }
[data-page="buyer-chat"] .rj-card .pend-st .st { margin-top: 16px; }
[data-page="buyer-chat"] .rj-card .pend-st img { left: 123px; }
[data-page="buyer-chat"] .rj-remind { margin-top: 17px; }
[data-page="buyer-chat"] .rj-me .bubble { font-size: 16px; }
[data-page="buyer-chat"] .rj-off .avatar { width: 34px; height: 34px; flex: 0 0 34px; }
[data-page="buyer-chat"] .msg-row.rj-off:not(.pend-msg) .bubble { font-size: 16px; line-height: 24px; padding: 10px 6px 6px 10px; }
[data-page="buyer-chat"] .msg-row.rj-off:not(.pend-msg) .bubble .time { position: absolute; right: 9px; bottom: 4px; font-size: 11px; line-height: 12px; }
/* B2 申诉（qukuan 稿 36/37/38，原帧 194px 宽重采样，±2px）：
   选原因：弹层 top384；标题 189–221×404–422；X 374–391；「请选择申诉原因」21–113×448–460；单选 17–31，字 x42，行心 483.5+39.75k；确定 17–395×685–733
   材料：弹层 top416；标题 127–286×432–451；「请提交证明材料」19–129×487–503；提示 28–293×530–543；图 20–60×580–643；＋框 76–134×580–640；提交 17–395×667–715 */
.modal-mask.ap-mask .ap-sheet { position: absolute; left: 0; right: 0; bottom: 0; top: 384px; padding: 0; border-radius: 12px 12px 0 0; background: #fff; box-sizing: border-box; }
.modal-mask.ap-mask .ap-sheet.ap-mat { top: 416px; }
.ap-head { position: relative; height: 56px; text-align: center; font-size: 16px; font-weight: 500; color: #222; line-height: 20px; padding-top: 19px; box-sizing: border-box; }
.ap-x { position: absolute; left: 374px; top: 20px; width: 17px; height: 17px; padding: 0; border: 0; background: none; line-height: 0; }
.ap-lab { position: absolute; left: 21px; top: 61px; font-size: 13px; line-height: 18px; color: #999; }
.ap-row { position: absolute; left: 17px; height: 30px; display: flex; align-items: center; font-size: 15px; color: #222; }
.ap-row:nth-of-type(1) { top: 84.5px; } .ap-row:nth-of-type(2) { top: 124.25px; } .ap-row:nth-of-type(3) { top: 164px; } .ap-row:nth-of-type(4) { top: 203.75px; } .ap-row:nth-of-type(5) { top: 243.5px; }
.ap-row input { display: none; }
.ap-row .rd { width: 14px; height: 14px; border: 1px solid #9a9a9a; border-radius: 50%; box-sizing: content-box; margin-right: 10px; position: relative; flex: 0 0 auto; }
.ap-row.is-picked .rd { border-color: #0050de; }
.ap-row.is-picked .rd::after { content: ""; position: absolute; left: 3px; top: 3px; width: 8px; height: 8px; border-radius: 50%; background: #0050de; }
.ap-ok { position: absolute; left: 17px; top: 301px; width: 378px; height: 48px; border: 0; border-radius: 8px; background: #0050de; color: #fff; font-size: 15px; padding: 0; }
.ap-ok:disabled { background: #d5d6da; color: #fff; }
.ap-mat .ap-head { font-size: 17px; }
.ap-mat .ap-x { top: 18px; }
.ap-mt { position: absolute; left: 19px; top: 69px; font-size: 16px; font-weight: 500; line-height: 22px; color: #222; }
.ap-tip { position: absolute; left: 28px; top: 112px; font-size: 15px; line-height: 18px; color: #999; display: flex; align-items: center; }
.ap-tip i { width: 4px; height: 4px; border-radius: 50%; background: #aaa; margin-right: 5px; }
.ap-files { position: absolute; left: 20px; top: 164px; display: flex; gap: 16px; }
.ap-thumb { width: 40px; height: 63px; object-fit: cover; border-radius: 3px; }
.ap-add { width: 58px; height: 60px; border: 1px dashed #d8dbe2; border-radius: 4px; background: #f6f7fa; font-size: 26px; color: #333; padding: 0; line-height: 56px; }
.ap-mat .ap-ok { top: 251px; }
.ap-row .rd { margin-right: 15px; }
.ap-tip { font-size: 15.8px; }
/* B2 强制提示（稿 force-incomplete 帧 34，194px 重采样 ±2）：框 37–377×352–546；标题 189–225×381–397；正文 99–307×425–439；
   取消订单 68–202×466–515 #f3f3f3；查看 212–347×466–516 蓝紫渐变 */
.modal-mask.center .fc-dlg { position: absolute; left: 37px; top: 352px; width: 340px; height: 194px; max-width: none; margin: 0; padding: 0; box-sizing: border-box; border-radius: 12px; background: linear-gradient(180deg, #e8f8ff 0, #fff 48px); transform: none; }
.fc-title { position: absolute; left: 0; right: 0; top: 27px; text-align: center; font-size: 18px; line-height: 24px; font-weight: 500; color: #222; }
.fc-txt { position: absolute; left: 0; right: 0; top: 71px; text-align: center; font-size: 15px; line-height: 20px; color: #333; }
.fc-cancel, .fc-view { position: absolute; top: 114px; height: 50px; border: 0; border-radius: 6px; font-size: 15px; padding: 0; }
.fc-cancel { left: 31px; width: 134px; background: #f3f3f3; color: #999; }
.fc-view { left: 175px; width: 135px; background: linear-gradient(90deg, #5c78ef, #3f42ea); color: #fff; font-weight: 500; }
.fc-txt { font-size: 15.3px; }
/* B2 回归顺带：buyer-waiting 稿时间 336–357×151（原 321/154，padding 改后 327） */
[data-page="buyer-chat"] .msg-row:not(.pend-msg) .bubble .time { margin-right: -8px; }

/* ===== B2R1 ===== */
/* 1/2 绝对定位的时间不吃 B2 回归项的 margin-right:-8（那条只给 buyer-waiting 的流式时间）：稿 142549 / 141963 时间 333–356 */
[data-page="buyer-chat"]:has(.ev-info) .msg-row:not(.pend-msg) .bubble .time,
[data-page="buyer-chat"] .msg-row.rj-off:not(.pend-msg) .bubble .time { margin-right: 0; }
/* 3 申诉材料（稿 38 全分辨率重量）：图 20–79×580–643；＋框 94–156×580–645（底 #f7f7f7，＋心 125,613） */
.ap-files { left: 20px; top: 164px; gap: 15px; }
.ap-thumb { width: 59px; height: 63px; border-radius: 3px; object-fit: cover; }
.ap-add { width: 62px; height: 65px; border: 0; border-radius: 4px; background: #f7f7f7; font-size: 28px; line-height: 63px; color: #333; }
/* 5 驳回卡头通道图标统一 26px 圆形区域 */
[data-page="buyer-chat"] .rj-card .rj-ico { object-fit: contain; }
.ap-add { font-size: 33px; }
/* 2 买家气泡时间 稿 366–389×570–579 */
[data-page="buyer-chat"] .rj-me .bubble .time { bottom: 0; right: 7px; }

/* ===== DUAL：双屏壳 / 内嵌模式（不改 .phone-canvas 内任何规则） ===== */
html[data-mode="dual"] .proto-shell { display: none; }
html:not([data-mode="dual"]) .dual-shell { display: none; }
.dual-shell { padding: 16px 24px 40px; }
.dual-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 18px; }
.dual-actions { display: flex; gap: 8px; align-items: center; }
.dual-actions a.link-btn { text-decoration: none; }
.dual-phones { display: flex; justify-content: center; gap: 64px; }
.dual-col { margin: 0; display: flex; flex-direction: column; align-items: center; gap: 22px; }
.dual-col figcaption { font-size: 14px; font-weight: 600; color: var(--muted); }
.dual-frame { box-sizing: content-box; width: 414px; height: 896px; border-radius: 36px; background: #111; box-shadow: 0 0 0 12px #111, 0 20px 50px rgba(40, 40, 80, 0.25); }
.dual-frame iframe { display: block; width: 414px; height: 896px; border: 0; border-radius: 28px; background: transparent; }
/* 内嵌（iframe）：只留 414×896 画布，原点 (0,0) */
html[data-mode="embed"], html[data-mode="embed"] body { margin: 0; padding: 0; background: transparent; overflow: hidden; }
html[data-mode="embed"] .proto-toolbar, html[data-mode="embed"] .proto-side, html[data-mode="embed"] .conflict-banner { display: none !important; }
html[data-mode="embed"] .proto-shell { display: block; padding: 0; margin: 0; max-width: none; }
html[data-mode="embed"] .phone-wrap { display: block; padding: 0; margin: 0; }
html[data-mode="embed"] .phone-frame { box-shadow: none; border-radius: 0; background: transparent; margin: 0; }

/* DUAL4：右侧状态/跳转栏（1280 宽一屏内：2×(414+24) + 2×24 gap + 300 栏 + 2×24 padding = 1224） */
.dual-phones { gap: 24px; align-items: flex-start; }
.dual-side { width: 300px; flex: 0 0 300px; max-height: 960px; overflow: auto; font-size: 13px; }
.dual-side h3 { margin: 0 0 8px; font-size: 14px; }
.dual-side .state-dump { max-height: 330px; overflow: auto; margin: 0 0 14px; }
.dual-side .jump-list { margin: 0; padding: 0; list-style: none; display: grid; gap: 6px; }
.dual-side .jump-list button { width: 100%; text-align: left; }
.dual-shell { padding-bottom: 24px; }
/* DUAL5：真二维码。qr-box 白底 140×140、内边距 12 不变，二维码 116×116 正好落在原占位图案区 */
.qr-box .qr-fake.qr-real { padding: 0; }
.qr-box .qr-fake.qr-real::before { display: none; }
.qr-box .qr-fake.qr-real .qr-img { display: block; width: 116px; height: 116px; image-rendering: pixelated; }
/* DUAL5：已付款等待卡里的毛玻璃二维码（稿 buyer-pending 帧 x173–252 / y279–362 为一张模糊淡化的二维码） */
[data-page="buyer-chat"] .pend-st .pend-qr .pend-qr-img { position: absolute; left: 51px; top: 49px; margin: 0; width: 80px; height: 80px; filter: blur(1.6px); opacity: 0.16; }
/* DUAL5：卖家屏字体与已验收买家屏统一（只限定 seller-chat，买家规则不动）。
   稿 seller-confirm：金额「2508」墨迹高 24（买家稿 1000 为 23）、倒计时红字 35×12（买家稿同）、按钮字「确认发货」61 宽≈16px */
[data-page="seller-chat"] .sc-skin .order-card .oc-head { font-size: 13px; font-weight: 400; color: #8a8f99; }
[data-page="seller-chat"] .sc-skin .oc-head .oc-no { color: #222; font-size: 14px; font-weight: 400; margin-left: 13px; }
[data-page="seller-chat"] .sc-skin .oc-head .copy { color: #333; background: #f0f1f4; border-radius: 13px; height: 26px; padding: 0 10px; margin-left: 12px; font-size: 13px; font-weight: 400; }
[data-page="seller-chat"] .sc-skin .order-card .amount { font-size: 26px; font-weight: 500; color: #2d7cf0; line-height: 32px; height: 36px; letter-spacing: 0; }
[data-page="seller-chat"] .sc-skin .order-card .amount .amt-num { display: inline-block; font-weight: 500; transform: scaleY(1.27); transform-origin: 50% 62%; position: relative; top: 1px; }
[data-page="seller-chat"] .sc-skin .order-card .amount small { font-size: 12.5px; font-weight: 500; position: relative; top: 1px; margin-left: 6px; }
[data-page="seller-chat"] .sc-skin .order-card .amount-lab { font-size: 13.5px; font-weight: 400; color: #444; line-height: 19px; margin: 6px 0 0; text-align: center; }
[data-page="seller-chat"] .sc-skin .timer-row { justify-content: center; color: #333; font-size: 14px; font-weight: 400; gap: 6px; }
[data-page="seller-chat"] .sc-skin .timer-row .t-red { color: #ef3b3b; font-weight: 400; font-size: 15px; font-family: "DS-Digital", "Courier New", monospace; letter-spacing: -0.5px; }
/* 气泡按作者对齐买家屏：卖家发的（本屏 .me）= 买家屏卖家气泡 15px；买家发的 = 买家屏「我已支付」14px */
[data-page="seller-chat"] .sc-skin .bubble { font-size: 14px; font-weight: 400; line-height: 21px; }
[data-page="seller-chat"] .sc-skin .msg-row:has(.avatar.seller) .bubble { font-size: 15px; }
[data-page="seller-chat"] .sc-skin .bubble .time { font-size: 10px; font-weight: 400; line-height: 14px; }
[data-page="seller-chat"] .sc-skin .seller-actions .btn-primary, [data-page="seller-chat"] .sc-skin .seller-actions .btn-ghost { font-size: 16px; font-weight: 600; }
[data-page="seller-chat"] .sc-skin .order-card .oc-head { display: flex; align-items: center; }
[data-page="buyer-chat"] .pend-st .pend-qr::before { content: ""; position: absolute; left: 38px; top: 37px; width: 102px; height: 124px; background: #f6f8fb; border-radius: 3px; filter: blur(1.5px); }
.dual-phones { flex-wrap: wrap; } .dual-col { flex-shrink: 0; } /* DUAL5：窄于 1280 时右栏换行到下方，手机不被压缩 */
/* DUAL5：红包图标——原为 ::before 纯色块占位（#f04848 13×18，非裂图）；换稿 18392-142549 裁切素材 assets/icons/hongbao_tip.png（17×24，不透明部分 15×19 @1,3），占位宽 13+5 不变 → 15+3 */
[data-page="buyer-chat"] .oc-actions .bonus-tip::before { width: 15px; height: 19px; margin-right: 3px; border-radius: 0; background: url(../assets/icons/hongbao_tip.png?v=dual29m) -1px -3px / 17px 24px no-repeat; }

/* DUAL5b：卖家待付款卡直接复用买家卡组件与样式——外包 data-page="buyer-chat" 皮肤容器，命中已验收的买家规则；只换文案 */
[data-page="seller-chat"] .bc-skin { display: block; margin: 4px 0 0 4px; } /* 卖家 page-body 内边距比买家少 4/4，补齐使卡片同坐标 */
[data-page="seller-chat"] .bc-skin .sw-note { margin: 14px 0 0 43px; width: 308px; text-align: center; color: #8a8f99; font-size: 12px; line-height: 18px; }
/* DUAL5：中文状态列表 */
.state-list { list-style: none; margin: 0 0 14px; padding: 10px 12px; background: #fff; border-radius: 8px; font-size: 13px; line-height: 22px; }
.state-list li { display: flex; gap: 2px; }
.state-list .st-k { color: #8a8f99; flex: 0 0 auto; }
.state-list .st-v { color: #222; font-weight: 500; }
/* ===== DUAL6 钱包页签（三期 27629:68709，几何取自 Figma metadata：格 87×54，列距 7.33，行距 8；角标 52×22 贴右上） ===== */
.channel-panel.is-wallet { padding: 0; height: 272px; position: relative; } /* 格区 y144–384 + 底 12 + 稿 Frame 1618873851 共 264 */
.channel-panel.is-wallet .channel-grid { position: absolute; left: 22px; top: 15px; display: grid; grid-template-columns: repeat(4, 87px); column-gap: 7.33px; row-gap: 8px; }
.channel-panel.is-wallet .channel.wch { width: 87px; height: 54px; padding: 0; border-radius: 8px; border: 1px solid transparent; background: #f7f8fa; text-align: right; overflow: hidden; }
.channel-panel.is-wallet .channel.wch.is-selected { border-color: #4b7cf3; background: #fff; }
.channel-panel.is-wallet .wico { position: absolute; left: 8px; top: 7px; width: 24px; height: 24px; object-fit: contain; }
.channel-panel.is-wallet .wbadge { position: absolute; right: 0; top: 0; width: 52px; height: 22px; line-height: 22px; text-align: center; font-size: 10px; border-radius: 0 8px 0 8px; }
.channel-panel.is-wallet .wbadge.g { background: #e7f8ea; color: #1aa260; }
.channel-panel.is-wallet .wbadge.r { background: #fde9e9; color: #ef3b3b; }
.channel-panel.is-wallet .ch-name { position: absolute; right: 6px; bottom: 5px; top: auto; font-size: 13px; line-height: 15px; color: #333; }
.channel-panel.is-wallet .ch-name.wopen { color: #3f6bf5; display: flex; align-items: center; gap: 3px; }
.channel-panel.is-wallet .ch-name.wopen i { width: 0; height: 0; border-left: 5px solid #3f6bf5; border-top: 3.5px solid transparent; border-bottom: 3.5px solid transparent; }
.w-amount { background: #fff; margin-top: 3px; padding: 12px 22px 12px; position: relative; } /* 稿 Deposit Amount Container y404 */
.w-input { height: 40px; box-sizing: border-box; border: 1px solid #e6e8ee; border-radius: 8px; display: flex; align-items: center; padding: 0 12px; gap: 6px; }
.w-yen { font-size: 16px; font-weight: 600; color: #222; }
.w-rate { height: 28px; margin-top: 8px; display: flex; align-items: center; font-size: 12px; color: #333; gap: 4px; }
.w-rate .w-red { color: #ef3b3b; }
.w-rate .w-rl { margin-left: 13px; }
.w-rate .w-refresh { width: 12px; height: 12px; box-sizing: border-box; border: 1.5px solid #666; border-right-color: transparent; border-radius: 50%; margin-left: 4px; }
.w-rate .w-dl { margin-left: auto; margin-right: 8px; color: #3f6bf5; font-size: 15px; line-height: 24px; } /* 稿文字层 60×24 */
.w-grid { margin-top: 12px; display: grid; grid-template-columns: repeat(4, 86px); column-gap: 8px; row-gap: 10px; }
.w-amt { height: 34px; border: 1px solid transparent; border-radius: 8px; background: #f7f7f7; font-size: 13px; color: #222; cursor: pointer; }
.w-amt.is-selected { border-color: #4b7cf3; background: #eef3ff; color: #3f6bf5; }
.w-amount ~ .deposit-actions { margin-top: 16px; } /* 稿「按钮」x18 y654 378×50 */
.w-amount ~ .deposit-actions .btn-primary { width: 378px; height: 50px; display: block; margin: 0 auto; }
/* 汇率行按 metadata 文字层 x 坐标逐个定位（≈22 / 0.00 37 / 元 70 / 参考汇率: 97 / 1 161 / 刷新 171 / 下载K豆 324，均为画布坐标，行顶 464） */
.channel-panel.is-wallet .ch-name.wopen { font-size: 11px; }
.w-rate { position: relative; display: block; font-size: 14px; line-height: 21px; }
.w-rate > * { position: absolute; top: 3.5px; margin: 0 !important; }
.w-rate > :nth-child(1) { left: 0; } .w-rate > :nth-child(2) { left: 15px; } .w-rate > :nth-child(3) { left: 48px; }
.w-rate > :nth-child(4) { left: 75px; } .w-rate > :nth-child(5) { left: 139px; }
.w-rate > .w-refresh { left: 149px; top: 8px; }
.w-rate > .w-dl { left: 302px; top: 2px; font-size: 15px; line-height: 24px; }
.channel-panel.is-wallet .ch-name.wopen { bottom: 3px; }
.w-rate > :nth-child(1) { color: #999; }
/* ===== DUAL7 转账收款卡（无稿）：10-15 11:58 老板——整卡与银行卡完全一致（按钮、底色、金额、复制图标都用银行卡样式），品牌色只在卡头图标 ===== */
[data-page] .order-card.xfer-card .pay-info.xfer .label { white-space: nowrap; width: 64px; } /* 13:43：标签均 ≤4 字，与银行卡同 64px */
/* （原 64px 与银行卡同列宽） */
[data-page] .order-card.xfer-card .pay-info.xfer .val { white-space: nowrap; }
/* 13:08 支付宝转卡图标待定：中性空位，20×20 灰色虚线圆，与其他卡头图标同位置 */
.oc-head .union-ico.ico-tbd { display: inline-block; box-sizing: border-box; width: 20px; height: 20px; border: 1px dashed #c0c4cc; border-radius: 50%; background: #f5f6f8; vertical-align: middle; flex-shrink: 0; }
/* ===== DUAL9 扫码卡：沿用 .qr-box；QQ钱包/数字人民币只换品牌色 ===== */
.qr-box.qqwallet { background: linear-gradient(135deg, #12b7f5, #5ec8f7); }
.qr-box.ecny { background: linear-gradient(135deg, #e60012, #f2555f); }
[data-page] .order-card.scan-card .amount-lab { display: none; } /* 稿 68510：金额下直接是收款人名 */
[data-page] .order-card.scan-card .scan-name { text-align: center; font-size: 14px; color: #222; margin: 2px 0 10px; }
[data-page] .order-card.scan-card .qr-save { display: block; margin-top: 8px; color: #fff; font-size: 12px; text-decoration: underline; }
/* ===== DUAL11 钱包页签逐格校正（三期 27629:68709 metadata + deposit-wallet.png 实测） =====
   图标：稿上方形图标（波币/GOPAY/TOPAY/CB/万币）实测外框约 28×28，中心在格内 (20,19)；统一为 28×28 白底槽位，左 6 上 5，内容等比居中。
   角标：稿 红色签 52×22 贴格右上（x35 y0），文字右对齐、距右 5px；底色只铺在文字区（实测可见底色起点≈文字起点）；数值为空时不渲染。 */
.channel-panel.is-wallet .wico-box { position: absolute; left: 5px; top: 4px; width: 28px; height: 28px; border-radius: 6px; background: #fff; overflow: hidden; display: block; }
.channel-panel.is-wallet .wico-box .wico { position: static; display: block; width: 28px; height: 28px; object-fit: contain; }
.channel-panel.is-wallet .wbadge { right: -1px; top: -1px; width: auto; max-width: 52px; height: 22px; line-height: 22px; padding: 0 5px 0 3px; box-sizing: border-box; font-size: 10px; text-align: right; white-space: nowrap; border-radius: 0 8px 0 8px; }
.channel-panel.is-wallet .ch-name.wkd { color: #333; }
.channel-panel.is-wallet .ch-name { bottom: 3px; } /* 稿名称行比原型低 2px（14 格模糊互相关 dy=+2） */
/* ===== DUAL12 块① 取款侧订单详情（卖家终态，画板 18392:154983 / 24583:125614）：沿用买家详情类，新增类只作用于 seller-detail ===== */
/* ===== DUAL12 块③ 钱包页签（三期 27629:68709） ===== */
/* 顶部：蓝→紫横向渐变（稿左 #0547c6、右 #3d2595 实测），快捷/自选切换 x41 y40 114×24，白块 56 宽 */
.nav-bar.w-nav { background: linear-gradient(90deg, #0547c6 0%, #2f3fbf 50%, #3d2595 100%); }
.w-nav .w-seg { position: absolute; left: 41px; top: 10px; width: 114px; height: 24px; border-radius: 6px; background: rgba(10, 14, 120, .55); display: flex; align-items: center; padding: 0 1px; box-sizing: border-box; z-index: 1; }
.w-nav .w-seg span, .w-nav .w-seg button { flex: 0 0 56px; height: 22px; line-height: 22px; text-align: center; font-size: 14px; color: rgba(255,255,255,.45); border-radius: 5px; border: 0; background: transparent; padding: 0; cursor: pointer; }
.w-nav .w-seg span.is-on, .w-nav .w-seg button.is-on { background: #fff; color: #1f5fe0; font-weight: 600; }
.channel.dep-ch { height: 108px; padding-top: 12px; }
.channel.dep-ch .badge { top: -1px; right: -1px; padding: 0 2px; line-height: 17px; border-radius: 0; border-top-right-radius: 8px; border-bottom-left-radius: 8px; background: #d02b2b; color: #fff; font-size: 11px; font-weight: 500; }
.channel.dep-ch .badge.is-fee { background: #ef9839; }
.channel .ch-limit { font-size: 10px; color: var(--muted); line-height: 1.2; margin-top: 2px; }
.dep-amt-sec { background: #fff; padding: 14px 16px 8px; }
.dep-yen { display: flex; align-items: center; gap: 8px; height: 44px; margin-bottom: 12px; padding: 0 12px; border: 1px solid #e5e6eb; border-radius: 8px; background: #fff; }
.dep-yen .y { font-size: 18px; font-weight: 600; color: #1f2329; }
.dep-yen .dep-in { flex: 1; min-width: 0; border: 0; outline: none; background: transparent; font-size: 15px; font-weight: 500; color: #1f2329; padding: 0; }
.dep-yen .dep-in::placeholder { color: #c0c4cc; font-weight: 400; }
.dep-yen .dep-limit, .dep-rate .dep-limit { margin-left: auto; font-size: 13px; color: #e54d42; font-weight: 400; white-space: nowrap; }
.dep-rate { display: flex; align-items: center; gap: 6px; font-size: 13px; margin: 10px 0; }
.dep-rate .dl { margin-left: auto; color: var(--red); }
.dep-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-top: 10px; }
.dep-abtn { position: relative; border: 1px solid #f7f7f7; background: #f7f7f7; border-radius: 8px; min-height: 44px; cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 15px; color: #2a2a2a; }
.dep-abtn.is-on { border-color: #d02b2b; color: #2a2a2a; }
.dep-abtn .pct { position: absolute; top: -1px; right: -1px; height: 12px; min-width: 30px; display: flex; align-items: center; justify-content: flex-end; padding: 0 2px; color: #f30000; font-size: 12px; font-weight: 500; letter-spacing: -0.4px; line-height: 1; border-top-right-radius: 8px; border-bottom-left-radius: 6px; }
.dep-amt-sec .btn-primary { margin-top: 14px; }
.zx-bar { display: flex; align-items: center; gap: 14px; background: #fff; padding: 12px 14px; font-size: 13px; }
.zx-bar button { border: 0; background: transparent; font-size: 13px; cursor: pointer; padding: 0; }
.zx-bar .cs { margin-left: auto; }
.zx-list { padding: 10px 12px 8px; }
.zx-card { background: #fff; border-radius: 12px; padding: 12px 14px; margin-bottom: 10px; display: grid; grid-template-columns: 1fr auto; grid-template-rows: auto auto; gap: 6px 8px; align-items: center; }
.zx-name { font-weight: 600; font-size: 14px; }
.zx-name .gift { margin-left: 6px; color: #ff3333; font-style: normal; font-size: 12px; font-weight: 500; background: transparent; }
.zx-name .fee { margin-left: 6px; color: #ef9839; font-style: normal; font-size: 12px; font-weight: 500; background: transparent; }
.zx-vol { color: var(--muted); font-size: 12px; }
.zx-sale { font-size: 13px; color: var(--muted); }
.zx-sale b { font-size: 20px; color: var(--text); }
.zx-buy { border: 0; background: var(--blue); color: #fff; border-radius: 8px; height: 32px; padding: 0 16px; cursor: pointer; }
.deposit-top .tab { flex: 1 1 0; width: auto; min-width: 0; font-size: 12px; }
.w-nav .w-bal { font-size: 13px; gap: 3px; }
.w-nav .w-rf { width: 11px; height: 11px; box-sizing: border-box; border: 1.5px solid #fff; border-right-color: transparent; border-radius: 50%; margin: 0 4px 0 2px; }
.w-nav .w-ord { opacity: .9; }
/* 选中态：参照存款首页其它页签选中环（蓝描边 + #eef3ff 浅蓝底），名称转蓝 */
.channel-panel.is-wallet .channel.wch.is-selected { border-color: var(--blue); background: #eef3ff; }
.channel-panel.is-wallet .channel.wch.is-selected .ch-name { color: #3f6bf5; }
/* 角标全显：底色铺文字区，宽度随数值 */
/* 金额框：¥ + 占位/金额 + 右侧蓝色限额 */
.w-input .w-ph { color: #b3b6bd; font-size: 14px; }
.w-input .w-val { color: #222; font-size: 16px; font-weight: 600; }
.w-input .w-lim { margin-left: auto; color: #3f6bf5; font-size: 13px; }
/* 联系客服：稿为深色 15px + 22px 耳机图标 */
.deposit-cs.w-cs { color: #333; font-size: 15px; gap: 6px; }
/* 确认存款未输入金额置灰：稿 27629:68709 实测按钮左 #889bf0 → 右 #7577ec（只作用于钱包页签） */
.w-amount ~ .deposit-actions .btn-primary:disabled { opacity: 1; background: linear-gradient(90deg, #889bf0, #7577ec); color: rgba(255,255,255,.75); }

/* ===== DUAL13 取款侧订单详情（稿 18392:154983 / 24583:125614 叠图还原；画布 y 均为稿实测中心） ===== */
[data-page="seller-detail"] { background: #fff; }
[data-page="seller-detail"] .sd-body { background: #fff; padding: 33px 0 0; }
[data-page="seller-detail"] .sd-lab { height: 20px; line-height: 20px; text-align: center; font-size: 14px; color: #666; }
[data-page="seller-detail"] .sd-big { margin-top: 15.5px; height: 44px; line-height: 44px; text-align: center; font-size: 38px; font-weight: 500; color: #222; letter-spacing: 0; }
[data-page="seller-detail"] .sd-st { margin-top: 11px; height: 22px; line-height: 22px; display: flex; align-items: center; justify-content: center; gap: 4px; font-size: 14px; color: #e02e2e; }
[data-page="seller-detail"] .sd-x { display: inline-block; width: 18px; height: 18px; border-radius: 50%; background: #e02e2e; position: relative; flex-shrink: 0; }
[data-page="seller-detail"] .sd-x::before, [data-page="seller-detail"] .sd-x::after { content: ''; position: absolute; left: 8.25px; top: 4.5px; width: 1.5px; height: 9px; background: #fff; transform: rotate(45deg); }
[data-page="seller-detail"] .sd-x::after { transform: rotate(-45deg); }
[data-page="seller-detail"] .sd-line { margin: 16.5px 34px 0; height: 1px; background: #eeeeee; }
[data-page="seller-detail"] .sd-row { margin: 0 34px; height: 40px; display: flex; align-items: center; justify-content: space-between; font-size: 14px; }
[data-page="seller-detail"] .sd-line + .sd-row { margin-top: 15.5px; }
[data-page="seller-detail"] .sd-k { color: #888; }
[data-page="seller-detail"] .sd-v { color: #333; display: flex; align-items: center; gap: 5px; }
[data-page="seller-detail"] .sd-or .sd-v { color: #f59a23; }
[data-page="seller-detail"] .sd-gr .sd-v { color: #1aaa55; }
[data-page="seller-detail"] .sd-reason .sd-v { color: #e02e2e; }
[data-page="seller-detail"] .sd-ico { width: 22px; height: 22px; border-radius: 50%; object-fit: contain; flex-shrink: 0; }
[data-page="seller-detail"] .sd-ico.ico-tbd { box-sizing: border-box; border: 1px dashed #c0c4cc; background: #f5f6f8; }
[data-page="seller-detail"] .sd-copy { border: 0; background: transparent; padding: 0; display: flex; cursor: pointer; }
[data-page="seller-detail"] .sd-foot { background: #fff; }
[data-page="seller-detail"] .sd-ch .sd-v { gap: 6px; font-size: 15px; }
[data-page="seller-detail"] .sd-ch .sd-ico { width: 24px; height: 24px; }

/* ===== DUAL15 场景补页 ===== */
.modal-mask.center .fc-dlg.has-x { padding-top: 8px; }
.fc-x { position: absolute; right: 12px; top: 12px; border: 0; background: transparent; padding: 4px; cursor: pointer; }
.fc-view.alone { display: block; margin: 28px auto 0; width: 200px; height: 44px; border: 0; border-radius: 22px; background: linear-gradient(90deg,#5468ee,#3f48dc); color: #fff; font-size: 16px; }
.cs-wait { margin: 10px 24px; padding: 10px 14px; background: #f3f4f6; border-radius: 8px; color: #666; font-size: 13px; text-align: center; }
.pr-sheet { position: absolute; left: 0; right: 0; bottom: 0; background: #fff; border-radius: 16px 16px 0 0; padding: 16px 16px 24px; }
.pr-head { display: flex; align-items: center; justify-content: space-between; font-size: 16px; font-weight: 600; }
.pr-tip { margin-top: 12px; font-size: 13px; color: #666; }
.pr-grid { display: flex; flex-wrap: wrap; gap: 10px; margin: 16px 0 20px; }
.pr-thumb, .pr-add { width: 72px; height: 72px; border-radius: 8px; background: #f5f6f8; border: 1px solid #e5e6eb; }
.pr-add { font-size: 28px; color: #999; }
.bind-tip { background: #fff1f0; color: #ef3b3b; font-size: 12px; padding: 8px 16px; display: flex; align-items: center; gap: 6px; }
.bind-tip i { width: 14px; height: 14px; border-radius: 50%; background: #ef3b3b; display: inline-block; }
.bind-body { background: #fff; }
.bind-row { display: flex; align-items: center; min-height: 52px; padding: 0 16px; border-bottom: 1px solid #f0f0f0; gap: 12px; }
.bind-row .bk { flex: 0 0 96px; color: #333; font-size: 14px; }
.bind-row .bv, .bind-row .bv-in { flex: 1; border: 0; font-size: 14px; color: #333; background: transparent; }
.bind-row .bv.ph { color: #b3b6bd; }
.bind-row .ph-code { display: flex; align-items: center; gap: 8px; flex: 1; }
.bind-row .cc { border: 0; background: transparent; color: #333; font-size: 14px; }
.bind-row .get-code { border: 0; background: transparent; color: #3f6bf5; font-size: 13px; white-space: nowrap; }
.bind-toast { position: absolute; left: 50%; top: 45%; transform: translate(-50%,-50%); background: rgba(0,0,0,.75); color: #fff; padding: 10px 18px; border-radius: 8px; font-size: 14px; z-index: 20; }
.bank-search { display: flex; align-items: center; gap: 8px; margin: 10px 16px; padding: 8px 12px; background: #f5f6f8; border-radius: 8px; }
.bank-search input { flex: 1; border: 0; background: transparent; font-size: 14px; }
.bank-search button { border: 0; background: transparent; color: #3f6bf5; }
.bank-li { display: flex; align-items: center; gap: 10px; width: 100%; padding: 14px 16px; border: 0; border-bottom: 1px solid #f0f0f0; background: #fff; font-size: 15px; text-align: left; cursor: pointer; }
.bank-li .bank-logo, .bank-mini { width: 28px; height: 28px; border-radius: 50%; object-fit: contain; flex-shrink: 0; }
.bank-mini { width: 22px; height: 22px; margin-right: 4px; vertical-align: middle; }
.bind-row .req { color: #ef3b3b; font-size: 11px; font-style: normal; margin-left: 4px; }
.bind-sec { padding: 10px 16px 4px; font-size: 13px; color: #8a8f99; background: #f7f8fa; }
.draft-tag { display: inline-block; margin-left: 6px; padding: 0 6px; border-radius: 4px; background: #fff7e6; color: #d48806; font-size: 10px; font-style: normal; vertical-align: middle; }
/* P-06 上传位：实线灰底，非虚线 */
.qr-up-wrap { display: flex; gap: 12px; align-items: flex-start; padding: 16px; background: #fff; }
.qr-up { width: 120px; height: 120px; border: 1px solid #e5e6eb; border-radius: 8px; background: #f7f8fa; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; cursor: pointer; flex-shrink: 0; }
.qr-brand { display: block; }
.qr-label { font-size: 12px; color: #8a8f99; }
.qr-up-btn { border: 0; background: #3f6bf5; color: #fff; font-size: 12px; padding: 4px 12px; border-radius: 4px; }
.qr-up-tip { flex: 1; font-size: 12px; color: #ef3b3b; line-height: 1.5; padding-top: 8px; }
.qr-done { color: #1aaa55; font-size: 13px; }
/* E-23 维护：真实插画 */
.wd-maint { padding: 28px 24px 40px; text-align: center; }
.wm-t { font-size: 20px; font-weight: 700; color: #3f6bf5; }
.wm-illust { display: block; margin: 16px auto 12px; width: 220px; height: auto; object-fit: contain; }
.wm-s { margin-top: 4px; font-size: 15px; font-weight: 600; color: #3f6bf5; }
.wm-msg { margin: 10px 12px 24px; font-size: 13px; color: #666; line-height: 1.6; }
.wm-cs { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-width: 200px; }
.wd-unbind, .wd-bound { padding: 48px 24px; text-align: center; }
.wu-row { font-size: 15px; color: #666; margin-bottom: 24px; }
/* P-04 未绑定完整布局 */
.wd-body { padding-bottom: 24px; }
.wd-ch-row { display: flex; gap: 10px; padding: 12px 16px 4px; }
.wd-ch { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 12px 8px; background: #fff; border: 1px solid #e8eaf0; border-radius: 10px; cursor: pointer; }
.wd-ch.is-on { border-color: #3f6bf5; box-shadow: 0 0 0 1px #3f6bf5; }
.wd-ch-ico { width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 700; font-size: 14px; }
.wd-ch-ico.ccoin { background: #f5a623; }
.wd-ch-ico.usdt { background: #26a17b; }
.wd-ch-name { font-size: 13px; color: #333; }
.wd-ch-lim { font-size: 11px; color: #ef3b3b; }
.wd-bind-bar { display: flex; align-items: center; justify-content: space-between; margin: 10px 16px; padding: 12px 14px; background: #fff; border-radius: 8px; font-size: 14px; color: #666; }
.wd-add { border: 0; background: #3f6bf5; color: #fff; font-size: 13px; padding: 6px 14px; border-radius: 6px; cursor: pointer; }
.wd-amt-sec { margin: 8px 16px 0; background: #fff; border-radius: 10px; padding: 14px; }
.wd-amt-head { display: flex; justify-content: space-between; align-items: center; font-size: 14px; color: #333; }
.wd-lim { font-size: 12px; color: #8a8f99; }
.wd-amt-input { margin-top: 10px; padding: 12px; background: #f5f6f8; border-radius: 8px; font-size: 16px; color: #333; min-height: 44px; }
.wd-amt-input .ph { color: #b3b6bd; }
.wd-amt-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; margin-top: 12px; }
.wd-amt { border: 0; background: #f5f6f8; border-radius: 6px; padding: 10px 0; font-size: 12px; color: #333; cursor: pointer; }
.wd-amt.is-on { background: #e8efff; color: #3f6bf5; font-weight: 600; }
/* P-03 区号弹层 */
.cc-sheet { max-height: 70%; }
.cc-list { max-height: 360px; overflow: auto; padding-bottom: 16px; }
.cc-li { display: flex; justify-content: space-between; width: 100%; padding: 14px 16px; border: 0; border-bottom: 1px solid #f0f0f0; background: #fff; font-size: 15px; text-align: left; cursor: pointer; }
.cc-li.is-on { color: #3f6bf5; }
.cc-code { color: #8a8f99; }
.lv-row.is-dis { opacity: .45; pointer-events: none; }

/* dual15d：绑定/取款未绑/证明位贴近本地 design */
.bind-body { background: #fff; margin: 0 0 12px; }
.bind-row { min-height: 48px; }
.bind-row .bk { flex: 0 0 108px; font-size: 14px; color: #333; }
.bind-row .bv-in::placeholder { color: #c0c4cc; }
.qr-up { background: #fafbfc; border: 1px solid #e8eaf0; }
.wd-body .tabs { padding: 10px 12px 0; }
.wd-body .tab { border-radius: 16px; padding: 6px 14px; font-size: 13px; }
.wd-body .tab.is-active { background: #3f6bf5; color: #fff; }
.wd-ch-row { padding: 12px 16px 8px; }
.wd-bind-bar { box-shadow: 0 1px 2px rgba(0,0,0,.04); }
.wd-amt-sec { box-shadow: 0 1px 2px rgba(0,0,0,.04); }
.wd-amt-grid { grid-template-columns: repeat(5, 1fr); gap: 8px 6px; }
.wm-illust { width: 240px; max-height: 180px; }
.fc-dlg { box-shadow: 0 8px 28px rgba(40,60,120,.18); }

/* dual16 无稿场景 */
.sys-banner { margin: 8px 12px; padding: 10px 12px; border-radius: 8px; font-size: 13px; line-height: 1.4; }
.sys-banner.info { background: #eef5ff; color: #2f5fd0; }
.sys-banner.warn { background: #fff7e6; color: #d48806; }
.sys-banner.mute { background: #f5f6f8; color: #666; }
.amt-err { margin: 8px 0 0; padding: 8px 10px; background: #fff1f0; color: #ef3b3b; font-size: 12px; border-radius: 6px; }
.gift-clear { margin: 12px 16px; padding: 14px; background: #fff; border-radius: 10px; border: 1px solid #f0f0f0; }
.gift-clear .gc-t { font-size: 14px; font-weight: 600; color: #333; margin-bottom: 8px; }
.gift-clear .gc-row { font-size: 13px; color: #666; margin-top: 4px; }
.gift-clear .gc-row.strong { color: #ef3b3b; font-weight: 600; }
.gift-clear s { color: #999; }

/* dual16b：E-16 证明资料改居中弹窗，按 prd prove-design 量坐标 */
.pr-dlg { position: absolute; left: 30px; top: 303px; width: 354px; height: 327px; background: #fff; border-radius: 16px; box-sizing: border-box; }
.pr-dlg .pr-t { position: absolute; left: 19px; top: 28px; font-size: 20px; line-height: 30px; font-weight: 700; color: #1d2129; }
.pr-dlg .pr-x { position: absolute; right: 22px; top: 30px; width: 20px; height: 20px; padding: 0; border: 0; background: none; display: flex; align-items: center; justify-content: center; }
.pr-dlg .pr-x svg { width: 16px; height: 16px; }
.pr-dlg .pr-s { position: absolute; left: 19px; top: 64px; font-size: 14px; line-height: 20px; font-weight: 700; color: #1d2129; }
.pr-dlg .pr-d { position: absolute; left: 19px; right: 18px; top: 91px; font-size: 13.5px; line-height: 22px; color: #4e5969; }
.pr-dlg .pr-grid { position: absolute; left: 19px; top: 154px; display: flex; gap: 8px; margin: 0; }
.pr-dlg .pr-add, .pr-dlg .pr-thumb { width: 76px; height: 77px; border-radius: 8px; background: #f5f6f8; border: 1px solid #e5e6eb; box-sizing: border-box; object-fit: cover; padding: 0; display: flex; align-items: center; justify-content: center; }
.pr-dlg .pr-plus { font-size: 34px; font-weight: 300; color: #666; line-height: 1; }
.pr-dlg .pr-ok { position: absolute; left: 18px; top: 246px; width: 318px; height: 56px; border: 0; border-radius: 8px; font-size: 17px; font-weight: 700; color: #fff; background: linear-gradient(90deg,#5b7bf0,#4338d8); }
.pr-dlg .pr-ok:disabled { background: #d4d5da; }

/* dual16b：P-03 / P-06 绑定页按 prd 稿绝对定位（414×896，顶栏 0–49 无状态栏） */
.page.bf { position: relative; display: block; height: 896px; background: #f4f5f8; overflow: hidden; }
.bf-hd { position: absolute; left: 0; top: 0; width: 414px; height: 49px; background: linear-gradient(90deg,#0765d9,#4933c4); }
.bf-back { position: absolute; left: 14px; top: 13px; width: 24px; height: 24px; padding: 0; border: 0; background: none; display: flex; align-items: center; justify-content: center; }
.bf-title { position: absolute; left: 60px; right: 60px; top: 0; line-height: 49px; text-align: center; color: #fff; font-size: 19px; font-weight: 700; }
.bf-tip { position: absolute; left: 0; top: 49px; width: 414px; box-sizing: border-box; padding: 12px 40px 0 17px; background: #fff; font-size: 14px; line-height: 21px; color: #555; }
.bf-form { position: absolute; left: 0; width: 414px; background: #fff; }
.bf-lb { position: absolute; left: 17px; width: 380px; font-size: 14px; line-height: 20px; font-weight: 700; color: #515151; }
.bf-lb em { position: absolute; right: 0; top: 0; font-style: normal; font-size: 13px; color: #d82e37; }
.bf-in-wrap { position: absolute; left: 17px; width: 380px; height: 47px; }
.bf-in { width: 100%; height: 47px; box-sizing: border-box; border: 1px solid #dce3ec; border-radius: 8px; background: #fafbfe; padding: 0 13px; font-size: 18px; color: #333; display: flex; align-items: center; outline: none; }
.bf-in::placeholder, .bf-in input::placeholder { color: #6f6f6f; }
.bf-sel { position: relative; cursor: pointer; }
.bf-sel .bf-chev { position: absolute; right: 17px; top: 22px; }
.bf-ph .cc { border: 0; background: none; padding: 0 8px 0 0; font-size: 18px; color: #333; }
.bf-ph input { flex: 1; min-width: 0; border: 0; background: none; font-size: 18px; outline: none; }
.bf-code { position: absolute; left: 17px; width: 380px; height: 52px; }
.bf-code .bf-in { position: absolute; left: 0; top: 2px; width: 182px; }
.bf-get { position: absolute; left: 191px; top: 0; width: 189px; height: 52px; border: 1px solid #c4d6f5; border-radius: 8px; background: #fff; color: #0052e5; font-size: 18px; font-weight: 700; }
.bf-ok { position: absolute; left: 17px; width: 380px; height: 53px; border: 0; border-radius: 8px; background: linear-gradient(90deg,#5b78ee,#3739e8); color: #fff; font-size: 18px; font-weight: 700; }
.bf-up { position: absolute; left: 17px; top: 172px; width: 380px; height: 138px; box-sizing: border-box; border: 1px solid #b2c9f4; border-radius: 10px; background: #fbfcff; }
.bf-up-ic { position: absolute; left: 168px; top: 20px; width: 44px; height: 44px; border-radius: 50%; background: #1768e8; display: flex; align-items: center; justify-content: center; }
.bf-up-t { position: absolute; left: 0; right: 0; top: 72px; text-align: center; font-size: 14px; line-height: 20px; color: #1768e8; }
.bf-up-s { position: absolute; left: 0; right: 0; top: 98px; text-align: center; font-size: 12px; line-height: 18px; color: #666; }
.bf-up-done { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #1768e8; font-size: 15px; }
.ba-up-sec { position: absolute; left: 0; top: 68px; width: 414px; height: 184px; background: #fff; }
.ba-up { position: absolute; left: 23px; top: 79px; width: 178px; height: 155px; box-sizing: border-box; border: 1px solid #e3e3e3; border-radius: 8px; background: #fafafa; }
.ba-ic { position: absolute; left: 62px; top: 7px; border-radius: 50%; }
.ba-lb { position: absolute; left: 0; right: 0; top: 73px; text-align: center; font-size: 16px; line-height: 22px; color: #999; }
.ba-btn { position: absolute; left: 38px; top: 108px; width: 101px; height: 38px; border: 0; border-radius: 6px; background: #0e63df; color: #fff; font-size: 16px; }
.ba-tip { position: absolute; left: 220px; top: 101px; width: 164px; font-size: 16px; line-height: 28px; color: #e32727; }
.ba-rows { position: absolute; left: 0; top: 267px; width: 414px; height: 337px; background: #fff; }
.ba-row { position: absolute; left: 0; width: 414px; height: 65px; box-sizing: border-box; border-bottom: 1px solid #f0f0f0; display: flex; align-items: center; padding: 0 23px 0 24px; font-size: 19px; color: #222; }
.ba-row.ba-last { border-bottom: 0; }
.ba-row > span { flex: none; }
.ba-row input { flex: 1; min-width: 0; border: 0; background: none; text-align: right; font-size: 17px; color: #333; outline: none; }
.ba-row input::placeholder { color: #8c8c8c; }
.ba-row .cc { border: 0; background: none; padding: 0; font-size: 19px; color: #222; }
.ba-get { flex: none; margin-left: 14px; height: 33px; padding: 0 14px; border: 0; border-radius: 17px; background: #f0f2f5; color: #0e63df; font-size: 16px; }
.ba-ok { left: 21px; width: 393px; height: 54px; border-radius: 8px 0 0 8px; background: linear-gradient(90deg,#8a9ff2,#6d61f0); }

/* dual16b：E-23 维护页按 qukuan 17 帧；P-04 未绑定页按 prd 数字货币帧 */
.page.wm16 { position: relative; display: block; height: 896px; overflow: hidden; background: #fff; }
.wm16-body { position: absolute; left: 0; top: 88px; width: 414px; height: 808px; background: linear-gradient(180deg,#e9f0f9 0,#fff 230px); }
.wm16-t { position: absolute; left: 0; right: 0; top: 83px; text-align: center; font-size: 30px; line-height: 36px; font-weight: 800; color: #1a66d9; }
.wm16-il { position: absolute; left: 130px; top: 140px; }
.wm16-s { position: absolute; left: 0; right: 0; top: 295px; text-align: center; font-size: 24px; line-height: 30px; font-weight: 700; color: #2a6fe6; }
.wm16-m { position: absolute; left: 36px; right: 36px; top: 352px; text-align: center; font-size: 16px; line-height: 24px; color: #555; }
.wm16-cs { position: absolute; left: 48px; top: 452px; width: 317px; height: 51px; border: 0; border-radius: 6px; background: linear-gradient(90deg,#5a75ef,#3f43ea); color: #fff; font-size: 16px; display: flex; align-items: center; justify-content: center; gap: 8px; }
.wm16-cs img { filter: brightness(0) invert(1); }
.w16 { background: #f4f5f8; }
.w16-bal { position: absolute; right: 10px; top: 0; height: 49px; border: 0; background: none; color: #fff; font-size: 18px; font-weight: 600; }
.w16-sec { position: absolute; left: 0; width: 414px; background: #fff; }
.w16-tabs { position: absolute; left: 17px; top: 59px; width: 380px; height: 37px; border-radius: 12px; background: #f0edef; }
.w16-tab { position: absolute; top: 6px; width: 94px; height: 25px; border: 0; border-radius: 13px; background: none; font-size: 16px; color: #222; padding: 0; }
.w16-tab.is-on { background: linear-gradient(90deg,#5b75ee,#4141e4); color: #fff; }
.w16-card { position: absolute; top: 108px; width: 186px; height: 103px; border: 0; border-radius: 8px; background: #f7f7f7; padding: 0; }
.w16-card.is-on { box-shadow: inset 0 0 0 1.5px #4f6ff0; }
.w16-card img { position: absolute; left: 76px; top: 15px; border-radius: 50%; object-fit: contain; }
.w16-card b { position: absolute; left: 0; right: 0; top: 54px; font-size: 14px; line-height: 20px; font-weight: 600; color: #222; }
.w16-card i { position: absolute; left: 0; right: 0; top: 76px; font-style: normal; font-size: 12px; line-height: 18px; color: #d82e37; }
.w16-bind { position: absolute; left: 17px; top: 256px; font-size: 16px; line-height: 22px; font-weight: 600; color: #222; }
.w16-add { position: absolute; left: 319px; top: 249px; width: 78px; height: 36px; border: 0; border-radius: 6px; background: linear-gradient(90deg,#5b6dec,#393de8); color: #fff; font-size: 16px; font-weight: 700; }
.w16-ah { position: absolute; left: 17px; top: 323px; font-size: 16px; line-height: 22px; font-weight: 700; color: #222; }
.w16-lim { position: absolute; right: 17px; top: 325px; font-size: 14px; line-height: 20px; color: #888; }
.w16-in { position: absolute; left: 17px; top: 356px; width: 380px; height: 47px; box-sizing: border-box; border: 1px solid #dce3ec; border-radius: 6px; padding-left: 39px; display: flex; align-items: center; font-size: 18px; color: #333; }
.w16-in span { color: #6f6f6f; }
.w16-amt { position: absolute; width: 89px; height: 43px; border: 0; border-radius: 6px; background: #f3f4f6; font-size: 16px; font-weight: 700; color: #222; padding: 0; }
.w16-amt.is-on { background: #e8edff; color: #3f5be8; box-shadow: inset 0 0 0 1px #4f6ff0; }
.w16-ok { position: absolute; left: 17px; top: 821px; width: 380px; height: 52px; border: 0; border-radius: 8px; background: linear-gradient(90deg,#5b78ee,#3739e8); color: #fff; font-size: 20px; font-weight: 700; }
.wm16-t { top: 87px; font-size: 32px; line-height: 36px; }
.wm16-s { top: 297px; font-size: 25px; }
.wm16-m { top: 354px; left: 20px; right: 20px; font-size: 16.5px; }
.w16-in { height: 50px; }

/* dual17：场景提示条按钮、推断标、通用提示弹窗、买家申诉、仲裁处理中卡 */
.infer-tag { display: inline-block; margin-left: 6px; padding: 0 5px; border-radius: 4px; background: #fff3e0; color: #d46b08; font-style: normal; font-size: 11px; line-height: 16px; vertical-align: middle; font-weight: 400; }
.sys-banner { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; }
.sb-btn { margin-left: auto; height: 26px; padding: 0 12px; border: 0; border-radius: 13px; background: #3f6bf5; color: #fff; font-size: 12px; }
.nt-dlg .nt-btns { position: absolute; left: 0; right: 0; bottom: 24px; display: flex; gap: 12px; padding: 0 24px; }
.nt-dlg .nt-btns button { flex: 1; height: 44px; border-radius: 8px; font-size: 16px; }
.nt-sec { border: 1px solid #c9d3e6; background: #fff; color: #333; }
.nt-pri { border: 0; background: linear-gradient(90deg,#5b78ee,#3739e8); color: #fff; }
.ba16-dlg { top: 240px; height: 430px; }
.ba16-list { position: absolute; left: 19px; right: 19px; top: 70px; }
.ba16-r { display: flex; align-items: center; gap: 10px; width: 100%; height: 40px; border: 0; background: none; padding: 0; font-size: 15px; color: #333; }
.ba16-r i { width: 16px; height: 16px; border-radius: 50%; border: 1.5px solid #c0c4cc; box-sizing: border-box; }
.ba16-r.is-on i { border: 5px solid #3f6bf5; }
.ba16-in { position: absolute; left: 19px; right: 19px; top: 196px; height: 60px; box-sizing: border-box; border: 1px solid #e5e6eb; border-radius: 8px; padding: 8px 10px; font-size: 14px; resize: none; }
.ba16-files { position: absolute; left: 19px; right: 19px; top: 268px; display: flex; gap: 8px; align-items: flex-end; }
.ba16-files .pr-add, .ba16-files .pr-thumb { width: 64px; height: 64px; border-radius: 8px; background: #f5f6f8; border: 1px solid #e5e6eb; object-fit: cover; display: flex; align-items: center; justify-content: center; }
.ba16-cnt { margin-left: auto; font-size: 12px; color: #999; }
.ba16-ok { top: 352px; }
.arb-card { margin: 24px 16px; padding: 24px 16px; border-radius: 12px; background: #fff; text-align: center; }
.arb-st { font-size: 18px; font-weight: 700; color: #d48806; }
.arb-amt { margin-top: 10px; font-size: 26px; font-weight: 700; color: #222; }
.arb-tx { margin-top: 10px; font-size: 14px; color: #666; }
.arb-cs { margin-top: 18px; height: 40px; padding: 0 28px; border: 1px solid #3f6bf5; border-radius: 20px; background: #fff; color: #3f6bf5; font-size: 15px; }

/* dual18：取款详情成功态 / 部分完成 */
[data-page="seller-detail"] .sd-st.ok { color: #19a15f; }
[data-page="seller-detail"] .sd-ok { display: inline-block; width: 18px; height: 18px; border-radius: 50%; background: #19a15f; position: relative; flex-shrink: 0; }
[data-page="seller-detail"] .sd-ok::after { content: ''; position: absolute; left: 6px; top: 3.5px; width: 4px; height: 8px; border: solid #fff; border-width: 0 1.6px 1.6px 0; transform: rotate(45deg); }

/* dual20 */
.sb-btns { margin-left: auto; display: flex; gap: 6px; }
.sb-btns .sb-btn { margin-left: 0; }
.nt-dlg .nt-btns button { min-width: 0; font-size: 14px; }

/* dual21：M-02 通道卡（多卡缩窄）、待处理铃铛、取款进行中；P-01/P-02/P-05/P-09/P-10 */
.w16-card.sm img { left: 50%; margin-left: -17px; }
.w16-card.sm b { font-size: 13px; }
.w16-bell { position: absolute; left: 276px; top: 362px; height: 34px; border: 0; background: none; padding: 0; display: flex; align-items: center; gap: 2px; z-index: 3; }
.w16-bell-i { position: relative; width: 34px; height: 34px; border-radius: 50%; background: linear-gradient(180deg,#ffd76a,#f5a623); display: flex; align-items: center; justify-content: center; font-size: 16px; }
.w16-bell-i em { position: absolute; right: -4px; top: -4px; min-width: 16px; height: 16px; border-radius: 8px; background: #e02e2e; color: #fff; font-style: normal; font-size: 11px; line-height: 16px; text-align: center; }
.w16-bell-t { height: 26px; padding: 0 10px; border-radius: 13px; background: #ffe4ec; color: #d81b60; font-size: 13px; line-height: 26px; }
.wp-list { position: absolute; left: 0; right: 0; top: 49px; bottom: 0; overflow-y: auto; padding: 12px 17px; box-sizing: border-box; }
.wp-card { background: #fff; border-radius: 10px; padding: 14px; margin-bottom: 12px; }
.wp-top { display: flex; justify-content: space-between; align-items: center; }
.wp-amt { font-size: 20px; font-weight: 700; color: #222; }
.wp-st { padding: 2px 10px; border-radius: 10px; font-size: 12px; }
.wp-st.a { background: #fff7e6; color: #d48806; } .wp-st.b { background: #e8efff; color: #3f6bf5; } .wp-st.c { background: #f5f6f8; color: #888; } .wp-st.d { background: #e8f8ef; color: #19a15f; }
.wp-ch { margin-top: 6px; font-size: 13px; color: #888; }
.wp-note { margin-top: 6px; font-size: 13px; color: #d48806; }
.wp-acts { margin-top: 10px; display: flex; gap: 8px; justify-content: flex-end; }
.wp-b { height: 30px; padding: 0 14px; border: 1px solid #3f6bf5; border-radius: 15px; background: #fff; color: #3f6bf5; font-size: 13px; }
.wp-b.red { border-color: #e02e2e; color: #e02e2e; }
.bf-ro { color: #333; justify-content: space-between; background: #f3f4f6; }
.bf-ro-n { font-size: 12px; color: #999; }
.bf-err { position: absolute; left: 17px; right: 17px; font-size: 13px; color: #e02e2e; }
.ap-msg-files { display: flex; gap: 6px; margin-top: 8px; }
.ap-msg-files img { width: 54px; height: 54px; border-radius: 6px; object-fit: cover; }

/* dual22：E-35 单个查看按钮按 69270 强制窗按钮规格对齐（待换 69266 原帧） */
.modal-mask.center .fc-dlg.has-x .fc-view.alone { position: absolute; display: block; margin: 0; left: 104px; top: 114px; width: 135px; height: 50px; border-radius: 6px; font-size: 15px; font-weight: 500; background: linear-gradient(90deg, #5c78ef, #3f42ea); }
/* dual22：E-17/E-56 介入后隐藏申诉、客服；E-56 订单卡；M-09；P-07 */
.cs-in [data-act="open-appeal"], .cs-in .nav-bar [data-act="cs"] { display: none !important; }
.ro-card { margin: 12px 16px; padding: 14px; border-radius: 10px; background: #fff; }
.ro-top { display: flex; justify-content: space-between; align-items: center; }
.ro-st { padding: 2px 10px; border-radius: 10px; background: #f5f6f8; color: #888; font-size: 12px; }
.ro-st.ok { background: #e8f8ef; color: #19a15f; }
.ro-ch { font-size: 13px; color: #666; }
.ro-amt { margin-top: 8px; font-size: 22px; font-weight: 700; color: #222; }
.ro-tip { margin-top: 6px; font-size: 13px; color: #d48806; }
.w16-rsv { position: absolute; left: 17px; top: 640px; height: 36px; padding: 0 14px; border: 1px solid #3f6bf5; border-radius: 18px; background: #fff; color: #3f6bf5; font-size: 14px; }
.rsv-rule { position: absolute; right: 17px; top: 119px; border: 0; background: none; color: #3f6bf5; font-size: 13px; padding: 0; }
.rsv-note { position: absolute; left: 17px; right: 17px; top: 280px; font-size: 12px; line-height: 18px; color: #888; }
.wp-all { position: absolute; right: 12px; top: 10px; z-index: 2; height: 28px; padding: 0 12px; border: 1px solid #fff; border-radius: 14px; background: rgba(255,255,255,.15); color: #fff; font-size: 13px; }
.fx-row { position: absolute; left: 17px; width: 380px; height: 72px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid #f0f0f0; }
.fx-amt { font-size: 18px; font-weight: 700; color: #222; }
.fx-up { width: 120px; height: 60px; border: 1px solid #dce3ec; border-radius: 8px; background: #fafbfe; color: #3f6bf5; font-size: 13px; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.fx-up b { font-size: 20px; font-weight: 400; line-height: 1; }
.fx-up.done { background: #e8f8ef; color: #19a15f; border-color: #bfe8d0; }

/* dual22：推断场景屏上角标（场景本身没有推断元素时补） */
.infer-tag.jump-infer { position: absolute; right: 10px; top: 96px; z-index: 50; }

/* dual23 M-01 公告条 + 铃铛（与 M-02 同坐标） */
.dp-notice { display: flex; align-items: center; gap: 6px; height: 30px; padding: 0 12px; background: #fff7e6; color: #ad6800; font-size: 12px; overflow: hidden; white-space: nowrap; }
.dp-notice .dp-n-t { flex: 1; overflow: hidden; text-overflow: ellipsis; }
.page[data-page="deposit-home"] { position: relative; }
.dp-bell { position: absolute; left: 276px; top: 362px; }
/* dual23 P-04 各页签未绑定态 */
.w16-bind.has-sub { top: 246px; }
.w16-bind small { display: block; font-size: 12px; font-weight: 400; color: #999; line-height: 18px; }
.infer-tag.w16-inf { position: absolute; left: 230px; top: 240px; }
/* dual23 E-22 待换原帧 */
.pending-frame { position: absolute; left: 10px; top: 96px; z-index: 60; padding: 1px 6px; border-radius: 4px; background: #fff1f0; color: #cf1322; font-size: 11px; font-style: normal; border: 1px solid #ffa39e; }
/* dual23b：贾维斯定——M-01 铃铛挪到顶栏「订单」左侧空位，不压通道格（与 M-02 坐标不一致，已同意） */
.dp-bell { left: 192px; top: 49px; z-index: 20; }

/* dual24：顶部飘窗（后台取消人不在聊天室 / 买家主动取消回第一页） */
.top-float { position: absolute; left: 16px; right: 16px; top: 52px; z-index: 80; padding: 10px 14px; border-radius: 8px; background: rgba(34,34,34,.9); color: #fff; font-size: 14px; line-height: 20px; text-align: center; box-shadow: 0 4px 12px rgba(0,0,0,.2); }

/* dual25 第一批 */
.mail-card { margin: 10px 16px; padding: 12px; border-radius: 10px; background: #fff; border: 1px solid #e3e8f5; }
.mail-card .mc-t { font-size: 12px; color: #3f6bf5; font-weight: 600; margin-bottom: 6px; }
.mail-card .mc-d { font-size: 13px; color: #e02e2e; margin-bottom: 8px; }
.mail-card .es-box { position: static; margin: 0; }
.mail-card .mc-done { display: block; width: 100%; height: 40px; margin-top: 10px; border: 0; border-radius: 20px; background: #22b35e; color: #fff; font-size: 15px; }
.exp-st { color: #e02e2e; font-size: 13px; font-weight: 600; text-align: center; }
.btn-primary.is-off { opacity: .45; }
.rl-btns { display: flex; gap: 10px; margin-top: 12px; }
.rl-btns > * { flex: 1; }
.csp-sheet { position: absolute; left: 0; right: 0; bottom: 0; height: 448px; background: #fff; border-radius: 14px 14px 0 0; display: flex; flex-direction: column; }
.csp-head { display: flex; justify-content: space-between; align-items: center; padding: 14px 16px; font-size: 16px; font-weight: 600; border-bottom: 1px solid #f0f0f0; }
.csp-head .x { border: 0; background: none; }
.csp-body { flex: 1; padding: 16px; background: #f5f6f8; }
.csp-msg { display: inline-block; padding: 10px 12px; border-radius: 10px; background: #fff; font-size: 14px; }
.csp-in { padding: 10px 16px; }
.csp-in .fake-input { height: 36px; line-height: 36px; padding: 0 12px; border-radius: 18px; background: #f1f2f4; color: #999; font-size: 14px; }
.quick-chip[disabled] { opacity: .4; }

/* dual25 缺 */
.pn-in{display:block;width:calc(100% - 40px);margin:4px 20px 16px;height:40px;border:1px solid #ddd;border-radius:8px;padding:0 12px;font-size:15px;box-sizing:border-box}
.oi-cd{font-weight:600}
.seller-actions .btn-ghost[data-act=seller-return]{margin-top:12px}

/* dual25 小 */
.upload-risk{margin:6px 16px 0;font-size:12px;color:#e5484d;line-height:1.5}
.sc-warn{margin:12px 16px 0;padding:10px;border-radius:8px;background:#fff1f0;color:#e5484d;font-size:18px;font-weight:700;text-align:center}
.tf-ok{margin-left:10px;border:0;background:#fff;color:#1a5fe0;border-radius:12px;padding:2px 10px;font-size:12px}
.od-appeal{display:block;width:calc(100% - 32px);margin:0 16px 8px;height:40px}
.od-ap-bar{margin:0 16px 8px;padding:8px 12px;background:#fff7e6;border-radius:8px;font-size:13px;color:#d46b08}
.wm16-sw{margin-bottom:10px}
.w16-cs{position:absolute;right:120px;top:12px;border:0;background:none;color:#1a5fe0;font-size:14px}
.mf-page .mf-t{font-size:18px;font-weight:700;color:#222}

/* dual26 */
.ev-acct{font-size:13px;color:#555;margin-top:4px}
.pr-dlg .ba16-ok { top: 352px; } /* dual26 N12：提交按钮不再盖住说明输入框 */
/* dual29：卖家聊天室按钮行在卡片外（稿 18392-89394：申诉 / 确认收款 等宽并排，退回账户单独一行同描边样式） */
[data-page="seller-chat"] .seller-actions.sc-btns, [data-page="seller-chat"] .seller-actions.sw-btns { margin: 12px 16px 0; }
[data-page="seller-chat"] .seller-actions.sc-btns .btn-ghost, [data-page="seller-chat"] .seller-actions.sc-btns .btn-primary { flex: 1; height: 48px; }
[data-page="seller-chat"] .bc-skin .seller-actions.sw-btns { margin: 12px 0 0 43px; width: 308px; }
[data-page="seller-chat"] .seller-actions.sw-btns .btn-ghost { flex: 0 0 calc(50% - 5px); height: 48px; margin-top: 0; }
/* dual29b：大红包（稿 18392-89394：132×142，水平居中，「X元」加粗红、「限时奖励」红） */
[data-page="seller-chat"] .hb-big { position: relative; width: 132px; height: 142px; margin: 10px auto 8px; }
[data-page="seller-chat"] .hb-big img { display: block; width: 132px; height: 142px; }
[data-page="seller-chat"] .hb-big .hb-t { position: absolute; left: 0; right: 0; top: 18px; text-align: center; color: #d0021b; line-height: 1.25; }
[data-page="seller-chat"] .hb-big .hb-t b { display: block; font-size: 19px; font-weight: 700; }
[data-page="seller-chat"] .hb-big .hb-t span { display: block; font-size: 15px; margin-top: 2px; }
[data-page="seller-chat"] .sw-idle { margin: 24px 16px; text-align: center; }
/* dual29b：卖家卡片与按钮按稿 18392-89394 量尺（414 宽）：卡片 x=90 宽 308；按钮在卡下 17px，两钮各 146×48 间距 16，退回账户单钮 146×48 靠左 */
[data-page="seller-chat"] .chat-scroll .order-card { box-sizing: border-box; width: 308px !important; margin-left: auto !important; margin-right: 4px !important; }
[data-page="seller-chat"] .seller-actions.sc-btns, [data-page="seller-chat"] .seller-actions.sw-btns { box-sizing: border-box; width: 308px !important; margin: 17px 4px 0 auto !important; gap: 16px; padding: 0; }
[data-page="seller-chat"] .seller-actions.sc-btns button, [data-page="seller-chat"] .seller-actions.sw-btns button { flex: 0 0 146px !important; width: 146px; height: 48px; margin: 0 !important; border-radius: 8px; font-size: 16px; font-weight: 500; }
[data-page="seller-chat"] .seller-actions.sc-btns .btn-ghost, [data-page="seller-chat"] .seller-actions.sw-btns .btn-ghost { background: #fff; border: 1px solid #1f6fe0; color: #1f6fe0; }
[data-page="seller-chat"] .seller-actions.sc-btns .btn-primary { background: #0a5fe0; color: #fff; border: 0; }
[data-page="seller-chat"] .oc-head .union-ico { width: 26px; height: 26px; margin-right: 8px; }
/* dual29c 新1：卖家待确认卡按稿 89394——卡头下、倒计时上各一条浅灰分隔线，倒计时靠左，订单号左移 */
[data-page="seller-chat"] .sc-skin .order-card .oc-head { box-sizing: border-box; height: 43px; margin: -16px -16px 8px; padding: 0 16px; border-bottom: 1px solid #f2f2f2; }
[data-page="seller-chat"] .sc-skin .timer-row { justify-content: flex-start; margin: 10px -16px 0; padding: 12px 16px 0; border-top: 1px solid #f2f2f2; }
[data-page="seller-chat"] .sc-skin .oc-head .union-ico { margin-right: 3px; }
[data-page="seller-chat"] .sc-skin .timer-row { margin-top: 19px; }
/* dual29c 新2：卖家侧回单缩略图（稿 89394：120×180，右下灰底时间角标） */
[data-page="seller-chat"] .sr-rc .sr-img { position: relative; width: 120px; height: 180px; border-radius: 8px; overflow: hidden; background: #fff; }
[data-page="seller-chat"] .sr-rc .sr-img img { display: block; width: 120px; height: 180px; object-fit: cover; }
[data-page="seller-chat"] .sr-rc .sr-t { position: absolute; right: 6px; bottom: 6px; padding: 0 8px; height: 18px; line-height: 18px; border-radius: 9px; background: rgba(0,0,0,.4); color: #fff; font-size: 11px; }
/* dual29c 新3：只剩「确认收款」时独占整行（PRD ⑧#3） */
[data-page="seller-chat"] .seller-actions.sc-btns button:only-child { flex: 1 1 308px !important; width: 308px; }
/* dual29c 新2：素材自带「5:42」角标（x70–114，y157–174），用同色不透明角标盖住并写聊天统一时间 */
[data-page="seller-chat"] .sr-rc .sr-t { left: 69px; right: auto; top: 156px; bottom: auto; width: 47px; height: 20px; padding: 0; line-height: 20px; text-align: center; border-radius: 10px; background: #999; color: #fff; font-size: 12px; }
/* dual29d 新1：订单号数字跟标签左移 7（x=197）；金额离卡头分隔线 17；整屏下移 4 与稿齐平 */
[data-page="seller-chat"] .sc-skin .oc-head .oc-no { margin-left: 6px; }
[data-page="seller-chat"] .sc-skin .order-card .oc-head { margin-bottom: 12px; }
[data-page="seller-chat"] .sc-skin { padding-top: 4px; }
/* dual29d 新3：回单角标已画进缩略图，去掉 HTML 角标 */
[data-page="seller-chat"] .sr-rc .sr-t { display: none; }
/* dual29d 新4：确认收款按钮行贴底（聊天内容超出首屏时仍可见） */
[data-page="seller-chat"] .seller-actions.sc-btns { position: sticky; bottom: 0; z-index: 2; padding: 0 0 12px; background: linear-gradient(to bottom, rgba(242,243,245,0), #f2f3f5 30%); }
/* dual29d 新5：退回弹层正文左右留白，和按钮区一致 24px */
.nt-dlg .fc-txt { left: 24px; right: 24px; }
/* dual29d 新6：E-07 卖家倒计时一行放下 */
[data-page="seller-chat"] .timer-row .tr-nw { white-space: nowrap; font-size: 13px; letter-spacing: -0.2px; }
[data-page="seller-chat"] .sc-skin .order-card .oc-head { margin-bottom: 13px; }
[data-page="seller-chat"] .sr-rc .sr-img { margin-left: 2px; }
/* dual29e 新1：取消贴底（会遮住提示），改为进房滚到最新 */
[data-page="seller-chat"] .seller-actions.sc-btns { position: static; padding: 0; background: none; }
/* dual29e 新4：对稿 89394——卡头分隔线 y=343、分隔线到金额墨迹空 16 行、红包与倒计时分隔线下移 */
[data-page="seller-chat"] .sc-skin .order-card .oc-head { height: 44px; margin-bottom: 12px; }
[data-page="seller-chat"] .sc-skin .hb-big { margin-top: 14px; }
[data-page="seller-chat"] .sc-skin .timer-row { margin-top: 20px; padding-top: 9px; }
/* dual29e 新5：E-07 红色 00:59 与整句同 13px */
[data-page="seller-chat"] .timer-row .tr-nw .t-red { font-size: 13px; }

/* dual29i 0：买家锁定/仲裁卡「查看订单详情」入口 */
.arb-card .arb-dt{display:block;margin:10px auto 0;background:none;border:0;color:#3b6cf6;font-size:13px;cursor:pointer}

/* dual29j 2：买家详情锁定/仲裁「处理中」进行中样式（同聊天室卡片 .arb-st） */
.detail-hero .st-row.ing { color: #d48806; font-weight: 700; }

/* dual29k 1：卖家详情「处理中」进行中样式，同买家详情（#d48806，无图标；设计稿无此态，推断） */
[data-page="seller-detail"] .sd-st.ing { color: #d48806; font-weight: 700; }

/* dual29l 2：E-52 重新审核「处理说明」用正文色（单子仍在处理中，按产品经理建议，推断） */
[data-page="seller-detail"] .sd-reason.sd-ing .sd-v { color: #333; }

/* dual29n 3：上传弹层——风险提示挪到标题下，其下元素整体下移；「付款凭证示例」弹层 */
.sheet.up-sheet { height: 508px; }
.up-sheet .upload-risk { position: absolute; left: 16px; right: 16px; top: 48px; margin: 0; }
.up-sheet .upload-tips { top: 109px; }
.up-sheet .upload-box { top: 193px; }
.up-sheet .btn-primary { top: 281px; }
.modal.rc-eg { width: 280px; padding: 20px 16px 16px; box-sizing: border-box; text-align: center; background: #fff; border-radius: 12px; }
.rc-eg .rc-eg-t { font-size: 17px; font-weight: 600; color: #222; margin-bottom: 12px; }
.rc-eg img { display: block; margin: 0 auto 16px; border: 1px solid #eee; border-radius: 6px; }
/* dual29n 5：红色「联系客服」沿用 .wp-b.red */
.cs-red { display: block; margin: 0 auto; width: calc(100% - 32px); max-width: 343px; height: 44px; border-radius: 22px; font-size: 15px; }
.cs-red-sub { margin-top: 8px; text-align: center; font-size: 13px; color: #8a8f99; }
/* dual29n 7：E-23 两个按钮分开排 */
.wm16-cs:not(.wm16-sw) { top: 515px; }
.modal-mask.center .fc-dlg.nt-tall { height: 218px; } /* dual29n 8：E-25 正文三行，不被按钮压住 */
