/* ─────────── Field shell ─────────── */
.me-field {
  display: block;
}
.me-field-label {
  display: block;
  font-size: 13px;
  color: #5d5d5d;
  margin-bottom: 6px;
}
.me-field-req {
  color: #a1a1a6;
}
.me-field-body {
  display: block;
}
/* 字段说明：跟在控件之后、错误之前。间距与 .me-field-err 对齐（6px）。 */
.me-field-help {
  display: block;
  margin-top: 6px;
  font-size: 12.5px;
  line-height: 1.55;
  color: #86868b;
}
.me-field-err {
  display: block;
  margin-top: 6px;
  font-size: 12px;
  color: #b91c1c;
}

/* ─────────── 申请问题编辑器（components/shared/JobQuestionsEditor me 皮肤） ───────────
 * 留白分组，无分割线 / 背景填充（DESIGN_SYSTEM §1.3–1.5）。 */
.me-qed {
  display: grid;
  gap: 28px;
}
.me-qed-fixed {
  margin: 0;
  font-size: 15px;
  color: #1d1d1f;
}
.me-qed-fixedhint {
  margin: 4px 0 0;
  font-size: 12px;
  color: #a1a1a6;
}
.me-qed-qhead {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
}
.me-qed-qlabel {
  margin-bottom: 0;
}
.me-qed-remove {
  font: inherit;
  font-size: 12px;
  color: #a1a1a6;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
}
.me-qed-remove:hover {
  color: #b91c1c;
}
.me-qed-hint {
  margin: 6px 0 0;
  font-size: 12px;
  color: #a1a1a6;
}
.me-qed-qhead-left {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
/* —— 飞书表单式问题行（JobQuestionsEditor 新版布局；旧的 qhead/qlabel/hint
   系列类仍被 JobCriteriaEditor 复用，别删）。行常态融在页面里，hover 白卡
   抬起（§1.4 白底+阴影，无 border）。 —— */
.me-qed-row {
  padding: 12px;
  border-radius: 12px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  transition: box-shadow 0.15s, background 0.15s;
}
.me-qed-row:hover {
  background: #ffffff;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 8px 24px rgba(0, 0, 0, 0.08);
}
.me-qed-rowhead {
  display: flex;
  align-items: center;
  gap: 10px;
}
/* 内联标题：自建 = 无边框输入框（placeholder 常规字重），预设 = 固定文案 + 🔒 */
.me-qed-title {
  flex: 1;
  width: 100%;
  min-width: 0;
  font: inherit;
  font-size: 15px;
  font-weight: 500;
  color: #1d1d1f;
  background: transparent;
  border: 0;
  padding: 0;
  outline: none;
}
.me-qed-title::placeholder {
  font-weight: 400;
  color: #a1a1a6;
}
.me-qed-title-fixed {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex: 1;
  min-width: 0;
  font-size: 15px;
  font-weight: 500;
  color: #1d1d1f;
}
.me-qed-lock {
  display: inline-flex;
  flex-shrink: 0;
  color: #a1a1a6;
}
/* 「必填」开关（label 包 switch 按钮 + 文字） */
.me-qed-req {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  font-size: 13px;
  color: #5d5d5d;
  cursor: pointer;
  user-select: none;
}
.me-qed-switch {
  position: relative;
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
  width: 30px;
  height: 18px;
  border: 0;
  border-radius: 999px;
  padding: 0;
  background: #e2e2e6;
  cursor: pointer;
  transition: background 0.15s;
}
.me-qed-switch.is-on {
  background: #3b82f6; /* 同 me-chip-toggle 选中态的品牌蓝 */
}
.me-qed-switch-knob {
  display: block;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: #ffffff;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
  transform: translateX(2px);
  transition: transform 0.15s;
}
.me-qed-switch.is-on .me-qed-switch-knob {
  transform: translateX(14px);
}
/* ⊖ 移除（icon-only，hover 变红） */
.me-qed-x {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  border: 0;
  padding: 0;
  background: none;
  color: #a1a1a6;
  cursor: pointer;
  transition: color 0.15s;
}
.me-qed-x:hover {
  color: #b91c1c;
}
/* 描述（选填）：无边框内联输入，给候选人的补充说明 */
.me-qed-desc {
  width: 100%;
  min-width: 0;
  margin-top: 6px;
  font: inherit;
  font-size: 13px;
  color: #5d5d5d;
  background: transparent;
  border: 0;
  padding: 0;
  outline: none;
}
.me-qed-desc::placeholder {
  color: #a1a1a6;
}
/* 回答预览区：禁用输入框示意候选人作答位，不可交互 */
.me-input.me-qed-preview {
  margin-top: 10px;
  cursor: default;
  pointer-events: none;
}
/* 拖柄 ⠿（<button>，仅 ≥2 题时渲染）：dnd-kit listeners 只挂在它上面，
   拖 input 选文本 / 点移除不会触发拖拽。touch-action:none 给 PointerSensor
   在触屏上让路；挪位动画由 dnd-kit transform 托管（见 JobQuestionsEditor）。 */
.me-qed-handle {
  font: inherit;
  font-size: 14px;
  line-height: 1;
  color: #a1a1a6;
  background: none;
  border: 0;
  padding: 0;
  cursor: grab;
  user-select: none;
  touch-action: none;
  transition: color 0.15s;
}
.me-qed-handle:hover {
  color: #5d5d5d;
}
.me-qed-handle:active {
  cursor: grabbing;
}
/* 「+ 添加问题」整行虚线按钮 —— 比原 me-add-btn 更显眼（用户反馈原版太不起眼）。 */
.me-qed-add {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  padding: 12px 14px;
  font: inherit;
  font-size: 14px;
  color: #5d5d5d;
  /* 虚线用 SVG 描边画（原生 border:dashed 改不了「疏密」）：dash 5 / gap 10
     更稀疏；rx 18 大圆角。整段随宽度铺满、不拉伸（无 viewBox → 1 用户单位=1px）。 */
  background-color: transparent;
  background-image: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' rx='18' ry='18' stroke='%23cdc8c0' stroke-width='1.5' stroke-dasharray='5%2c 10' stroke-linecap='round'/%3e%3c/svg%3e");
  border: 0;
  border-radius: 18px;
  cursor: pointer;
  transition: color 0.15s;
}
.me-qed-add:hover {
  color: #1d1d1f;
  background-image: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' rx='18' ry='18' stroke='%231d1d1f' stroke-width='1.5' stroke-dasharray='5%2c 10' stroke-linecap='round'/%3e%3c/svg%3e");
}
.me-qed-add-count {
  font-size: 12px;
  color: #a1a1a6;
}
/* 「添加问题」类型选择弹窗（QuestionTypePicker）—— 小面板居中；z-index 高于
   编辑弹窗（60）/ 右键菜单（70），可叠加在两者之上。 */
/* popover 模式：backdrop 只接外部点击（透明），面板位置由组件内联 style
   锚定在「添加问题」按钮下方（fixed，portal 到 body，不被编辑弹窗裁剪）。 */
.me-qed-picker-backdrop {
  position: fixed;
  inset: 0;
  z-index: 90;
}
.me-qed-picker {
  padding: 12px;
  background: #ffffff;
  border-radius: 16px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  /* popover 级阴影（比全屏弹窗收敛，同 .me-ctx-menu 的层次） */
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 12px 40px rgba(0, 0, 0, 0.14);
}
.me-qed-picker-title {
  margin: 4px 10px 8px;
  font-size: 14px;
  font-weight: 500;
  color: #1d1d1f;
}
.me-qed-picker-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  width: 100%;
  padding: 10px;
  font: inherit;
  text-align: left;
  background: none;
  border: 0;
  border-radius: 10px;
  cursor: pointer;
  transition: background 0.12s;
}
.me-qed-picker-item:hover {
  background: #f5f5f7;
}
.me-qed-picker-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 14px;
  color: #1d1d1f;
}
/* 条目标签的前缀图标：预设类型可带（如 GitHub，CDN 社交图标） */
.me-qed-picker-ic {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  border-radius: 4px; /* 方形图标（如 GitHub 徽标）切一点圆角 */
}
.me-qed-picker-desc {
  font-size: 12px;
  color: #a1a1a6;
}
/* 「添加问题」类型选择 popover 的入场 —— JobQuestionsEditor 两端共用
   （本样式表全局加载，admin 端同样生效）；transform-origin 由 JSX 按
   向下/向上展开方向设置，动画本体只做 淡入 + 轻微放大。 */
@keyframes qed-picker-in {
  from {
    opacity: 0;
    transform: scale(0.96);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

/* ─────────── 结构化薪资编辑器（components/shared/JobSalaryEditor me 皮肤） ─────────── */
.me-sal {
  display: grid;
  gap: 16px;
}
.me-sal-chips {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.me-sal-row {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}
/* 金额行归成三组（货币 / 下限–上限–周期 / 薪数）：组容器内紧凑，组之间大间距。
   双类 .me-sal-row.me-sal-row--groups（0,2,0）覆盖基类 gap，不依赖源码顺序。 */
.me-sal-group {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
/* 组之间放灰点分隔（表关联）：点两侧各留 14px，居中。 */
.me-sal-row.me-sal-row--groups {
  gap: 14px;
}
.me-sal-dot {
  color: #c7c7cc;
  font-size: 15px;
  line-height: 1;
  user-select: none;
}
/* 薪资输入用「输入框」样式（沿用基类 .me-input 的描边盒 + 圆角，同事建议改回）：
   双类（0,2,0）只覆盖内距 / 高度 / 宽度，边框 / 圆角 / 底色都继承 .me-input。
   统一显式高度：原生 <select>（¥CNY/月）固有高度比 <input> 高，行内 align 会错位；
   锁成同高（15px 字 + 6px×2 padding + 1px 边 ≈ 34），一排盒子等高、字号一致。 */
.me-input.me-sal-select,
.me-input.me-sal-num,
.me-input.me-sal-months,
.me-input.me-sal-note {
  padding: 6px 10px;
  height: 34px;
  font-size: 15px;
  line-height: 20px;
  box-sizing: border-box;
}
.me-input.me-sal-select {
  width: auto;
  /* 自定义下拉箭头（原生箭头贴右边框、离文字远，控不了位置）：去原生箭头，
     用 SVG chevron 背景，紧跟文字 + 离右边框留 10px 边距。 */
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='%235d5d5d' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4.5l3 3 3-3'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 12px 12px;
  padding-right: 28px; /* 文字与箭头之间留 6px，箭头右侧留 10px 边距 */
}
.me-input.me-sal-num {
  width: 72px;
  text-align: center; /* 金额数字 + placeholder 居中（窄框里居中比左贴更稳） */
}
.me-input.me-sal-months {
  width: 44px;
  text-align: center;
}
/* 数字输入去掉原生上下调节钮（薪资编辑器等用；本样式表由根 layout 全局加载，
   admin 端同样生效）。宽度收窄配套：调节钮不占位后不需要预留空间。 */
.no-spinner {
  -moz-appearance: textfield;
  appearance: textfield;
}
.no-spinner::-webkit-outer-spin-button,
.no-spinner::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
.me-input.me-sal-note {
  flex: 1 1 180px;
  width: auto;
  min-width: 160px;
}
.me-sal-sep {
  font-size: 13px;
  color: #5d5d5d;
  white-space: nowrap;
}
/* 开户向导里区间分隔「—」与单位「人」用黑（ink-1）；团队资料编辑页不带 --wizard，保持原灰。 */
.me-jobform--wizard .me-sal-sep {
  color: #1d1d1f;
}
.me-sal-equity {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 14px;
  color: #1d1d1f;
  white-space: nowrap;
}
/* 圆形勾选框（薪资「期权」等）—— 去原生外观，未选 = 空心圆、已选 = 品牌蓝圆底
   + 白色勾号（蓝 #3b82f6 同 me chip 选中态）。me.css 全局加载，admin 端同样生效。 */
.me-check-circle {
  appearance: none;
  -webkit-appearance: none;
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  margin: 0;
  border-radius: 50%;
  border: 1.5px solid #d1d1d6;
  background: #ffffff;
  cursor: pointer;
  position: relative;
  transition: border-color 0.15s, background 0.15s;
}
.me-check-circle:hover {
  border-color: #a1a1a6;
}
.me-check-circle:checked {
  border-color: #3b82f6;
  background: #3b82f6;
}
/* 白色勾号：::after 画一个「旋转 45° 的 └」对勾（白色右+下边框）。 */
.me-check-circle:checked::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 46%;
  width: 4px;
  height: 8px;
  border: solid #ffffff;
  border-width: 0 1.6px 1.6px 0;
  transform: translate(-50%, -50%) rotate(45deg);
}
.me-sal-legacy,
.me-sal-preview {
  margin: 0;
  font-size: 12px;
  color: #a1a1a6;
}

/* ─────────── 新建职位向导（components/shared/JobWizardSteps me 皮肤 + 表单内导航/摘要） ─────────── */
.me-wiz {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.me-wiz-step {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 15px; /* 全部步骤在原 14px 基础上大一号 */
  color: #a1a1a6;
}
.me-wiz-step.is-active {
  font-size: 16px; /* 当前步再大一号（相对原始共大两号） */
  color: #1d1d1f;
  font-weight: 500;
}
.me-wiz-step.is-done {
  color: #5d5d5d;
}
.me-wiz-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none; /* 圆圈尺寸恒定，不随步骤文字长短被 flex 挤压 */
  box-sizing: border-box; /* 描边画在内圈：外径恒定 24px，带深色边的「已完成」圆不再显大一圈 */
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: 1px solid #ececef;
  font-size: 13px;
  line-height: 1;
}
.me-wiz-num.is-active {
  /* 当前步圆圈用未选中 chip 的浅灰（#f7f7f7/#3c3c43），不再是重黑；
     「当前」的强调交给标签加粗深色 + 数字加粗。 */
  background: #f7f7f7;
  border-color: #f7f7f7;
  color: #3c3c43;
  font-weight: 700;
}
.me-wiz-num.is-done {
  /* ✓ 字形本身比数字饱满，字号调小让它跟选中的数字视觉齐平（13→11） */
  font-size: 11px;
  border-color: #1d1d1f;
  color: #1d1d1f;
}
.me-wiz-line {
  flex: 0 0 20px;
  height: 1px;
  background: #ececef;
}
/* 可点击的步骤（到达过的步）：button 渲染，抹掉原生样式 + hover 提示可交互。
   ⚠️ 不能用 font 简写：它会把 .me-wiz-step 的 font-size:12px 覆盖回继承值
   （15px），导致已完成步骤的字和圈看起来比其它步大一号。 */
.me-wiz-step--btn {
  font-family: inherit;
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
}
.me-wiz-step--btn:hover {
  color: #1d1d1f;
}
.me-wiz-nav {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: wrap;
}
.me-wiz-err {
  margin: 0 auto 0 0;
}

/* ─────────── 职位详情富文本编辑器（components/public/me/MeTiptapClient） ───────────
 * 复用 blog 的 @tiptap 引擎，me.css 皮肤。整体是一个「控件」（1px hairline 作为
 * 可输入感知 affordance，同 .me-input），不算内容卡片。工具栏与正文之间的浅线是
 * 控件内部分区，非内容分割线。 */
.me-tip {
  border: 1px solid #ececef;
  border-radius: 12px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  background: #ffffff;
  overflow: hidden;
}
.me-tip-toolbar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 2px;
  padding: 6px 8px;
  border-bottom: 1px solid #f0f0f2;
}
.me-tip-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border: 0;
  border-radius: 8px;
  background: none;
  color: #5d5d5d;
  cursor: pointer;
  transition: background 0.12s, color 0.12s;
}
.me-tip-btn:hover:not(:disabled) {
  background: #f5f5f7;
  color: #1d1d1f;
}
.me-tip-btn.is-active {
  background: #e8e8ed;
  color: #1d1d1f;
}
.me-tip-btn:disabled {
  opacity: 0.4;
  cursor: default;
}
.me-tip-select {
  height: 30px;
  border: 0;
  border-radius: 8px;
  background: none;
  font: inherit;
  font-size: 13px;
  color: #1d1d1f;
  padding: 0 6px;
  cursor: pointer;
}
.me-tip-select:hover {
  background: #f5f5f7;
}
.me-tip-sep {
  width: 1px;
  height: 18px;
  margin: 0 4px;
  background: #f0f0f2;
}
.me-tip-linkbar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px;
  border-bottom: 1px solid #f0f0f2;
}
.me-tip-linkinput {
  flex: 1;
  min-width: 0;
}
.me-tip-loading {
  padding: 16px;
  font-size: 14px;
  color: #a1a1a6;
}
/* ProseMirror 可编辑区：正文 prose。固定高度 + 内部滚动 —— 不随内容自适应增高，
   超出部分在框内滚动（弹窗默认 320；整页向导见下方 .me-jobform--page 覆盖）。 */
/* 编辑器正文的 chrome（高度 / 滚动 / padding / outline）。prose 排版（字号 / 行高 /
   颜色 / 标题 / 列表 / 链接 / 引用 / code）并到 markdown.css 跟 .t4-md / .jd-prose
   共用 —— 编辑所见即公开页所得。这里不再各写一套 prose。 */
.me-tip-body {
  height: 320px;
  overflow-y: auto;
  padding: 14px 16px;
  outline: none;
}
/* 整页新建 / 编辑（非弹窗）「职位描述」步：编辑器是该步唯一字段，让它 flex 填满
   工具栏与底部操作栏之间的空间 —— 固定视口内高度、超出在框内滚动，永远贴在底部
   操作栏上方（不再用「扣多少 chrome」的魔法 calc，返回胶囊 / 标题 / 步骤条怎么变
   都自适应）。DOM 链：form(.me-jobform--page flex:1) → 分步壳 .me-jobform-step →
   .me-field → .me-field-body → .me-tip → 正文 .me-tip-body。每一层都要
   flex:1 + min-height:0，缺任一层链就退化成「按内容撑高」（编辑器一开始很矮、
   打字才涨）。只命中含富文本的那一步（:has(.me-tip)），别的步不受影响。 */
.me-jobform--page .me-jobform-step:has(.me-tip) {
  flex: 1;
  min-height: 0;
}
.me-jobform--page .me-jobform-step:has(.me-tip) > .me-field {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
}
.me-jobform--page .me-jobform-step:has(.me-tip) > .me-field > .me-field-body {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
}
.me-jobform--page .me-tip {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
}
/* tiptap 的 EditorContent 包裹层（.me-tip-content）—— 夹在 .me-tip 与 .ProseMirror
   （.me-tip-body）之间，默认无高度语义，必须也 flex 填满，否则里层正文拿不到
   高度、卡在弹窗默认 320。 */
.me-jobform--page .me-tip-content {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
}
.me-jobform--page .me-tip-body {
  flex: 1;
  min-height: 0;
  height: auto; /* 覆盖弹窗默认的固定 320；高度改由 flex 决定 */
}
/* 开户向导第 2 步是「多字段滚动表单」，可能含多个富文本 —— 不同于 JD 描述页那种
   「整步只有一个富文本、撑满剩余高度」。上面那组 :has(.me-tip) 会把这一步里所有
   me-field 都 flex:1 + min-height:0 → 多字段互相挤压、标题和「+ 添加」重叠。
   在 wizard 变体里取消撑满，让字段回到按内容排布，富文本给一个温和 min-height 随内容涨。
   （同特异性、位置靠后 → 覆盖上面的 --page 规则。）
   ⚠️ step 容器只去掉 flex:1、保留它自己的 display:flex + gap（字段间距 / 宽度约束靠它），
   千万别把 step 设 display:block，否则 gap 没了、字段挤成一团、宽度还会溢出。 */
.me-jobform--wizard .me-jobform-step:has(.me-tip) {
  flex: none;
}
.me-jobform--wizard .me-jobform-step:has(.me-tip) > .me-field,
.me-jobform--wizard .me-jobform-step:has(.me-tip) > .me-field > .me-field-body {
  flex: none;
  min-height: auto;
  display: block;
}
.me-jobform--wizard .me-tip,
.me-jobform--wizard .me-tip-content {
  flex: none;
  min-height: 0;
}
/* 复合特异性（--wizard.--page，3 类）稳压所有 2 类的 .me-jobform--page .me-tip-body 规则
   （含 base 的 height:320 与撑满规则）→ 开户向导里富文本恒为紧凑高度、随内容涨，不再
   一个个撑成大空框把整步拉长。 */
.me-jobform--wizard.me-jobform--page .me-tip-body {
  flex: none;
  height: auto;
  min-height: 120px;
}
.me-tip-body:focus {
  outline: none;
}
/* .t4-md 给标题上了 flex + baseline，是为公开页 emoji .em span 对齐；编辑器里标题是
   contenteditable、没有 .em，flex 会干扰光标 —— 覆盖回 block（字号/颜色仍随 t4-md）。 */
.me-tip-body h2,
.me-tip-body h3 {
  display: block;
}
.me-tip-body > * {
  margin: 0 0 12px;
}
.me-tip-body > *:last-child {
  margin-bottom: 0;
}
/* tiptap 把列表项内容包成 <p>；.t4-md p 的下边距在这里会撑开每个 li，重置掉。 */
.me-tip-body li > p {
  margin: 0;
}
.me-tip-body hr {
  border: 0;
  border-top: 1px solid #ececef;
  margin: 16px 0;
}
/* Placeholder 扩展：空段落显示灰色提示文案 */
.me-tip-body p.is-editor-empty:first-child::before {
  content: attr(data-placeholder);
  color: #a1a1a6;
  float: left;
  height: 0;
  pointer-events: none;
}

/* 完成步的「预览」靠左，与右侧提交按钮组拉开（同 MeJobFooter 预览的布局语义）。 */
.me-wiz-preview {
  margin-right: auto;
}
/* 匹配标准编辑器（components/shared/JobCriteriaEditor me 皮肤）：
   行结构复用 .me-qed-*；这里只补类型段控与顶部说明。 */
/* 组间距比申请问题松一些 —— 每条标准是「段控 + 输入 + 说明」的三行小组，
   更大的组间距让相邻标准不糊在一起。只作用于本编辑器，不动共用的 .me-qed。
   双类（0,2,0）稳赢基类 .me-qed 的 gap，不依赖源码顺序。 */
.me-qed.me-crit-root {
  /* 匹配标准行现在是卡片（.me-qed-row，自带内距 + hover 抬起），行距 12。 */
  gap: 12px;
}
/* 一行标准内三个控件（段控 → 输入框 → 说明）的上下间距翻倍：
   段控↓输入 = .me-qed-qhead 的 margin-bottom（6 → 12）；
   输入↓说明 = .me-qed-hint 的 margin-top（6 → 12）。
   只在匹配标准作用域内加倍，不动申请问题共用的同名类。 */
.me-crit-root .me-qed-qhead {
  margin-bottom: 12px;
}
.me-crit-root .me-qed-hint {
  margin-top: 12px;
}
.me-crit-note {
  margin: 0;
}
.me-wiz-summary {
  display: grid;
  gap: 10px;
}
.me-wiz-sumrow {
  display: flex;
  gap: 12px;
  font-size: 14px;
}
.me-wiz-sumlabel {
  flex: 0 0 72px;
  font-size: 13px;
  color: #a1a1a6;
}
.me-wiz-sumval {
  color: #1d1d1f;
  min-width: 0;
}
.me-wiz-sumnote {
  margin: 4px 0 0;
  font-size: 12px;
  color: #a1a1a6;
}
/* 向导整页（/team-manage/jobs/new）：「职位描述」步编辑框吃满视口剩余高度，
   页面本身不出滚动条，长内容滚在编辑框内部（textarea 自身滚动）。
   420px ≈ 上下固定开销：shell 上下 padding + 返回胶囊 + 标题 + 步骤条 +
   字段标签 + 工具栏 + 底部导航 + 各级 gap。视口太矮时兜底 240px（此时
   页面允许滚动，可用性优先）。 */
.me-jobform--page .me-markdown {
  height: calc(100vh - 420px);
  min-height: 240px;
}
/* ── 整页职位表单（.me-jobform--page = 新建向导 + 编辑页，弹窗不带）——
   底部操作栏（向导的 .me-wiz-nav / 编辑的 .me-jobfoot）钉在页面下缘 ──
   这页把 .me-shell-main 默认的 120px 大底部留白清零（:has() 用法与
   .me-shell-main-inner:has(.me-with-toc) 同例）：sticky footer 的包含块是
   form，form 底边若被 main 的 padding-bottom 顶起，滚到底时 footer 会停在
   页面底部上方那段 padding 处、露出一条背景色缝隙（看着像 footer 被顶上去）。
   footer 自带 padding-bottom:24px 做底部呼吸，这里不用再留。
   同时把 main → inner → form 接成 flex 链：form 吃满视口剩余高度
   （.me-shell-main 本身 min-height:100vh），不依赖「顶部 chrome 高度」的
   魔法数 —— 返回胶囊 / 标题 / 步骤条无论怎么变，操作栏都钉在页面底缘。 */
.me-shell-main:has(.me-jobform--page) {
  padding-bottom: 0;
  display: flex;
  flex-direction: column;
  /* 富文本步的编辑器要「固定视口高度 + 内容超出在框内滚动」，前提是这条 flex 链
     的顶端有【确定且封顶】的高度。min-height:100vh 只是地板、内容多了会往下长
     （编辑器打字就撑高、页面整体滚）；这里改成确定的 height:100vh 封死一屏。
     base 是 content-box，height:100vh 会再叠 48px 顶部 padding → 超出 48px，
     故一并 border-box 让 100vh 含 padding，内容正好一屏、操作栏不重叠。
     移动端（≤900px）侧栏变顶部行、.me-shell 是普通块，下面 media query 里放开
     成正常文档流滚动（不封死高度）。 */
  box-sizing: border-box;
  height: 100vh;
  min-height: 0;
}
/* 移动端（≤900px）放开固定一屏：侧栏是顶部行、.me-shell 普通块，封死 100vh 会把
   主区顶到视口以下。回到正常文档流滚动，富文本编辑器给一个视口相对固定高度（框内
   仍可滚，页面也可滚）。放在桌面规则之后 —— media query 不提升特异性，靠源码顺序
   在 ≤900px 时覆盖上面的 height:100vh。 */
@media (max-width: 900px) {
  .me-shell-main:has(.me-jobform--page) {
    height: auto;
    min-height: 100vh;
  }
  .me-jobform--page .me-tip-body {
    flex: none;
    height: 50vh;
    min-height: 260px;
  }
}
.me-shell-main:has(.me-jobform--page) > .me-shell-main-inner {
  flex: 1;
  /* 关键：min-height:0 让本层能收缩到父级剩余高度以下，下游 flex:1（表单 →
     字段 → 编辑器）才拿得到确定高度去 flex 填满 / 内部滚动 —— 缺它整条链退化成
     「按内容撑高」（富文本步一开始很矮、打字才涨）。 */
  min-height: 0;
  width: 100%;
  display: flex;
  flex-direction: column;
}
/* .me-shell-fade：MeShell 的页面淡入包裹层（inner > .me-shell-fade > form），
   夹在 inner 与 form 之间且默认无 flex 语义，必须也接进链条，否则它按内容撑高
   （编辑器内容一多就把它顶到 2865，穿透固定的一屏、页面整体滚）。 */
.me-shell-main:has(.me-jobform--page) > .me-shell-main-inner > .me-shell-fade {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
}
/* 表单撑满 inner 剩余高度，操作栏用 margin-top:auto 钉在底缘 —— 各步内容
   高度不同时按钮不再跟着字段跳。内容超高（如问题加满）时 sticky 兜底：
   滚动过程中操作栏始终贴视口底部可见；白底垫住滚过的内容（与页面同底色，
   不构成视觉分割）。 */
.me-jobform--page {
  flex: 1;
  min-height: 0;
}
.me-jobform--page .me-wiz-nav,
.me-jobform--page .me-jobfoot {
  margin-top: auto;
  position: sticky;
  bottom: 0;
  z-index: 2;
  padding-bottom: 24px;
  /* 半透明白 + 毛玻璃：内容滚到底栏后面时透出一层虚化（同 admin WizardNav 的
     bg-white/95 backdrop-blur 做法）。不支持 backdrop-filter 的浏览器回退到
     纯 50% 白，仍可读。 */
  background: rgba(255, 255, 255, 0.5);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}
.me-jobform--page .me-wiz-nav {
  padding-top: 12px;
}
/* 申请问题 / 匹配标准步：底栏 sticky 钉在视口底，内容滚到底时「+ 添加…」按钮
   会紧贴 footer。给这两个编辑器（都用 .me-qed）底部留一段滚动余量，最后一项
   不再顶着操作栏。只作用于整页表单，弹窗不受影响。 */
.me-jobform--page .me-qed {
  padding-bottom: 40px;
}
/* 整页场景复用 .ov-back 视觉但走文档流（同 inbox-detail 顶栏的处理）：
   去掉浮层的 absolute 定位，作为 <Link> 渲染时压掉下划线，下方留白接页标题。
   必须用 .ov-back.me-page-back 双类提权（0,2,0）：overlay.css 在 me.css 之后
   加载，单类同权重会被 .ov-back 的 absolute 定位反压回左上角。 */
.ov-back.me-page-back {
  position: static;
  top: auto;
  left: auto;
  z-index: auto;
  text-decoration: none;
  align-self: flex-start; /* 表单页 inner 是 flex column：不被拉伸成整行宽 */
  flex: none;
}
/* 整页顶部行：返回胶囊 + 页标题同排（同 inbox-detail 顶栏的组合方式）。
   下方留白由这一行统一给，胶囊自身不再带 margin-bottom。 */
.me-page-top {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 44px;
}
/* 表单内联时（JobOwnerEditForm 把顶部行放进 .me-jobform 的 flex 列）：
   自身 margin-bottom 会和表单 32px gap 叠加成 ~76px 巨缝，归零交给 gap 统一节奏。 */
.me-jobform .me-page-top {
  margin-bottom: 0;
}
/* 标题 + 副标题一列（编辑页：职位名 + 薪资·经验口径）。min-width:0 让长标题能
   收缩不撑破行；返回胶囊按 .me-page-top 的 center 与整列垂直居中。 */
.me-page-titlecol {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
/* 开户向导（me-jobform--wizard）里标题↔描述间距 +2px；职位编辑表单不带此修饰符，不受影响。 */
.me-jobform--wizard .me-page-titlecol {
  gap: 4px;
}
/* 顶栏行内动作胶囊 —— 编辑页「查看投递」/ 投递详情「编辑职位」共用。白底描边小胶囊，
   hover 有反馈（对齐 .ov-back 的可点感）。放在 .me-page-top / .tib-detail-top 里跟标题同排。 */
.me-head-action {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 14px;
  border-radius: 999px;
  background: #fff;
  border: 1px solid #e5e5e7;
  color: #1d1d1f;
  font-size: 13px;
  font-weight: 500;
  line-height: 1;
  text-decoration: none;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, box-shadow 0.15s;
}
.me-head-action:hover {
  background: #f5f5f7;
  border-color: #d5d5d7;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}
.me-head-action:active {
  background: #ececef;
}
/* 「查看投递」角标：默认灰底黑字（显总投递数）；有未读加 --unread 变蓝底白字（显未读数）。 */
.me-head-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  line-height: 1;
  background: #ececef;
  color: #1d1d1f;
}
.me-head-badge--unread {
  background: #2563eb;
  color: #fff;
}
.me-jobform-submeta {
  margin: 0;
  font-size: 13px;
  color: #86868b;
  line-height: 1.4;
}
/* 顶部行右侧「清空草稿」—— 从本地草稿恢复时才出现。垃圾桶 icon + 文字 + 1px
   hairline 边框胶囊，明确是可点的丢弃动作（比原来纯浅灰文字醒目）；hover 转红
   （同 .me-qed-remove 的红色约定）。margin-left:auto 推到最右。 */
.me-jobform-cleardraft {
  margin-left: auto;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font: inherit;
  font-size: 13px;
  font-weight: 500;
  color: #5d5d5d;
  background: #ffffff;
  border: 1px solid #e2e2e6;
  padding: 7px 14px;
  border-radius: 999px;
  cursor: pointer;
  transition: color 0.15s, background 0.15s, border-color 0.15s;
}
.me-jobform-cleardraft svg {
  color: #a1a1a6;
  flex-shrink: 0;
  transition: color 0.15s;
}
.me-jobform-cleardraft:hover {
  color: #b91c1c;
  background: #fdeeee;
  border-color: #f5c9c4;
}
.me-jobform-cleardraft:hover svg {
  color: #b91c1c;
}

/* ─────────── 地点选择弹窗（components/public/me/MeAddressPicker） ───────────
 * 搜索 + 勾选 + 新建，交互对齐 admin AddressPicker；视觉按设计系统：
 * 白底 + 阴影、无 border、行之间靠留白与 hover 底色区分（无分割线）。 */
/* 透明全屏 backdrop：只接外部点击关闭，不压暗页面（popover，非模态弹窗）。
   z-index 跟「添加问题」popover 同层（90），保证浮在编辑弹窗之上。 */
.me-adrp-root {
  position: fixed;
  inset: 0;
  z-index: 90;
}
/* 面板：position / left / top(bottom) / width / max-height 由 JSX 按锚点内联下发；
   这里只管视觉（白底 + squircle + popover 级阴影）与内部纵向布局。 */
.me-adrp {
  display: flex;
  flex-direction: column;
  min-height: 0;
  background: #ffffff;
  border-radius: 16px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 12px 40px rgba(0, 0, 0, 0.14);
  overflow: hidden;
}
.me-adrp-search {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 16px 10px;
}
.me-adrp-search svg {
  color: #a1a1a6;
  flex: 0 0 auto;
}
.me-adrp-input {
  flex: 1;
  min-width: 0;
  border: 0;
  outline: none;
  background: transparent;
  font: inherit;
  font-size: 15px;
  color: #1d1d1f;
}
.me-adrp-input::placeholder {
  color: #a1a1a6;
}
.me-adrp-list {
  flex: 1;
  min-height: 0; /* popover 面板 max-height 有界时，列表才能内部滚动而非把面板撑高 */
  overflow: auto;
  padding: 0 8px 8px;
}
.me-adrp-item {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 10px 8px;
  border: 0;
  border-radius: 10px;
  background: none;
  font: inherit;
  font-size: 14px;
  color: #1d1d1f;
  text-align: left;
  cursor: pointer;
}
.me-adrp-item:hover {
  background: #f5f5f7;
}
.me-adrp-item:disabled {
  opacity: 0.5;
  cursor: default;
}
.me-adrp-item-label {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.me-adrp-check {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  flex: 0 0 auto;
  border-radius: 6px;
  border: 1px solid #ececef;
  color: transparent;
}
.me-adrp-item.is-on .me-adrp-check {
  background: #1d1d1f;
  border-color: #1d1d1f;
  color: #ffffff;
}
.me-adrp-check--plus {
  border: 0;
  color: #5d5d5d;
  font-size: 15px;
}
.me-adrp-pending {
  margin-left: auto;
  font-size: 12px;
  color: #a1a1a6;
}
.me-adrp-err {
  margin: 4px 8px 8px;
  font-size: 12px;
  color: #b91c1c;
}
.me-adrp-empty {
  margin: 0;
  padding: 28px 0;
  text-align: center;
  font-size: 13px;
  color: #a1a1a6;
}
.me-adrp-foot {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
  padding: 12px 16px 14px;
}

