/* ───────────── 邀请兑换页 /invite/<token> ───────────── */
.me-invite-wrap {
  min-height: 100vh;
  min-height: 100dvh;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px 20px;
  background: #ffffff;
  overflow: clip;
}
.me-invite-stage {
  position: relative;
  width: 100%;
  max-width: 480px;
}
.me-invite-deco {
  --me-invite-magnet-x: 0px;
  --me-invite-magnet-y: 0px;
  --me-invite-magnet-duration: 300ms;
  --me-invite-magnet-easing: cubic-bezier(0, 0, 0.7, 1);
  position: absolute;
  z-index: 1;
  display: block;
  font-family: -apple-system, BlinkMacSystemFont, "Apple Color Emoji", "Segoe UI Emoji", "PingFang SC", system-ui, sans-serif;
  font-size: 30px;
  line-height: 1;
  user-select: none;
}
.me-invite-deco-glyph {
  display: block;
  transform-origin: center;
  transition: transform .25s cubic-bezier(.2, 0, 0, 1);
  animation: me-invite-deco-float 3.2s ease-in-out infinite;
}
.me-invite-deco--cool {
  top: -52px;
  left: -112px;
}
.me-invite-deco--cool .me-invite-deco-glyph { transform: rotate(-22.4deg); animation-delay: -.4s; }
.me-invite-deco--earth {
  bottom: -52px;
  left: -112px;
}
.me-invite-deco--earth .me-invite-deco-glyph { transform: rotate(4.6deg); animation-delay: -1.6s; }
.me-invite-deco--map {
  top: -52px;
  right: -112px;
}
.me-invite-deco--map .me-invite-deco-glyph { transform: rotate(23.1deg); animation-delay: -.9s; }
.me-invite-deco--pumpkin {
  right: -112px;
  bottom: -52px;
}
.me-invite-deco--pumpkin .me-invite-deco-glyph { transform: rotate(22.1deg); animation-delay: -2.2s; }
.me-invite-deco--robot {
  top: 50%;
  left: -112px;
  margin-top: -15px;
}
.me-invite-deco--robot .me-invite-deco-glyph { transform: rotate(-12deg); animation-delay: -2.7s; }
.me-invite-deco--rocket {
  top: 50%;
  right: -112px;
  margin-top: -15px;
}
.me-invite-deco--rocket .me-invite-deco-glyph { transform: rotate(16deg); animation-delay: -1.2s; }
.me-invite-deco--cool:hover .me-invite-deco-glyph { transform: rotate(-22.4deg) scale(1.25); }
.me-invite-deco--earth:hover .me-invite-deco-glyph { transform: rotate(4.6deg) scale(1.25); }
.me-invite-deco--map:hover .me-invite-deco-glyph { transform: rotate(23.1deg) scale(1.25); }
.me-invite-deco--pumpkin:hover .me-invite-deco-glyph { transform: rotate(22.1deg) scale(1.25); }
.me-invite-deco--robot:hover .me-invite-deco-glyph { transform: rotate(-12deg) scale(1.25); }
.me-invite-deco--rocket:hover .me-invite-deco-glyph { transform: rotate(16deg) scale(1.25); }
@keyframes me-invite-deco-float {
  0%, 100% { translate: 0 0; }
  50% { translate: 0 -7px; }
}
@media (hover: hover) and (pointer: fine) {
  .me-invite-deco {
    transform: translate3d(
      var(--me-invite-magnet-x),
      var(--me-invite-magnet-y),
      0
    );
    transition: transform var(--me-invite-magnet-duration) var(--me-invite-magnet-easing);
    will-change: transform;
  }
  .me-invite-deco[data-magnetic-active="true"] {
    --me-invite-magnet-duration: 300ms;
  }
  .me-invite-deco[data-magnetic-active="true"][data-magnetic-settled="true"] {
    --me-invite-magnet-duration: 140ms;
  }
}
@media (prefers-reduced-motion: reduce) {
  .me-invite-deco {
    transform: none;
    transition: none;
    will-change: auto;
  }
  .me-invite-deco-glyph {
    animation: none;
    transition: none;
  }
}
.me-invite-card {
  position: relative;
  z-index: 0;
  width: 100%;
  max-width: 480px;
  box-sizing: border-box;
  background: #ffffff;
  border-radius: 24px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  border: 1px solid rgba(0, 0, 0, 0.04);
  box-shadow:
    0 1px 2px rgba(0, 0, 0, 0.03),
    0 8px 24px -12px rgba(0, 0, 0, 0.06);
  min-height: 520px;
  padding: 48px 32px;
  text-align: center;
}
.me-invite-eyebrow {
  margin: 0 0 10px;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.04em;
  color: #86868b;
}
.me-invite-title {
  margin: 0;
  font-size: 24px;
  font-weight: 500;
  letter-spacing: -0.022em;
  color: #1d1d1f;
  line-height: 1.3;
}
.me-invite-title--join {
  font-size: 20px;
}
.me-invite-sub {
  margin: 12px 0 0;
  font-size: 15px;
  line-height: 1.6;
  color: #3c3c43;
}
.me-invite-meta {
  margin: 24px 0 0;
  display: grid;
  gap: 0;
  text-align: left;
}
.me-invite-meta > div {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 12px 0;
  font-size: 15px;
}
.me-invite-meta > div:not(.me-invite-team-block) + div:not(.me-invite-team-block) {
  border-top: 1px solid #ececef;
}
.me-invite-meta > .me-invite-team-block {
  display: block;
  padding: 16px;
  border: 1px solid #e5e5e7;
  border-radius: 14px;
  background: #fafafa;
}
.me-invite-team-block .me-invite-team-label {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.me-invite-team-block dd {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
}
.me-invite-team-avatar {
  width: 40px;
  height: 40px;
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  background: #eeeeef;
  color: #3c3c43;
  font-size: 15px;
  font-weight: 600;
  overflow: hidden;
}
.me-invite-team-avatar img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}
.me-invite-team-name {
  min-width: 0;
  overflow-wrap: anywhere;
  font-weight: 600;
}
.me-invite-team-block + div {
  margin-top: 10px;
}
.me-invite-meta dt {
  margin: 0;
  color: #86868b;
}
.me-invite-meta dd {
  margin: 0;
  color: #1d1d1f;
}
.me-invite-accept-form {
  margin-top: 68px;
  text-align: left;
}
.me-invite-accept {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  margin-top: 24px;
  padding: 12px 20px;
  border: 0;
  border-radius: 12px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  background: #2e84fa;
  color: #ffffff;
  font: inherit;
  font-size: 15px;
  font-weight: 500;
  text-decoration: none;
  cursor: pointer;
  transition: opacity 0.15s;
  box-sizing: border-box;
}
.me-invite-accept-form .me-invite-accept {
  margin-top: 0;
}
.me-invite-accept--primary {
  background: #0071e3;
  color: #ffffff;
}
.me-invite-accept:hover:not(:disabled):not([data-disabled="true"]) {
  opacity: 0.85;
}
.me-invite-accept:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
.me-invite-accept[data-disabled="true"] {
  opacity: 0.5;
  cursor: pointer;
}
.me-invite-accept-err {
  margin: 12px 0 0;
  font-size: 13px;
  color: #b91c1c;
}
.me-invite-subscribe-title {
  margin: 0;
  font-size: 20px;
  font-weight: 600;
  color: #1d1d1f;
  text-align: center;
}
.me-invite-subscribe-copy {
  margin: 12px 0 20px;
  color: #6e6e73;
  font-size: 14px;
  line-height: 1.55;
  text-align: center;
}
.me-invite-subscribe-view {
  min-height: 382px;
  display: flex;
  flex-direction: column;
  margin-top: 0;
}
.me-invite-notification-options {
  width: 100%;
  box-sizing: border-box;
  text-align: left;
}
.me-invite-notification-options .me-set-route-card {
  gap: 8px;
}
.me-invite-notification-options .me-set-route-icon {
  width: 24px;
}
.me-invite-notification-accept-form {
  margin-top: auto;
  padding-top: 28px;
}
.me-invite-notification-accept-form .me-invite-accept {
  margin-top: 0;
}
.me-invite-notification-reassurance {
  margin: 10px 0 0;
  color: #a1a1a6;
  font-size: 11px;
  line-height: 1.55;
  text-align: center;
}
.me-invite-notification-reassurance span {
  color: #86868b;
}
.me-invite-foot {
  margin: 16px 0 0;
  font-size: 13px;
  color: #a1a1a6;
  line-height: 1.5;
  text-align: center;
}
.me-invite-current-user {
  margin: 20px 0 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  color: #86868b;
  font-size: 13px;
  line-height: 1;
  text-align: center;
}
.me-invite-current-avatar {
  width: 24px;
  height: 24px;
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border-radius: 50%;
  background: #f2f2f3;
  color: #6e6e73;
  font-size: 11px;
  font-weight: 600;
}
.me-invite-current-avatar img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}
.me-invite-current-name {
  color: #3c3c43;
  font-weight: 500;
}

/* ── 通知门槛与邀请兑换都完成后的成功屏 ── */
.me-invite-bonnie {
  min-height: 382px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
}
.me-invite-bonnie-title {
  margin: 0;
  font-size: 18px;
  font-weight: 600;
  color: #1d1d1f;
}
.me-invite-bonnie-sub {
  margin: 8px 0 0;
  font-size: 13px;
  color: #86868b;
  line-height: 1.6;
}
.me-bonnie-confirm-title {
  font-size: 20px;
}
.me-email-primary.me-bonnie-confirm {
  width: 100%;
  height: 48px;
  min-height: 48px;
  margin-top: 18px;
  background: #0071e3;
  color: #ffffff;
  font-size: 15px;
}
.me-bonnie-confirm-error {
  margin: 8px 0 0;
  color: #b91c1c;
  font-size: 12px;
  line-height: 1.5;
}

@media (max-width: 560px) {
  .me-invite-wrap {
    padding: 24px 16px;
  }
  .me-invite-card {
    padding: 32px 24px;
  }
}
@media (max-width: 720px) {
  .me-invite-deco { display: none; }
}

/* ── 投递列表（仪表盘卡 + 投递情况页共用） ── */
.me-applist {
  list-style: none;
  margin: 0;
  padding: 0;
}
/* 行（Read.cv「投递行」形态）：上 = 头像 + 名字/副信息 + 收藏星；下 = 操作 pill 行。
   行之间不画分割线 —— 靠 padding 间距区分。 */
/* 行（Figma 427 形态，单行）：头像 + 名字/副信息(flex) + 右侧 CV / 收藏 / 箭头。 */
.me-applist-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 0;
}
.me-applist-avatar {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  border-radius: 999px;
  background: #f0f0ee;
  color: #86868b;
  font-size: 13px;
  font-weight: 500;
  display: flex;
  align-items: center;
  justify-content: center;
  -webkit-corner-shape: round;
  corner-shape: round;
}
.me-applist-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.me-applist-name-row {
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
}
.me-applist-name {
  font-size: 15px;
  font-weight: 400;
  color: #1d1d1f;
  text-decoration: none;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}
.me-applist-name:hover {
  text-decoration: underline;
}
/* 未读蓝点（名字之后） */
.me-applist-dot {
  flex-shrink: 0;
  width: 7px;
  height: 7px;
  border-radius: 999px;
  background: #2e84fa;
}
.me-applist-sub {
  font-size: 14px;
  color: #86868b;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* 右侧动作：CV pill + 收藏爱心 + 查看箭头。Figma 三者间距 16px。 */
.me-applist-actions {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 16px;
}
/* CV pill（Figma chip）：白底 + 1px #ececef 描边 + CV 图标(20) + "CV"(15px/400/#3c3c43)。 */
.me-applist-cv {
  appearance: none;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 36px;
  padding: 0 15px;
  border: 1px solid #ececef;
  border-radius: 999px;
  background: #ffffff;
  color: #3c3c43;
  font: inherit;
  font-size: 15px;
  font-weight: 400;
  cursor: pointer;
  transition: border-color 0.15s, color 0.15s;
}
.me-applist-cv:hover {
  border-color: #1d1d1f;
}
/* 收藏爱心(17)：未收藏浅灰描边，收藏态实心 ink-1。容器 32 圆形(hover 底)。 */
.me-applist-fav {
  flex-shrink: 0;
  appearance: none;
  border: 0;
  background: transparent;
  width: 32px;
  height: 32px;
  border-radius: 999px;
  color: #c7c7cc;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: color 0.15s, background 0.15s;
}
.me-applist-fav:hover {
  background: #f5f5f5;
  color: #86868b;
}
.me-applist-fav.is-on,
.me-applist-fav.is-on:hover {
  color: #1d1d1f;
}
/* 查看主页箭头(24，#3c3c43) */
.me-applist-view {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 999px;
  color: #3c3c43;
  text-decoration: none;
  transition: color 0.15s, background 0.15s;
}
.me-applist-view:hover {
  background: #f5f5f5;
  color: #1d1d1f;
}

/* （已删除 .me-mat-modal-* 旧预览弹窗样式 —— 团队页预览已改用统一的
   .me-modal-dialog--preview 壳 + 圆形 chrome，旧类无人引用。） */

/* ═══════════ 团队管理 · 设置页 ════════════ */
.me-set { max-width: 760px; display: flex; flex-direction: column; gap: 42px; }
.me-set-sec { display: flex; flex-direction: column; gap: 12px; }
.me-set-page-head { display: flex; flex-direction: column; gap: 6px; }
.me-set-page-head h1,
.me-settings-detail-head h1 {
  margin: 0; color: #1d1d1f; font-size: 24px; font-weight: 500; line-height: 32px; letter-spacing: -.02em;
}
.me-set-page-head p,
.me-settings-detail-head p { margin: 0; color: #86868b; font-size: 14px; line-height: 20px; }
/* section 标题：内容线对齐，靠留白而不是分割线组织层级。 */
.me-set-h { margin: 0 0 0 2px; font-size: 14px; line-height: 22px; color: #3c3c43; font-weight: 500; }
.me-set-head { display: flex; flex-direction: column; gap: 4px; }
.me-set-head .me-set-h { line-height: 26px; }
.me-set-sub { margin: 0 0 0 2px; font-size: 13px; line-height: 19px; color: #86868b; }

/* Codex 式设置组：同类项目共用白色容器；chrome 对齐 .me-shell-side 的轻描边 + 轻阴影。 */
.me-set-group {
  background: #fff; border-radius: 18px; -webkit-corner-shape: squircle; corner-shape: squircle;
  border: 1px solid rgba(0, 0, 0, 0.04);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03), 0 8px 24px -12px rgba(0, 0, 0, 0.06);
}
.me-set-row-title { color: #1d1d1f; font-size: 15px; font-weight: 500; line-height: 20px; }
.me-set-row-desc { color: #86868b; font-size: 13px; line-height: 18px; }

/* ── 账号行 ── */
.me-set-acct { display: flex; flex-direction: column; }
.me-set-acct-row { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 18px 20px; }
.me-set-acct-copy { display: flex; min-width: 0; flex-direction: column; gap: 3px; }
.me-set-acct-left { display: flex; align-items: center; gap: 16px; min-width: 0; }
.me-set-acct-label { font-size: 15px; line-height: 20px; color: #86868b; flex-shrink: 0; }
.me-set-acct-val { font-size: 15px; line-height: 20px; color: #1d1d1f; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* 设置页 → 次级页面入口。 */
.me-set-route-card {
  display: flex; align-items: center; gap: 14px; padding: 18px 20px; border-radius: 16px;
  color: #1d1d1f; text-decoration: none;
  transition: background-color .16s ease;
}
.me-set-route-card:hover { background: #f7f7f8; }
.me-set-route-card--button {
  width: 100%; border: 0; background: transparent; font: inherit; text-align: left; cursor: pointer;
}
.me-set-route-card--static { cursor: default; }
.me-set-route-card--static:hover { background: transparent; }
.me-set-route-icon {
  width: 34px; height: 38px; display: grid; place-items: center; flex-shrink: 0;
  color: #68686d;
}
.me-set-route-icon svg { width: 20px; height: 20px; }
.me-set-route-copy { display: flex; flex: 1; min-width: 0; flex-direction: column; gap: 3px; }
.me-set-route-title { font-size: 15px; line-height: 20px; font-weight: 500; }
.me-set-route-desc { font-size: 13px; line-height: 18px; color: #86868b; }
.me-set-route-arrow { width: 16px; height: 16px; flex-shrink: 0; color: #a1a1a6; }
.me-set-notify-status {
  display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0;
  color: #86868b; font-size: 13px; line-height: 18px;
}
.me-set-notify-status.is-on::before {
  width: 7px; height: 7px; border-radius: 50%; background: #34c759; content: "";
}
.me-set-route-card--static .me-set-notify-status.is-on { color: #0071e3; }
.me-set-route-card--static .me-set-notify-status.is-on::before { display: none; }
.me-email-inline-card .me-set-notify-status.is-on { color: #0071e3; }
.me-email-inline-card .me-set-notify-status.is-on::before { display: none; }
.me-set-notify-status.is-off { color: #1d1d1f; }
.me-set-notify-status.is-pending::before,
.me-set-notify-status.is-paused::before,
.me-set-notify-status.is-error::before {
  width: 7px; height: 7px; border-radius: 50%; content: "";
}
.me-set-notify-status.is-pending::before { background: #ff9f0a; }
.me-set-notify-status.is-paused::before { background: #a1a1a6; }
.me-email-inline-card .me-set-notify-status.is-paused { color: #1d1d1f; }
.me-email-inline-card .me-set-notify-status.is-paused::before { display: none; }
.me-set-notify-status.is-error { color: #c7362f; }
.me-set-notify-status.is-error::before { background: #c7362f; }
/* 通知开关 —— 轨道走墨色阶（#1d1d1f = 按钮底），不引入强调色。
   视觉 38×22，命中区用 ::before 撑到 44px，指头点得到但不占版面。 */
.me-switch {
  position: relative;
  flex-shrink: 0;
  width: 38px;
  height: 22px;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.14);
  cursor: pointer;
  transition: background-color .15s ease;
}
.me-switch::before {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 44px;
  height: 44px;
  transform: translate(-50%, -50%);
  content: "";
}
.me-switch.is-on { background: #1d1d1f; }
.me-switch.is-readonly,
.me-switch.is-busy { cursor: default; }
.me-switch.is-busy { opacity: .5; }
.me-switch-knob {
  display: block;
  width: 18px;
  height: 18px;
  border-radius: 999px;
  background: #ffffff;
  transform: translateX(2px);
  transition: transform .15s ease-in-out;
}
.me-switch.is-on .me-switch-knob { transform: translateX(18px); }
@media (prefers-reduced-motion: reduce) {
  .me-switch,
  .me-switch-knob { transition: none; }
}

.me-set-route-group { display: flex; flex-direction: column; padding: 2px; }
.me-set-route-group .me-set-route-card { padding: 16px 18px; }

/* 设置首页直接编辑邮件通知，不再要求进入二级页面。 */
.me-email-inline-card { display: flex; flex-direction: column; border-radius: 16px; }
.me-email-inline-card > .me-set-route-card { padding-bottom: 13px; }
/* 一行两个控件：左边整块负责展开邮箱面板，右边开关负责订阅开关。
   hover 反馈只跟展开区走 —— 指头停在开关上时整行不该亮，那会暗示「点这里会展开」。 */
.me-email-inline-row:has(.me-email-inline-toggle:hover) { background: #f7f7f8; }
.me-email-inline-toggle {
  display: flex; align-items: center; gap: 14px; flex: 1; min-width: 0;
  padding: 0; border: 0; border-radius: 16px;
  background: transparent; color: inherit; font: inherit; text-align: left; cursor: pointer;
}
.me-email-inline-error {
  margin: 0 18px 12px;
  color: #c7362f;
  font-size: 13px;
  line-height: 18px;
}
.me-email-inline-arrow { transition: transform .24s cubic-bezier(.22, 1, .36, 1); }
.me-email-inline-arrow.is-open { transform: rotate(90deg); }
.me-email-inline-collapse {
  display: grid;
  grid-template-rows: 0fr;
  opacity: 0;
  transition:
    grid-template-rows .28s cubic-bezier(.22, 1, .36, 1),
    opacity .18s ease;
}
.me-email-inline-collapse.is-open { grid-template-rows: 1fr; opacity: 1; }
.me-email-inline-collapse-inner { min-height: 0; overflow: hidden; }
.me-email-inline-panel {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin: 0 18px 16px;
  padding-top: 0;
}
.me-email-inline-editor {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: start;
  gap: 10px;
}
.me-email-inline-editor > .me-field { margin: 0; }
.me-email-inline-editor > .me-email-primary {
  width: 81px;
  min-width: 81px;
  margin-top: 4px;
  margin-bottom: 0;
  padding-inline: 8px;
  white-space: nowrap;
}
@media (prefers-reduced-motion: reduce) {
  .me-email-inline-arrow,
  .me-email-inline-collapse { transition: none; }
}

/* 设置首页右下角复用收银台的 Specialist 头像、手写指引与呼吸光。
   桌面固定在视口边角；移动端回到文档流，避免盖住设置项。 */
.me-settings-specialist {
  position: fixed;
  right: calc(16px + env(safe-area-inset-right));
  bottom: calc(16px + env(safe-area-inset-bottom));
  z-index: 20;
  width: 220px;
  height: 84px;
  pointer-events: none;
}
.me-settings-specialist .tib-pay-specialist-avatar { pointer-events: auto; }
.me-settings-specialist--avatar-only {
  --me-specialist-magnet-x: 0px;
  --me-specialist-magnet-y: 0px;
  --me-specialist-magnet-duration: 300ms;
  --me-specialist-magnet-easing: cubic-bezier(0, 0, 0.7, 1);
  width: 64px;
  height: 64px;
}
.me-settings-specialist--avatar-only .tib-pay-specialist-avatar {
  right: 0;
  bottom: 0;
  width: 64px;
  height: 64px;
  padding: 5px;
}
@media (hover: hover) and (pointer: fine) {
  .me-settings-specialist--avatar-only {
    transform: translate3d(
      var(--me-specialist-magnet-x),
      var(--me-specialist-magnet-y),
      0
    );
    transition: transform var(--me-specialist-magnet-duration) var(--me-specialist-magnet-easing);
    will-change: transform;
  }
  .me-settings-specialist--avatar-only[data-magnetic-active="true"] {
    --me-specialist-magnet-duration: 300ms;
  }
  .me-settings-specialist--avatar-only[data-magnetic-active="true"][data-magnetic-settled="true"] {
    --me-specialist-magnet-duration: 140ms;
  }
}
@media (prefers-reduced-motion: reduce) {
  .me-settings-specialist--avatar-only {
    transform: none;
    transition: none;
    will-change: auto;
  }
}

@media (max-width: 900px) {
  .me-settings-specialist {
    position: relative;
    right: auto;
    bottom: auto;
    z-index: auto;
    width: 220px;
    height: 94px;
    margin-top: -18px;
    align-self: flex-end;
  }
  .me-settings-specialist--avatar-only .tib-pay-specialist-avatar {
    width: 56px;
    height: 56px;
  }
  .me-settings-specialist--avatar-only {
    position: fixed;
    right: calc(16px + env(safe-area-inset-right));
    bottom: calc(76px + env(safe-area-inset-bottom));
    z-index: 20;
    width: 56px;
    height: 56px;
    margin-top: 0;
    align-self: auto;
  }
}

/* 设置二级页统一标题。 */
.me-settings-detail-head { display: flex; align-items: flex-start; gap: 14px; }
.me-settings-back {
  width: 34px; height: 34px; display: grid; place-items: center; flex-shrink: 0;
  color: #1d1d1f; border-radius: 50%; text-decoration: none; box-shadow: inset 0 0 0 1px #e8e8ed;
  transition: background-color .16s ease, box-shadow .16s ease;
}
.me-settings-back:hover { background: #f7f7f8; box-shadow: inset 0 0 0 1px #c7c7cc; }
.me-settings-back svg { width: 16px; height: 16px; }

/* /team-manage/settings/email */
.me-email-settings-card,
.me-email-mode-card {
  display: flex;
  flex-direction: column;
  gap: 18px;
  padding: 20px;
}
.me-email-address-row,
.me-email-pending-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  min-height: 54px;
}
.me-email-pending-row {
  padding: 14px 16px;
  border-radius: 14px;
  background: #f7f7f8;
}
.me-email-pending-block { display: flex; flex-direction: column; gap: 7px; }
.me-email-address-copy {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 4px;
}
.me-email-address-value {
  overflow: hidden;
  color: #1d1d1f;
  font-size: 14px;
  line-height: 20px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.me-email-address-actions,
.me-email-inline-actions,
.me-email-editor-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-shrink: 0;
}
.me-email-verified {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #49785a;
  font-size: 12px;
  line-height: 18px;
  white-space: nowrap;
}
.me-email-verified::before {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #34c759;
  content: "";
}
.me-email-verified.is-error,
.me-email-delivery-warning { color: #c7362f; }
.me-email-verified.is-error::before { background: #c7362f; }
.me-email-delivery-warning { font-size: 12px; line-height: 18px; }
.me-email-editor {
  display: flex;
  min-height: 138px;
  flex-direction: column;
  gap: 14px;
}
.me-email-editor > .me-field { margin: 0; }
.me-email-primary {
  min-width: 126px;
  min-height: 34px;
  padding: 7px 16px;
  border: 0;
  border-radius: 999px;
  background: #2e84fa;
  color: #fff;
  font: inherit;
  font-size: 13px;
  font-weight: 500;
  line-height: 20px;
  cursor: pointer;
}
.me-email-primary:hover { opacity: .86; }
.me-email-primary:disabled { cursor: default; opacity: .42; }
.me-email-primary--unsubscribe {
  background: #f1f1f1;
  color: #1d1d1f;
}
.me-email-feedback {
  display: flex;
  align-items: center;
  min-height: 20px;
  font-size: 12px;
  line-height: 18px;
}
.me-email-action-error { color: #b91c1c; }
.me-email-action-success { color: #49785a; }
.me-email-mode-card > .me-field { margin: 0; }
.me-email-mode-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}
.me-email-mode {
  display: flex;
  min-height: 116px;
  align-items: flex-start;
  gap: 10px;
  padding: 15px 14px;
  border: 1px solid rgba(0, 0, 0, .08);
  border-radius: 14px;
  background: #fff;
  color: #1d1d1f;
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: border-color .16s ease, background-color .16s ease;
}
.me-email-mode:hover { border-color: rgba(0, 0, 0, .16); background: #fafafa; }
.me-email-mode.is-on { border-color: #1d1d1f; background: #f7f7f8; }
.me-email-mode:disabled { cursor: default; opacity: .62; }
.me-email-mode-mark {
  display: grid;
  width: 18px;
  height: 18px;
  place-items: center;
  flex-shrink: 0;
  border: 1px solid #c7c7cc;
  border-radius: 50%;
  color: transparent;
  font-size: 11px;
  line-height: 1;
}
.me-email-mode.is-on .me-email-mode-mark { border-color: #1d1d1f; background: #1d1d1f; color: #fff; }
.me-email-mode-copy { display: flex; min-width: 0; flex-direction: column; gap: 5px; }
.me-email-mode-title { font-size: 14px; font-weight: 500; line-height: 19px; }
.me-email-mode-desc { color: #86868b; font-size: 12px; line-height: 18px; }

/* /team-manage/settings/billing */
.me-billing { display: flex; flex-direction: column; gap: 28px; }
.me-billing-head { display: flex; align-items: flex-start; gap: 14px; }
.me-billing-back {
  width: 34px; height: 34px; display: grid; place-items: center; flex-shrink: 0;
  color: #1d1d1f; border: 1px solid #e8e8ed; border-radius: 50%; text-decoration: none;
  transition: border-color .18s ease, background-color .18s ease;
}
.me-billing-back:hover { border-color: #c7c7cc; background: #f7f7f8; }
.me-billing-back svg { width: 16px; height: 16px; }
.me-billing-title { margin: 0; font-size: 24px; line-height: 32px; font-weight: 500; color: #1d1d1f; }
.me-billing-sub { margin: 3px 0 0; font-size: 13px; line-height: 18px; color: #86868b; }
.me-billing-list { display: flex; flex-direction: column; gap: 26px; }
.me-billing-row { display: block; color: inherit; text-decoration: none; }
.me-billing-row-content { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 0; }
.me-billing-row:hover .me-billing-product-line h2 { color: #2e84fa; }
.me-billing-row-arrow { width: 16px; height: 16px; flex: 0 0 auto; color: #c7c7cc; transition: color .15s, transform .15s; }
.me-billing-row:hover .me-billing-row-arrow { color: #1d1d1f; transform: translateX(2px); }
.me-billing-main { min-width: 0; display: flex; flex: 1; flex-direction: column; gap: 5px; }
.me-billing-product-line { display: flex; align-items: center; gap: 10px; min-width: 0; }
.me-billing-product-line h2 { margin: 0; overflow: hidden; color: #1d1d1f; font-size: 15px; font-weight: 500; line-height: 20px; text-overflow: ellipsis; white-space: nowrap; }
.me-billing-status { flex-shrink: 0; font-size: 11px; font-weight: 500; line-height: 16px; }
.me-billing-status.is-paid { color: #18794e; }
.me-billing-status.is-pending { color: #9a6700; }
.me-billing-status.is-closed { color: #6e6e73; }
.me-billing-status.is-refunded { color: #175cd3; }
.me-billing-meta, .me-billing-order-no { margin: 0; color: #86868b; font-size: 12px; line-height: 17px; }
.me-billing-order-no { overflow: hidden; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; text-overflow: ellipsis; white-space: nowrap; }
.me-billing-amount { display: flex; flex-shrink: 0; flex-direction: column; align-items: flex-end; gap: 4px; }
.me-billing-amount strong { color: #1d1d1f; font-size: 15px; line-height: 20px; font-weight: 500; }
.me-billing-amount span { color: #86868b; font-size: 12px; line-height: 17px; }
.me-billing-state {
  min-height: 220px; display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 8px;
  color: #86868b; font-size: 14px; text-align: center;
}
.me-billing-state p { margin: 0; color: #1d1d1f; }
.me-billing-state span { font-size: 13px; }
.me-billing-state--error { color: #b42318; }
.me-billing-empty-icon { width: 36px; height: 36px; display: grid; place-items: center; color: #86868b; font-size: 16px !important; }
.me-billing-scroll-sentinel { min-height: 48px; display: grid; place-items: center; color: #86868b; font-size: 13px; }
.me-billing-more { align-self: center; padding: 9px 18px; color: #1d1d1f; background: #fff; border: 1px solid #d2d2d7; border-radius: 999px; cursor: pointer; }
.me-billing-more:hover { border-color: #1d1d1f; }
.me-billing-more:disabled { opacity: .5; cursor: default; }
.me-billing-inline-error { margin: -12px 0 0; color: #b42318; font-size: 13px; text-align: center; }
.me-billing-detail { max-width: 760px; }
.me-billing-detail-section { display: flex; flex-direction: column; gap: 20px; }
.me-billing-result {
  padding: 24px; display: flex; flex-direction: column; align-items: center; gap: 7px;
  border: 1px solid #ececef; border-radius: 18px; background: #fafafa; text-align: center;
}
.me-billing-result-status { font-size: 13px; font-weight: 500; line-height: 18px; }
.me-billing-result strong { color: #1d1d1f; font-size: 30px; font-weight: 600; line-height: 38px; letter-spacing: -.02em; }
.me-billing-result p { max-width: 480px; margin: 0; color: #68686d; font-size: 12px; line-height: 18px; }
.me-billing-result.is-paid .me-billing-result-status { color: #18794e; }
.me-billing-result.is-pending .me-billing-result-status { color: #9a6700; }
.me-billing-result.is-closed .me-billing-result-status { color: #6e6e73; }
.me-billing-result.is-refunded .me-billing-result-status { color: #175cd3; }
.me-billing-detail-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; }
.me-billing-detail-heading h2 { margin: 0; color: #1d1d1f; font-size: 20px; font-weight: 500; line-height: 28px; }
.me-billing-detail-heading p { margin: 4px 0 0; color: #86868b; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; line-height: 17px; overflow-wrap: anywhere; }
.me-billing-order-copy { margin-top: 4px; display: flex; align-items: baseline; flex-wrap: wrap; gap: 5px 9px; }
.me-billing-order-copy span { color: #86868b; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; line-height: 17px; overflow-wrap: anywhere; }
.me-billing-order-copy button, .me-billing-sync-notice button {
  appearance: none; padding: 0; border: 0; background: transparent; color: #2e84fa;
  font: inherit; font-size: 11px; cursor: pointer;
}
.me-billing-detail-list { margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 36px; }
.me-billing-detail-list > div { min-width: 0; }
.me-billing-detail-list dt { margin: 0 0 4px; color: #86868b; font-size: 12px; line-height: 17px; }
.me-billing-detail-list dd { margin: 0; color: #1d1d1f; font-size: 14px; line-height: 20px; overflow-wrap: anywhere; }
.me-billing-sync-notice {
  margin: -4px 0 0; display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 4px 8px;
  color: #8a4b08; font-size: 12px; line-height: 18px;
}
.me-billing-detail-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.me-billing-detail-action-error { margin: -8px 0 0; color: #b42318; font-size: 13px; line-height: 18px; }

/* ── 白色描边 pill（退出登录 / 复制 / 作废）── */
.me-set-pill {
  display: inline-flex; align-items: center; gap: 6px;
  background: #ffffff; border: 1px solid #ececef; border-radius: 999px;
  -webkit-corner-shape: squircle; corner-shape: squircle;
  padding: 8px 14px 8px 13px; font: inherit; font-size: 13px; line-height: 18px;
  color: #1d1d1f; cursor: pointer; white-space: nowrap;
  transition: border-color 0.15s, background 0.15s;
}
.me-set-pill:hover { border-color: #1d1d1f; }
.me-set-pill svg { width: 14px; height: 14px; flex-shrink: 0; color: #86868b; }
.me-set-pill:disabled { opacity: 0.5; cursor: default; }
/* 移除成员：红字 pill（白底不填充，hover 只上描边色） */
.me-set-pill--danger { color: #c7362f; }
.me-set-pill--danger svg { color: #c7362f; }
.me-set-pill--danger:hover { border-color: #c7362f; }

/* ── 团队成员 ── */
.me-set-members { display: flex; flex-direction: column; padding: 4px; }
.me-set-member { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 14px; border-radius: 14px; }
.me-set-member-left { display: flex; flex: 1; align-items: center; gap: 12px; min-width: 0; }
.me-set-avatar {
  width: 32px; height: 32px; border-radius: 999px; flex-shrink: 0; overflow: hidden;
  background: #1d1d1f; color: #ffffff; font-size: 12.8px; font-weight: 500;
  display: inline-flex; align-items: center; justify-content: center;
}
.me-set-avatar img { width: 100%; height: 100%; object-fit: cover; }
.me-set-member-name { font-size: 15px; line-height: 20px; color: #1d1d1f; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.me-set-member-chips { display: flex; align-items: center; gap: 12px; flex-shrink: 0; }
.me-set-member-side { display: flex; align-items: center; justify-content: flex-end; gap: 10px; flex-shrink: 0; }
.me-set-member-role,
.me-set-self-label { display: inline-flex; align-items: center; gap: 5px; color: #68686d; font-size: 12px; line-height: 18px; white-space: nowrap; }
.me-set-member-role svg,
.me-set-self-label svg { width: 14px; height: 14px; flex-shrink: 0; }
.me-set-self-label { color: #86868b; }
.me-set-member-actions { display: inline-flex; align-items: center; }
.me-set-more {
  appearance: none; width: 34px; height: 34px; display: grid; place-items: center; padding: 0;
  border: 0; border-radius: 10px; background: transparent; color: #86868b; cursor: pointer;
  transition: color .15s ease, background-color .15s ease;
}
.me-set-more:hover,
.me-set-more[aria-expanded="true"] { color: #1d1d1f; background: #f2f2f3; }
.me-set-more:disabled { opacity: .45; cursor: default; }
.me-set-more svg { width: 16px; height: 16px; }
/* ⚠️ 双类 .me-pop.me-set-action-pop 是必须的（0,3,0）：me-modal.css 里给「没有 header /
   没有 footer 的浮窗」补内距的两条规则用了 :not(:has(...))，特异性取内部选择器后同样是
   (0,3,0)，单类写法会被它们压掉，菜单就变成上下 20、左右 6。本表在 me-modal.css 之后
   加载，同分靠源码顺序赢。菜单四边一律 6，不接受那两条补偿。 */
.me-pop.me-set-action-pop .me-pop-body { padding: 6px; gap: 0; overflow: visible; }
.me-set-action-menu { display: flex; flex-direction: column; gap: 2px; }
/* 菜单项可以是 button（动作）也可以是 a（导航，如侧栏账号菜单里的设置 / 返回找工地图），
   两者外观必须一致，所以选择器一并覆盖。 */
.me-set-action-menu a,
.me-set-action-menu button {
  appearance: none; width: 100%; display: flex; align-items: center; gap: 9px; padding: 9px 10px;
  border: 0; border-radius: 9px; background: transparent; color: #1d1d1f; font: inherit;
  font-size: 13px; line-height: 18px; text-align: left; white-space: nowrap; cursor: pointer;
}
.me-set-action-menu a { text-decoration: none; }
.me-set-action-menu a:hover,
.me-set-action-menu button:hover { background: #f5f5f5; }
.me-set-action-menu button:disabled { opacity: .5; cursor: default; }
.me-set-action-menu button.is-danger { color: #c7362f; }
.me-set-action-menu svg { width: 14px; height: 14px; flex-shrink: 0; }

/* ── 邀请协作者 ── */
.me-set-invite-head { display: flex; align-items: center; gap: 16px; }
.me-set-invite-head .me-set-head { flex: 1; min-width: 0; }
/* Codex 风格的浅灰动作按钮：灰底、深色文字，hover 时只加深底色。 */
.me-set-invite-btn {
  display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0;
  background: #f5f5f5; color: #1d1d1f; border: 0; border-radius: 12px;
  -webkit-corner-shape: squircle; corner-shape: squircle;
  padding: 10px 18px; font: inherit; font-size: 14px; font-weight: 500; line-height: 20px; cursor: pointer;
  transition: background-color 0.15s ease;
}
.me-set-invite-btn:hover { background: #ececef; }
.me-set-invite-btn:active { background: #e5e5e7; }
.me-set-invite-btn:focus-visible { outline: 2px solid #1d1d1f; outline-offset: 2px; }
.me-set-invite-btn svg { width: 14px; height: 14px; color: currentColor; }

/* 待接受的邀请列表 */
.me-set-pending { display: flex; flex-direction: column; gap: 10px; padding: 16px 18px; }
.me-set-pending-label { margin: 0; font-size: 13px; font-weight: 500; line-height: 18px; color: #86868b; letter-spacing: 0.52px; }
.me-set-pending-empty { margin: 0; font-size: 13px; line-height: 18px; color: #a1a1a6; }
.me-set-invite-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 6px 0; }
.me-set-invite-left { display: flex; align-items: center; gap: 14px; min-width: 0; }
.me-set-invite-linkic {
  width: 40px; height: 40px; border-radius: 999px; flex-shrink: 0;
  background: #ffffff; border: 1px dashed #ececef;
  display: inline-flex; align-items: center; justify-content: center;
}
.me-set-invite-linkic svg { width: 18px; height: 18px; color: #86868b; }
.me-set-invite-info { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.me-set-invite-info-top { display: flex; align-items: center; gap: 8px; }
.me-set-invite-title { font-size: 15px; font-weight: 500; line-height: 20px; color: #1d1d1f; white-space: nowrap; }
.me-set-invite-meta { font-size: 13px; line-height: 18px; color: #86868b; }
.me-set-invite-side { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.me-set-invite-err { margin: 0; font-size: 12px; color: #b91c1c; }

/* ── 团队操作 / 危险操作 ── */
.me-set-team-operations { display: flex; flex-direction: column; padding: 4px; }
.me-set-operation-row {
  display: flex; align-items: center; justify-content: space-between; gap: 20px;
  min-height: 70px; padding: 12px 14px; border-radius: 14px;
}
.me-set-operation-copy { display: flex; min-width: 0; flex-direction: column; gap: 3px; }
.me-set-danger-copy { color: #c7362f; }

.me-credit-wallet-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.me-credit-wallet-card {
  min-width: 0; padding: 18px; border: 1px solid rgba(0, 0, 0, .04); border-radius: 15px;
  background: #fff; box-shadow: 0 1px 2px rgba(0, 0, 0, .03), 0 8px 24px -12px rgba(0, 0, 0, .06);
}
.me-credit-wallet-card > span { display: block; color: #6e6e73; font-size: 13px; }
.me-credit-wallet-card > strong { display: block; margin: 7px 0 5px; color: #1d1d1f; font-size: 32px; line-height: 1; }
.me-credit-wallet-card > small { display: block; color: #86868b; font-size: 12px; line-height: 18px; }
.me-credit-expiry-schedule { margin-top: 11px; color: #6e6e73; font-size: 12px; }
.me-credit-expiry-schedule summary { width: fit-content; cursor: pointer; }
.me-credit-expiry-schedule ul { display: grid; gap: 5px; margin: 9px 0 0; padding: 0; list-style: none; }
.me-credit-expiry-schedule li { display: flex; justify-content: space-between; gap: 12px; }
.me-credit-expiry-schedule time { color: #86868b; text-align: right; }
.me-credit-expiry-notice { margin: 12px 0 0; padding: 11px 13px; border-radius: 10px; color: #7a4b00; background: #fff8e8; font-size: 13px; }
.me-credit-product-list, .me-credit-ledger {
  min-height: 112px; overflow: hidden; border: 1px solid rgba(0, 0, 0, .04); border-radius: 15px;
  background: #fff; box-shadow: 0 1px 2px rgba(0, 0, 0, .03), 0 8px 24px -12px rgba(0, 0, 0, .06);
}
.me-credit-product, .me-credit-ledger-row { padding: 17px 18px; }
.me-credit-product + .me-credit-product, .me-credit-ledger-row + .me-credit-ledger-row { border-top: 1px solid rgba(0, 0, 0, .055); }
.me-credit-product { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.me-credit-product > div:first-child { display: flex; min-width: 0; flex-direction: column; gap: 4px; }
.me-credit-product-title { display: flex; align-items: center; gap: 7px; color: #6e6e73; font-size: 12px; }
.me-credit-product-title em {
  padding: 2px 7px; border-radius: 999px; background: #eef7f1; color: #18794e;
  font-size: 11px; font-style: normal; font-weight: 650;
}
.me-credit-product-quantity { color: #1d1d1f; font-size: 16px; font-weight: 650; }
.me-credit-product-action { display: flex; flex: 0 0 auto; align-items: center; gap: 14px; }
.me-credit-product-action > strong { min-width: 68px; text-align: right; }
.me-credit-product-action > small { display: flex; flex-direction: column; color: #86868b; font-size: 11px; line-height: 16px; }
.me-credit-product-action del { color: #b0b0b4; }
.me-credit-catalog-state { margin: 0; padding: 28px 18px; color: #86868b; font-size: 13px; text-align: center; }
.me-credit-catalog-state.is-error, .me-credit-field-error { color: #c7362f; }
.me-credit-field-error { display: block; margin-top: 3px; font-size: 12px; line-height: 17px; }
.me-credit-ledger-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px 16px; }
.me-credit-ledger-main { display: flex; min-width: 0; flex-direction: column; gap: 3px; }
.me-credit-ledger-main strong { color: #1d1d1f; font-size: 14px; }
.me-credit-ledger-main span, .me-credit-ledger-main small { overflow-wrap: anywhere; color: #86868b; font-size: 12px; line-height: 17px; }
.me-credit-ledger-side { display: flex; align-items: center; gap: 10px; }
.me-credit-ledger-side b { color: #6e6e73; font-size: 14px; }
.me-credit-ledger-side b.is-positive { color: #18794e; }
.me-credit-appeal-form { display: grid; grid-column: 1 / -1; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 12px; padding-top: 8px; }
.me-credit-appeal-form label { display: flex; min-width: 0; flex-direction: column; gap: 5px; color: #6e6e73; font-size: 12px; }
.me-credit-appeal-form select, .me-credit-appeal-form textarea {
  width: 100%; min-height: 40px; padding: 9px 10px; border: 1px solid rgba(0, 0, 0, .12); border-radius: 9px;
  color: #1d1d1f; background: #fff; font: inherit;
}
.me-credit-appeal-form textarea { min-height: 76px; resize: vertical; }
.me-credit-appeal-form > div { display: flex; grid-column: 1 / -1; justify-content: flex-end; gap: 8px; }
.me-credit-success { margin: 10px 0 0; color: #18794e; font-size: 13px; }
.me-modal-root.me-credit-shortage-root {
  background: rgba(15, 23, 42, .5); -webkit-backdrop-filter: none; backdrop-filter: none; animation: none;
}
.me-credit-shortage-modal {
  width: min(94vw, 960px); min-height: min(520px, calc(100dvh - 48px)); max-height: calc(100dvh - 48px); display: flex; flex-direction: column; overflow: hidden;
  border: 1px solid rgba(0, 0, 0, .055); border-radius: 24px; background: #fff; outline: none;
  box-shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 30px 80px -20px rgba(0, 0, 0, .35);
  -webkit-corner-shape: squircle; corner-shape: squircle;
  /* ⚠️ 这个弹窗没套 .me-modal-dialog，所以之前只有遮罩在淡入、白面板是硬弹出来的 ——
     那正是「唐突」的来源。这里复用全站弹窗同一条 me-modal-rise（定义在 me-modal.css，
     keyframes 是全局的），不另造一套：同一个产品里两种弹窗进场手感不一致，比没有动效更廉价。 */
  /* .26 而不是全站默认的 .22：这个面板 960×520，比一般弹窗大不少，
     同样时长会显得像被弹射出来（§5.2「元素越大越慢」）。 */
  animation: me-modal-rise .26s cubic-bezier(.2, 0, 0, 1);
}
.me-credit-shortage-head {
  display: flex; flex: 0 0 auto; align-items: flex-start; justify-content: space-between; gap: 20px; padding: 26px 28px 18px;
}
.me-credit-shortage-head > div { min-width: 0; }
/* 不加粗：层级已经由 #68686d 的次级墨色 + 12px 字号交代清楚了，再上字重就是同一件事
   说两遍（SKILL.md §3：字重表达角色，不表达层级）。 */
.me-credit-shortage-kicker {
  display: flex; align-items: center; margin-bottom: 6px; color: #68686d;
  font-size: 12px; line-height: 18px;
}
.me-credit-shortage-modal h2 { margin: 0; color: #1d1d1f; font-size: 24px; font-weight: 650; line-height: 1.25; letter-spacing: -.02em; }
.me-credit-shortage-head .me-modal-x { width: 32px; height: 32px; border: 0; }
.me-credit-shortage-head .me-modal-x:disabled { opacity: .48; cursor: default; }
/* 上下留白取 32（22 的 1.5 倍是 33，落到间距阶梯上的 32；差 1px 看不出来，但留在阶梯上
   下次有人调这里就不用再猜）。左右保持 28，跟 head / foot 的 28 对齐成一条竖直边。 */
.me-credit-shortage-body { flex: 1; min-height: 0; display: flex; align-items: center; overflow-y: auto; padding: 32px 28px; }
.me-credit-shortage-products { width: 100%; min-height: 254px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.me-credit-shortage-product {
  min-width: 0; padding: 17px; display: flex; flex-direction: column;
  border: 1px solid rgba(0, 0, 0, .065); border-radius: 16px; background: #fff;
  box-shadow: 0 1px 2px rgba(0, 0, 0, .025), 0 8px 24px -16px rgba(0, 0, 0, .08);
}
.me-credit-shortage-product.is-recommended {
  border-color: rgba(29, 29, 31, .2); box-shadow: 0 1px 2px rgba(0, 0, 0, .035), 0 12px 32px -18px rgba(0, 0, 0, .18);
}
.me-credit-shortage-product-head { min-height: 23px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.me-credit-shortage-product-head > span { color: #86868b; font-size: 12px; font-weight: 500; }
.me-credit-shortage-product-head em {
  padding: 2px 8px; border-radius: 999px; background: #2e84fa; color: #fff;
  font-size: 10px; font-style: normal; font-weight: 600; line-height: 17px;
}
.me-credit-shortage-quantity { display: flex; align-items: baseline; gap: 6px; margin-top: 13px; }
.me-credit-shortage-quantity strong { color: #1d1d1f; font-size: 34px; font-weight: 650; line-height: 1; letter-spacing: -.035em; }
.me-credit-shortage-quantity span { color: #4a4a4f; font-size: 13px; font-weight: 550; }
.me-credit-shortage-product > p { min-height: 36px; margin: 8px 0 0; color: #86868b; font-size: 11px; line-height: 18px; }
.me-credit-shortage-price { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-top: 16px; }
.me-credit-shortage-price strong { color: #1d1d1f; font-size: 20px; font-weight: 650; line-height: 1.2; }
.me-credit-shortage-price span { color: #86868b; font-size: 11px; white-space: nowrap; }
.me-credit-shortage-saving { min-height: 17px; margin-top: 6px; color: #18794e; font-size: 11px; font-weight: 600; line-height: 17px; }
.me-credit-shortage-saving.is-placeholder { color: #98989d; font-weight: 400; }
.me-credit-shortage-product .me-btn { width: 100%; justify-content: center; margin-top: 16px; padding: 9px 14px; }
.me-credit-shortage-product .me-btn:disabled { opacity: .5; cursor: wait; }
/* 未完成企业认证 → 职位通行证长期不可买，不是「正在处理」，光标别说等一下。 */
.me-credit-shortage-product .me-btn.is-locked:disabled { cursor: not-allowed; }
.me-credit-shortage-product .me-credit-field-error { margin: 7px 1px 0; }
.me-credit-shortage-product.is-recommended .me-btn--primary {
  border-color: #2e84fa; background: #2e84fa; color: #fff; box-shadow: 0 6px 16px rgba(46, 132, 250, .18);
}
.me-credit-shortage-product.is-recommended .me-btn--primary:hover:not(:disabled) {
  border-color: #1f73e8; background: #1f73e8; opacity: 1;
}
.me-credit-shortage-product.is-recommended .me-btn--primary:focus-visible {
  outline: 3px solid rgba(46, 132, 250, .22); outline-offset: 2px;
}
.me-credit-shortage-job-product { background: #fff; }
.me-credit-shortage-job-product .me-credit-shortage-product-head > span {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.me-credit-shortage-job-product .me-credit-shortage-product-head em {
  flex: 0 0 auto; background: #fff; color: #68686d; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .075);
}
/* 商品区骨架：与真实卡同构（见 CandidateCreditShortageModal 的 ProductSkeleton），
   高度由同一套规则撑出来，所以揭示那一下不跳（SKILL.md §4）。
   只给灰条上色，盒模型完全沿用 .me-credit-shortage-product。 */
.me-credit-shortage-skel .me-credit-skel-bar {
  display: block; height: 11px; border-radius: 6px; background: #f0f0f0;
}
.me-credit-shortage-skel .me-credit-skel-bar--num { width: 84px; height: 34px; border-radius: 8px; }
.me-credit-shortage-skel .me-credit-skel-bar--price { width: 96px; height: 20px; border-radius: 7px; }
.me-credit-shortage-skel .me-credit-skel-btn {
  display: block; width: 100%; height: 38px; margin-top: 16px; border-radius: 999px; background: #f0f0f0;
}
/* 整张卡一起呼吸，条与条不各自闪 —— 那会看起来像好几个东西在分别加载。
   只动 opacity，且挂在单张卡上，不碰全内容高度的容器（AGENTS.md 移动端渲染红线）。 */
.me-credit-shortage-skel {
  /* design-ok: 持续循环的加载指示，非交互动效，不适用 §5.2 的 300ms 上限 */
  animation: me-credit-shortage-skel-pulse 1.4s ease-in-out infinite;
}
@keyframes me-credit-shortage-skel-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .55; } }
@media (prefers-reduced-motion: reduce) { .me-credit-shortage-skel { animation: none; } }

/* ── 这个弹窗的动效编排 ──────────────────────────────────────────────────────
   原则：**一次进场只该读到一个动作**。面板是「正在进来」的那个东西，已经在里面的
   控件（标题、关闭键、优惠券入口、Specialist）应该跟着它一起来，不各自演一遍入场 ——
   否则用户读到的是「弹窗来了，然后又有几个小东西陆续弹进来」，就是那种廉价感。
   只有**真正后到**的内容才配拥有自己的揭示，这里只有一处：异步加载的商品卡。

   于是整场只有两个动作：
     1. 遮罩淡入（.22s）+ 面板升起（.26s）—— 同时起步，一个整体
     2. 商品数据到达 → 骨架换真卡，逐张淡入（.2s，错开 40ms）
   Specialist 的呼吸光保留：那是持续的注意力提示，不是入场动作，不参与这条时间轴。
   ────────────────────────────────────────────────────────────────────────── */

/* Specialist 头像与手写引导在独立支付页（.tib-pay）里是主角，自带 .38s/.36s 的回弹入场
   （cubic-bezier(.22,1,.36,1)，延迟 .3s/.48s）。那套时间轴和曲线族跟本弹窗完全不同，
   放进来会读成「另一个应用迟到了还弹了一下」。这里按弹窗作用域关掉它们的入场，
   只留呼吸光；独立支付页不受影响。 */
.me-credit-shortage-specialist .tib-pay-specialist-avatar {
  /* design-ok: 持续循环的呼吸光，非交互动效，不适用 §5.2 的 300ms 上限 */
  animation: tib-pay-specialist-breathe 3.4s .68s ease-in-out infinite;
}
.me-credit-shortage-specialist .tib-pay-specialist-guide {
  animation: none;
}

/* 商品卡落位 —— 骨架撤下、真实卡挂上来的那一帧。
   只动 opacity + 6px 微位移：布局高度前面刚对齐好（同构骨架），动效绝不能再把它弄乱，
   所以不碰任何影响布局的属性（SKILL.md §5.3）。backwards 让元素在动画开始前就占好位，
   避免「先塌一下再撑开」。 */
.me-credit-shortage-products > .me-credit-shortage-product:not(.me-credit-shortage-skel),
.me-credit-shortage-products > .me-credit-shortage-empty {
  animation: me-credit-shortage-card-in .2s cubic-bezier(.2, 0, 0, 1) backwards;
}
/* 逐张错开 40ms。三张同时亮是「刷」的一下，读不出层次；错开一点才读得出「卡片落位」。
   最后一张 80ms 起步、280ms 收尾，仍在 §5.2 的 300ms 硬上限内。 */
.me-credit-shortage-products > .me-credit-shortage-product:not(.me-credit-shortage-skel):nth-child(2) { animation-delay: 40ms; }
.me-credit-shortage-products > .me-credit-shortage-product:not(.me-credit-shortage-skel):nth-child(3) { animation-delay: 80ms; }
@keyframes me-credit-shortage-card-in {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: translateY(0); }
}
/* 前庭功能障碍用户会因位移动画真实眩晕 —— 这是无障碍要求不是偏好（§5.3）。 */
@media (prefers-reduced-motion: reduce) {
  .me-credit-shortage-modal,
  .me-credit-shortage-products > .me-credit-shortage-product,
  .me-credit-shortage-products > .me-credit-shortage-empty { animation: none; }
}

.me-credit-shortage-job-state {
  min-height: 254px; align-items: center; justify-content: center; gap: 9px; color: #86868b; font-size: 12px; text-align: center;
}
.me-credit-shortage-job-state.is-error { flex-direction: column; color: #c7362f; }
.me-credit-shortage-job-state button { appearance: none; padding: 0; border: 0; background: transparent; color: #1d1d1f; font: inherit; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.me-credit-shortage-loading, .me-credit-shortage-empty {
  min-height: 254px; grid-column: 1 / -1; margin: 0; display: flex; align-items: center; justify-content: center;
  gap: 9px; border: 1px solid rgba(0, 0, 0, .05); border-radius: 16px; color: #86868b; font-size: 13px;
}
.me-credit-shortage-loading > span, .me-credit-shortage-job-state > span[aria-hidden] {
  width: 15px; height: 15px; border: 2px solid #e2e2e5; border-top-color: #68686d; border-radius: 999px;
  animation: me-credit-shortage-spin .8s linear infinite;
}
.me-credit-shortage-empty.is-error { flex-direction: column; color: #c7362f; }
.me-credit-shortage-empty button { appearance: none; padding: 0; border: 0; background: transparent; color: #1d1d1f; font: inherit; font-size: 12px; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.me-credit-shortage-foot {
  flex: 0 0 auto; min-height: 76px; padding: 10px 28px 12px; display: flex; align-items: center; justify-content: space-between; gap: 24px;
}
.me-credit-shortage-coupon { width: min(100%, 390px); min-height: 42px; display: flex; align-items: center; }
.me-credit-shortage-specialist { position: relative; flex: 0 0 220px; height: 64px; }
.me-credit-shortage-specialist .tib-pay-specialist-avatar { right: 0; bottom: 0; width: 56px; height: 56px; }
.me-credit-shortage-specialist .tib-pay-specialist-guide { right: 48px; bottom: 24px; }
.me-modal-root.me-credit-checkout-root { z-index: 55; }
.me-credit-checkout-root .tib-pay { outline: none; }
@keyframes me-credit-shortage-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .me-credit-shortage-loading > span, .me-credit-shortage-job-state > span[aria-hidden] { animation: none; } }

/* ── 邀请弹窗（Figma 564:4015）── */
.me-set-modal-root {
  position: fixed; inset: 0; z-index: 60;
  background: rgba(15, 23, 42, 0.3);
  display: flex; align-items: center; justify-content: center; padding: 24px;
  animation: me-modal-fade 0.18s cubic-bezier(.2, 0, 0, 1);
}
.me-set-modal {
  background: #ffffff; width: 520px; max-width: 100%;
  border-radius: 24px; -webkit-corner-shape: squircle; corner-shape: squircle;
  padding: 28px; display: flex; flex-direction: column; gap: 22px;
  box-shadow: 0 30px 40px rgba(0, 0, 0, 0.35);
}
.me-set-modal-title { margin: 0; font-size: 15px; line-height: 26px; color: #1d1d1f; }
.me-set-modal-fields { display: flex; flex-direction: column; gap: 22px; }
.me-set-field { display: flex; flex-direction: column; gap: 8px; }
.me-set-field-label { font-size: 13px; line-height: 18px; color: #86868b; }
.me-set-select { position: relative; width: 100%; }
.me-set-select select {
  appearance: none; -webkit-appearance: none; width: 100%; font: inherit;
  background: #ffffff; border: 1px solid #ececef; border-radius: 10px;
  -webkit-corner-shape: squircle; corner-shape: squircle;
  padding: 11px 38px 11px 14px; font-size: 15px; line-height: 21px; color: #1d1d1f; cursor: pointer;
}
.me-set-select select:focus { outline: none; border-color: #1d1d1f; }
.me-set-select-chev {
  position: absolute; right: 14px; top: 50%; transform: translateY(-50%);
  width: 16px; height: 16px; color: #86868b; pointer-events: none; display: inline-flex;
}
.me-set-modal-submit {
  background: #2e84fa; color: #ffffff; border: 0; width: 100%;
  border-radius: 12px; -webkit-corner-shape: squircle; corner-shape: squircle;
  padding: 13px 18px; font: inherit; font-size: 15px; font-weight: 500; line-height: 21px; cursor: pointer;
  transition: opacity 0.15s;
}
.me-set-modal-submit:hover { opacity: 0.85; }
.me-set-modal-submit:disabled { opacity: 0.5; cursor: not-allowed; }
.me-set-modal-err { margin: 0; font-size: 13px; color: #b91c1c; }

@media (max-width: 720px) {
  .me-set { gap: 34px; }
  .me-set-acct-row,
  .me-set-route-card { padding: 16px; }
  .me-set-route-group .me-set-route-card { padding: 15px 14px; }
  .me-set-route-desc { white-space: normal; }
  .me-set-member { gap: 10px; padding: 11px 10px; }
  .me-set-member-left { gap: 9px; }
  .me-set-member-role svg { display: none; }
  .me-set-operation-row { align-items: flex-start; flex-direction: column; gap: 12px; padding: 14px 12px; }
  .me-set-operation-row > button { align-self: flex-end; }
  .me-credit-wallet-grid { grid-template-columns: 1fr; }
  .me-credit-product { align-items: flex-start; flex-direction: column; }
  .me-credit-product-action { width: 100%; justify-content: space-between; }
  .me-credit-ledger-row { grid-template-columns: minmax(0, 1fr); }
  .me-credit-ledger-side { justify-content: space-between; }
  .me-credit-appeal-form { grid-template-columns: 1fr; }
  .me-credit-appeal-form > div { grid-column: 1; }
  .me-modal-root.me-credit-shortage-root { padding: 12px; }
  .me-credit-shortage-modal { width: 100%; max-height: calc(100dvh - 24px); border-radius: 20px; }
  .me-credit-shortage-head { padding: 22px 20px 16px; }
  .me-credit-shortage-modal h2 { font-size: 22px; }
  .me-credit-shortage-body { align-items: flex-start; padding: 20px; }
  .me-credit-shortage-products { grid-template-columns: 1fr; }
  .me-credit-shortage-product.is-recommended { order: -1; }
  .me-credit-shortage-product { padding: 16px; }
  .me-credit-shortage-product > p { min-height: 0; }
  .me-credit-shortage-price { margin-top: 13px; }
  .me-credit-shortage-foot { min-height: 72px; align-items: center; padding: 10px 20px 12px; gap: 10px; }
  .me-credit-shortage-coupon { min-width: 0; }
  .me-credit-shortage-specialist { flex-basis: 62px; }
  .me-credit-shortage-specialist .tib-pay-specialist-guide { display: none; }
  .me-modal-root.me-credit-checkout-root { padding: 12px; }
  .me-set-invite-row { flex-direction: column; align-items: stretch; gap: 10px; }
  .me-set-invite-side { justify-content: flex-end; }
  .me-email-settings-card,
  .me-email-mode-card { padding: 17px 16px; }
  .me-email-address-row,
  .me-email-pending-row { align-items: stretch; flex-direction: column; gap: 12px; }
  .me-email-address-actions,
  .me-email-inline-actions { justify-content: flex-end; }
  .me-email-mode-list { grid-template-columns: 1fr; }
  .me-email-mode { min-height: 0; }
  .me-email-inline-panel { margin: 0 14px 14px; }
  .me-email-inline-editor {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
  }
  .me-email-inline-editor > .me-email-primary {
    width: 84px;
    min-width: 84px;
    padding-inline: 8px;
  }
  .me-billing { gap: 22px; }
  .me-billing-row-content { align-items: flex-start; gap: 12px; }
  .me-billing-product-line { align-items: flex-start; flex-direction: column; gap: 6px; }
  .me-billing-amount strong { font-size: 14px; }
  .me-billing-row-arrow { margin-top: 2px; }
  .me-billing-result { padding: 20px 16px; }
  .me-billing-result strong { font-size: 26px; line-height: 34px; }
  .me-billing-detail-list { grid-template-columns: 1fr; gap: 15px; }
}

/* ── Bonjour 精选分组（JOB-65）—— 职位投递弹窗左栏列表里的置顶分组头 ── */
.me-sig-group {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 12px 16px 8px;
  font-size: 12px;
  font-weight: 400;
  color: #86868b;
  letter-spacing: 0.01em;
}
/* Bonjour 精选头：复刻设计稿 779:2173 —— sparkle + 渐变文字（PingFang SC Semibold 15px） */
.me-sig-group--curated {
  gap: 6px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0;
  background-image: linear-gradient(159deg, #FF6B6B 8.5%, #4F9CFF 50%, #B987FF 91.5%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.me-sig-group-spark {
  display: inline-flex;
  flex: 0 0 auto;
}

/* ── 账号菜单的二级视图切换（一级菜单 ⇄ 切换团队）──────────────────────────
   同一个浮窗换内容，不是新开浮窗，所以没有浮窗自带的进场动画 —— 不加动效的话
   内容会硬切，用户不容易意识到自己钻进/退出了一层。
   方向跟着操作走：进二级从右侧滑入（呼应入口那个 › ），返回从左侧滑入。
   只动 transform / opacity（§5.3）；220ms 落在弹窗档（§5.2 的 200–300ms）；
   曲线用品牌 ease-out —— 这是进场，不是位移（§5.1 决策树）。 */
.me-pop-view {
  animation: me-pop-view-in 220ms cubic-bezier(0.2, 0, 0, 1);
}
.me-pop-view.is-back {
  animation-name: me-pop-view-in-back;
}
@keyframes me-pop-view-in {
  from { opacity: 0; transform: translateX(12px); }
  to { opacity: 1; transform: none; }
}
@keyframes me-pop-view-in-back {
  from { opacity: 0; transform: translateX(-12px); }
  to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .me-pop-view { animation: none; }
}
