/* ══ 业主 2026-10-14 v7w：整个系统只剩两种弹出形式 ══
   「整个系统要统一 不然这个页面一个排版 那个一个排版会让用户头疼不习惯」
   1. 右侧抽屉：编辑抽屉 / 下单表 / 派单详情 / 报备审核 / 钱包详情 —— 电脑 680 宽、上下右各留 12、18 圆角；
      顶上标题栏（16/20 内边距、17px 粗体标题、44 圆形关闭）、正文 18/20、底部 14/20 + 40 高药丸按钮。
      ≤760：贴右满高 440 宽（手机就是全屏），跟编辑抽屉一样从右边滑进来。
   2. 居中小窗：续单 / 免单 / 结单 / 调账 / 提现审核 / 导出文案 / 换手机号 / 收款方式 / 确认框 ……
      位置还是居中，但标题栏、关闭按钮、底部按钮、圆角、底色都跟抽屉同一套；手机上统一从底部弹出。 */

:root {
  --u-head-bg: rgba(255, 238, 247, .043);
  --u-bar-solid: rgba(30, 23, 34, .94);
}

/* ── 共用：关闭按钮（跟编辑抽屉 / 下单表的 osh-close 一样） ── */

:is(#dspSheet .dsp-x,
    #reportSheet #reportSheetClose,
    .xy-pg .wallet-detail-panel .wallet-detail-head .icon-btn,
    #uiConfirmBackdrop .ui-confirm-close,
    :is(.wallet-grant-head, .wallet-review-head, .identity-phone-change-head, .identity-payout-dialog-head, .identity-earnings-detail-head, .identity-reversal-detail-head, .dispatch-export-head) > .icon-btn) {
  position: static; inset: auto; display: inline-flex; align-items: center; justify-content: center; flex: none;
  width: 44px; min-width: 44px; height: 44px; min-height: 44px; margin: 0; padding: 0;
  border: 1px solid var(--hairline); border-radius: var(--r-pill, 999px); background: transparent; box-shadow: none; color: var(--text-2);
  cursor: pointer; transform: none; transition: background .15s ease, color .15s ease;
}
:is(#dspSheet .dsp-x,
    #reportSheet #reportSheetClose,
    .xy-pg .wallet-detail-panel .wallet-detail-head .icon-btn,
    #uiConfirmBackdrop .ui-confirm-close,
    :is(.wallet-grant-head, .wallet-review-head, .identity-phone-change-head, .identity-payout-dialog-head, .identity-earnings-detail-head, .identity-reversal-detail-head, .dispatch-export-head) > .icon-btn):hover { background: rgba(255, 255, 255, .06); color: var(--text-1); transform: none; }
:is(#dspSheet .dsp-x,
    #reportSheet #reportSheetClose,
    .xy-pg .wallet-detail-panel .wallet-detail-head .icon-btn,
    #uiConfirmBackdrop .ui-confirm-close,
    :is(.wallet-grant-head, .wallet-review-head, .identity-phone-change-head, .identity-payout-dialog-head, .identity-earnings-detail-head, .identity-reversal-detail-head, .dispatch-export-head) > .icon-btn) svg { width: 18px; height: 18px; }

/* ══ 1. 右侧详情面板 ══ */

/* 派单详情 */
.xy-dsp #dspSheet { align-items: stretch; justify-content: flex-end; }
.xy-dsp #dspSheet .dsp-scrim { background: rgba(6, 3, 8, .5); -webkit-backdrop-filter: blur(10px) saturate(120%); backdrop-filter: blur(10px) saturate(120%); }
.xy-dsp #dspSheet .dsp-panel {
  width: min(680px, calc(100vw - 24px)); max-height: none; margin: 12px; border-radius: 18px;
  background: var(--glass-float-bg); box-shadow: var(--shadow-float); outline: 1px solid var(--hairline); outline-offset: -1px; transition: none;
}
.xy-dsp #dspSheet .dsp-grab { display: none; }
.xy-dsp #dspSheet .dd-body { gap: 22px; padding: 18px 20px 22px; }
.xy-dsp #dspSheet .dd-kicker { padding-right: 0; }
.xy-dsp #dspSheet .dd-head h3 { margin-top: 12px; font-size: 22px; }
.xy-dsp #dspSheet .dd-sec-head { display: flex; align-items: center; gap: 10px; }
.xy-dsp #dspSheet .dd-sec-head h4 { margin: 0; color: var(--text-1); font-family: var(--font-serif); font-size: 16.5px; font-weight: 700; letter-spacing: .04em; }
.xy-dsp #dspSheet .dd-sec-head::after { content: ""; order: 3; flex: 1 1 auto; height: 1px; background: linear-gradient(90deg, var(--hairline-strong, rgba(255, 255, 255, .16)), transparent); }
.xy-dsp #dspSheet .dd-foot { justify-content: flex-end; gap: 8px; padding: 14px 20px; background: var(--u-head-bg); }
.xy-dsp #dspSheet .dd-foot button { flex: none; display: inline-flex; align-items: center; justify-content: center; gap: 7px; height: 40px !important; min-height: 40px !important; padding: 0 16px; border-radius: var(--r-pill, 999px) !important; font-size: 14px !important; font-weight: 600; }
.xy-dsp #dspSheet .dd-foot button svg { width: 16px; height: 16px; }
.xy-dsp #dspSheet .dd-foot button.secondary { margin-right: auto; }

/* 报备审核 */
#reportSheet.report-sheet {
  width: min(680px, calc(100vw - 24px)) !important; border-radius: 18px;
  background: var(--glass-float-bg); box-shadow: var(--shadow-float); outline: 1px solid var(--hairline); outline-offset: -1px;
}
#reportSheet .report-sheet-header { align-items: center; padding: 16px 20px; background: var(--u-head-bg); }
#reportSheet .report-sheet-heading { gap: 4px; }
#reportSheet .report-sheet-heading h3 { font-size: 17px; line-height: 1.5; }
#reportSheet .report-sheet-body { padding: 18px 20px 0; }
#reportSheet .rd-sec > h4 { display: flex; align-items: center; gap: 12px; color: var(--text-1); font-family: var(--font-serif); font-size: 16.5px; font-weight: 700; letter-spacing: .04em; }
#reportSheet .rd-sec > h4::after { content: ""; flex: 1 1 auto; height: 1px; background: linear-gradient(90deg, var(--hairline-strong, rgba(255, 255, 255, .16)), transparent); }
#reportSheet .rd-actions { justify-content: flex-end; gap: 8px; margin: 0 -20px; padding: 14px 20px; background: var(--u-bar-solid); }
#reportSheet .rd-actions button { flex: none; height: 40px; min-height: 40px; padding: 0 16px; border-radius: var(--r-pill, 999px); font-size: 14px; }
#reportSheet .rd-actions button svg { width: 16px; height: 16px; }

/* 钱包详情 */
.xy-pg .wallet-detail-panel.is-open {
  width: min(680px, calc(100vw - 24px)); border-radius: 18px;
  background: var(--glass-float-bg); box-shadow: var(--shadow-float); outline: 1px solid var(--hairline); outline-offset: -1px;
}
.xy-pg .wallet-detail-panel .wallet-detail-head { align-items: center; padding: 16px 20px; background: var(--u-head-bg); }
.xy-pg .wallet-detail-panel .wallet-detail-head h4 { font-size: 17px; line-height: 1.5; }
.xy-pg .wallet-detail-panel .wallet-detail-head p { margin-top: 2px; }
.xy-pg .wallet-detail-panel > :not(.wallet-detail-head) { padding: 18px 20px 22px; }

/* ══ 2. 居中小窗 ══ */
:is(.wallet-grant-backdrop, .wallet-review-backdrop, .identity-phone-change-backdrop, .identity-payout-backdrop, .identity-earnings-drawer-backdrop, .identity-earnings-detail-backdrop, .identity-reversal-detail-backdrop, .dispatch-export-backdrop, #uiConfirmBackdrop.ui-confirm-backdrop) {
  place-items: center; padding: 20px; background: rgba(6, 3, 8, .5);
  -webkit-backdrop-filter: blur(10px) saturate(120%); backdrop-filter: blur(10px) saturate(120%);
}
:is(.wallet-grant-dialog, .wallet-review-dialog, .identity-phone-change-dialog, .identity-payout-dialog, .identity-earnings-drawer, .identity-earnings-detail, .identity-reversal-detail, .dispatch-export-dialog, #uiConfirmBackdrop .ui-confirm-dialog) {
  width: min(560px, calc(100vw - 32px)); max-height: min(88dvh, 820px); overflow: auto; overscroll-behavior: contain;
  padding: 0 20px 20px; border: 1px solid var(--hairline); border-radius: 18px; outline: 0;
  background: var(--glass-float-bg); -webkit-backdrop-filter: var(--glass-float-blur); backdrop-filter: var(--glass-float-blur);
  box-shadow: var(--shadow-float);
  scrollbar-width: thin; scrollbar-color: rgba(255, 228, 240, .14) transparent;
}
#dispatchExportBackdrop .dispatch-export-dialog { width: min(680px, calc(100vw - 32px)); }
#uiConfirmBackdrop .ui-confirm-dialog { width: min(440px, calc(100vw - 32px)); background: var(--glass-float-bg); }

/* 标题栏：贴着小窗顶边、通栏，跟抽屉标题栏一样。滚动时停在顶上。 */
:is(.wallet-grant-head, .wallet-review-head, .identity-phone-change-head, .identity-payout-dialog-head, .identity-earnings-detail-head, .identity-reversal-detail-head, .dispatch-export-head, .ui-confirm-head) {
  position: sticky; top: 0; z-index: 3; display: flex; align-items: center; justify-content: space-between; gap: 12px;
  margin: 0 -20px; padding: 16px 20px; border-bottom: 1px solid var(--hairline);
  background: var(--u-bar-solid); -webkit-backdrop-filter: var(--glass-float-blur); backdrop-filter: var(--glass-float-blur);
}
:is(.wallet-grant-head, .wallet-review-head, .identity-phone-change-head, .identity-payout-dialog-head, .identity-earnings-detail-head, .identity-reversal-detail-head, .dispatch-export-head, .ui-confirm-head) > div { min-width: 0; }
:is(.wallet-grant-head, .wallet-review-head, .identity-phone-change-head, .identity-payout-dialog-head, .identity-earnings-detail-head, .identity-reversal-detail-head, .dispatch-export-head, .ui-confirm-head) :is(h2, h3, h4) {
  margin: 0; padding: 0; color: var(--text-1); font-family: inherit; font-size: 17px; font-weight: 700; letter-spacing: 0; line-height: 1.5;
}
:is(.wallet-grant-head, .wallet-review-head, .identity-phone-change-head, .identity-payout-dialog-head, .identity-earnings-detail-head, .identity-reversal-detail-head, .dispatch-export-head) p {
  margin: 2px 0 0; color: var(--text-4); font-size: 12.5px; line-height: 1.55;
}
/* 标题栏下面第一块内容跟标题栏拉开 18（跟抽屉正文上边距一样）。 */
:is(.wallet-grant-head, .wallet-review-head, .identity-phone-change-head, .identity-payout-dialog-head, .identity-earnings-detail-head, .identity-reversal-detail-head, .dispatch-export-head, .ui-confirm-head) + * { margin-top: 4px; }
#dispatchExportBackdrop .dispatch-export-head + form, #uiConfirmBackdrop .ui-confirm-head + .ui-confirm-copy { margin-top: 18px; }

/* 底部按钮条：通栏、上边一条细线，右对齐 40 高药丸按钮；滚动时停在底下。 */
:is(.wallet-grant-dialog, .wallet-review-dialog, .identity-earnings-drawer, .identity-earnings-detail, .identity-reversal-detail, .dispatch-export-dialog, #uiConfirmBackdrop .ui-confirm-dialog) :is(* > .wallet-grant-actions, * > .wallet-review-actions, * > .identity-earnings-dialog-actions, * > .identity-reversal-dialog-actions, * > .dispatch-export-actions, * > .ui-confirm-actions):is(:is(.wallet-grant-dialog, .wallet-review-dialog, .identity-earnings-drawer, .identity-earnings-detail, .identity-reversal-detail, .dispatch-export-dialog, .ui-confirm-dialog) > *, :is(.wallet-grant-dialog, .wallet-review-dialog, .identity-earnings-drawer, .identity-earnings-detail, .identity-reversal-detail, .dispatch-export-dialog, .ui-confirm-dialog) > form > *) {
  position: sticky; bottom: -20px; z-index: 3; display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px;
  margin: 6px -20px -20px; padding: 14px 20px; border-top: 1px solid var(--hairline);
  background: var(--u-bar-solid); -webkit-backdrop-filter: var(--glass-float-blur); backdrop-filter: var(--glass-float-blur);
}
:is(.wallet-grant-actions, .wallet-review-actions, .identity-earnings-dialog-actions, .identity-reversal-dialog-actions, .identity-phone-dialog-actions, .identity-payout-dialog-actions, .dispatch-export-actions, #uiConfirmBackdrop .ui-confirm-actions) > button {
  flex: none; display: inline-flex; align-items: center; justify-content: center; gap: 7px; width: auto; min-width: 0;
  height: 40px; min-height: 40px; padding: 0 16px; border-radius: var(--r-pill, 999px); font-size: 14px; font-weight: 600;
}
:is(.wallet-grant-actions, .wallet-review-actions, .identity-earnings-dialog-actions, .identity-reversal-dialog-actions, .identity-phone-dialog-actions, .identity-payout-dialog-actions, .dispatch-export-actions, #uiConfirmBackdrop .ui-confirm-actions) > button svg { width: 16px; height: 16px; }
.identity-phone-dialog-actions, .identity-payout-dialog-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.dispatch-export-actions .dispatch-export-action-spacer { flex: 1 1 auto; }

/* 确认框：图标 + 标题在标题栏里，正文在中间，按钮在底部。 */
#uiConfirmBackdrop .ui-confirm-head { justify-content: flex-start; }
#uiConfirmBackdrop .ui-confirm-head h2 { flex: 1 1 auto; min-width: 0; }
#uiConfirmBackdrop .ui-confirm-icon { flex: none; display: inline-grid; place-items: center; width: 32px; height: 32px; margin: 0; border-radius: 50%; background: var(--tone-tint); color: var(--tone); }
#uiConfirmBackdrop .ui-confirm-icon svg { width: 17px; height: 17px; }
#uiConfirmBackdrop .ui-confirm-copy { padding: 0; }
#uiConfirmBackdrop .ui-confirm-copy p { margin: 0; color: var(--text-2); font-size: 14px; }
#uiConfirmBackdrop .ui-confirm-actions { margin-top: 20px; }
#uiConfirmBackdrop .ui-confirm-actions button { min-width: 88px; }

/* ══ ≤760：右侧面板贴右满高 440 宽（手机全屏），小窗从底部弹出 ══ */
@media (max-width: 760px) {
  .xy-dsp #dspSheet { align-items: stretch; justify-content: flex-end; }
  .xy-dsp #dspSheet .dsp-panel { width: min(440px, 100%); height: 100%; max-height: none; margin: 0; border-radius: 0; outline: 0; border-left: 1px solid var(--hairline); transition: none; }
  .xy-dsp #dspSheet.is-enter .dsp-panel { animation: dsp-panel-in .5s cubic-bezier(.22, 1, .36, 1) both; }
  .xy-dsp #dspSheet.is-leaving .dsp-panel { animation: dsp-panel-out .24s cubic-bezier(.4, 0, 1, 1) forwards; }
  .xy-dsp #dspSheet .dd-body { gap: 18px; padding: 16px 20px 20px; }
  .xy-dsp #dspSheet .dd-head h3 { font-size: 19px; }
  .xy-dsp #dspSheet .dd-foot { padding: 12px 20px calc(12px + env(safe-area-inset-bottom, 0px)); }
  /* 手机底部按钮跟编辑抽屉一样：44 高、按内容宽、靠右。 */
  .xy-dsp #dspSheet .dd-foot button { height: 44px !important; min-height: 44px !important; padding: 0 14px; }

  #reportSheet.report-sheet { top: 0; right: 0; bottom: 0; left: auto; width: min(440px, 100%) !important; max-height: none; border-radius: 0; outline: 0; border-left: 1px solid var(--hairline); transform: translateX(32px); padding-bottom: 0; }
  #reportSheet.report-sheet.show { transform: none; }
  #reportSheet.report-sheet::before { content: none; }
  #reportSheet .report-sheet-header { padding: 16px 20px; }
  #reportSheet .report-sheet-heading h3 { font-size: 17px; }
  #reportSheet #reportSheetClose { width: 44px; min-width: 44px; height: 44px; min-height: 44px; }
  #reportSheet .report-sheet-body { padding: 16px 20px 0; }
  #reportSheet .rd-actions { margin: 0 -20px; padding: 12px 20px calc(12px + env(safe-area-inset-bottom, 0px)); }
  #reportSheet .rd-actions button { height: 44px; min-height: 44px; padding: 0 16px; }

  .xy-pg .wallet-detail-panel.is-open { top: 0; right: 0; bottom: 0; left: auto; width: min(440px, 100%); max-height: none; border-radius: 0; outline: 0; border-left: 1px solid var(--hairline); padding-bottom: env(safe-area-inset-bottom, 0px); }
  .xy-pg .wallet-detail-panel .wallet-detail-head { padding: 16px 20px; }
  .xy-pg .wallet-detail-panel > :not(.wallet-detail-head) { padding: 16px 20px 20px; }

  :is(.wallet-grant-backdrop, .wallet-review-backdrop, .identity-phone-change-backdrop, .identity-payout-backdrop, .identity-earnings-drawer-backdrop, .identity-earnings-detail-backdrop, .identity-reversal-detail-backdrop, .dispatch-export-backdrop, #uiConfirmBackdrop.ui-confirm-backdrop) { place-items: end center; align-items: end; padding: 0; }
  :is(.wallet-grant-dialog, .wallet-review-dialog, .identity-phone-change-dialog, .identity-payout-dialog, .identity-earnings-drawer, .identity-earnings-detail, .identity-reversal-detail, .dispatch-export-dialog, #uiConfirmBackdrop .ui-confirm-dialog) {
    width: 100%; max-height: 92dvh; padding: 0 20px calc(20px + env(safe-area-inset-bottom, 0px)); border-radius: 18px 18px 0 0;
  }
  :is(.wallet-grant-dialog, .wallet-review-dialog, .identity-earnings-drawer, .identity-earnings-detail, .identity-reversal-detail, .dispatch-export-dialog, #uiConfirmBackdrop .ui-confirm-dialog) :is(* > .wallet-grant-actions, * > .wallet-review-actions, * > .identity-earnings-dialog-actions, * > .identity-reversal-dialog-actions, * > .dispatch-export-actions, * > .ui-confirm-actions):is(:is(.wallet-grant-dialog, .wallet-review-dialog, .identity-earnings-drawer, .identity-earnings-detail, .identity-reversal-detail, .dispatch-export-dialog, .ui-confirm-dialog) > *, :is(.wallet-grant-dialog, .wallet-review-dialog, .identity-earnings-drawer, .identity-earnings-detail, .identity-reversal-detail, .dispatch-export-dialog, .ui-confirm-dialog) > form > *) {
    margin-bottom: calc(-20px - env(safe-area-inset-bottom, 0px)); padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px)); bottom: calc(-20px - env(safe-area-inset-bottom, 0px));
  }
  :is(.wallet-grant-actions, .wallet-review-actions, .identity-earnings-dialog-actions, .identity-reversal-dialog-actions, .identity-phone-dialog-actions, .identity-payout-dialog-actions, .dispatch-export-actions, #uiConfirmBackdrop .ui-confirm-actions) > button { height: 44px; min-height: 44px; padding: 0 16px; }
  #uiConfirmBackdrop .ui-confirm-actions { display: flex; }
  /* 手机上标题栏也是「左标题、右关闭」一行，不再上下堆、居中。 */
  :is(.xy-pg .wallet-detail-panel .wallet-detail-head, #reportSheet .report-sheet-header, .wallet-grant-head, .wallet-review-head, .identity-phone-change-head, .identity-payout-dialog-head, .identity-earnings-detail-head, .identity-reversal-detail-head, .dispatch-export-head, .ui-confirm-head) {
    display: flex; flex-direction: row; flex-wrap: nowrap; align-items: center; justify-content: space-between; text-align: left;
  }
  :is(.xy-pg .wallet-detail-panel .wallet-detail-head, #reportSheet .report-sheet-header, .wallet-grant-head, .wallet-review-head, .identity-phone-change-head, .identity-payout-dialog-head, .identity-earnings-detail-head, .identity-reversal-detail-head, .dispatch-export-head) > div { flex: 1 1 auto; min-width: 0; text-align: left; justify-items: start; }
  :is(.wallet-detail-head, .wallet-review-head) > div > :is(p, div) { justify-content: flex-start; }
  .order-sheet .osh-foot > button { height: 44px; min-height: 44px; }
  .dispatch-export-actions .dispatch-export-action-spacer { display: none; }
  .dispatch-export-actions > button:first-child { margin-right: auto; }
}

/* ── ③ 加载中 / 暂无：全站同一套 ──
   文案统一成「加载中…」/「正在加载X…」和「暂无X」；各页面原来的状态行都带同一个转圈图标，图标统一转起来、同色同大小。 */
:is(.xy-empty, .pg-state, .rep-state, .wallet-data-state, .wallet-detail-empty, .payroll-data-state, .identity-customer-state, .identity-earnings-state, .identity-payout-state, .identity-reversal-state, .phone-recovery-state, .phone-recovery-manager-state, .invite-state) svg.lucide-loader-circle {
  flex: none; width: 16px; height: 16px; color: var(--sakura-300, #f4b3cf); animation: xy-spin 1s linear infinite;
}
.xy-empty > .xy-empty-mark svg.lucide-loader-circle { width: 22px; height: 22px; }
:is(.pg-state, .rep-state, .wallet-data-state, .wallet-detail-empty, .payroll-data-state, .identity-customer-state, .identity-earnings-state, .identity-payout-state, .identity-reversal-state, .phone-recovery-state, .phone-recovery-manager-state, .invite-state):has(> svg.lucide-loader-circle) {
  display: flex; align-items: center; justify-content: center; gap: 8px; color: var(--text-3);
}
@media (prefers-reduced-motion: reduce) { :is(.xy-empty, .pg-state, .rep-state, [class*="-state"], .wallet-detail-empty) svg.lucide-loader-circle { animation: none; } }

/* ── ② 新消息提醒 ──
   菜单「派单」上的新数字用实心粉（跟待处理的浅粉区分开）；手机左上角菜单按钮也挂同一个数字。
   轻提示可点时手型 + 右侧小箭头；个人中心里的提示音开关复用 .dp-seg。 */
.nav-count.is-new { background: var(--accent, #f4b3cf); color: var(--ink-950, #0d0a0f); box-shadow: 0 0 0 3px rgba(244, 179, 207, .16); }
#mobileMenu { position: relative; }
#mobileMenu > .nav-count.is-new { position: absolute; top: 4px; right: 2px; min-width: 16px; height: 16px; padding: 0 4px; font-size: 10px; box-shadow: 0 0 0 2px var(--ink-950, #0d0a0f); pointer-events: none; }
html body #toast.toast.is-link.show { cursor: pointer; }
html body #toast.toast.is-link::after { content: "›"; flex: none; margin-left: 2px; color: var(--accent, #f4b3cf); font-size: 18px; line-height: 1; }
.xy-notify-seg { max-width: 240px; }

/* ── ④ 快捷键清单：复用确认框，详情一行一条 ── */
#uiConfirmBackdrop #uiConfirmDetail { white-space: pre-line; }

/* ── ⑦ 个人中心抽屉（业主 2026-10-15 v7y）──
   有主次：头卡（大头像 + 用户名大字 + 身份标签）→ 基本资料（能改的，输入框按内容收窄）→ 账号与安全（只读，细线格子，
   跟个人中心页 pg-fields 同一个样子）→ 展示资料（陪玩：照片 / 音卡两张小卡）→ 收款与提醒（设置行）。
   字号三级：用户名 21 / 分区标题 14 / 字段名 12，值 14。 */
.xy-sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.drawer .xy-pf { display: grid; gap: 22px; min-width: 0; }
.drawer .xy-pf input.xy-pf-plain { width: auto; height: auto; min-height: 0; padding: 0; border: 0; border-radius: 0; background: none !important; box-shadow: none !important; color: var(--text-1); font: inherit; font-size: 14px; font-weight: 600; letter-spacing: normal; outline: none; cursor: default; }
.drawer .xy-pf input.xy-pf-plain:focus-visible { box-shadow: 0 0 0 2px var(--accent); border-radius: 4px; }
/* 头卡 */
.drawer .xy-pf-head { display: flex; align-items: center; gap: 18px; padding: 18px 20px; border-radius: var(--r-lg, 18px); background: linear-gradient(135deg, rgba(244, 179, 207, .14), rgba(244, 179, 207, .03) 60%), var(--bg-surface); box-shadow: inset 0 0 0 1px var(--hairline); }
.drawer .xy-pf-ava { position: relative; flex: none; }
.drawer .xy-pf-ava .profile-photo { display: grid; place-items: center; width: 76px; height: 76px; margin: 0; overflow: hidden; border-radius: 50%; font-size: 28px; font-weight: 700; box-shadow: 0 0 0 3px var(--bg-surface), 0 0 0 4px rgba(244, 179, 207, .45); }
.drawer .xy-pf-ava .profile-photo img { width: 100%; height: 100%; object-fit: cover; }
.drawer .xy-pf-ava .xy-pf-cam { position: absolute; right: -4px; bottom: -4px; display: grid; place-items: center; width: 30px; height: 30px; min-height: 30px; padding: 0; border-radius: 50%; background: var(--accent); color: var(--accent-ink, #2a0f1c) !important; box-shadow: 0 0 0 3px var(--bg-surface); cursor: pointer; }
.drawer .xy-pf-ava .xy-pf-cam svg { width: 15px; height: 15px; }
.drawer .xy-pf-id { display: grid; gap: 8px; min-width: 0; }
.drawer .xy-pf-name { overflow: hidden; color: var(--text-1); font-family: var(--font-serif, inherit); font-size: 21px; font-weight: 700; letter-spacing: .04em; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; }
.drawer .xy-pf-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.drawer .xy-pf-meta input.role-tag { height: 22px; padding: 0 9px; border-radius: var(--r-pill); font-size: 12px; font-weight: 600; text-align: center; }
.drawer .xy-pf-acct { display: inline-flex; align-items: baseline; gap: 6px; color: var(--text-4); font-size: 12.5px; }
.drawer .xy-pf-acct label { margin: 0; color: inherit; font-size: inherit; }
.drawer .xy-pf-acct input.xy-pf-plain { color: var(--text-3); font-size: 12.5px; font-weight: 500; font-family: var(--font-num, inherit); }
/* 分区 */
.drawer .xy-pf-sec { display: grid; gap: 12px; min-width: 0; }
.drawer .xy-pf-sec-title { margin: 0; color: var(--text-2); font-size: 14px; font-weight: 600; letter-spacing: .04em; }
/* 基本资料：输入框按内容宽度 */
.drawer .xy-pf-edit { display: flex; flex-wrap: wrap; gap: 14px 16px; }
.drawer .xy-pf-edit .field { margin: 0; min-width: 0; }
.drawer .xy-pf-edit .field.full { flex: 1 1 100%; }
.drawer .xy-pf-edit .xy-w-md { flex: 0 1 240px; }
.drawer .xy-pf-edit .xy-w-sm { flex: 0 1 180px; }
.drawer .xy-pf-edit .xy-w-xs { flex: 0 1 110px; }
.drawer .xy-pf-edit label { display: block; margin-bottom: 6px; color: var(--text-4); font-size: 12px; font-weight: 500; }
.drawer .xy-pf-edit :is(input, select) { width: 100%; height: 42px; min-height: 42px; }
.drawer .xy-pf-edit textarea { width: 100%; min-height: 76px; resize: vertical; }
/* 账号与安全：一行一条的清单（左字段名、右值），跟下面「收款与提醒」同一种卡片，字段单数也不会空格子 */
.drawer .xy-kvs { display: grid; padding: 2px 16px; border-radius: var(--r-md, 12px); background: var(--bg-surface); box-shadow: inset 0 0 0 1px var(--hairline-strong); }
.drawer .xy-kv { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-width: 0; min-height: 50px; padding: 8px 0; }
.drawer .xy-kv + .xy-kv { border-top: 1px solid var(--hairline); }
.drawer .xy-kv > label { flex: none; margin: 0; color: var(--text-3); font-size: 13px; font-weight: 500; }
.drawer .xy-kv-val { display: flex; align-items: center; justify-content: flex-end; gap: 10px; flex: 1 1 auto; min-width: 0; }
.drawer .xy-kv-val input.xy-pf-plain { flex: 1 1 auto; min-width: 0; width: 100%; text-align: right; }
.drawer .xy-kv-note { flex: none; padding: 1px 7px; border-radius: var(--r-pill); background: var(--bg-sunken); color: var(--text-4); font-size: 11px; }
.drawer .xy-kv-val.profile-phone-binding { display: flex; flex-wrap: nowrap; }
.drawer .xy-kv-val.profile-phone-binding input[readonly] { flex: 0 1 auto; width: 132px; color: var(--text-1); letter-spacing: 1px; font-family: var(--font-num, inherit); }
.drawer :is(.xy-pf-mini, .xy-kv-val.profile-phone-binding > button) { display: inline-flex; align-items: center; justify-content: center; gap: 5px; flex: none; width: auto; height: 32px; min-height: 32px; padding: 0 13px; border-radius: var(--r-pill); font-size: 12.5px; font-weight: 600; white-space: nowrap; cursor: pointer; }
.drawer :is(.xy-pf-mini, .xy-kv-val.profile-phone-binding > button) svg { width: 14px; height: 14px; }
/* 展示资料：两张小卡 */
.drawer .xy-media-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.drawer .xy-media { display: flex; align-items: center; gap: 12px; min-width: 0; padding: 12px; border-radius: var(--r-md, 12px); background: var(--bg-surface); box-shadow: inset 0 0 0 1px var(--hairline-strong); }
.drawer .xy-media-thumb { display: grid; place-items: center; flex: none; width: 48px; height: 48px; overflow: hidden; border-radius: 12px; background: var(--bg-sunken); color: var(--text-4); }
.drawer .xy-media-thumb img { width: 100%; height: 100%; object-fit: cover; }
.drawer .xy-media-thumb svg { width: 20px; height: 20px; }
.drawer .xy-media-play { display: grid; place-items: center; width: 100%; height: 100%; min-height: 0; padding: 0; border: 0; border-radius: 0; background: rgba(244, 179, 207, .16); color: var(--accent); }
.drawer .xy-media-copy { display: grid; gap: 2px; flex: 1 1 auto; min-width: 0; }
.drawer .xy-media-copy label { margin: 0; color: var(--text-1); font-size: 14px; font-weight: 600; }
.drawer .xy-media-state { overflow: hidden; color: var(--text-4); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
/* 收款与提醒：设置行 */
.drawer .xy-sets { display: grid; padding: 4px 16px; border-radius: var(--r-md, 12px); background: var(--bg-surface); box-shadow: inset 0 0 0 1px var(--hairline-strong); }
.drawer .xy-set-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-height: 60px; padding: 10px 0; }
.drawer .xy-set-row + .xy-set-row { border-top: 1px solid var(--hairline); }
.drawer .xy-set-text { display: grid; gap: 3px; min-width: 0; }
.drawer .xy-set-text strong { color: var(--text-1); font-size: 14px; font-weight: 600; }
.drawer .xy-set-text .field-hint { margin: 0; color: var(--text-4); font-size: 12px; }
.drawer .xy-set-row > .xy-set-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; flex: none; width: auto; height: 34px; min-height: 34px; padding: 0 14px; border-radius: var(--r-pill); font-size: 12.5px; font-weight: 600; white-space: nowrap; }
.drawer .xy-set-row > .xy-set-btn svg { width: 14px; height: 14px; }
.drawer .xy-set-row > .xy-notify-seg { flex: none; width: 132px; margin: 0; }
.drawer .xy-set-row > .xy-notify-seg button { height: 28px; min-height: 28px; font-size: 12.5px; }
@media (max-width: 760px) {
  .drawer .xy-pf { gap: 18px; }
  .drawer .xy-pf-head { padding: 16px; gap: 14px; }
  .drawer .xy-pf-ava .profile-photo { width: 64px; height: 64px; font-size: 24px; }
  .drawer .xy-pf-name { font-size: 19px; }
  .drawer .xy-pf-edit .xy-w-md { flex: 1 1 100%; }
  .drawer .xy-pf-edit .xy-w-sm { flex: 1 1 calc(60% - 8px); }
  .drawer .xy-pf-edit .xy-w-xs { flex: 1 1 calc(40% - 8px); }
  .drawer .xy-kvs, .drawer .xy-sets { padding-inline: 14px; }
  .drawer .xy-media-row { grid-template-columns: 1fr; }
  .drawer .xy-kv-val.profile-phone-binding { display: flex; }
  .drawer .xy-kv-val.profile-phone-binding input[readonly] { width: 132px; }
  .drawer .xy-set-text .field-hint { font-size: 11.5px; }
}
/* ── ⑧ 个人中心「小笔原地改」（业主 2026-10-15 v7z）──
   平时：值就是一行字，右边一支小笔；点小笔 → 值变成带粉边的输入框，后面 ✓ / ✕。用户名在头卡里，大字 + 小笔。 */
.drawer .xy-pf button[hidden] { display: none !important; }
.drawer .xy-pf :is(.xy-pen, .xy-ok, .xy-no) { display: inline-grid; place-items: center; flex: none; width: 28px; height: 28px; min-width: 28px; min-height: 28px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--text-4); box-shadow: none; cursor: pointer; }
.drawer .xy-pf :is(.xy-pen, .xy-ok, .xy-no) svg { width: 14px; height: 14px; }
.drawer .xy-pf .xy-pen:hover { background: var(--bg-hover, rgba(255, 255, 255, .06)); color: var(--accent); }
.drawer .xy-pf .xy-ok { background: var(--accent); color: var(--accent-ink, #2a0f1c); }
.drawer .xy-pf .xy-no:hover { background: var(--bg-hover, rgba(255, 255, 255, .06)); color: var(--text-1); }
.drawer .xy-pf .xy-inline.is-editing :is(input, select, textarea).xy-pf-plain { padding: 6px 10px !important; border-radius: 8px !important; background: var(--bg-sunken) !important; box-shadow: inset 0 0 0 1px var(--accent) !important; text-align: left; cursor: text; }
.drawer .xy-pf .xy-pf-plain::placeholder { color: var(--text-4); font-weight: 500; }
/* 头卡里的用户名 */
.drawer .xy-pf-name-row { display: flex; align-items: center; gap: 6px; min-width: 0; }
.drawer .xy-pf-name-row > label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.drawer .xy-pf input.xy-pf-plain.xy-pf-name { flex: 0 1 auto; min-width: 2em; max-width: 100%; color: var(--text-1); font-family: var(--font-serif, inherit); font-size: 21px; font-weight: 700; letter-spacing: .04em; line-height: 1.25; text-overflow: ellipsis; field-sizing: content; }
.drawer .xy-pf .xy-pf-name-row.is-editing input.xy-pf-name { flex: 1 1 auto; width: 100%; max-width: 260px; field-sizing: fixed; font-size: 18px; }
/* 清单行里的值：靠右，笔紧跟在值后面 */
.drawer .xy-kv.xy-inline .xy-kv-val { gap: 6px; }
.drawer .xy-kv.xy-inline.is-editing .xy-kv-val :is(input, select) { max-width: 240px; margin-left: auto; }
.drawer .xy-pf select.xy-pf-plain { flex: 1 1 auto; min-width: 0; width: auto; height: auto; min-height: 0; padding: 0; border: 0; background: none !important; box-shadow: none !important; color: var(--text-1); font: inherit; font-size: 14px; font-weight: 600; text-align: right; text-align-last: right; appearance: none; -webkit-appearance: none; }
.drawer .xy-pf .xy-inline:not(.is-editing) select.xy-pf-plain { pointer-events: none; }
.drawer .xy-pf .xy-inline.is-editing select.xy-pf-plain { flex: 0 0 auto; width: 96px; text-align-last: left; }
/* 个人签名：长字段，字段名在上、内容在下 */
.drawer .xy-kv.xy-kv-long { display: grid; grid-template-columns: minmax(0, 1fr); justify-content: stretch; gap: 6px; padding: 12px 0; }
.drawer .xy-kv.xy-kv-long .xy-kv-val { align-items: flex-start; justify-content: stretch; }
.drawer .xy-pf textarea.xy-pf-plain { flex: 1 1 auto; width: 100%; min-height: 0; padding: 0; border: 0; resize: none; background: none !important; box-shadow: none !important; color: var(--text-1); font: inherit; font-size: 14px; font-weight: 500; line-height: 1.6; text-align: left; }
.drawer .xy-pf .xy-kv-long.is-editing textarea.xy-pf-plain { min-height: 72px; }
.drawer .xy-kv.xy-kv-long .xy-kv-val { width: 100%; }
.drawer .xy-pf .xy-kv-long textarea.xy-pf-plain { flex: 1 1 0; min-width: 0; max-width: none; }

/* ── ⑨ 个人中心清单行：值紧跟字段名（业主 2026-10-15 v8）──
   不再「字段名最左、值最右、中间一大段空」：字段名固定一小列，值靠左紧挨着，小笔 / 修改按钮跟在值后面。 */
.drawer .xy-kv { justify-content: flex-start; gap: 0; }
.drawer :is(.xy-kv > label, .xy-kv-label) { flex: none; width: 84px; margin: 0; color: var(--text-3); font-size: 13px; font-weight: 500; }
.drawer .xy-kv-val { justify-content: flex-start; gap: 8px; }
.drawer .xy-kv-val input.xy-pf-plain { flex: 0 1 auto; width: auto; min-width: 1ch; max-width: 100%; text-align: left; field-sizing: content; }
.drawer .xy-kv-val.profile-phone-binding input[readonly] { flex: 0 1 auto; width: auto; field-sizing: content; }
.drawer .xy-kv.xy-inline.is-editing .xy-kv-val input { flex: 0 1 auto; width: 200px; min-width: 0; max-width: 100%; margin-left: 0; field-sizing: fixed; }
.drawer .xy-kv-text { color: var(--text-1); font-size: 14px; font-weight: 600; }
.drawer .xy-kv-text.is-muted { color: var(--text-4); font-weight: 500; }
/* 个人签名：跟其它行一样左字段名、右内容，长了在右边那列换行 */
.drawer .xy-kv.xy-kv-long { display: flex; grid-template-columns: none; align-items: flex-start; padding: 13px 0; }
.drawer .xy-kv.xy-kv-long > label { padding-top: 2px; }
.drawer .xy-kv.xy-kv-long .xy-kv-val { flex: 1 1 auto; width: auto; align-items: flex-start; }
.drawer .xy-pf .xy-kv-long textarea.xy-pf-plain { flex: 1 1 0; min-width: 0; field-sizing: content; min-height: 1.6em; }
@media (max-width: 760px) {
  .drawer :is(.xy-kv > label, .xy-kv-label) { width: 72px; }
  .drawer .xy-kv.xy-inline.is-editing .xy-kv-val input { width: 160px; }
}

/* 改账号 / 改密码弹窗（外壳同换绑手机号弹窗） */
.xy-acct-dialog { width: min(440px, calc(100vw - 32px)); }
.xy-acct-body { display: grid; gap: 14px; }
.xy-acct-body .field { display: grid; gap: 6px; margin: 0; }
.xy-acct-body .field-hint { color: var(--text-4); font-size: 12px; }
.xy-acct-current { display: flex; align-items: baseline; gap: 12px; padding: 12px 14px; border-radius: var(--r-md, 12px); background: var(--bg-sunken); }
.xy-acct-current span { color: var(--text-3); font-size: 13px; }
.xy-acct-current strong { color: var(--text-1); font-size: 15px; letter-spacing: .02em; }
.xy-acct-need-phone { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border-radius: var(--r-md, 12px); background: var(--bg-sunken); color: var(--text-2); font-size: 13px; }
.xy-acct-need-phone > svg { flex: none; width: 16px; height: 16px; color: var(--accent); }
.xy-acct-need-phone > span { flex: 1 1 auto; }
.xy-acct-dialog .identity-phone-change-error[hidden] { display: none; }
.xy-acct-dialog .identity-phone-recovery-link { justify-self: start; }
/* 「修改 / 更改」是操作，统一靠最右排成一列；小笔是「就地改这个值」，紧跟在值后面 */
.drawer .xy-kv-val > :is(.xy-pf-mini, button.secondary) { margin-left: auto; }

/* ── ⑩ 改账号 / 改密码弹窗 v8b（业主 2026-10-15：太简陋、框太长）──
   420px 窄弹窗；头部图标 + 标题 + 一句说明；输入框带眼睛；新账号实时规则勾；新密码强度条；确认密码实时提示。 */
/* 全站弹窗那条 :is(... #uiConfirmBackdrop ...) 带 id 权重，这里用 #xyAcctBackdrop 压过它 */
#xyAcctBackdrop .identity-phone-change-dialog.xy-acct-dialog { width: min(420px, calc(100vw - 32px)); gap: 0; padding: 0; overflow: hidden auto; }
/* Edge 自带的密码小眼睛关掉，只留我们自己那只 */
.xy-acct-dialog input::-ms-reveal, .xy-acct-dialog input::-ms-clear { display: none; }
.xy-acct-head { display: flex; align-items: flex-start; gap: 14px; padding: 22px 22px 18px; background: linear-gradient(180deg, color-mix(in srgb, var(--accent) 9%, transparent), transparent); }
.xy-acct-icon { flex: none; display: grid; place-items: center; width: 42px; height: 42px; border-radius: 14px; background: color-mix(in srgb, var(--accent) 16%, transparent); color: var(--accent); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 28%, transparent); }
.xy-acct-icon svg { width: 20px; height: 20px; }
.xy-acct-titles { flex: 1 1 auto; min-width: 0; padding-top: 1px; }
.xy-acct-titles h2 { margin: 0; color: var(--text-1); font-size: 17px; font-weight: 700; line-height: 1.3; }
.xy-acct-titles p { margin: 4px 0 0; color: var(--text-3); font-size: 12.5px; line-height: 1.5; }
.xy-acct-head > .icon-btn { flex: none; margin: -4px -6px 0 0; }
.xy-acct-body { display: grid; gap: 16px; padding: 4px 22px 20px; }
.xy-acct-error { padding: 9px 12px; border-radius: 10px; background: color-mix(in srgb, var(--danger, #ff6b81) 12%, transparent); color: var(--danger, #ff8a9b); font-size: 13px; }
.xy-acct-error[hidden] { display: none; }
.xy-af { display: grid; gap: 7px; min-width: 0; }
.xy-af-label { color: var(--text-2); font-size: 13px; font-weight: 600; }
.xy-af-box { position: relative; display: flex; align-items: center; min-width: 0; }
.xy-acct-dialog .xy-af-box input { width: 100%; height: 42px; min-height: 42px; padding: 0 14px; border-radius: 12px; font-size: 14.5px; letter-spacing: .02em; }
.xy-acct-dialog .xy-af-box:has(.xy-af-eye) input { padding-right: 44px; }
.xy-af-eye { position: absolute; right: 6px; display: grid; place-items: center; width: 32px; height: 32px; min-height: 32px; padding: 0; border: 0; border-radius: 9px; background: transparent; color: var(--text-4); box-shadow: none; cursor: pointer; }
.xy-af-eye:hover, .xy-af-eye[aria-pressed="true"] { color: var(--accent); background: var(--bg-hover, rgba(255, 255, 255, .06)); }
.xy-af-eye svg { width: 17px; height: 17px; }
.xy-af-code { display: flex; gap: 10px; min-width: 0; }
.xy-af-code .xy-af-box { flex: 1 1 auto; }
.xy-af-code > button { flex: none; height: 42px; min-height: 42px; padding: 0 16px; border-radius: 12px; white-space: nowrap; font-size: 13px; font-weight: 600; min-width: 108px; justify-content: center; }
.xy-af-hint { margin: 0; color: var(--text-4); font-size: 12px; }
/* 新账号规则：三颗小勾，满足就变绿，不满足变红 */
.xy-af-rules { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 0; padding: 0; list-style: none; }
.xy-af-rules li { display: inline-flex; align-items: center; gap: 4px; color: var(--text-4); font-size: 12px; }
.xy-af-rules li svg { width: 13px; height: 13px; opacity: .45; }
.xy-af-rules li[data-state="ok"] { color: var(--success, #5fd6a0); }
.xy-af-rules li[data-state="ok"] svg { opacity: 1; }
.xy-af-rules li[data-state="bad"] { color: var(--danger, #ff8a9b); }
/* 密码强度：三段条 + 文字 */
.xy-af-meter { display: grid; grid-template-columns: repeat(3, 1fr) auto; align-items: center; gap: 5px; }
.xy-af-meter span { height: 4px; border-radius: 99px; background: var(--hairline-strong, rgba(255, 255, 255, .1)); transition: background .2s; }
.xy-af-meter em { min-width: 0; margin-left: 6px; white-space: nowrap; color: var(--text-4); font-size: 12px; font-style: normal; text-align: right; }
.xy-af-meter[data-level="1"] span:nth-child(-n+1) { background: var(--danger, #ff8a9b); }
.xy-af-meter[data-level="2"] span:nth-child(-n+2) { background: var(--warning, #f5c56b); }
.xy-af-meter[data-level="3"] span:nth-child(-n+3) { background: var(--success, #5fd6a0); }
.xy-af-meter[data-level="1"] em { color: var(--danger, #ff8a9b); }
.xy-af-meter[data-level="2"] em { color: var(--warning, #f5c56b); }
.xy-af-meter[data-level="3"] em { color: var(--success, #5fd6a0); }
.xy-af-match { display: flex; align-items: center; gap: 4px; min-height: 16px; margin: 0; font-size: 12px; }
.xy-af-match:empty { display: none; }
.xy-af-match svg { width: 13px; height: 13px; }
.xy-af-match[data-state="ok"] { color: var(--success, #5fd6a0); }
.xy-af-match[data-state="bad"] { color: var(--danger, #ff8a9b); }
/* 底部：左边「忘记原密码？」，右边取消 / 确认 */
.xy-acct-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 4px; padding-top: 16px; border-top: 1px solid var(--hairline); }
.xy-acct-btns { display: flex; gap: 10px; }
.xy-acct-btns > button { height: 40px; min-height: 40px; padding: 0 18px; border-radius: 99px; font-weight: 600; }
.xy-acct-link { padding: 0; border: 0; background: none; box-shadow: none; color: var(--accent); font-size: 13px; font-weight: 600; cursor: pointer; }
.xy-acct-link:hover { text-decoration: underline; }
@media (max-width: 760px) {
  #xyAcctBackdrop .identity-phone-change-dialog.xy-acct-dialog { width: 100%; padding: 0; }
  .xy-acct-head { padding: 18px 18px 14px; }
  .xy-acct-body { padding: 4px 18px calc(18px + env(safe-area-inset-bottom, 0px)); }
  .xy-acct-dialog .xy-af-box input { font-size: 16px; }
}

/* ── ⑪ 时间范围选择 v8d（业主 2026-10-15：一长条胶囊不好看）──
   一个按钮（图标 + 当前范围 + 日期 + ▾），点开一块 300px 小面板：常用范围两列 + 自定义起止日期。全站共用。 */
.xy-range { position: relative; display: inline-block; flex: none; z-index: 30; }
.xy-range > summary { list-style: none; }
.xy-range > summary::-webkit-details-marker { display: none; }
.xy-range-btn { display: inline-flex; align-items: center; gap: 8px; height: 38px; padding: 0 12px 0 11px; border-radius: 11px; background: var(--bg-raised); box-shadow: inset 0 0 0 1px var(--hairline-strong); color: var(--text-2); font-size: 13px; cursor: pointer; user-select: none; transition: box-shadow var(--t-fast) var(--ease-out), background var(--t-fast) var(--ease-out); }
.xy-range-btn:hover { background: var(--bg-hover); }
.xy-range-btn:focus-visible { outline: none; box-shadow: var(--ring); }
.xy-range[open] > .xy-range-btn { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 55%, transparent); background: var(--bg-hover); }
.xy-range-btn > svg { width: 16px; height: 16px; color: var(--accent); flex: none; }
.xy-range-btn > b { color: var(--text-1); font-size: 13.5px; font-weight: 700; white-space: nowrap; }
.xy-range-btn > span { color: var(--text-3); font-size: 12.5px; white-space: nowrap; padding-left: 8px; border-left: 1px solid var(--hairline-strong); }
.xy-range-btn > .xy-range-caret { width: 15px; height: 15px; color: var(--text-4); transition: transform .2s var(--ease-out); }
.xy-range[open] > .xy-range-btn > .xy-range-caret { transform: rotate(180deg); }
/* 面板打开时把它所在的那一层整体抬到最上面（后面的表格行有自己的层叠上下文，会盖住面板） */
:is(.rep-board, .rep-tools, .card, section, .pg-range-row):has(.xy-range[open]) { position: relative; z-index: 60; }
.xy-range > .xy-range-pop { isolation: isolate; background: rgba(28, 21, 32, .94); -webkit-backdrop-filter: var(--glass-float-blur, blur(30px)); backdrop-filter: var(--glass-float-blur, blur(30px)); }
.xy-range-btn { -webkit-backdrop-filter: var(--glass-blur, none); backdrop-filter: var(--glass-blur, none); }
.xy-range-pop { position: absolute; top: calc(100% + 8px); left: 0; display: grid; gap: 12px; width: 300px; max-width: calc(100vw - 24px); padding: 12px; border-radius: 16px; box-shadow: var(--shadow-float), inset 0 0 0 1px var(--hairline-strong); transform-origin: top left; animation: xyRangePop .18s var(--ease-out); }
.xy-range.is-right .xy-range-pop { left: auto; right: 0; transform-origin: top right; }
@keyframes xyRangePop { from { opacity: 0; transform: translateY(-6px) scale(.97); } to { opacity: 1; transform: none; } }
.xy-range-presets { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.xy-range-presets > button:last-child { grid-column: 1 / -1; }
.xy-range-pop button { min-height: 36px; height: 36px; margin: 0; padding: 0 12px; border: 0; border-radius: 10px; background: transparent; box-shadow: none; color: var(--text-2); font-size: 13px; font-weight: 500; justify-content: center; transition: background var(--t-fast) var(--ease-out), color var(--t-fast) var(--ease-out); }
.xy-range-presets > button { background: color-mix(in srgb, var(--bg-surface) 70%, transparent); box-shadow: inset 0 0 0 1px var(--hairline); }
.xy-range-pop button:hover { background: var(--bg-hover); color: var(--text-1); }
.xy-range-pop button.active { background: var(--accent-tint); color: var(--accent); font-weight: 700; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent); }
.xy-range-custom { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 8px 10px; padding-top: 12px; border-top: 1px solid var(--hairline); }
.xy-range-custom > button:first-child { justify-self: start; height: 26px; min-height: 26px; padding: 0 9px; border-radius: 8px; color: var(--text-3); font-size: 12px; font-weight: 600; }
.xy-range-custom > button:first-child:not(.active) { background: none; box-shadow: none; }
.xy-range-dates { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 6px; }
.xy-range-dates label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.xy-range-dates > span { color: var(--text-4); font-size: 12px; }
.xy-range-dates input { width: 100%; min-width: 0; height: 36px; min-height: 36px; padding: 0 8px; border: 0; border-radius: 10px; background: var(--bg-surface); box-shadow: inset 0 0 0 1px var(--hairline-strong); color: var(--text-1); font-family: var(--font-num); font-size: 13px; color-scheme: dark; }
.xy-range-dates input:focus { outline: none; box-shadow: inset 0 0 0 1px var(--accent); }
.xy-range-pop .xy-range-apply { grid-column: 1 / -1; background: var(--accent); color: var(--accent-ink); font-weight: 700; }
.xy-range-pop .xy-range-apply:hover { background: var(--accent-hover); color: var(--accent-ink); }
.xy-range-pop .range-error { margin: 0; padding: 8px 10px; border: 0; border-radius: 9px; background: color-mix(in srgb, var(--st-err) 12%, transparent); color: var(--st-err); font-size: 12px; }
/* 摆放：页面里的范围行只剩一个按钮 + 一句小注 */
.xy-pg .pg-range-row { gap: 10px 14px; }
.xy-pg .pg-range-row .payroll-summary-strip { color: var(--text-4); font-size: 12.5px; }
.xy-pg .pg-range-row .payroll-summary-strip b { margin-left: 4px; color: var(--text-2); font-weight: 600; }
.personnel-staff-toolbar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.personnel-staff-toolbar > .rep-search { flex: 1 1 260px; min-width: 0; }
@media (max-width: 760px) {
  .xy-range-btn { height: 40px; }
  .xy-range-pop { width: min(320px, calc(100vw - 32px)); }
  .xy-range-pop button, .xy-range-dates input { height: 40px; min-height: 40px; }
  .xy-range-dates input { font-size: 16px; }
}
@media (prefers-reduced-motion: reduce) { .xy-range-pop { animation: none; } }

/* ── ⑫ 调整金额 v8d（业主 2026-10-15：选项一点大小就变、生硬没动画；客户不该出现工资归属；信息没主次）──
   460 窄窗；金额是主角（大号数字），下面紧跟「调整前 → 调整后」；归属收成一行；分段选择一块底色滑动。 */
#walletGrantDialog.dp-adjust { width: min(460px, calc(100vw - 32px)); }
#walletGrantDialog .dp-grid { gap: 16px; padding-top: 0; }
#walletGrantDialog .field { display: grid; gap: 8px; margin: 0; }
#walletGrantDialog .field > label { display: flex; align-items: baseline; gap: 6px; margin: 0; color: var(--text-3); font-size: 12.5px; font-weight: 600; letter-spacing: .02em; }
#walletGrantDialog .field > label em { color: var(--text-4); font-size: 11.5px; font-style: normal; font-weight: 500; }
#walletGrantDialog .dp-who { padding: 12px 14px; border-radius: 14px; }
#walletGrantDialog .dp-who strong { font-size: 15px; }
/* 金额：大号数字 */
#walletGrantDialog .dp-yuan-lg::before { left: 16px; font-size: 18px; color: var(--text-3); }
#walletGrantDialog .dp-yuan-lg input { height: 56px; min-height: 56px; padding: 0 16px 0 38px !important; border-radius: 14px; font-family: var(--font-num); font-size: 26px; font-weight: 700; letter-spacing: .01em; color: var(--text-1); }
#walletGrantDialog .dp-yuan-lg input::placeholder { color: var(--text-4); opacity: .55; font-weight: 600; }
/* 调整前 → 调整后：紧贴金额，小一号 */
#walletGrantDialog .dp-calc { margin-top: -6px; padding: 10px 14px; border-radius: 12px; font-size: 12.5px; color: var(--text-3); }
#walletGrantDialog .dp-calc b { font-family: var(--font-num); font-size: 15px; }
#walletGrantDialog .dp-calc .dp-flow b:first-child { color: var(--text-3); font-weight: 600; }
/* 归属：一行摘要，点「修改 ›」展开 */
.dp-attr { border-radius: 12px; background: var(--bg-sunken); box-shadow: inset 0 0 0 1px var(--hairline); }
.dp-attr > summary { display: flex; align-items: center; gap: 10px; min-height: 42px; padding: 0 12px 0 14px; list-style: none; cursor: pointer; user-select: none; }
.dp-attr > summary::-webkit-details-marker { display: none; }
.dp-attr-k { display: inline-flex; align-items: center; gap: 6px; color: var(--text-3); font-size: 12.5px; font-weight: 600; }
.dp-attr-k svg { width: 14px; height: 14px; }
.dp-attr-v { flex: 1 1 auto; min-width: 0; overflow: hidden; color: var(--text-1); font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.dp-attr-edit { display: inline-flex; align-items: center; gap: 2px; color: var(--accent); font-size: 12.5px; font-weight: 600; }
.dp-attr-edit svg { width: 14px; height: 14px; transition: transform .2s var(--ease-out); }
.dp-attr[open] .dp-attr-edit svg { transform: rotate(90deg); }
.dp-attr > summary:hover .dp-attr-edit { color: var(--accent-hover); }
.dp-attr > .wallet-grant-grid { gap: 12px; padding: 4px 14px 14px; animation: xyFadeDown .2s var(--ease-out); }
.dp-attr .field > label { font-size: 12px !important; }
.dp-attr input, .dp-attr select { height: 38px !important; min-height: 38px !important; font-size: 13px; }
@keyframes xyFadeDown { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
#walletGrantDialog textarea { min-height: 64px; resize: vertical; }
/* 分段选择：一块底色在选项之间滑动；选中只变颜色，不变大小、不抖 */
.dp-seg.has-ink { position: relative; isolation: isolate; }
.dp-seg-ink { position: absolute; top: 0; left: 0; z-index: 0; border-radius: var(--r-pill, 999px); background: var(--bg-raised); box-shadow: var(--highlight), 0 0 0 1px var(--hairline-strong), 0 4px 12px -6px rgba(0, 0, 0, .6); pointer-events: none; transition: transform .32s cubic-bezier(.3, 1.25, .5, 1), width .32s var(--ease-out), background .25s, box-shadow .25s; }
.dp-seg-ink[data-tone="up"] { background: color-mix(in srgb, var(--up) 16%, var(--bg-raised)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--up) 38%, transparent); }
.dp-seg-ink[data-tone="down"] { background: color-mix(in srgb, var(--down) 15%, var(--bg-raised)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--down) 38%, transparent); }
.dp-seg-ink[data-tone="dep"] { background: color-mix(in srgb, var(--dp) 14%, var(--bg-raised)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--dp) 36%, transparent); }
.dp-seg.has-ink > button { position: relative; z-index: 1; transition: color .2s var(--ease-out); }
.dp-seg.has-ink > button, .dp-seg.has-ink > button.is-on, .dp-seg.has-ink > button:hover, .dp-seg.has-ink > button:active { background: transparent !important; box-shadow: none !important; transform: none !important; }
.dp-seg > button { font-weight: 600 !important; }
.dp-seg > button:not(.is-on):hover { color: var(--text-1); }
@media (prefers-reduced-motion: reduce) { .dp-seg-ink { transition: none; } }
@media (max-width: 760px) {
  #walletGrantDialog.dp-adjust { width: 100%; }
  #walletGrantDialog .dp-yuan-lg input { font-size: 24px; }
  .dp-attr > .wallet-grant-grid { grid-template-columns: 1fr 1fr; }
}

/* ── ⑬ 列表信息层次 v8d（业主 2026-10-15：一眼望过去全是一样大小粗细的字，不知道先看哪）──
   全站统一三档：① 名字 + 这一行最关键的那个钱（大、白、粗）② 其他数字（常规、浅一档）③ 标签 / 编号 / 0（最淡）。 */
/* 表格 */
.xy-pg .pg-dtable tbody td { color: var(--text-3); font-size: 13px; font-weight: 400; }
.xy-pg .pg-dtable tbody td.num { color: var(--text-2); font-family: var(--font-num); font-size: 13.5px; font-weight: 500; }
.xy-pg .pg-dtable tbody td.num > strong { color: var(--text-1); font-size: 16.5px; font-weight: 700; letter-spacing: .01em; }
.xy-pg .pg-dtable tbody td.num small { color: var(--text-4); font-family: var(--font-ui); font-size: 11.5px; font-weight: 400; }
.xy-pg .pg-dtable tbody td.pg-c-idx { color: var(--text-4); font-size: 12px; }
.xy-pg .pg-dtable thead th { color: var(--text-4); font-size: 11.5px; font-weight: 500; }
.xy-pg .pg-who strong { font-size: 14.5px; font-weight: 700; }
.xy-pg .pg-who small { color: var(--text-4); font-size: 12px; font-weight: 400; }
.xy-pg .pg-who small .num { font-family: var(--font-num); }
/* 0 和空值变淡 */
.xy-pg .is-zero, .xy-pg .pg-dtable tbody td.num > strong.is-zero, .xy-pg .pg-dtable tbody td.num.is-zero { color: var(--text-4) !important; font-weight: 500 !important; opacity: .7; }
.xy-pg .pg-dtable tbody td.num > strong.is-zero { font-size: 15px; }
/* 卡片行（钱包 / 客户 / 充值流水）：右边那个钱是主角 */
.xy-pg .pg-row .pg-main strong { font-size: 15px; font-weight: 700; }
.xy-pg .pg-row .pg-amount { font-family: var(--font-num); font-size: 20px; font-weight: 700; color: var(--text-1); letter-spacing: .01em; }
.xy-pg .pg-row .pg-amount.is-zero { font-size: 18px; }
.xy-pg .pg-row .pg-amount small { font-size: 11.5px; color: var(--text-4); letter-spacing: .02em; }
.xy-pg .pg-row .pg-people { font-size: 12.5px; color: var(--text-3); }
.xy-pg .pg-row .pg-people b { color: var(--text-2); font-weight: 500; }
.xy-pg .pg-row .pg-people em { color: var(--text-4); }
/* 保证金小标签：图标和字对齐（之前图标往上偏） */
.dp-chip { line-height: 1; vertical-align: middle; }
.dp-chip svg { display: block; flex: none; margin: 0; }
/* 手机卡片里的两个关键数 */
.xy-pg .pg-mcard .personnel-primary-facts b { font-family: var(--font-num); font-size: 15px; font-weight: 700; }

/* ⑭ 人员抽屉（编辑陪玩 / 编辑客服）· v8d
   只读数字 = 清单行（复用个人中心 .xy-kv），重点那行放大；上传 = 缩略图小卡片（复用 .xy-media）。 */
.drawer .personnel-drawer-form .xy-kvs { padding: 2px 14px; }
.drawer .personnel-facts .xy-kv { min-height: 46px; }
.drawer .personnel-facts .xy-kv-label { display: grid; gap: 2px; flex: none; color: var(--text-3); font-size: 13px; font-weight: 500; }
.drawer .personnel-facts input.xy-pf-plain { flex: 0 1 auto; width: auto; min-width: 1ch; max-width: 100%; height: auto; min-height: 0; padding: 0; border: 0; border-radius: 0; background: none !important; box-shadow: none !important; color: var(--text-1); font-family: var(--font-num, inherit); font-size: 14px; font-weight: 600; text-align: left; field-sizing: content; outline: none; cursor: default; -moz-appearance: textfield; }
.drawer .personnel-facts .xy-kv.is-key { min-height: 62px; }
.drawer .personnel-facts .xy-kv.is-key .xy-kv-label { color: var(--text-1); font-size: 14px; font-weight: 600; }
.drawer .personnel-facts .xy-kv.is-key input.xy-pf-plain { color: var(--accent); font-size: 24px; font-weight: 700; letter-spacing: -.01em; }
.drawer .xy-media-list { display: grid; gap: 10px; }
.drawer .xy-media-list .xy-media-thumb { width: 52px; height: 52px; }
.drawer .xy-media.is-picked { box-shadow: inset 0 0 0 1px var(--accent); }
.drawer .xy-media.is-picked .xy-media-state { color: var(--accent); }

/* ⑮ v8e：抽屉里的「能改的钱」+ 等级 tag 收成一行 + 按钮不再整行 */
.drawer .personnel-facts .xy-kv-unit { margin-right: -6px; color: var(--text-3); font-family: var(--font-num, inherit); font-size: 14px; font-weight: 600; }
.drawer .personnel-facts .xy-kv.is-key .xy-kv-unit { display: none; }
.drawer .personnel-facts input.xy-pf-plain::-webkit-inner-spin-button, .drawer .personnel-facts input.xy-pf-plain::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.drawer .personnel-drawer-form :is(.xy-pen, .xy-ok, .xy-no) { display: inline-grid; place-items: center; flex: none; width: 28px; height: 28px; min-width: 28px; min-height: 28px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--text-4); box-shadow: none; cursor: pointer; }
.drawer .personnel-drawer-form :is(.xy-pen, .xy-ok, .xy-no) svg { width: 14px; height: 14px; }
.drawer .personnel-drawer-form .xy-pen:hover { background: var(--bg-hover, rgba(255, 255, 255, .06)); color: var(--accent); }
.drawer .personnel-drawer-form .xy-ok { background: var(--accent); color: var(--accent-ink, #2a0f1c); }
.drawer .personnel-drawer-form .xy-no:hover { background: var(--bg-hover, rgba(255, 255, 255, .06)); color: var(--text-1); }
.drawer .personnel-drawer-form .xy-inline.is-editing input.xy-pf-plain { width: 120px; padding: 6px 10px !important; border-radius: 8px !important; background: var(--bg-sunken) !important; box-shadow: inset 0 0 0 1px var(--accent) !important; field-sizing: fixed; cursor: text; }

/* 等级（tag）选择：一行摘要，点开像抽屉一样拉出选项 */
.xy-pick { display: block; min-width: 0; }
.xy-pick > summary { list-style: none; }
.xy-pick > summary::-webkit-details-marker { display: none; }
.xy-pick-btn { display: flex; align-items: center; gap: 10px; min-height: 46px; padding: 0 14px; border-radius: 12px; background: var(--bg-sunken); box-shadow: inset 0 0 0 1px var(--hairline-strong); cursor: pointer; transition: box-shadow .18s ease; }
.xy-pick-btn:hover { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 45%, transparent); }
.xy-pick[open] > .xy-pick-btn { box-shadow: inset 0 0 0 1px var(--accent); }
.xy-pick-val { display: inline-flex; align-items: center; height: 26px; padding: 0 11px; border-radius: var(--r-pill); background: var(--accent-tint); color: var(--accent); font-size: 13px; font-weight: 700; }
.xy-pick-val.is-empty { padding: 0; background: none; color: var(--text-4); font-weight: 500; }
.xy-pick-sub { color: var(--text-4); font-size: 12px; }
.xy-pick-edit { display: inline-flex; align-items: center; gap: 4px; margin-left: auto; color: var(--text-3); font-size: 12.5px; font-weight: 600; }
.xy-pick-edit svg { width: 15px; height: 15px; transition: transform .22s ease; }
.xy-pick[open] .xy-pick-edit svg { transform: rotate(180deg); }
.xy-pick.is-readonly > .xy-pick-btn { cursor: default; box-shadow: inset 0 0 0 1px var(--hairline); }
.xy-pick-pop { padding-top: 8px; animation: xyFadeDown .2s ease; }
.xy-pick-pop > .tag-picker { margin: 0; }
@media (prefers-reduced-motion: reduce) { .xy-pick-pop { animation: none; } .xy-pick-edit svg { transition: none; } }

/* 按钮不做整行：刚好包住字、居中（业主 2026-10-15） */
.xy-range-pop .xy-range-apply { justify-self: center; width: auto; min-width: 104px; padding: 0 26px; border-radius: var(--r-pill); }
.drawer .personnel-facts .xy-inline.is-editing .xy-kv-unit { margin-right: 2px; }

/* ⑯ v8e-2 业主 2026-10-15：点开「更换」不再是一堆 tag 挤一行 —— 改成下拉清单（一行一个档位，当前的打 ✓，超高就在里面滚）。 */
.xy-pick-pop { padding-top: 6px; }
.xy-pick-pop > .tag-picker.level-picker { position: relative; display: flex !important; flex-direction: column; flex-wrap: nowrap; gap: 2px; max-height: min(316px, 46vh); overflow-y: auto; overscroll-behavior: contain; padding: 6px; border: 0 !important; border-radius: 12px; background: var(--bg-raised) !important; box-shadow: inset 0 0 0 1px var(--hairline-strong), 0 10px 28px rgba(0, 0, 0, .28); scrollbar-width: thin; }
.xy-pick-pop .level-picker .level-group-label { position: sticky; top: -6px; z-index: 1; display: block; margin: -6px -6px 2px; padding: 10px 18px 6px; background: var(--bg-raised); color: var(--text-4); font-size: 11.5px; font-weight: 600; letter-spacing: .04em; }
.xy-pick-pop .level-picker .level-group-label:not(:first-child) { margin-top: 4px; border-top: 1px solid var(--hairline); }
.xy-pick-pop .level-picker .tag-choice { position: relative; display: flex; align-items: center; flex: none; width: 100%; height: 44px !important; min-height: 44px !important; padding: 0 40px 0 12px; border: 0 !important; border-radius: 10px; background: transparent !important; color: var(--text-2) !important; font-size: 14px; font-weight: 500; text-align: left; box-shadow: none; transition: background-color .15s ease; }
.xy-pick-pop .level-picker .tag-choice:hover:not(:disabled) { background: var(--bg-hover) !important; color: var(--text-1) !important; }
.xy-pick-pop .level-picker .tag-choice:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.xy-pick-pop .level-picker .tag-choice.active { background: var(--accent-tint) !important; color: var(--accent) !important; font-weight: 700; }
.xy-pick-pop .level-picker .tag-choice.active::after { content: ""; position: absolute; right: 18px; top: 50%; width: 5px; height: 10px; margin-top: -7px; border: solid currentColor; border-width: 0 2px 2px 0; transform: rotate(45deg); }

/* ⑰ 咸鱼 2026-10-16（E1）：店规小窗。外壳就是导出文案小窗（上面统一过的标题栏 / 底部按钮条），这里只管正文排版。
   z-index 比确认框（600）低一点：店长点「发布新版本」时确认框要盖在上面。 */
#shopRulesBackdrop { z-index: 590; }
#shopRulesBackdrop .dispatch-export-dialog { width: min(760px, calc(100vw - 32px)); }
#shopRulesBackdrop .dispatch-export-head + * { margin-top: 18px; }
.srm-body { color: var(--text-2); font-size: 14px; line-height: 1.8; overflow-wrap: anywhere; }
.srm-body > :first-child { margin-top: 0; }
.srm-body h2, .srm-body h3, .srm-body h4, .srm-body h5 { margin: 22px 0 8px; color: var(--text-1); font-weight: 700; line-height: 1.45; letter-spacing: 0; }
.srm-body h2 { font-size: 17px; }
.srm-body h3 { font-size: 16px; }
.srm-body h4 { font-size: 15px; color: var(--accent); }
.srm-body h5 { font-size: 14px; }
.srm-body p { margin: 8px 0; }
.srm-body strong { color: var(--text-1); font-weight: 700; }
.srm-body ol, .srm-body ul { margin: 8px 0; padding-left: 1.6em; }
.srm-body li { margin: 4px 0; }
.srm-body blockquote { margin: 10px 0; padding: 8px 14px; border-left: 3px solid var(--accent); border-radius: 0 10px 10px 0; background: var(--accent-tint); color: var(--text-2); }
.srm-body blockquote p { margin: 4px 0; }
.srm-body hr { margin: 20px 0; border: 0; border-top: 1px solid var(--hairline); }
.srm-body .srm-empty { color: var(--text-4); text-align: center; padding: 28px 0; }
.srm-edit { display: grid; gap: 8px; }
.srm-edit label { color: var(--text-3); font-size: 13px; }
.srm-edit textarea { min-height: 46dvh; font-family: inherit; font-size: 13.5px; line-height: 1.7; resize: vertical; }
.srm-edit .srm-hint { margin: 0; color: var(--text-4); font-size: 12px; }
#shopRulesBackdrop .dispatch-export-error { margin-top: 12px; }
.srm-note { color: var(--text-4); font-size: 12.5px; }
.srm-note:empty { display: none; }
/* 陪玩派单页顶上的常驻提示：没确认当前版本才出现。 */
.srm-banner { display: flex; align-items: center; gap: 10px; margin: 0 0 14px; padding: 10px 12px 10px 14px; border: 1px solid var(--hairline); border-radius: 14px; background: var(--accent-tint); color: var(--text-1); font-size: 13.5px; }
.srm-banner > svg { flex: none; width: 18px; height: 18px; color: var(--accent); }
.srm-banner > span { flex: 1 1 auto; min-width: 0; }
.srm-banner > button { flex: none; width: auto; }
.pg-personnel .rep-badge + .rep-badge { margin-left: 6px; }
@media (max-width: 760px) {
  #shopRulesBackdrop .dispatch-export-dialog { width: 100%; }
  .srm-note { flex-basis: 100%; }
}

/* ───────── 咸鱼 2026-10-16（第 3 批）：订单评价 / 口碑 / 评价标签 / 超时提醒 ───────── */
.order-rate { display: inline-flex; align-items: center; gap: 3px; height: 20px; padding: 0 8px; border-radius: var(--r-pill); background: var(--bg-sunken); color: var(--text-2); font-size: 11.5px; box-shadow: inset 0 0 0 1px var(--hairline); }
.order-rate svg { width: 12px; height: 12px; }
.order-rate b { margin-right: 3px; font-weight: 700; }
.order-rate.is-good svg, .order-rate.is-good b { color: var(--success, #5fd6a0); }
.order-rate.is-mid svg, .order-rate.is-mid b { color: var(--warn, #f5c46b); }
.order-rate.is-bad svg, .order-rate.is-bad b { color: var(--danger, #ff8a9b); }
.order-rate.is-hidden { opacity: .55; }
.order-flag.is-soft { color: var(--text-3); box-shadow: inset 0 0 0 1px var(--hairline); }
.xy-dsp .cand-tags .cand-rate { display: inline-flex; align-items: center; gap: 2px; }
.xy-dsp .cand-tags .cand-rate svg { width: 11px; height: 11px; color: var(--warn, #f5c46b); }
.xy-dsp .cand-tags .cand-rate b { margin-right: 3px; color: var(--text-1); font-weight: 600; }

/* 评价小弹窗 */
.rate-note { margin: 0 0 12px; color: var(--text-3); font-size: 12.5px; line-height: 1.6; }
.rate-form { display: grid; gap: 4px; }
.rate-line { display: grid; grid-template-columns: 76px auto 1fr; align-items: center; gap: 10px; min-height: 40px; }
.rate-line.is-tags { grid-template-columns: 76px 1fr; align-items: start; padding: 6px 0 4px; }
.rate-label { color: var(--text-2); font-size: 13.5px; }
.rate-label small { display: block; color: var(--text-4); font-size: 11px; }
.rate-stars { display: inline-flex; gap: 2px; }
.rate-stars button { display: grid; place-items: center; width: 34px; height: 34px; min-height: 34px; padding: 0; border: 0; border-radius: 8px; background: transparent; color: var(--text-4); box-shadow: none; cursor: pointer; }
.rate-stars button svg { width: 22px; height: 22px; }
.rate-stars button.is-on { color: var(--warn, #f5c46b); }
.rate-stars button.is-on svg { fill: currentColor; }
.rate-stars button:hover:not(:disabled) { background: var(--bg-hover); }
.rate-stars button:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.rate-word { color: var(--text-3); font-size: 12.5px; }
.rate-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.rate-tags .tag-choice { width: auto; height: 30px; min-height: 30px; padding: 0 12px; border: 0; border-radius: var(--r-pill); background: var(--bg-sunken); color: var(--text-2); font-size: 12.5px; box-shadow: inset 0 0 0 1px var(--hairline); }
.rate-tags .tag-choice.active { background: var(--accent-tint); color: var(--accent); box-shadow: inset 0 0 0 1px var(--accent); }
.rate-tags .tag-choice:disabled { opacity: .45; cursor: default; }
.rate-form .field { margin-top: 8px; }
.rate-form .field label small { margin-left: 6px; color: var(--text-4); font-size: 11px; }

/* 陪玩抽屉 04 口碑：最近评价 */
.prt { margin-top: 12px; }
.prt-seg { margin-bottom: 8px; }
.prt-list { display: grid; margin: 0; padding: 0; list-style: none; }
.prt-item { padding: 10px 2px; border-top: 1px solid var(--hairline); }
.prt-item:first-child { border-top: 0; }
.prt-item.is-hidden { opacity: .6; }
.prt-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; color: var(--text-3); font-size: 12px; }
.prt-top small { color: var(--text-4); font-size: 11.5px; }
.prt-top > button { margin-left: auto; width: auto; }
.prt-order { margin: 6px 0 0; color: var(--text-2); font-size: 12.5px; }
.prt-meta { display: flex; flex-wrap: wrap; gap: 4px 8px; margin-top: 4px; color: var(--text-3); font-size: 12px; }
.prt-content { margin: 6px 0 0; color: var(--text-1); font-size: 13.5px; line-height: 1.6; white-space: pre-wrap; word-break: break-word; }
.prt-hidden { margin: 4px 0 0; color: var(--text-4); font-size: 12px; }
.prt-empty { padding: 14px 2px; color: var(--text-4); font-size: 12.5px; list-style: none; }
p.prt-empty { margin: 0; }

/* 系统设置 03 评价标签 / 04 超时提醒 */
.fb-set { display: grid; gap: 12px; }
.fb-hint { margin: 0; color: var(--text-3); font-size: 12.5px; line-height: 1.6; }
.fb-tags { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.fb-tag { display: inline-flex; align-items: center; gap: 2px; height: 30px; padding: 0 4px 0 12px; border-radius: var(--r-pill); background: var(--bg-sunken); color: var(--text-1); font-size: 13px; box-shadow: inset 0 0 0 1px var(--hairline); }
.fb-tag button { display: grid; place-items: center; width: 24px; height: 24px; min-height: 24px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--text-4); box-shadow: none; cursor: pointer; }
.fb-tag button:hover:not(:disabled) { background: var(--bg-hover); color: var(--danger, #ff8a9b); }
.fb-tag button svg { width: 14px; height: 14px; }
.fb-tag-add { display: inline-flex; align-items: center; gap: 6px; }
.fb-tag-add input { width: 110px; height: 30px; min-height: 30px; padding: 0 10px; font-size: 13px; }
.fb-tag-add button { width: auto; }
.fb-rows { display: grid; }
.fb-row { display: grid; grid-template-columns: 150px 1fr; align-items: center; gap: 12px; min-height: 48px; padding: 6px 0; border-top: 1px solid var(--hairline); }
.fb-row:first-child { border-top: 0; }
.fb-row > label { color: var(--text-2); font-size: 13.5px; }
.fb-row-val { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; color: var(--text-3); font-size: 13px; }
.fb-row-val input[type="number"] { width: 84px; height: 34px; min-height: 34px; padding: 0 10px; text-align: right; }
.fb-row-val input[type="checkbox"] { width: 18px; height: 18px; min-height: 18px; margin: 0; accent-color: var(--accent); }
.fb-actions { display: flex; justify-content: flex-end; gap: 8px; }
.fb-actions button { width: auto; }
.reminder-list .message-item.is-unread strong { color: var(--text-1); }
.reminder-acts { display: flex; align-items: center; gap: 6px; flex: none; }
.reminder-acts button { width: auto; }
@media (max-width: 760px) {
  .rate-line { grid-template-columns: 60px auto 1fr; gap: 6px; }
  .rate-line.is-tags { grid-template-columns: 1fr; }
  .rate-stars button { width: 32px; height: 32px; min-height: 32px; }
  .fb-row { grid-template-columns: 1fr; gap: 4px; }
}
/* 顶栏小铃铛：消息提醒入口 */
.xy-bell { position: relative; display: inline-grid; place-items: center; width: 36px; min-width: 36px; height: 36px; min-height: 36px; padding: 0; border-radius: var(--r-pill); }
.xy-bell[hidden] { display: none; }
.xy-bell svg { width: 17px; height: 17px; }
.xy-bell-badge { position: absolute; z-index: 2; top: -3px; right: -4px; min-width: 17px; height: 17px; padding: 0 4px; border-radius: 9px; background: var(--danger, #ff6b81); color: #fff; font-size: 10.5px; font-weight: 700; line-height: 17px; text-align: center; box-shadow: 0 0 0 2px var(--bg-base, #0d0a0f); }
.xy-bell-badge[hidden] { display: none; }
.mobile-head .xy-bell { width: 40px; min-width: 40px; height: 40px; min-height: 40px; margin-left: auto; }
.fb-row-val > span:first-child { min-width: 7.5em; }
@media (max-width: 760px) { .fb-row-val > span:first-child { min-width: 0; } }
/* 第 4 批：转单 / 换人（xy/21-transfer.js） */
.xfer-flag { gap: 3px; white-space: nowrap; flex: none; }
.xfer-flag svg { width: 11px; height: 11px; }
.order-flag.xfer-flag.is-wait { color: var(--accent); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 45%, transparent); }
.xfer-inbox { margin-bottom: 18px; }
.xfer-count { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 7px; border-radius: var(--r-pill); background: var(--accent); color: #fff; font-size: 12px; font-weight: 700; }
.xfer-consent { padding-top: 2px; }
.xfer-check { display: inline-flex; align-items: center; gap: 8px; color: var(--text-1); font-size: 13.5px; cursor: pointer; }
.xfer-check input { width: 18px; height: 18px; min-height: 18px; margin: 0; accent-color: var(--accent); }
/* 第 5 批：客户订单卡片 / 售后 / 就选 TA / 规则说明（xy/22-customer.js） */
.after-inbox { margin-bottom: 18px; }
.after-row .pg-main strong { white-space: normal; }
/* 派单页：客户选人 */
.pick-tag { display: inline-flex; align-items: center; height: 20px; padding: 0 8px; border-radius: var(--r-pill); background: var(--accent-tint, rgba(244, 179, 207, .12)); color: var(--accent); font-size: 11.5px; font-weight: 600; white-space: nowrap; }
.pick-tag.is-bad { background: color-mix(in srgb, var(--danger, #ff6b81) 14%, transparent); color: var(--danger, #ff8a9b); }
.pick-mark { flex: none; display: inline-flex; align-items: center; height: 18px; padding: 0 6px; border-radius: 5px; background: var(--accent); color: #fff; font-size: 11px; font-weight: 700; }
.pick-mark.is-bad { background: var(--danger, #ff6b81); }
.pick-strip { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 10px; margin: 0 0 12px; padding: 10px 12px; border-radius: var(--r-md, 12px); background: var(--accent-tint, rgba(244, 179, 207, .1)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 35%, transparent); color: var(--text-2); font-size: 13px; }
.pick-strip > svg { flex: none; width: 16px; height: 16px; color: var(--accent); }
.pick-strip.is-idle { background: var(--bg-sunken); box-shadow: inset 0 0 0 1px var(--hairline); color: var(--text-3); }
.pick-strip.is-idle > svg { color: var(--text-3); }
.pick-strip.is-bad { background: color-mix(in srgb, var(--danger, #ff6b81) 10%, transparent); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--danger, #ff6b81) 40%, transparent); }
.pick-strip.is-bad > svg { color: var(--danger, #ff8a9b); }
.pick-who { display: inline-flex; align-items: baseline; flex-wrap: wrap; gap: 4px 8px; color: var(--text-1); }
.pick-who small { color: var(--text-3); font-size: 12px; }
.pick-strip > button { width: auto; margin-left: auto; }
/* 试音页（客户）：就选 TA */
.xy-trial .pick-banner { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-radius: var(--r-lg); background: var(--bg-surface); box-shadow: var(--highlight), 0 0 0 1px rgba(244, 179, 207, .22); color: var(--text-1); font-size: 14px; line-height: 1.5; }
.xy-trial .pick-banner svg { flex: none; width: 18px; height: 18px; color: var(--accent); }
.xy-trial .pick-banner.is-picked { background: var(--accent-tint); }
.xy-trial .tv-pick { display: inline-flex; align-items: center; justify-content: center; gap: 4px; justify-self: center; width: auto; min-width: 96px; height: 32px; min-height: 32px; padding: 0 16px; border: 0; border-radius: var(--r-pill); background: var(--accent); color: #1a0f16; font: inherit; font-size: 13px; font-weight: 700; cursor: pointer; }
.xy-trial .tv-pick:disabled { opacity: .5; cursor: default; }
.xy-trial span.tv-pick.is-on { background: var(--accent-tint); color: var(--accent); box-shadow: inset 0 0 0 1px rgba(244, 179, 207, .5); cursor: default; }
.xy-trial .tv-pick svg { width: 14px; height: 14px; }
/* 系统设置 05 规则说明 */
.policy-list { display: grid; }
.policy-item { display: grid; gap: 8px; padding: 14px 0; border-top: 1px solid var(--hairline); }
.policy-item:first-child { border-top: 0; padding-top: 4px; }
.policy-head { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 10px; }
.policy-head strong { color: var(--text-1); font-size: 14.5px; }
.policy-head .num { color: var(--text-3); font-size: 12px; }
.policy-body { width: 100%; min-height: 140px; padding: 10px 12px; font-size: 13.5px; line-height: 1.7; resize: vertical; }
.fb-hint.is-err { color: var(--danger, #ff8a9b); }
/* 只读规则（钱包页 / 提现抽屉） */
.policy-read { display: grid; gap: 6px; margin: 0; padding: 0 0 0 1.4em; color: var(--text-2); font-size: 13px; line-height: 1.65; }
.identity-customer-row-acts { display: flex; justify-content: flex-end; margin-top: 8px; }
.identity-customer-row-acts button { width: auto; }
.withdraw-terms { display: grid; gap: 10px; padding: 12px 14px; border-radius: 12px; background: var(--bg-sunken); box-shadow: inset 0 0 0 1px var(--hairline); }
.withdraw-terms summary { display: flex; align-items: center; gap: 8px; color: var(--text-1); font-size: 13.5px; font-weight: 600; cursor: pointer; }
.withdraw-terms summary .num { color: var(--text-3); font-size: 12px; font-weight: 400; }
.withdraw-terms summary em { margin-left: auto; color: var(--text-3); font-size: 12px; font-style: normal; font-weight: 400; }
.withdraw-terms summary em.is-new { color: var(--accent); }
.withdraw-terms details[open] summary { margin-bottom: 8px; }
/* ───────── 第 6 批（20261016-b6）：状态说明 / 再来一单 / 老客户认领 ───────── */
.claim-tag { display: inline-flex; align-items: center; margin-left: 8px; padding: 0 8px; height: 20px; border-radius: var(--r-pill); background: var(--bg-sunken); color: var(--text-3); font-size: 11.5px; font-weight: 500; vertical-align: 2px; }
.claim-tag.is-on { background: rgba(95, 214, 160, .12); color: var(--ok, #5fd6a0); }
.claim-tag.is-wait { background: var(--accent-tint); color: var(--accent); }
.claim-banner { display: grid; gap: 2px; margin: 0 0 6px; padding: 10px 14px; border-radius: 12px; background: var(--accent-tint); color: var(--text-1); font-size: 13px; line-height: 1.6; }
.claim-banner strong { font-size: 14px; }
.claim-banner.is-err { background: var(--bg-sunken); color: var(--danger, #ff8a9b); }

/* 陪玩 / 客服名册：操作列三个等宽格子（编辑 | 离职 / 转为在职 | 删除），每行按钮一样宽、竖着对齐，没有的格子空着（业主 11-01） */
.xy-pg .pg-dtable.personnel-stable thead th:last-child { width: 208px; }
.xy-pg .pg-dtable.personnel-stable td .pg-acts { display: grid; grid-template-columns: repeat(3, 60px); gap: 6px; }
/* 列多：格子左右各 8、钱列按内容宽，1280 屏一屏放下不横滚 */
.xy-pg .pg-dtable.personnel-stable :is(th, td):not(:first-child) { padding-left: 8px; padding-right: 8px; }
.xy-pg .pg-dtable.personnel-stable :is(th, td).pg-money { width: auto; }
.xy-pg .pg-dtable.personnel-stable td .pg-acts button { width: 100%; padding: 0; }
.xy-pg .pg-mcard .pg-acts :is(button, .secondary) { min-width: 64px; } /* .secondary 要写进来：11-pages 里 .pg-acts .secondary 的 min-width: 0 权重更高，原来「编辑」比「离职」窄一截 */
/* 手机名册卡：数字一行、按钮单独一行靠右——三个按钮的卡和两个按钮的卡排得一样（业主 11-01） */
.xy-pg.pg-personnel .pg-mcard { grid-template-columns: minmax(0, 1fr); grid-template-areas: "head" "facts" "acts"; }
.xy-pg.pg-personnel .pg-mcard .personnel-card-actions { justify-self: end; }
.xy-pg .tv-tag.is-none { color: var(--text-4); }
.xy-pg .pg-mcard .pg-mcard-tags { margin-top: 4px; }
.xy-pg .pg-mcard .pg-mcard-sub { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
/* 名字完整显示不截断；性别跟 UID 一行；客服分部一行一个；班次不折行 */
.xy-pg .pg-dtable.personnel-stable .pg-who strong { display: flex; align-items: center; gap: 6px; overflow: visible; text-overflow: clip; }
.xy-pg .pg-dtable.personnel-stable .pg-who small { flex-wrap: nowrap; }
.xy-pg .pg-dtable.personnel-stable .pg-who .role-tag { padding: 1px 7px; font-size: 11px; font-weight: 600; }
.xy-pg .pg-dtable.personnel-stable .pg-div-tags { flex-direction: column; align-items: flex-start; gap: 5px; }
.xy-pg .pg-dtable.personnel-stable .pg-shift { white-space: nowrap; }
/* 保证金胶囊放在 .pg-people 里时会被「> span 按基线对齐」盖掉，图标和字贴到上沿；这里改回居中。 */
.xy-pg .pg-people > .dp-chip { align-items: center; gap: 5px; overflow: visible; }
/* 签发邀请码：分部多选，一行一个分部，勾上后（陪玩）右侧出等级。 */
.invite-div-field { margin: 0; padding: 0; border: 0; min-width: 0; }
.invite-div-field legend { padding: 0; margin-bottom: 8px; color: var(--text-2); font-size: 13px; font-weight: 600; }
.invite-div-field legend small { margin-left: 6px; color: var(--text-4); font-weight: 400; }
.invite-div-list { display: grid; gap: 8px; }
.invite-div-row { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 6px 8px 6px 14px; border-radius: 12px; background: var(--bg-sunken); color: var(--text-2); cursor: pointer; }
.invite-div-row.is-on { color: var(--text-1); box-shadow: inset 0 0 0 1px var(--accent-tint); }
.invite-div-row input[type=checkbox] { flex: none; width: 16px; height: 16px; margin: 0; accent-color: var(--accent); }
.invite-div-row span { flex: 1; min-width: 0; font-size: 13.5px; }
.invite-div-row select { flex: none; width: 160px; min-height: 32px; margin: 0; }
.invite-div-row select[hidden] { display: none; }
/* 咸鱼 2026-10-23（第 7i 批）：管理码 / 管理名册的「全部分部」一行；勾上就收起逐个分部的列表。 */
.invite-div-row[hidden], .invite-div-list[hidden] { display: none; }
.invite-div-all { margin-bottom: 8px; }
/* 名册行在中等宽度（列表 621–880px，例如 1030px 的窗口）六列挤在一行会叠字：
   改成两行 —— 头像 | 名字 | 摘要 | 金额，按钮放到第二行右侧；手机两行式（≤620px）不受影响。 */
@container (min-width: 621px) and (max-width: 880px) {
  .xy-pg .pg-row, .xy-pg .pg-row:has(.pg-acts:empty) {
    grid-template-columns: 40px minmax(0, 1.5fr) minmax(120px, 1fr) auto;
    grid-template-areas: "lead main people amount" "lead acts acts acts";
    row-gap: 10px;
  }
  .xy-pg .pg-row:has(.pg-acts:empty) { grid-template-areas: "lead main people amount"; }
  .xy-pg .pg-row > :first-child { grid-area: lead; align-self: start; }
  .xy-pg .pg-main { grid-area: main; }
  .xy-pg .pg-people { grid-area: people; }
  .xy-pg .pg-amount { grid-area: amount; }
  .xy-pg .pg-tail { display: none; }
  .xy-pg .pg-acts { grid-area: acts; justify-content: flex-end; }
}


/* 编辑客户抽屉（2026-10-17 重做）：概览 → 基本资料 → 会员与备注 → 账号关联。
   分区只用一条细分隔线，不用旧 stage6 的卡片底色和粉色序号块。 */
.drawer .customer-drawer-form.cx-form { display: grid; gap: 0; width: 100%; }
.cx-head { display: flex; align-items: center; gap: 14px; padding-bottom: 16px; }
.cx-head .xy-ava, .cx-head > :first-child { width: 48px; height: 48px; flex: none; font-size: 17px; }
.cx-id { display: grid; gap: 3px; min-width: 0; }
.cx-id strong { display: flex; align-items: center; gap: 8px; color: var(--text-1); font-size: 17px; font-weight: 650; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cx-id small { color: var(--text-3); font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cx-tiles { margin-bottom: 6px; }
.cx-tiles .dp-tile b { font-size: 20px; }
.drawer .customer-drawer-section.cx-sec, body.p2-operate-active .drawer .customer-drawer-section.cx-sec { display: grid; gap: 12px; padding: 20px 0; border: 0; border-top: 1px solid var(--hairline); border-radius: 0; background: transparent; box-shadow: none; }
.drawer .cx-form > .cx-sec:first-of-type { border-top-color: var(--hairline); }
.cx-sec-head { display: flex; align-items: center; gap: 8px; }
.cx-sec-title { margin: 0; color: var(--text-2); font-size: 13px; font-weight: 600; letter-spacing: .02em; }
.cx-sec-head .claim-tag { margin-left: 0; }
.cx-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 14px; }
.cx-grid .field { display: grid; gap: 6px; min-width: 0; margin: 0; }
.cx-grid .field.full { grid-column: 1 / -1; }
.drawer .cx-form .cx-sec-title { color: var(--text-1); font-size: 14px; font-weight: 650; }
.drawer .cx-form :is(input:not([type="hidden"]), select, textarea) { width: 100%; min-height: 40px; border: 0; border-radius: var(--r-md, 10px); background: var(--bg-sunken); box-shadow: inset 0 0 0 1px var(--hairline); color: var(--text-1); transition: box-shadow .16s ease, background .16s ease; }
.drawer .cx-form :is(input:not([type="hidden"]), select, textarea):focus { outline: none; box-shadow: inset 0 0 0 1px var(--accent), 0 0 0 3px var(--accent-tint); }
.drawer .cx-form input[readonly] { color: var(--text-2); cursor: default; }
.drawer .cx-form textarea { min-height: 76px; resize: vertical; }
.cx-note { margin: 0; color: var(--text-3); font-size: 13px; line-height: 1.6; }
.cx-acts { display: flex; flex-wrap: wrap; gap: 8px; }
.cx-acts button { width: auto; flex: none; }
.cx-panel { display: grid; gap: 10px; padding: 14px; border-radius: var(--r-lg); background: var(--bg-sunken); box-shadow: inset 0 0 0 1px var(--hairline); animation: cxIn .18s ease; }
.cx-panel small { color: var(--text-3); font-size: 12px; line-height: 1.5; }
.drawer .cx-form .cx-link-input { font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: 12.5px; background: var(--bg-raised, var(--bg-surface)); }
.cx-panel-foot { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; }
.cx-inline { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.drawer .cx-form .cx-inline .cx-phone { width: 180px; flex: none; font-variant-numeric: tabular-nums; letter-spacing: .04em; background: var(--bg-raised, var(--bg-surface)); }
.cx-err { margin: 0; color: var(--down); font-size: 12.5px; }
.cx-found { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; border-radius: var(--r-md, 10px); background: var(--bg-raised, var(--bg-surface)); box-shadow: inset 0 0 0 1px var(--hairline); }
.cx-found > div { display: grid; gap: 2px; min-width: 0; }
.cx-found strong { color: var(--text-1); font-size: 14px; }
@keyframes cxIn { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
@media (max-width: 560px) { .cx-grid { grid-template-columns: 1fr; } .cx-panel-foot { align-items: flex-start; } }
@media (prefers-reduced-motion: reduce) { .cx-panel { animation: none; } }

/* 权益 / 账本抽屉换成新系统配色（原来是 stage6 蓝灰卡片 #1a1d26 / #1b1e27）。 */
.drawer .customer-drawer-heading { gap: 4px; margin-bottom: 18px; }
.drawer .customer-drawer-heading h3 { color: var(--text-1); font-size: 18px; font-weight: 650; }
.drawer .customer-drawer-heading p { color: var(--text-3); font-size: 12.5px; }
.drawer .customer-benefit-form { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) auto; align-items: end; gap: 10px; padding: 14px; border: 0; border-radius: var(--r-lg); background: var(--bg-sunken); box-shadow: inset 0 0 0 1px var(--hairline); }
.drawer .customer-benefit-form .field { display: grid; gap: 6px; margin: 0; min-width: 0; }
.drawer .customer-benefit-form input { min-height: 40px; border: 0; border-radius: var(--r-sm); background: var(--bg-raised, var(--bg-surface)); box-shadow: inset 0 0 0 1px var(--hairline); color: var(--text-1); }
.drawer .customer-benefit-form input:focus { outline: none; box-shadow: inset 0 0 0 1px var(--accent), 0 0 0 3px var(--accent-tint); }
.drawer .customer-benefit-form .cbf-submit button { width: auto; min-height: 40px; padding-inline: 16px; white-space: nowrap; }
.drawer .customer-benefit-list, .drawer .customer-ledger-records { gap: 8px; margin-top: 16px; }
.drawer :is(.customer-benefit-item, .customer-ledger-record) { padding: 12px 14px; border: 0; border-radius: var(--r-lg); background: var(--bg-surface); box-shadow: var(--highlight, none), 0 0 0 1px var(--hairline); }
.drawer .customer-benefit-item-head { align-items: center; }
.drawer .customer-benefit-copy strong, .drawer .customer-ledger-record-main strong { color: var(--text-1); font-size: 14px; font-weight: 600; }
.drawer :is(.customer-benefit-meta, .customer-benefit-log, .customer-ledger-date, .customer-ledger-code, .customer-ledger-record-main p, .customer-ledger-record-side > span) { color: var(--text-3); font-size: 12px; }
.drawer .customer-benefit-log { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--hairline); }
.drawer .customer-benefit-actions button { min-height: 34px; padding-inline: 14px; border-radius: var(--r-sm); }
.drawer .customer-ledger-summary { gap: 10px; }
.drawer .customer-ledger-metric { display: grid; gap: 6px; padding: 14px 16px; border: 0; border-radius: var(--r-lg); background: var(--bg-sunken); box-shadow: inset 0 0 0 1px var(--hairline); }
.drawer .customer-ledger-metric span, .drawer .customer-ledger-metric small { color: var(--text-3); font-size: 12px; }
.drawer .customer-ledger-metric strong { margin: 0; color: var(--text-1); font-size: 18px; font-weight: 700; font-variant-numeric: tabular-nums; }
.drawer .customer-ledger-delta { font-size: 16px; font-weight: 700; font-variant-numeric: tabular-nums; }
.drawer .customer-ledger-delta.green { color: var(--up); }
.drawer .customer-ledger-delta.pink { color: var(--down); }
@media (max-width: 560px) {
  .drawer .customer-benefit-form { grid-template-columns: 1fr; }
  .drawer .customer-benefit-form .cbf-submit { justify-items: center; }
  .drawer .customer-benefit-actions { width: auto; justify-content: flex-end; }
  .drawer .customer-benefit-actions button { flex: none; }
}

.drawer :is(.application-drawer-form input[readonly], .application-drawer-form textarea[readonly], .application-drawer-form select:disabled) { border-color: transparent; background: var(--bg-sunken); box-shadow: inset 0 0 0 1px var(--hairline); color: var(--text-2); }

/* 切换动效（23-batch6.js）：高亮滑块 + 内容淡入。 */
.xy-tab-sliding { position: relative; isolation: isolate; }
.xy-tab-ghost { position: absolute; z-index: -1; pointer-events: none; }
.xy-tab-hold { background: transparent !important; box-shadow: none !important; transition: none !important; }
.xy-pop { animation: xy-pop .2s cubic-bezier(.3, .7, .2, 1); }
.xy-swap-in { animation: xySwapIn .24s cubic-bezier(.3, .7, .2, 1); }
@keyframes xySwapIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .xy-pop, .xy-swap-in { animation: none; } }

.drawer :is(.recharge-drawer-form, .withdrawal-drawer-form, .application-drawer-form, .personnel-drawer-form) :is(input[readonly], textarea[readonly], select:disabled) { border-color: transparent; background: rgba(255, 238, 247, .035); box-shadow: inset 0 0 0 1px var(--hairline); color: var(--text-2); }
/* 通用空状态（tailwind.css 里是深蓝灰 rgba(28,31,38,.45)）→ 粉调底。 */
.empty { background: rgba(255, 238, 247, .03); }


/* 抽屉分区统一成报备抽屉那一套（19-forms.css）：粉色细序号 + 衬线标题 + 渐隐细线，不用卡片框、不用粉色底块。
   替换掉 stage6 的深蓝黑卡片 #1a1d26 和粉色 01/02 方块。 */
.drawer :is(.recharge-drawer-section, .withdrawal-drawer-section, .personnel-drawer-section, .application-drawer-section), body.p2-operate-active .drawer :is(.recharge-drawer-section, .withdrawal-drawer-section, .personnel-drawer-section, .application-drawer-section) { margin: 0; padding: 22px 2px 4px; border: 0; border-radius: 0; background: none; box-shadow: none; }
.drawer :is(.recharge-drawer-section, .withdrawal-drawer-section, .personnel-drawer-section, .application-drawer-section):first-child { padding-top: 4px; }
.drawer :is(.recharge-drawer-section-head, .withdrawal-drawer-section-head, .personnel-drawer-section-head, .application-drawer-section-head, .customer-drawer-section-head) { display: flex; align-items: center; gap: 10px; margin: 0 0 14px; }
.drawer :is(.recharge-drawer-section-head, .withdrawal-drawer-section-head, .personnel-drawer-section-head, .application-drawer-section-head, .customer-drawer-section-head) > span:first-child { width: auto; min-width: 0; height: auto; padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none; color: var(--brand, #f4b3cf); font-size: 11px; font-weight: 700; letter-spacing: .08em; }
.drawer :is(.recharge-drawer-section-head, .withdrawal-drawer-section-head, .personnel-drawer-section-head, .application-drawer-section-head, .customer-drawer-section-head) > div { flex: none; }
.drawer :is(.recharge-drawer-section-head, .withdrawal-drawer-section-head, .personnel-drawer-section-head, .application-drawer-section-head, .customer-drawer-section-head) h4 { margin: 0; color: var(--text-1); font-family: var(--font-serif); font-size: 15px; font-weight: 700; letter-spacing: .04em; }
.drawer :is(.recharge-drawer-section-head, .withdrawal-drawer-section-head, .personnel-drawer-section-head, .application-drawer-section-head, .customer-drawer-section-head)::after { content: ""; flex: 1 1 auto; height: 1px; background: linear-gradient(90deg, var(--hairline-strong, rgba(255, 255, 255, .16)), transparent); }
/* 编辑客户的分区标题同一套样式。 */
.drawer .cx-sec-head, .drawer .cx-sec > .cx-sec-title { display: flex; align-items: center; gap: 10px; }
.drawer .cx-sec > .cx-sec-title::after, .drawer .cx-sec-head::after { content: ""; flex: 1 1 auto; height: 1px; background: linear-gradient(90deg, var(--hairline-strong, rgba(255, 255, 255, .16)), transparent); }
.drawer .cx-form .cx-sec-title { color: var(--text-1); font-family: var(--font-serif); font-size: 15px; font-weight: 700; letter-spacing: .04em; }
.drawer .customer-drawer-section.cx-sec, body.p2-operate-active .drawer .customer-drawer-section.cx-sec { border-top: 0; padding: 22px 2px 4px; }

/* ══ 咸鱼 2026-10-19：信息层级 —— UID / 关键数字更显眼，表头更清楚，整条可点开详情（只调层级，不换风格）══ */
/* UID：等宽、加粗、亮一档；时间同一行跟在后面 */
.xy-pg .pg-uid { font-family: var(--font-num); font-size: 12.5px; font-weight: 600; letter-spacing: .03em; color: var(--text-2); }
.xy-pg .pg-row .pg-main small { gap: 4px 12px; font-size: 12.5px; color: var(--text-3); }
.xy-pg .pg-row .pg-main small .pg-time { color: var(--text-3); }
.xy-pg .pg-who small { display: flex; align-items: center; gap: 6px; color: var(--text-3); font-size: 12.5px; }
.xy-pg .pg-tags { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; }
/* 行里的关键数字（累计消费 / 权益 / 余额 / 待结算…）：标签暗、值亮且加粗 */
.xy-pg .pg-row .pg-people { gap: 5px; font-size: 13.5px; }
.xy-pg .pg-row .pg-people em { font-size: 12px; color: var(--text-4); }
.xy-pg .pg-row .pg-people b { font-size: 14px; font-weight: 600; color: var(--text-1); }
.xy-pg .pg-row .pg-amount small { font-size: 12px; color: var(--text-3); }
.xy-pg .pg-row .pg-people b.pg-vip-up { color: var(--accent); }
/* 0 元不再淡到看不清：比有钱的暗一档就够了 */
.xy-pg .is-zero, .xy-pg .pg-dtable tbody td.num > strong.is-zero, .xy-pg .pg-dtable tbody td.num.is-zero { color: var(--text-3) !important; opacity: 1; }
/* 表头：亮一档、加粗；能排序的列带上下箭头 */
.xy-pg .pg-dtable thead th { color: var(--text-3); font-size: 12.5px; font-weight: 600; letter-spacing: .03em; }
.xy-pg .pg-dtable thead th .sort-btn { min-height: 0; margin: -2px -6px; padding: 2px 6px; border: 0; border-radius: 6px; color: inherit; font: inherit; letter-spacing: inherit; }
.xy-pg .pg-dtable thead th .sort-btn svg { width: 13px; height: 13px; opacity: .55; }
.xy-pg .pg-dtable thead th .sort-btn[aria-pressed="true"] { color: var(--text-1); }
.xy-pg .pg-dtable thead th .sort-btn[aria-pressed="true"] svg { opacity: 1; color: var(--accent); }
/* 整条可点开 */
.xy-pg .pg-row[data-row-open] { cursor: pointer; }

/* 居中小窗：打开时淡入 + 轻微上浮（is-enter 只在出现那一下加，见 xyMarkNewDialogs） */
:is(.wallet-grant-backdrop, .wallet-review-backdrop, .identity-phone-change-backdrop, .identity-payout-backdrop, .identity-earnings-drawer-backdrop, .identity-earnings-detail-backdrop, .identity-reversal-detail-backdrop).is-enter { animation: xyGrantFade .22s ease-out both; }
:is(.wallet-grant-backdrop, .wallet-review-backdrop, .identity-phone-change-backdrop, .identity-payout-backdrop, .identity-earnings-drawer-backdrop, .identity-earnings-detail-backdrop, .identity-reversal-detail-backdrop).is-enter > [role="dialog"] { animation: xyGrantIn .32s cubic-bezier(.22, 1, .36, 1) both; }
@keyframes xyGrantFade { from { opacity: 0; } }
@keyframes xyGrantIn { from { opacity: 0; transform: translateY(12px) scale(.98); } }
@media (prefers-reduced-motion: reduce) { .is-enter, .is-enter > [role="dialog"] { animation: none !important; } }
/* 调账小窗：去掉框套框 —— 人、余额变化、归属改成平铺的行，用细线分隔 */
#walletGrantDialog .dp-who { padding: 4px 0 14px; border-radius: 0; background: none; box-shadow: none; border-bottom: 1px solid var(--hairline); }
#walletGrantDialog .dp-calc { margin-top: -4px; padding: 2px 2px; border-radius: 0; background: none; box-shadow: none; }
#walletGrantDialog .dp-attr { border-radius: 0; background: none; box-shadow: none; border-top: 1px solid var(--hairline); border-bottom: 1px solid var(--hairline); }
#walletGrantDialog .dp-attr > summary { padding: 0 2px; }
#walletGrantDialog .dp-attr > .wallet-grant-grid { padding: 4px 2px 14px; }
#walletGrantDialog .dp-dir { margin-top: -6px; }
/* 名册第一列（头像 + 名字 + UID）给够宽度，名字不被截成「CLO…」 */
.xy-pg .pg-dtable.personnel-stable tbody td:first-child { min-width: 140px; }
.xy-pg .pg-dtable .pg-tags { flex-wrap: nowrap; }
.xy-pg .pg-tags .muted-text { white-space: nowrap; }
/* 全站列表：行里排第一个的编号就是 UID / 单号，统一按 UID 样式加粗提亮 */
.xy-pg :is(.pg-main small, .pg-who small) > .num:first-child { font-family: var(--font-num); font-size: 12.5px; font-weight: 600; letter-spacing: .03em; color: var(--text-2); }
.drawer .order-detail-drawer .xy-kv-text { white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.55; }
.drawer .order-detail-drawer .xy-kv.xy-kv-long { gap: 0; }
/* 咸鱼 2026-10-19：手机两行式原来右列跟按钮一样宽，名字那列被挤窄（客户标签被截、店长订单 5 个按钮时名字只剩一条）。
   第一行名字吃到按钮上方的空间（第 3 列只给按钮用），按钮 ≥4 个时单独占一行。 */
@container (max-width: 620px) {
  .xy-pg .pg-row, .xy-pg .pg-row:has(.pg-acts:empty) { grid-template-columns: 34px minmax(0, 1fr) max-content auto; grid-template-areas: "lead main main amount" "lead meta acts acts"; }
  .xy-pg .pg-row:not(:has(.pg-meta)) { grid-template-areas: "lead main main amount" "lead acts acts acts"; }
  .xy-pg .pg-row:has(.pg-acts button:nth-of-type(4)) { grid-template-areas: "lead main main amount" "lead meta meta meta" "lead acts acts acts"; }
}
/* 咸鱼 2026-10-28（业主：列表卡片统一用派单卡的方案 C，电脑手机一样）：行上加 pg-c 就换成——
   抬头（头像 · 名字 / 编号，右上角放 tail 里的状态小签）/ 灰字标签行（pg-people 里每个 <span><em>标签</em>内容</span> 一行，
   最要紧的数加 pg-key）/ 细线下面按钮靠右。要盖掉上面电脑宽度的 subgrid（那条带 !important）和两行式。 */
.xy-pg .pg-queue > .pg-row.pg-row.pg-c { grid-template-columns: auto minmax(0, 1fr) auto !important; grid-template-areas: "lead main tail" "facts facts facts" "acts acts acts" !important; grid-template-rows: auto auto 1fr; align-items: center; row-gap: 0; }
.xy-pg .pg-queue > .pg-row.pg-c > :first-child { grid-area: lead; align-self: start; }
.xy-pg .pg-queue > .pg-row.pg-c > .pg-main { grid-area: main; align-self: start; }
.xy-pg .pg-queue > .pg-row.pg-c > .pg-tail { grid-area: tail; display: grid; align-self: start; }
.xy-pg .pg-queue > .pg-row.pg-c > .pg-people { grid-area: facts; display: grid; grid-template-columns: minmax(56px, max-content) minmax(0, 1fr); align-items: baseline; gap: 8px 12px; margin-top: 14px; font-size: 13px; color: var(--text-2); }
.xy-pg .pg-queue > .pg-row.pg-c > .pg-people > span { display: contents; }
/* 11-06 业主：span 变 contents 后它的省略号失效，字会冲出卡片压到隔壁；省略号落到值本身 */
.xy-pg .pg-queue > .pg-row.pg-c > .pg-people > span > b { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.xy-pg .pg-queue > .pg-row.pg-c > .pg-people em { font-size: 12.5px; font-style: normal; font-weight: 500; color: var(--text-3); }
.xy-pg .pg-queue > .pg-row.pg-c > .pg-people b.pg-key { font-size: 17px; font-weight: 700; color: var(--text-1); }
.xy-pg .pg-queue > .pg-row.pg-c > .pg-people > span:has(> b.pg-key, > .pg-v > b.pg-key) > em { font-size: 13.5px; font-weight: 700; color: var(--text-1); }
/* 内容里不止一样东西（钱 + 原价、名字 + 会员签）就包一层 .pg-v，排成一行 */
.xy-pg .pg-queue > .pg-row.pg-c > .pg-people .pg-v { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; min-width: 0; }
.xy-pg .pg-queue > .pg-row.pg-c > .pg-people .pg-v > small { font-size: 12px; color: var(--text-4); }
/* 已取消 / 已撤销这类：要紧的钱划掉、退一档（和两行式里 .pg-amount 的划线一样） */
.xy-pg .pg-queue > .pg-row.pg-c:is(.order-row--cancelled, .recharge-record--reversed, .withdrawal-record--red, .wallet-withdrawal-row--rejected, .wallet-withdrawal-row--withdrawn) b.pg-key { color: var(--text-4); font-weight: 600; text-decoration: line-through; text-decoration-thickness: 1px; }
.xy-pg .pg-queue > .pg-row.pg-c:is(.order-row--cancelled, .recharge-record--reversed, .withdrawal-record--red, .wallet-withdrawal-row--rejected, .wallet-withdrawal-row--withdrawn) > .pg-people > span:has(> .pg-v > b.pg-key) > em { color: var(--text-3); }
.xy-pg .pg-queue > .pg-row.pg-c > :is(.pg-amount, .pg-meta) { display: none; }
/* 同一排卡片被拉成一样高时：多出来的空白留在按钮上方，标签行贴着抬头、按钮压在底边 */
.xy-pg .pg-queue > .pg-row.pg-c > .pg-acts { grid-area: acts; align-self: end; justify-content: flex-end; margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--hairline); }
.xy-pg .pg-queue > .pg-row.pg-c > .pg-acts:empty { display: none; }
/* 方案 C 卡片在电脑上一张占一整行太空：排成卡片墙，每张至少 340px（名字 + 两个小签放得下），放得下几张放几张（手机自然一列） */
.xy-pg .pg-queue:has(> .pg-row.pg-c) { grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 12px; }
.xy-pg .pg-queue > .pg-row.pg-c { grid-column: auto; }
/* 迷你版（pg-c-mini，只有一行数的卡片，比如履约保证金）：按钮放到那行数的右边、不要细线，卡片窄一点一排多放几张；那行数和名字左对齐（头像下面空着） */
.xy-pg .pg-queue:has(> .pg-row.pg-c-mini) { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.xy-pg .pg-queue > .pg-row.pg-row.pg-c.pg-c-mini { grid-template-areas: "lead main tail" ". facts acts" !important; grid-template-rows: auto auto !important; }
.xy-pg .pg-queue > .pg-row.pg-c.pg-c-mini > .pg-acts { align-self: center; margin-top: 14px; padding-top: 0; border-top: 0; }
/* 小卡（pg-c-sm，字段少、没按钮的明细卡，比如陪玩工资的订单明细）：电脑一排三张，不然半张卡都是空的 */
.xy-pg .pg-queue:has(> .pg-row.pg-c-sm) { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
/* 汇总卡（pg-c-sum，一页只有一张的合计，比如陪玩「我的工资」）：占满一整行；
   宽屏下名字和几个数并成一行，数平分右边整段（标签在上、数在下，中间细竖线），不留空；手机照旧竖排 */
.xy-pg .pg-queue > .pg-row.pg-c.pg-c-sum { grid-column: 1 / -1; }
@media (min-width: 768px) {
  .xy-pg .pg-queue > .pg-row.pg-row.pg-c.pg-c-sum { grid-template-columns: auto minmax(160px, max-content) minmax(0, 1fr) auto !important; grid-template-areas: "lead main facts acts" !important; grid-template-rows: auto !important; column-gap: 14px; }
  /* 有按钮（比如客服自己的提成卡「关联订单」）就放最右边，不要细线 */
  .xy-pg .pg-queue > .pg-row.pg-c.pg-c-sum > .pg-acts { align-self: center; margin-top: 0; padding-top: 0; border-top: 0; }
  /* 名字那行和标签那行、编号那行和数那行各对齐：两边都顶着上沿排 */
  .xy-pg .pg-queue > .pg-row.pg-c.pg-c-sum > .pg-main { align-self: start; }
  .xy-pg .pg-queue > .pg-row.pg-c.pg-c-sum > .pg-people { display: grid; grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); margin-top: 0; align-self: start; }
  .xy-pg .pg-queue > .pg-row.pg-c.pg-c-sum > .pg-people > span { display: grid; align-content: start; gap: 6px; padding: 0 20px; border-left: 1px solid var(--hairline); }
}
/* 卡片窄了，名字后面的会员 / 注册小签放不下就换行，不截断 */
.xy-pg .pg-queue > .pg-row.pg-c > .pg-main strong { flex-wrap: wrap; row-gap: 4px; overflow: visible; white-space: normal; }
/* 咸鱼 2026-10-20：首页「待我终审」批量条不要框——改成列表上方一行：左全选 + 已选数，右按钮（按字宽，手机也不拉满）。
   11-03 装进卡后：全选框和每行勾选框对齐在同一竖线上，上面一道细线和报备行一致 */
.report-review-batchbar.dashboard-queue-batchbar {
  position: static; padding: 8px calc(var(--card-pad) - 8px) 8px var(--card-pad); border: 0; border-top: 1px solid var(--hairline); border-radius: 0;
  background: rgba(6, 4, 8, .18); box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none;
}
.report-review-batchbar.dashboard-queue-batchbar .batch-select-all { display: inline-flex; align-items: center; gap: 16px; }
@media (max-width: 980px) { .report-review-batchbar.dashboard-queue-batchbar { padding-right: var(--card-pad); } .report-review-batchbar.dashboard-queue-batchbar .batch-select-all { gap: 14px; } }
.report-review-batchbar.dashboard-queue-batchbar .batch-actions { width: auto; margin-left: auto; }
.report-review-batchbar.dashboard-queue-batchbar .batch-actions button { flex: 0 0 auto; width: auto; min-height: 36px; height: 36px; padding: 0 14px; font-size: 13px; }
/* 咸鱼 2026-10-20：列表每行原来各自算列宽（有的行多一个「撤销」、状态标签长短不一），整列左右错位。
   电脑宽度下所有行共用父级 .pg-queue 的同一套列（subgrid），一列只按全表最宽的那格定宽；
   父级的列最小都是 0，平板 / 手机行不走 subgrid、照旧自己排，不会被撑宽。首列 60px = 头像 40 + 行左内边距 20。 */
.xy-pg .pg-queue { grid-template-columns: 60px minmax(0, 2fr) minmax(0, 1.2fr) minmax(0, 112px) minmax(0, auto) minmax(0, auto); column-gap: var(--s-5); }
@media (max-width: 1180px) { .xy-pg .pg-queue { column-gap: var(--s-4); } }
.xy-pg .pg-queue > * { grid-column: 1 / -1; }
@container (min-width: 881px) {
  .xy-pg .pg-queue > .pg-row.pg-row { grid-template-columns: subgrid !important; grid-template-areas: none !important; }
  /* 每格钉到自己那列：没头像的行也不会整体左移一格 */
  .xy-pg .pg-queue > .pg-row > .pg-main { grid-column: 2; }
  .xy-pg .pg-queue > .pg-row > .pg-people { grid-column: 3; }
  .xy-pg .pg-queue > .pg-row > .pg-amount { grid-column: 4; }
  .xy-pg .pg-queue > .pg-row > .pg-tail { grid-column: 5; }
  .xy-pg .pg-queue > .pg-row > .pg-acts { grid-column: 6; }
}
/* 中等宽度（列表 621–880px）两行式同样共用列：金额占后三列，按钮第二行 */
@container (min-width: 621px) and (max-width: 880px) {
  .xy-pg .pg-queue > .pg-row.pg-row { grid-template-columns: subgrid !important; grid-template-areas: none !important; }
  .xy-pg .pg-queue > .pg-row > :first-child { grid-column: 1; grid-row: 1; }
  .xy-pg .pg-queue > .pg-row > .pg-main { grid-column: 2; grid-row: 1; }
  .xy-pg .pg-queue > .pg-row > .pg-people { grid-column: 3; grid-row: 1; }
  .xy-pg .pg-queue > .pg-row > .pg-amount { grid-column: 4 / -1; grid-row: 1; }
  .xy-pg .pg-queue > .pg-row > .pg-acts { grid-column: 2 / -1; grid-row: 2; }
}
/* 咸鱼 2026-10-20：名册里的钱（保证金 / 累计收入 / 可提现 / 底薪 / 提成…）统一右对齐、等宽，表头跟着右对齐，个位对个位 */
.xy-pg .pg-dtable :is(th, td).pg-money { width: 92px; text-align: right; }
/* 咸鱼 2026-10-27（业主选方案 C）：陪玩派单卡分层——抬头（游戏 · 编号，状态在右上角）/ 项目内容（最大的字）/
   灰字标签行（备注 · 要求 · 截止）/ 细线下面一行：左成单价、右按钮。电脑手机同一个结构。 */
.xy-dsp.player-dispatches-page .pdsp-grid { grid-template-columns: minmax(0, 1fr); gap: 10px; }
.xy-dsp.player-dispatches-page .pdsp { grid-template-columns: minmax(0, 1fr); gap: 0; padding: 16px 20px; border-radius: 18px; }
.xy-dsp.player-dispatches-page .pdsp-req { margin-top: 12px; font-size: 17px; font-weight: 700; line-height: 1.45; }
.xy-dsp.player-dispatches-page .pdsp-meta { margin: 12px 0 0; }
.xy-dsp.player-dispatches-page .pdsp-side { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px 16px; margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--hairline); }
.xy-dsp.player-dispatches-page .pdsp-side .pdsp-price { font-size: 12px; color: var(--text-4); white-space: nowrap; }
.xy-dsp.player-dispatches-page .pdsp-side .pdsp-price b { font-family: var(--font-num); font-size: 20px; font-weight: 700; color: var(--text-1); }
.xy-dsp.player-dispatches-page .pdsp-act { margin-left: auto; gap: 8px; }
.xy-dsp.player-dispatches-page .pdsp-act button { min-width: 0; width: auto; min-height: 36px; height: 36px; padding: 0 16px; }
@media (max-width: 620px) {
  .xy-dsp.player-dispatches-page .pdsp { padding: 14px; }
  .xy-dsp.player-dispatches-page .pdsp-req { font-size: 16px; }
  .xy-dsp.player-dispatches-page .pdsp-act button { flex: none; width: auto; min-height: 40px; height: 40px; }
}
/* 咸鱼 2026-10-20：「就选 TA」按钮跟全站主按钮一个样（爱心 + 樱花粉 + 柔光），选上后变「已选TA」描边（还能点，点了确认取消）。 */
.xy-trial .tv-pick { gap: 6px; min-width: 112px; height: 36px; min-height: 36px; padding: 0 18px; background: var(--accent); color: var(--accent-ink); font-weight: 600; letter-spacing: .02em; box-shadow: 0 8px 20px -12px rgba(244, 179, 207, .8); transition: background var(--t-fast), box-shadow var(--t-fast), transform var(--t-fast) var(--ease-out); }
.xy-trial button.tv-pick:hover:not(:disabled) { background: var(--accent-hover); }
.xy-trial button.tv-pick:active:not(:disabled) { transform: scale(.97); }
.xy-trial .tv-pick svg { width: 15px; height: 15px; }
.xy-trial .tv-pick:not(.is-on) svg { fill: currentColor; }
.xy-trial .tv-pick.is-on, .xy-trial span.tv-pick.is-on { background: var(--accent-tint); color: var(--accent); box-shadow: inset 0 0 0 1px rgba(244, 179, 207, .55); }
.xy-trial button.tv-pick.is-on:hover:not(:disabled) { background: rgba(244, 179, 207, .2); }
/* 咸鱼 2026-10-20：局数「0 /1 局」被列表的 .pg-main small（flex 块）拆成上下两行，这里改回同一行 */
.xy-pg .pg-main .order-rounds b { display: inline-flex; align-items: baseline; gap: 0; white-space: nowrap; }
.xy-pg .pg-main .order-rounds b small { display: inline; margin-left: 1px; font-size: 11.5px; color: var(--text-4); }
/* 咸鱼 2026-10-20：钱包详情里「发放/扣除金额」按字宽，不再拉满一整行 */
.dp-acts { justify-content: flex-end; }
.dp-acts button { flex: 0 0 auto; width: auto; padding: 0 16px; }
/* 手机上试音卡很窄（约 110px），按钮不能超出卡片 */
.xy-trial .tv-pick { min-width: 0; max-width: 100%; }
@media (max-width: 620px) { .xy-trial .tv-pick { padding: 0 12px; font-size: 12.5px; } }
/* 业主 2026-10-20：选人提示条做成一行小条，按钮不加图标。 */
.xy-trial .pick-banner { gap: 8px; padding: 8px 12px; border-radius: var(--r-md); font-size: 13px; line-height: 1.4; }
.xy-trial .pick-banner svg { width: 15px; height: 15px; }
.xy-trial .pick-banner span { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 420px) { .xy-trial .pick-banner { padding: 7px 10px; font-size: 12px; letter-spacing: -.01em; } .xy-trial .pick-banner span { white-space: normal; } }
/* 咸鱼 2026-10-20：收款方式小窗顶上提示「至少 1 种」；银行卡标「（选填）」 */
.identity-payout-tip { display: flex; align-items: center; gap: 8px; margin: 0 0 12px; padding: 10px 14px; border-radius: var(--r-md); background: var(--accent-tint); box-shadow: inset 0 0 0 1px rgba(244, 179, 207, .3); color: var(--text-1); font-size: 13px; }
.identity-payout-tip svg { flex: none; width: 16px; height: 16px; color: var(--accent); }
.identity-payout-optional { margin-left: 4px; color: var(--text-4); font-size: 12px; font-weight: 400; }

/* ══ 咸鱼 2026-10-20：列表信息分三层（之前全是同样的白、同样的粗，看不出先看哪个）══
   第一层 一眼要看到：名字 / 标题、金额、状态 —— 最大、最亮、最粗
   第二层 要找的时候在：人名、读数、备注 —— 正常亮度、中等粗细
   第三层 参考：标签字、编号、时间、0 元 —— 小、暗、细
   重点读数（比如钱包的「当前总额」）用 .is-key 提回第一层。 */
.xy-pg .pg-row .pg-main strong { color: var(--text-1); font-size: 15px; font-weight: 700; }
.xy-pg .pg-row .pg-amount { color: var(--text-1); font-size: 20px; font-weight: 700; }
/* 第二层 */
.xy-pg .pg-row .pg-people { gap: 6px; color: var(--text-2); font-size: 13px; }
.xy-pg .pg-row .pg-people b { color: var(--text-2); font-size: 13.5px; font-weight: 500; }
.xy-pg .pg-row .pg-people > span > .pg-vip { margin-left: 2px; }
/* 第三层 */
.xy-pg .pg-row .pg-people em { color: var(--text-4); font-size: 11.5px; font-weight: 400; }
.xy-pg .pg-row .pg-main small { color: var(--text-4); font-size: 12px; }
.xy-pg .pg-row :is(.pg-uid, .pg-main small > .num:first-child) { color: var(--text-3); font-size: 12px; font-weight: 600; }
.xy-pg .pg-row .pg-main small .pg-time, .xy-pg .pg-row .pg-main small > .num + .num { color: var(--text-4); font-weight: 400; }
.xy-pg .pg-row :is(.pg-amount, .pg-tail) small { color: var(--text-4); font-size: 11.5px; font-weight: 400; }
.xy-pg .pg-row .pg-from { color: var(--text-4); font-size: 12.5px; }
/* 充值「余额 ¥0 → ¥1,020」：变动后的余额是重点 */
.xy-pg .recharge-record .pg-people b.num { color: var(--text-1); font-weight: 600; }
/* 0 元往后退（比有钱的暗两档、不加粗，有钱的自然跳出来） */
.xy-pg .pg-row .pg-people b.is-zero { color: var(--text-4) !important; font-weight: 400 !important; }
.xy-pg .pg-row .pg-amount.is-zero { color: var(--text-3) !important; font-weight: 600 !important; }
.xy-pg .pg-dtable tbody td.num.is-zero, .xy-pg .pg-dtable tbody td.num > strong.is-zero { color: var(--text-4) !important; font-weight: 400 !important; }
/* 已撤销 / 已取消：标题退一档（金额划线在方案 C 那段） */
.xy-pg :is(.recharge-record--reversed, .recharge-record--history, .order-row--cancelled) .pg-main strong { color: var(--text-2); }
/* 状态列：状态胶囊和下面那行小字都靠右对齐到同一条线 */
.xy-pg .pg-row .pg-tail { justify-items: end; align-content: center; text-align: right; }
/* 详情抽屉里的「名称 / 值」：名称小而暗，值亮；提现金额最大 */
.drawer .withdrawal-detail-grid dt { color: var(--text-4); font-size: 12px; font-weight: 400; }
.drawer .withdrawal-detail-grid dd { color: var(--text-1); font-size: 14px; font-weight: 500; }
.drawer .withdrawal-detail-grid dd.money-detail { color: var(--accent); font-family: var(--font-num); font-size: 22px; font-weight: 700; }
.drawer .withdrawal-detail-section h4 { color: var(--text-2); font-size: 13px; letter-spacing: .04em; }
/* 订单页：状态页签 + 分部筛选同一行 */
.order-filter-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; }
.order-filter-bar > .pg-tabs { flex: 1 1 auto; min-width: 0; }
.order-filter-bar > .order-division-pick { flex: none; width: auto; min-width: 116px; height: 34px; min-height: 34px; padding: 0 30px 0 12px; border-radius: 999px; font-size: 13px; }
@media (max-width: 620px) { .order-filter-bar { flex-direction: column; align-items: stretch; gap: 8px; } .order-filter-bar > .order-division-pick { align-self: flex-start; } }
/* 会员小标签里的等级数字（<em>）别被「标签字」样式盖成小灰字 */
.xy-pg .pg-row .pg-people .mv-badge > em { flex: none; margin-left: 1px; color: inherit; font: inherit; }
/* 提现详情顶上：状态胶囊按字宽，不拉成一整条；提现号是参考信息，小一号 */
.drawer .withdrawal-detail-heading > .tag { justify-self: start; width: auto; }
.drawer .withdrawal-detail-heading h3 { color: var(--text-2); font-family: var(--font-num); font-size: 15px; font-weight: 600; letter-spacing: .02em; }
/* 手机：名字长时身份小标签换到下一行，不被切掉半个 */
@container (max-width: 620px) { .xy-pg .pg-row .pg-main strong { flex-wrap: wrap; row-gap: 3px; } }
/* 名册「状态」格：在职 + 店规未确认 上下排、左边对齐（之前第二个带 6px 左边距，折行后往右偏） */
.pg-badge-stack { display: flex; flex-direction: column; align-items: flex-start; gap: 5px; }
.pg-personnel .pg-badge-stack > .rep-badge + .rep-badge { margin-left: 0; }
/* 咸鱼 2026-10-21：会员徽章「VIP 1」的数字和 VIP 同一条线。真正的原因是列表行里那条 font 简写把 lining-nums 冲掉了，
   数字变成「老式数字」（1 / 2 只有小写字母高、3 往下掉）——这里补回等高数字、字号收到和 VIP 大写同高，不再靠往上挪（10-20 的 -2.5px 在个人页头卡上反而顶太高）。 */
.mv-badge > em, .xy-pg .pg-row .pg-people .mv-badge > em { top: 0; font-variant-numeric: lining-nums; }
/* 订单页右上：「评价文案」+ 分部筛选 */
.order-filter-side { display: flex; flex: none; align-items: center; gap: 8px; }
.order-filter-side:empty { display: none; }
.order-filter-side > .order-copytext { display: inline-flex; align-items: center; gap: 6px; width: auto; height: 34px; min-height: 34px; padding: 0 14px; border-radius: 999px; font-size: 13px; }
.order-filter-side > .order-copytext svg { width: 15px; height: 15px; }
@media (max-width: 620px) { .order-filter-bar > .order-filter-side { align-self: flex-start; } }
/* 咸鱼 2026-10-28：分部 / 时间 / 陪玩 / 派单客服一排；手机上收进「筛选」按钮，窄屏两两一行 */
.order-filter-picks { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 4px; }
.order-filter-picks > .order-division-pick { flex: none; width: auto; min-width: 116px; max-width: 100%; height: 34px; min-height: 34px; padding: 0 30px 0 12px; border-radius: 999px; font-size: 13px; }
.order-filter-side > .order-filter-toggle { display: none; }
@media (max-width: 980px) {
  .order-filter-side > .order-filter-toggle { display: inline-flex; }
  .order-filter-side > .order-filter-toggle.is-active { color: var(--accent); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 45%, transparent); }
  .order-filter-picks:not(.is-open) { display: none; }
}
@media (max-width: 620px) { .order-filter-picks > .order-division-pick { flex: 1 1 calc(50% - 4px); min-width: 0; } }
/* 状态页签放不下时，右边的按钮 / 下拉换到下一行，不把页签挤得切字 */

@media (min-width: 621px) { .order-filter-bar { flex-wrap: wrap; row-gap: 8px; } .order-filter-bar > .pg-tabs { min-width: min(100%, max-content); } }

/* ── 抽屉提示条（咸鱼 2026-10-20）：一行、前面一个小圆点感叹号；没填对 = 蜜黄只提示，保存失败 = 玫红 + 右侧「重试」文字按钮 ── */
html body #drawer .drawer-alert {
  --alert: var(--st-warn);
  align-items: center;
  gap: 10px;
  /* 和抽屉正文同宽（左右 20px），不贴边。 */
  margin: 0 20px 12px;
  padding: 10px 12px;
  border: 1px solid color-mix(in srgb, var(--alert) 24%, transparent);
  border-radius: 12px;
  background: color-mix(in srgb, var(--alert) 8%, var(--bg-surface));
  color: var(--text-1);
  font-size: 13px;
  font-weight: 500;
  line-height: 1.5;
}
html body #drawer .drawer-alert.is-failure { --alert: var(--st-err); }
html body #drawer .drawer-alert::before {
  content: "!";
  flex: none;
  display: grid;
  place-items: center;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--alert);
  color: var(--bg-canvas);
  font: 700 12px/1 system-ui, sans-serif;
}
html body #drawer .drawer-alert #drawerAlertText { flex: 1; min-width: 0; }
/* 点击区仍是 44px（手机好点），用负外边距不把提示条撑高。 */
html body #drawer .drawer-alert #drawerAlertRetry {
  flex: none;
  min-height: 44px;
  margin: -12px -6px -12px 0;
  padding: 0 10px;
  border: 0;
  border-radius: 10px;
  /* 全站按钮底色 / 阴影 / 字色都带 !important（12-glass.css），这里是文字按钮，得压回去。 */
  background: transparent !important;
  box-shadow: none !important;
  color: var(--alert) !important;
  font-size: 13px;
  font-weight: 600;
}
html body #drawer .drawer-alert #drawerAlertRetry:hover { background: color-mix(in srgb, var(--alert) 12%, transparent) !important; }
html body #drawer .drawer-alert #drawerAlertRetry:focus-visible { outline: none; box-shadow: var(--ring) !important; }
.drawer .order-detail-drawer .order-detail-chips { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 4px 0 2px; }
/* 咸鱼 2026-10-21：经营卡底部四格（实收 / 陪玩工资 / 客服提成 / 充值赠送）两两一排：首页这张卡在电脑上也只占窄的一栏，一排四格放不下上万的金额 */
.xy-biz-stats[data-count="4"] { --n: 2; }
.xy-biz-stats[data-count="4"] .xy-biz-stat:nth-child(3) { border-left: 0; }
.xy-biz-stats[data-count="4"] .xy-biz-stat:nth-child(n + 3) { border-top: 1px solid var(--hairline); }

/* 咸鱼 2026-10-21：客服名册卡片里的分部标签 */
.personnel-task-head .personnel-card-divisions { display: block; margin-top: 6px; }
.xy-pg .pg-tags .tag small { font-size: 11px; opacity: .75; }
/* 咸鱼 2026-10-21：头像图片铺满圆框 */
.xy-ava.has-img { overflow: hidden; background: var(--ink-750); }
.xy-ava.has-img img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; display: block; }
/* 咸鱼 2026-10-22：店长 / 客服首页的粉色焦点卡被右边「经营」卡撑高后中间发空——
   电脑宽屏下吉祥物、数字、标题跟着放大，「需要你处理」+ 标题这一组在卡里上下居中（陪玩 / 客户比例本来就合适，不动）。 */
@media (min-width: 1181px) {
  /* 吉祥物放大后：原来的渐隐遮罩会吃掉底下「咸鱼电竞」字样，胶囊也会压在字上——
     改成贴在胶囊 + 按钮那一块（约 135px）的上方、按剩下的高度缩放，只留很窄的边缘渐隐，logo 整个露出来。 */
  .dashboard-page:is([data-dashboard-role="owner"], [data-dashboard-role="staff"]) .dashboard-focus-art {
    top: auto; bottom: 140px; right: 12px; height: calc(100% - 156px); width: auto; max-width: 52%; aspect-ratio: 1;
    transform: none; background-size: contain; background-position: center bottom;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 10%, #000 92%, transparent 100%), linear-gradient(180deg, transparent 0, #000 8%, #000 94%, transparent 100%);
    mask-image: linear-gradient(90deg, transparent 0, #000 10%, #000 92%, transparent 100%), linear-gradient(180deg, transparent 0, #000 8%, #000 94%, transparent 100%);
  }
  .dashboard-page:is([data-dashboard-role="owner"], [data-dashboard-role="staff"]) .dashboard-focus-kicker { margin-top: auto; font-size: 14px; }
  .dashboard-page:is([data-dashboard-role="owner"], [data-dashboard-role="staff"]) .dashboard-focus-kicker .latin { font-size: 14px; }
  .dashboard-page:is([data-dashboard-role="owner"], [data-dashboard-role="staff"]) .dashboard-focus-title { max-width: 72%; font-size: 24px; margin-top: 14px; }
  .dashboard-page:is([data-dashboard-role="owner"], [data-dashboard-role="staff"]) .dashboard-focus-count { font-size: 112px; }
  .dashboard-page:is([data-dashboard-role="owner"], [data-dashboard-role="staff"]) .dashboard-focus-chip { min-height: 38px; padding: 0 16px; font-size: 13.5px; }
  .dashboard-page:is([data-dashboard-role="owner"], [data-dashboard-role="staff"]) .dashboard-focus-chip .num { font-size: 15px; }
  .dashboard-page:is([data-dashboard-role="owner"], [data-dashboard-role="staff"]) :is(.dashboard-focus-primary, .dashboard-focus-secondary) { min-height: 46px; padding: 0 22px; font-size: 15px; }
}
/* 咸鱼 2026-10-22：陪玩可能在几个分部各有一个档位标签——UID 后面的标签一行放不下就换行，不再被截掉。 */
.xy-pg :is(.pg-who, .pg-main) small:has(.tv-tag) { flex-wrap: wrap; row-gap: 4px; white-space: normal; overflow: visible; }

/* 咸鱼 2026-10-23：版号纯文本小字，登录页在备案号上方，后台在内容区最底下。 */
.xy-app-version { margin: 0; font-family: var(--font-num); font-size: 11px; letter-spacing: .04em; color: var(--text-4); }
.xy-app-version:empty { display: none; }
.xy-login-version { position: fixed; left: 0; right: 0; bottom: 36px; text-align: center; color: rgba(205, 214, 235, .4); pointer-events: none; z-index: 5; }
.xy-app-foot { padding: 20px 0 4px; text-align: center; }

/* 咸鱼 2026-10-26（R11）：附加标签 —— 店长的标签抽屉（每个标签一块：预览 + 名字 / 放前放后 / 启用）、下单面板的标签筛选。 */
#playerTagsForm > * { grid-column: 1 / -1; }
.ptag-row.is-off .ptag-preview { opacity: .45; }
.ptag-row .site-block-head { gap: 10px; }
.ptag-preview { display: inline-flex; min-height: 24px; align-items: center; }
.ptag-used { margin-left: auto; color: var(--text-3); font-size: 12px; }
.ptag-fields { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr) auto; gap: 10px; align-items: center; }
#drawer .invite-form .ptag-fields .dspf-seg span { height: 34px; }
.order-sheet .osh-ptags { margin: -2px 0 10px; }
@media (max-width: 620px) {
  .ptag-fields { grid-template-columns: minmax(0, 1fr) auto; }
  .ptag-fields .dspf-seg { grid-column: 1 / -1; grid-row: 2; }
}
/* 标签抽屉里每个标签一小块（与店铺内容编辑共用） */
.site-blocks { display: grid; gap: 10px; }
.site-block { display: grid; gap: 8px; padding: 10px 12px 12px; border: 1px solid var(--hairline); border-radius: var(--item-radius); }
.site-block-head { display: flex; align-items: center; justify-content: space-between; font-size: 12.5px; color: var(--text-3); }
.site-block-tools { display: flex; gap: 4px; }
.site-block-tools .icon-btn { width: 30px; height: 30px; min-height: 30px; }
.site-block-tools svg { width: 15px; height: 15px; }
.site-btn-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.site-block-adds { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.site-block-adds .secondary.mini { display: inline-flex; align-items: center; gap: 5px; }
.site-block-adds svg { width: 15px; height: 15px; }
.site-on { display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--text-1); }
.site-on input { width: 18px; height: 18px; min-height: 0; }

/* 咸鱼 2026-10-27：抽成方案（R8）—— 系统设置里的列表行 + 编辑抽屉 */
.rs-lock { grid-column: 1 / -1; margin: 0; padding: 8px 12px; border-radius: 10px; background: color-mix(in srgb, var(--warn, #d9a441) 14%, transparent); color: var(--text-1); font-size: 13px; }
.rs-scope { border: 0; padding: 0; margin: 0; min-width: 0; }
.rs-scope legend { font-size: 13px; color: var(--text-2); margin-bottom: 6px; padding: 0; }
.rs-scope { display: flex; flex-wrap: wrap; gap: 6px 18px; }
.rs-scope legend { width: 100%; }
.rs-scope label { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; color: var(--text-1); }
.rs-scope input { width: 16px; height: 16px; min-height: 0; }
.rs-rates { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }

/* 咸鱼 2026-10-27：系统操作日志（R12） */
.audit-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; min-width: 0; margin: 4px 0 12px; }
.audit-tools .pg-tabs { flex: 1 1 auto; min-width: 0; overflow-x: auto; }
.audit-tools .searchbar { flex: 0 1 260px; }
.audit-row .audit-detail { white-space: normal; word-break: break-all; }
/* 没有左边头像 / 圆点的卡（操作日志、抽成方案）：去掉 lead 那一列，标题顶格 */
.xy-pg .pg-queue > .pg-row.pg-row.pg-c:has(> .pg-main:first-child) { grid-template-columns: minmax(0, 1fr) auto !important; grid-template-areas: "main tail" "facts facts" "acts acts" !important; }
/* 售后卡：订单信息在上，客户诉求单独一块（上面一道虚线隔开），长诉求自己换行 */
.xy-pg .pg-queue > .pg-row.pg-c.after-row > .pg-people > span.after-ask { display: grid; grid-column: 1 / -1; grid-template-columns: subgrid; align-items: baseline; margin-top: 4px; padding-top: 10px; border-top: 1px dashed var(--hairline); }
.xy-pg .pg-queue > .pg-row.pg-c.after-row .after-ask b { white-space: normal; word-break: break-all; }
.audit-more { display: flex; justify-content: center; margin-top: 14px; }
