/* 订单支付面板:渠道、余额组合、代金券、支付反馈及内嵌操作区。 */ /* 导入方:app/components/HostList.vue、app/components/PaymentDialog.vue、app/components/RechargeDialog.vue、app/components/home/HomeWalletCard.vue、app/components/instance/DcimActions.vue、app/components/instance/DcimManage.vue、app/components/instance/ImagePurchaseDialog.vue、app/components/instance/InstanceAccess.vue、app/components/instance/LegacyDcimManage.vue、app/pages/account/index.vue、app/pages/account/realname/company.vue、app/pages/account/realname/index.vue、app/pages/account/realname/personal.vue、app/pages/bills/[id].vue、app/pages/cart/index.vue、app/pages/cloud-servers/index.vue、app/pages/dedicated-servers/index.vue、app/pages/finance/index.vue、app/pages/index.vue、app/pages/invoices/index.vue、app/pages/invoices/request.vue、app/pages/orders/[id].vue、app/pages/orders/order/index.vue、app/pages/orders/order/paid.vue、app/pages/orders/order/pay.vue、app/pages/products/[id].vue、app/pages/products/cloud-server.vue、app/pages/products/dedicated-server/customize.vue、app/pages/transfer/index.vue。 */ .order-line[data-v-4931e21e] { color: var(--p-text-muted-color, #64748b); justify-content: space-between; align-items: center; margin-bottom: 14px; font-size: 0.9375rem; display: flex; } .amount[data-v-4931e21e] { color: #ef4444; font-weight: 600; } /* 支付渠道与余额选择区域;选中样式由组件状态驱动,不以CSS决定实际付款渠道。 */ .gateway-list[data-v-4931e21e] { flex-direction: column; gap: 10px; display: flex; } .gateway-item[data-v-4931e21e] { border: 1px solid var(--p-content-border-color, #e2e8f0); background: var(--p-content-background); cursor: pointer; border-radius: var(--radius-lg); align-items: center; gap: 10px; padding: 12px 14px; transition: border-color 0.15s, background 0.15s; display: flex; } .gateway-item.active[data-v-4931e21e], .gateway-item[data-v-4931e21e]:hover { border-color: var(--p-primary-color); } .gateway-item.active[data-v-4931e21e] { background: var(--p-highlight-background); } .gateway-icon[data-v-4931e21e] { -o-object-fit: contain; object-fit: contain; flex-shrink: 0; width: 26px; height: 26px; } .pay-box[data-v-4931e21e] { justify-content: center; min-height: 180px; display: flex; } .pay-box[data-v-4931e21e] img { max-width: 200px; } .polling-tip[data-v-4931e21e] { color: var(--p-text-muted-color, #94a3b8); justify-content: center; align-items: center; gap: 8px; font-size: 0.9375rem; display: flex; } .paid[data-v-4931e21e] { text-align: center; padding: 20px 0; } .paid i[data-v-4931e21e] { color: var(--p-primary-color); font-size: 2.75rem; } .paid p[data-v-4931e21e] { margin: 12px 0 0; font-size: 1.0625rem; font-weight: 500; } .msg[data-v-4931e21e] { margin-top: 12px; } /* 代金券选项及反馈;无可用券和加载状态应与已选中状态清晰区分。 */ .voucher-row[data-v-4931e21e] { border: 1px solid var(--p-content-border-color); border-radius: var(--radius-md); flex-direction: column; gap: 10px; min-width: 0; margin-bottom: 18px; padding: 14px; display: flex; } .voucher-heading[data-v-4931e21e] { flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px; font-size: 0.9375rem; display: flex; } .voucher-heading a[data-v-4931e21e] { color: var(--p-primary-color); align-items: center; gap: 6px; font-size: 0.875rem; text-decoration: none; display: inline-flex; } .voucher-heading a[data-v-4931e21e]:hover { text-decoration: underline; } .voucher-heading i[data-v-4931e21e] { font-size: 0.625rem; } .voucher-select[data-v-4931e21e] { width: 100%; min-width: 0; } .voucher-empty[data-v-4931e21e], .voucher-help[data-v-4931e21e] { color: var(--p-text-muted-color); margin: 0; font-size: 0.875rem; line-height: 1.6; } .voucher-empty[data-v-4931e21e], .voucher-feedback[data-v-4931e21e] { font-size: 0.9375rem; } .voucher-feedback[data-v-4931e21e] { color: var(--p-red-500, #ef4444); justify-content: space-between; align-items: center; gap: 8px; display: flex; } /* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .voucher-choice[data-v-4931e21e] { white-space: normal; overflow-wrap: anywhere; flex-direction: column; gap: 4px; min-width: 0; display: flex; } .voucher-choice small[data-v-4931e21e] { color: var(--p-text-muted-color); font-size: 0.875rem; } .voucher-option[data-v-4931e21e] { color: #ef4444; margin-left: 8px; font-size: 0.875rem; } .voucher-tip[data-v-4931e21e] { color: #22c55e; margin: -6px 0 12px; font-size: 0.875rem; } .gateway-item[data-v-4931e21e] { border-radius: 0; padding: 10px 14px; font-size: 1rem; } .gateway-list[data-v-4931e21e] { gap: 0; } .gateway-item + .gateway-item[data-v-4931e21e] { margin-top: -1px; } /* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .gateway-item[data-v-4931e21e]:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: 2px; } .gateway-selected[data-v-4931e21e] { color: var(--p-primary-color); flex-shrink: 0; margin-left: auto; font-size: 1.375rem; } .gateway-item[data-v-4931e21e]:disabled { cursor: not-allowed; opacity: 0.65; } .gateway-item.active[data-v-4931e21e] { z-index: 1; box-shadow: inset 0 0 0 1px var(--p-primary-color); position: relative; } .gateway-list > .gateway-item[data-v-4931e21e]:first-of-type { border-radius: 6px 6px 0 0; } .gateway-list > .gateway-item[data-v-4931e21e]:last-of-type { border-radius: 0 0 6px 6px; } .gateway-list > .gateway-item[data-v-4931e21e]:only-of-type { border-radius: var(--radius-md); } .balance-icon[data-v-4931e21e] { text-align: center; flex-shrink: 0; width: 26px; font-size: 1.25rem; } .balance-copy[data-v-4931e21e] { text-align: left; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; min-width: 0; display: flex; } .balance-title[data-v-4931e21e] { white-space: nowrap; flex-shrink: 0; } .balance-copy small[data-v-4931e21e] { color: var(--p-text-muted-color); font-size: 0.875rem; line-height: 1.6; } .gateway-title[data-v-4931e21e] { text-align: left; overflow-wrap: anywhere; min-width: 0; } .payment-combination[data-v-4931e21e] { margin-top: 26px; } .combination-amount[data-v-4931e21e] { margin: 0 0 12px; font-size: 1rem; font-weight: 400; line-height: 1.6; } .combination-amount b[data-v-4931e21e] { font-variant-numeric: tabular-nums; font-weight: 500; } .balance-breakdown[data-v-4931e21e] { color: var(--p-text-muted-color); flex-direction: column; gap: 5px; margin-top: 12px; font-size: 0.875rem; line-height: 1.7; display: flex; } .balance-breakdown b[data-v-4931e21e] { color: var(--p-primary-color); } .balance-note[data-v-4931e21e] { color: var(--p-text-muted-color); margin-top: 12px; font-size: 0.875rem; line-height: 1.7; } .amount[data-v-4931e21e] { color: var(--p-text-color); } /* 内嵌支付模式的外壳覆盖,与弹窗共用同一套支付逻辑。 */ .inline-payment h3[data-v-4931e21e] { margin: 0 0 14px; font-size: 1rem; font-weight: 400; } .inline-payment .order-line[data-v-4931e21e] { display: none; } .inline-pay-actions[data-v-4931e21e] { flex-direction: column; gap: 10px; margin-top: 56px; display: flex; } .inline-payment .gateway-item[data-v-4931e21e] { min-height: 56px; padding: 14px 18px; } /* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .order-line[data-v-4931e21e] { gap: 10px; } .order-line[data-v-4931e21e], .voucher-row[data-v-4931e21e] { flex-wrap: wrap; } .voucher-select[data-v-4931e21e] { min-width: 0; } }