/* ─────────── Modal（弹窗）—— 新建 JD 等场景 ───────────
   关键布局规则（DESIGN_SYSTEM.md §1.9）：
   1. dialog 被 max-height 限制在视口内，整体不超过一屏
   2. head + foot 各自 flex-shrink:0，不滚动
   3. body flex:1 + overflow-y:auto，内容超出在 body 里滚
   4. 提交按钮区（savebar）sticky 在 body 底部，永远可见
   不要让整个 modal 跟着页面滚动 —— 用户填长表单时找按钮要往下翻整页。

   设计系统 §5 Modal：backdrop blur + r-3xl + shadow-modal + .22s rise。 */
.me-modal-root {
  position: fixed;
  inset: 0;
  z-index: 50;
  background: rgba(15, 23, 42, 0.38);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px 16px;
  animation: me-modal-fade 0.22s cubic-bezier(.2, 0, 0, 1);
}
.me-modal-dialog {
  background: #ffffff;
  border-radius: 24px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  box-shadow:
    0 1px 2px rgba(0, 0, 0, 0.04),
    0 30px 80px -20px rgba(0, 0, 0, 0.35);
  width: 100%;
  max-width: 768px;
  max-height: calc(100vh - 48px);
  display: flex;
  flex-direction: column;
  overflow: hidden; /* 让 body 内部滚动；不要让 dialog 整体被撑高出视口 */
  animation: me-modal-rise 0.22s cubic-bezier(.2, 0, 0, 1);
}
/* 固定高度弹窗（硬规则）：凡是主体是「列表 / 异步加载内容」的弹窗，一打开就定到目标
   高度，绝不按内容自适应。数据/表单多了 .me-modal-body 内部滚动接管，少时或 loading
   态也不缩成小块 —— 严禁「先显示一小块再加载撑大」的闪屏式廉价体验。
   对齐主站 .us-modal / .ap-modal（查看所有 CV 弹窗）规范。
   用于：职位投递列表弹窗、职位编辑弹窗（异步拉 JD 数据，loading 也在此高度内）。 */
.me-modal-dialog--fixed {
  height: min(720px, calc(100dvh - 64px));
}
/* 预览弹窗（CV / 简历 / 作品集 / 职位 / 团队页 iframe）：宽、接近占满视口高，给内容留空间。 */
.me-modal-dialog--preview {
  max-width: min(1056px, calc(100vw - 48px));
  height: 90vh;
  position: relative;
}
/* 无标题预览的圆形 chrome：浮在内容右上角（↗ 新标签 / ✕ 关闭） */
.me-modal-chrome {
  position: absolute;
  top: 16px;
  right: 16px;
  z-index: 10;
  display: flex;
  align-items: center;
  gap: 8px;
}
/* 预览弹窗底部浮动定夺条（「保存为待发布」后：已保存提示 + 返回编辑 / 发布职位）。
   同 .me-modal-chrome 一样浮在 iframe 上层；白底胶囊 + 重阴影，对齐 .ov-back 的
   浮层语言（设计系统 §1.4 白底 + 阴影、不用分割线）。 */
.me-modal-toolbar {
  position: absolute;
  left: 50%;
  bottom: 20px;
  transform: translateX(-50%);
  z-index: 10;
  display: flex;
  align-items: center;
  gap: 10px;
  max-width: calc(100% - 32px);
  padding: 8px 8px 8px 20px;
  background: #ffffff;
  border-radius: 999px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 6px 20px rgba(0, 0, 0, 0.16);
}
.me-modal-toolbar-note {
  font-size: 13px;
  color: #86868b;
  white-space: nowrap;
}

/* ── 信号收件箱（双栏，Figma 501-4099）：左候选人列表 + 右详情 ── */
.me-modal-dialog--inbox {
  max-width: min(1160px, calc(100vw - 48px));
  height: min(792px, calc(100dvh - 64px));
  flex-direction: row;
  padding: 0;
  position: relative; /* 移动端详情 overlay 的定位锚点 */
}
/* 详情头部「返回列表」按钮 —— 仅移动端可见（桌面端详情常驻，不需要返回）。 */
.me-sig-detail-back {
  display: none;
  appearance: none;
  border: 0;
  background: transparent;
  color: #1d1d1f;
  padding: 0;
  margin-right: 2px;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
}

/* ── 移动端 / 小屏：收件箱单栏 —— 只展示候选人列表，点一个 → 详情全屏滑入 ── */
@media (max-width: 720px) {
  /* 表格型弹窗：固定高度、列表内部滚动（不随记录数自适应）。移动端尺寸对齐预览弹窗
     （--preview 的 90vh），比之前更收敛、四周留白更舒服。 */
  .me-modal-dialog--inbox {
    flex-direction: column;
    width: 100%;
    max-width: none;
    height: 90vh;
    /* 入场动画改成纯透明度（不带 transform）：rise 的 translateY 会让 dialog 在 0.22s 内
       成为 position:fixed 详情的包含块，把全屏详情夹回弹窗框里、露出底下的列表 ——
       从收藏直达详情时就会闪一下列表。fade 无 transform → 详情自始至终钉在视口、直接全屏。 */
    animation: me-modal-fade 0.22s cubic-bezier(.2, 0, 0, 1);
  }
  /* 列表填满弹窗高度并内部滚动：用 height:100%（弹窗已是 concrete 高度，百分比能解析），
     不靠 flex-grow（单子项 flex:1 在这个结构里没能正确撑开）。 */
  .me-modal-dialog--inbox .me-sig-rail {
    width: 100%;
    height: 100%;
    min-height: 0;
    border-right: 0;
  }
  /* 详情用 fixed 全屏覆盖（不受列表弹窗的内容高度限制）。 */
  .me-modal-dialog--inbox .me-sig-detail {
    position: fixed;
    inset: 0;
    z-index: 60;
    background: #ffffff;
    transform: translateX(100%);
    visibility: hidden;
    transition: transform 0.25s cubic-bezier(0.2, 0, 0, 1);
  }
  .me-modal-dialog--inbox.is-detail-open .me-sig-detail {
    transform: translateX(0);
    visibility: visible;
  }
  .me-sig-detail-back {
    display: inline-flex;
  }
  /* 列表视图的关闭按钮（桌面端在右栏详情头，移动端单栏需要它）。
     用 .me-sig-rail 前缀升到 0,3,0，压过基类那条 0,2,0 的 display:none（不受源码顺序影响）。 */
  .me-sig-rail .me-modal-x.me-sig-railclose {
    display: inline-flex;
  }
  /* 详情视图（移动端全屏）：用左上 ← 返回列表，不要右上的整体关闭 ✕ */
  .me-sig-detail-actions .me-modal-x {
    display: none;
  }
  /* 详情头/正文左右内边距收窄（返回箭头更靠左、内容不过度缩进）。
     加 .me-modal-dialog--inbox 前缀升到 0,2,0 —— 否则基类 .me-sig-detail-head 的
     padding 简写定义在本规则之后、同特异性会把左 padding 重置回 40px。 */
  .me-modal-dialog--inbox .me-sig-detail-head {
    padding-left: 20px;
    padding-right: 16px;
  }
  .me-modal-dialog--inbox .me-sig-detail-body {
    padding-left: 16px;
    padding-right: 16px;
  }
  /* 详情里 CV/作品集、主页卡片窄屏铺满一列 */
  .me-sig-files {
    flex-direction: column;
  }
  .me-sig-file,
  .me-sig-profile {
    width: 100%;
  }

  /* 职位创建/编辑弹窗底栏：窄屏收紧间距 + 文案不换行；状态按钮只留图标省空间，
     避免「保存修改」被挤出/折行。 */
  .me-jobfoot {
    gap: 8px;
  }
  .me-jobfoot-actions {
    gap: 8px;
  }
  .me-jobfoot-preview,
  .me-jobfoot-statusbtn,
  .me-jobfoot-save {
    padding-left: 14px;
    padding-right: 14px;
    white-space: nowrap;
  }
  .me-jobfoot-statuslabel {
    display: none;
  }
  .me-jobfoot-statusbtn {
    padding-left: 11px;
    padding-right: 11px;
  }
  /* 「新建职位」窄屏缩成「新建」 */
  .me-newjob-suffix {
    display: none;
  }
}
/* 0 投递空态：居中文案 + 右上关闭 */
.me-sig-empty-wrap {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}
.me-sig-empty-x {
  position: absolute;
  top: 16px;
  right: 16px;
}
/* 左栏 List Rail */
.me-sig-rail {
  width: 340px;
  flex-shrink: 0;
  height: 100%;
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  border-right: 1px solid #ececef;
}
.me-sig-jobhead {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 18px 16px 16px 20px;
  position: relative;
}
/* 列表视图关闭按钮：桌面端隐藏（用右栏详情头 ✕），移动端右上角显示。
   双类选择器升特异性 —— 否则会被后面 .me-modal-x{display:inline-flex} 盖掉。 */
.me-modal-x.me-sig-railclose {
  display: none;
  position: absolute;
  top: 16px;
  right: 16px;
}
.me-sig-joblogo {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  overflow: hidden;
  background: #f0f0ee;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.me-sig-joblogo img { width: 100%; height: 100%; object-fit: cover; }
.me-sig-joblogo-fb { font-size: 15px; font-weight: 500; color: #86868b; }
.me-sig-jobtitle {
  margin: 2px 0 0;
  font-size: 16px;
  color: #1d1d1f;
  letter-spacing: -0.16px;
}
.me-sig-jobactions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.me-sig-jobedit {
  appearance: none;
  font: inherit;
  font-size: 13px;
  color: #1d1d1f;
  background: #ffffff;
  border: 1px solid #efefef;
  padding: 9px 19px;
  border-radius: 999px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}
.me-sig-jobedit:hover { background: #f5f5f5; border-color: #d2d2d7; }
.me-sig-jobstat {
  margin: 2px 0 0;
  font-size: 13px;
  color: #86868b;
}
.me-sig-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
/* 候选人收藏页：可点的候选人行（复用 .me-sig-item 视觉），点开 → 信号收件箱定位到他。 */
.me-favlist {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}
.me-favrow {
  border-radius: 12px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
}
.me-favrow-arr {
  flex-shrink: 0;
  color: #86868b;
  display: inline-flex;
}
/* 候选人行 */
.me-sig-item {
  appearance: none;
  border: 0;
  background: #ffffff;
  width: 100%;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 20px;
  text-align: left;
  cursor: pointer;
  transition: background 0.15s;
}
.me-sig-item:hover { background: #fafafa; }
.me-sig-item.is-active { background: #f7f7f7; }
.me-sig-item-avatar {
  width: 36px;
  height: 36px;
  border-radius: 999px;
  background: #f0f0ee;
  color: #86868b;
  font-size: 13px;
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.me-sig-item-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.me-sig-item-name {
  font-size: 15px;
  color: #1d1d1f;
  letter-spacing: -0.075px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.me-sig-item-snippet {
  font-size: 13px;
  color: #86868b;
  letter-spacing: -0.065px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.me-sig-item-meta {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 6px;
}
.me-sig-item-time { font-size: 12px; color: #86868b; white-space: nowrap; }
.me-sig-item-dot {
  width: 7px;
  height: 7px;
  border-radius: 999px;
  background: #2e84fa;
}
/* 右栏 Detail Pane */
.me-sig-detail {
  flex: 1;
  min-width: 0;
  height: 100%;
  display: flex;
  flex-direction: column;
}
.me-sig-detail-head {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 18px 24px 18px 40px;
  border-bottom: 1px solid #ececef;
}
.me-sig-detail-who { display: flex; align-items: center; gap: 12px; min-width: 0; }
.me-sig-detail-avatar {
  width: 36px;
  height: 36px;
  border-radius: 999px;
  background: #f0f0ee;
  color: #86868b;
  font-size: 13.5px;
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.me-sig-detail-id { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.me-sig-detail-name {
  margin: 0;
  font-size: 14px;
  color: #1d1d1f;
  letter-spacing: -0.14px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.me-sig-detail-sub {
  margin: 0;
  font-size: 14px;
  color: #86868b;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.me-sig-detail-actions { display: flex; align-items: center; gap: 16px; flex-shrink: 0; }
/* 收藏按钮直接复用职位详情页书签 pill（.jd-bookmark--pill）：outline pill + 书签 icon
   + 收藏/已收藏 文案，收藏态靠 icon 实心。这里只清掉它给 H1 对齐用的 margin-top。 */
.me-sig-fav.jd-bookmark--pill {
  margin-top: 0;
  /* jd-bookmark--pill 在 ≤720 有 display:none（职位页移动端切 icon 版）；
     收件箱复用了它但要一直显示，双类特异性压过那条 media 规则。 */
  display: inline-flex;
}
.me-sig-detail-body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 32px;
  padding: 32px 40px 24px;
}
.me-sig-sec { display: flex; flex-direction: column; gap: 12px; }
.me-sig-sec-label {
  margin: 0;
  font-size: 13px;
  color: #86868b;
  letter-spacing: 0.52px;
}
/* 附件卡（CV / 作品集） */
.me-sig-files { display: flex; flex-wrap: wrap; gap: 10px; }
.me-sig-file {
  appearance: none;
  border: 0;
  text-decoration: none;
  background: #f7f7f7;
  display: flex;
  align-items: center;
  gap: 12px;
  width: 310px;
  max-width: 100%;
  padding: 12px 14px 12px 12px;
  border-radius: 14px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  cursor: pointer;
  text-align: left;
  transition: background 0.15s;
}
.me-sig-file:hover { background: #f0f0ee; }
.me-sig-file-ic {
  width: 40px;
  height: 40px;
  border-radius: 10px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  background: #ececef;
  color: #3c3c43;
  font-size: 18px;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.me-sig-file-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.me-sig-file-name {
  font-size: 15px;
  color: #1d1d1f;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.me-sig-file-sub { font-size: 13px; color: #86868b; letter-spacing: -0.065px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.me-sig-file-arr { flex-shrink: 0; color: #86868b; display: inline-flex; }

/* 候选人行右键菜单（设为未读/已读）。portal 到 body，盖在收件箱(50)/预览(60)之上 */
.me-ctx-backdrop { position: fixed; inset: 0; z-index: 70; }
.me-ctx-menu {
  position: fixed;
  min-width: 116px;
  padding: 4px;
  background: #ffffff;
  border-radius: 10px;
  box-shadow: 0 8px 24px -6px rgba(0, 0, 0, 0.25), 0 0 0 0.5px rgba(0, 0, 0, 0.07);
}
.me-ctx-item {
  display: block;
  width: 100%;
  appearance: none;
  border: 0;
  background: none;
  padding: 7px 10px;
  border-radius: 7px;
  font: inherit;
  font-size: 13px;
  color: #1d1d1f;
  text-align: left;
  cursor: pointer;
}
.me-ctx-item:hover { background: #f2f3f7; }
/* 破坏性动作（删除）标红，hover 用浅红底提示危险 */
.me-ctx-item--danger { color: #b91c1c; }
.me-ctx-item--danger:hover { background: #fdf0ef; }
/* 复制成功等轻提示，底部居中浮一下 */
.me-ctx-toast {
  position: fixed;
  left: 50%;
  bottom: 40px;
  transform: translateX(-50%);
  z-index: 80;
  padding: 8px 16px;
  background: rgba(29, 29, 31, 0.92);
  color: #fff;
  font-size: 13px;
  border-radius: 999px;
  box-shadow: 0 8px 24px -8px rgba(0, 0, 0, 0.4);
  pointer-events: none;
}

/* Bonjour 主页卡（button，点开行内预览） */
.me-sig-profile {
  appearance: none;
  border: 0;
  font: inherit;
  text-align: left;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 12px;
  width: 310px;
  max-width: 100%;
  padding: 12px 16px 12px 14px;
  background: #f7f7f7;
  border-radius: 14px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  text-decoration: none;
  transition: background 0.15s;
}
.me-sig-profile:hover { background: #f0f0ee; }
.me-sig-profile-avatar {
  width: 40px;
  height: 40px;
  border-radius: 999px;
  background: #e6e6e3;
  color: #86868b;
  font-size: 15px;
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.me-sig-profile-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.me-sig-profile-name {
  font-size: 15px;
  color: #1d1d1f;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* Bio：单行展示，超出省略号（白名单宽度由 flex 父级 min-width:0 兜底） */
.me-sig-profile-sub {
  font-size: 13px;
  color: #86868b;
  letter-spacing: -0.065px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* 候选人头像图（主站头像 cdn URL）：填满圆底裁切；无头像时仍回落首字母圆。 */
.me-sig-item-avatar,
.me-sig-detail-avatar,
.me-sig-profile-avatar {
  overflow: hidden;
}
.me-sig-item-avatar img,
.me-sig-detail-avatar img,
.me-sig-profile-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* 回答（暂空态） */
.me-sig-answers-empty {
  margin: 0;
  font-size: 14px;
  color: #a1a1a6;
  line-height: 1.55;
}
/* 候选人「一封信」正文 —— 保留换行,正常正文色 */
.me-sig-letter {
  margin: 0;
  font-size: 14px;
  color: #1d1d1f;
  line-height: 1.6;
  white-space: pre-wrap;
  word-break: break-word;
}
/* 问题回答（answers.qa）：Q 行小字灰、A 复用 .me-sig-letter；条目间留白分组。 */
.me-sig-qalist {
  display: grid;
  gap: 16px;
}
.me-sig-qa-q {
  margin: 0 0 4px;
  font-size: 13px;
  color: #5d5d5d;
}
/* iframe 直接铺满 body：无内边距，body 不滚（PDF 在 iframe 内自带滚动）。
   必须用双类选择器：基类 .me-modal-body 定义在本规则之后、同特异性，单类会被它的
   `padding: 0 28px` 覆盖（源码顺序靠后者赢）。双类 0,2,0 稳赢，padding 才真正归零。 */
.me-modal-body.me-modal-body--frame {
  padding: 0;
  display: flex;
  overflow: hidden;
  background: #ffffff;
}
.me-modal-frame {
  flex: 1;
  min-height: 0;
  width: 100%;
  border: 0;
  display: block;
}
@keyframes me-modal-fade {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes me-modal-rise {
  from { transform: translateY(8px); opacity: 0; }
  to { transform: translateY(0); opacity: 1; }
}
.me-modal-head {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding: 16px 16px 0;
}
/* 关闭 / 顶角动作按钮 —— 圆形浅灰底 + 深色图标，跟公开站浮层 .ov-btn 同款。
   me- 下所有弹窗（信号收件箱 / 新建·编辑职位 / 预览）共用这一套。 */
.me-modal-x {
  appearance: none;
  border: 1px solid rgba(239, 239, 239, 0.5);
  background: #f0f0f0;
  color: #1d1d1f;
  width: 36px;
  height: 36px;
  box-sizing: border-box;
  /* 正圆 —— 不用 squircle corner-shape（那个会渲染成圆角方而非正圆） */
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
  transition: background 0.15s;
  text-decoration: none;
}
.me-modal-x:hover {
  background: #e6e6e6;
}
.me-modal-x:active {
  transform: scale(0.94);
}
.me-modal-body {
  flex: 1;
  min-height: 0; /* flex 子元素必须有 min-height:0 才能内部滚动 */
  overflow-y: auto;
  overflow-x: hidden; /* 不让任何子元素顶出横向滚动（窄屏工具栏/底栏等） */
  padding: 0 28px;
}
/* modal 内的 me-section 间距收窄一点 —— 弹窗里没必要 64px 大间距 */
.me-modal-body .me-section {
  margin-bottom: 28px;
}
.me-modal-body .me-section:first-child {
  margin-top: 4px;
}
/* modal 里的 savebar 改成"footer bar"形态：sticky 贴 body 底，
   去掉浮卡 pill 样式（这里用全宽 + 顶部细线分隔，跟内容滚动错开）。
   `margin: 0 -28px` 抵消 body 的水平 padding，savebar 全宽贴边。 */
.me-modal-body .me-savebar {
  position: sticky;
  bottom: 0;
  z-index: 1;
  margin: 28px -28px 0;
  padding: 16px 28px;
  background: #ffffff;
  border-radius: 0;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  max-width: none;
  box-shadow: 0 -1px 0 #ececef;
}

/* 编辑弹窗叠在投递弹窗之上 */
.me-modal-root--stacked { z-index: 60; }
/* 二次确认弹窗（useConfirm）永远盖在最上层 —— 它可能从投递(50)/编辑(60)弹窗里
   触发，得压过触发它的那层，否则会被遮住看不见。 */
.me-modal-root--confirm { z-index: 70; }

/* ─────────── 通用浮窗（MePopover）───────────
   锚在触发控件下方浮起的 popover（非全屏遮罩弹窗）：透明 backdrop 只接外部点击，
   面板 popover 级阴影（比全屏弹窗收敛，同 .me-qed-picker 层次）；可选底部 footer 栏靠
   留白分隔、不画分割线（对齐设计系统）。z-index 65：压过编辑弹窗(60)，但让二次确认(70)盖在上层。
   规范见 components/public/me/MePopover.tsx 头注：新增/就地增改用本浮窗，二次确认才用居中弹窗。 */
.me-pop-backdrop {
  position: fixed;
  inset: 0;
  z-index: 65;
}
.me-pop {
  display: flex;
  flex-direction: column;
  background: #ffffff;
  border-radius: 18px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 16px 48px rgba(0, 0, 0, 0.18);
  overflow: hidden;
}
.me-pop-head {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 16px 14px 8px 20px;
}
.me-pop-title {
  font-size: 16px;
  font-weight: 500;
  letter-spacing: -0.01em;
  color: #1d1d1f;
}
.me-pop-body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 8px 20px 4px;
  /* 字段本身 margin 为 0（原靠外层 .me-form 的 flex gap 撑开）；浮窗自成容器，
     这里用 flex 列 + gap 给字段均匀间距，别让它们挤在一起。 */
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.me-pop-foot {
  flex-shrink: 0;
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 10px;
  padding: 12px 20px 18px;
}

/* 带标题的弹窗头(投递弹窗):左标题 + 份数,右「编辑职位」+ 关闭 */
.me-modal-head--bar {
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 18px 16px 14px 28px;
}
.me-modal-titles {
  display: flex;
  align-items: baseline;
  gap: 10px;
  min-width: 0;
}
.me-modal-title {
  font-size: 17px;
  font-weight: 500;
  color: #1d1d1f;
  letter-spacing: -0.01em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.me-modal-sub {
  flex-shrink: 0;
  font-size: 13px;
  color: #86868b;
}
.me-modal-head-actions {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
/* 弹窗内空状态 / 加载态 */
.me-modal-empty {
  font-size: 14px;
  color: #86868b;
  margin: 0;
  padding: 8px 0 28px;
}
/* 固定高度弹窗里的 loading / 空状态：在整块高度内居中，不顶在最上方留一片空白
   （配合 --fixed：弹窗一开始就是目标高度，loading 也填满该高度居中显示）。 */
.me-modal-dialog--fixed .me-modal-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100%;
  padding: 0;
  text-align: center;
}

@media (max-width: 720px) {
  .me-modal-root { padding: 12px; }
  .me-modal-dialog { max-height: calc(100vh - 24px); }
  .me-modal-head { padding: 12px 12px 0; }
  .me-modal-head--bar { padding: 12px 12px 10px 20px; }
  .me-modal-body { padding: 0 20px; }
  .me-modal-body .me-savebar { margin: 20px -20px 0; padding: 12px 20px; }
}
@media (max-width: 720px) {
  .me-mod { margin-bottom: 48px; }
  .t4--in-dashboard .t4-topcard { padding: 24px; }
}


/* ─── 图片放大 lightbox（[[MeImageZoom]]）───
   复用 .me-modal-root 的遮罩/动画/居中；图片直接铺遮罩上，不套白卡片 dialog。 */
.me-imgzoom-root { padding: 32px; }
.me-imgzoom-img {
  max-width: min(92vw, 720px);
  max-height: 88vh;
  width: auto; height: auto;
  object-fit: contain;
  border-radius: 16px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  box-shadow: 0 30px 80px -20px rgba(0, 0, 0, 0.5);
  cursor: default; /* 遮罩是 zoom-out 语义由 root 承担；图本身不再是可点放大的 */
  animation: me-modal-rise 0.22s cubic-bezier(.2, 0, 0, 1);
}
/* 关闭键浮在右上角（同 .me-modal-x 的圆形 chrome，但定位到视口角而非 dialog 角）。 */
.me-imgzoom-x {
  position: fixed;
  top: 20px;
  right: 20px;
  z-index: 1;
}
@media (max-width: 720px) {
  .me-imgzoom-root { padding: 16px; }
  .me-imgzoom-img { max-width: 94vw; }
}
