/*
 * 「我的」命名空间 —— 个人中心 / 自助编辑系列页面用。
 *
 * 设计系统约束（Bonjour AI 找工地图）：
 *   - 页面 + 卡片 = 纯白 (#ffffff)，靠 shadow-3 + 大间距分组，不用 border 当
 *     视觉边界（§1.3 / §1.4）
 *   - 系统字体；ink-1 / ink-3 区分主副文本（§1.1 / §1.2）
 *   - section 间距 72 / mobile 56（§1.5）
 *
 * Input / textarea 这种"输入控件"保留细 1px border 作为可输入感知 affordance —
 * 这不属于"卡片 / Block 视觉边界"，不违反 §1.4。
 */

/* ─────────── MeShell 后台外壳 ───────────
   /me/* 所有页面共用的左侧 sidebar + 主内容区两栏布局。独立于公开站
   .ai-sidebar，跟 admin 后台也无关 —— 客户管理后台自带的导航壳。

   视觉：sidebar 浮成白卡片，四周留 gap；页面 + main 区域纯白（§1.3），
   sidebar 跟内层 cards 都靠 shadow-3 浮出（§1.4 不用 border 作视觉分组）。 */
:root {
  /* 对齐主站:主站可见 nav 容器 264px(flush 贴左)。我们是浮动卡 + 12px 外间距,
     side-w 240 + 2×gap(24) = 264 → 主内容起始位置与主站一致,侧栏也不再偏宽。 */
  --me-shell-side-w: 240px;
  --me-shell-gap: 12px;        /* sidebar 四周留白 */
}
.me-shell {
  min-height: 100vh;
  background: #ffffff;
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text",
    "PingFang SC", "Noto Sans SC", system-ui, sans-serif;
  /* 字体平滑已全局加在根 layout 的 html/body（继承到所有页面），这里不再重复。 */
  color: #1d1d1f;
  letter-spacing: -0.005em;
}
.me-shell-side {
  position: fixed;
  top: var(--me-shell-gap);
  left: var(--me-shell-gap);
  bottom: var(--me-shell-gap);
  width: var(--me-shell-side-w);
  background: #ffffff;
  border-radius: 36px; /* 圆角翻倍（18→36），配合 squircle 平滑圆角更圆润 */
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  /* 复刻概览卡（.t4--in-dashboard .t4-topcard）的观感：同一道轻阴影 + 1px 淡描边。
     阴影本就一致；差别在概览卡从 .t4-topcard 继承了这道边框、边缘更清晰，侧栏补上对齐。
     轻阴影缘由：dashboard 上 sidebar + hero + 列表卡同屏，公开页那套 shadow-3
     （0 14px 44px 大扩散）叠起来会把整页染灰，这里收成小范围低透明度的浮起感。 */
  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);
  padding: 20px 16px;
  display: flex;
  flex-direction: column;
  z-index: 30;
  overflow-y: auto;
}
.me-shell-main {
  /* sidebar 自己占 gap + width；main 左侧再留一个 gap 作为列间空隙 */
  margin-left: calc(var(--me-shell-side-w) + var(--me-shell-gap) * 2);
  padding: 48px 36px 120px;
  background: transparent; /* 透出 .me-shell 的白底；内层 .me-mod / .me-section 自己带 shadow 跳出 */
  min-height: 100vh;
}
.me-shell-main-inner {
  max-width: 880px;
  margin: 0 auto;
}
/* 团队主页编辑页：表单要在整个内容区居中、TOC 挂在表单左侧，
   故仅这页解除 880 上限，用满内容区宽度（其它 me- 页仍保持 880）。 */
.me-shell-main-inner:has(.me-with-toc) {
  max-width: none;
}
/* 投递看板：信息更密（职位 + 时间 + 投递数 + 未读 + 行内动作），放宽到 1120 用满页面横向空间。 */
.me-shell-main-inner:has(.tib) {
  max-width: 1120px;
}

/* 子页 / 模块切换的进场动画 —— MeShell 里 .me-shell-fade 用 key=pathname，路由变化
   时重挂载 → 重放。淡入 + 轻微上移，消除硬切感（同 .me-step-anim 手法）。
   translateY 只在 0.26s 动画期间存在、结束回 none，不长期给子树建 transform 上下文，
   不影响 detail 页的 sticky 顶栏（router.refresh 不改 pathname → 不重挂载、不闪）。 */
.me-shell-fade {
  animation: me-shell-fade-in 0.26s cubic-bezier(0.2, 0, 0, 1);
}
@keyframes me-shell-fade-in {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .me-shell-fade { animation: none; }
}
@media (max-width: 900px) {
  .me-shell-side {
    position: static;
    width: auto;
    height: auto;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
    border-radius: 14px;
    margin: var(--me-shell-gap);
    padding: 12px 16px;
    flex-direction: row;
    align-items: center;
    overflow-x: auto;
  }
  .me-shell-main { margin-left: 0; padding: 24px 16px 120px; }
}

/* Sidebar 顶部团队区（Read.cv 风）：头像 / 团队名 + 发布状态 */
.me-shell-team {
  padding: 8px 8px 0;
  margin-bottom: 16px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
/* 头像：Figma 是无底框的 👋（直接展示 emoji/logo，不套灰圆）。~28px。 */
/* 团队 logo —— 跟公开页 .t4-hero-avatar 同套处理：白底软圆角方框 + inset 1px 描边
   （不用 border + corner-shape:squircle，那个在 Chrome 会把描边只画在四个角）。
   方形 logo 的角不被圆 mask 切掉；深色 SVG/PNG 在白底上也清晰。 */
.me-shell-team-avatar {
  width: 32px;
  height: 32px;
  margin-bottom: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  text-decoration: none;
  border-radius: 9px;
  background: #ffffff;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.06);
  overflow: hidden;
}
.me-shell-team-avatar img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.me-shell-team-avatar-fb {
  font-size: 15px;
  font-weight: 500;
  color: #86868b;
}
.me-shell-team-meta { min-width: 0; max-width: 100%; }

/* ── 投递详情页：左栏收成 Figma IconNav 纯图标轨（1243:6298 的 IconNav）──────────
   68px 宽、扁平白底、右侧 1px #ececef 分割线、贴左铺满全高；顶部 logo（34，圆角10）→
   图标按钮 40×40 圆角11（active 灰底 #f5f5f5、图标 21）；底部「返回」收成图标按钮。 */
.me-shell--rail .me-shell-side {
  top: 0; left: 0; bottom: 0; width: 68px; height: 100vh;
  border-radius: 0; box-shadow: none; border-right: 1px solid #ececef;
  padding: 20px 0; align-items: center;
}
.me-shell--rail .me-shell-main { margin-left: 68px; }
.me-shell--rail .me-shell-team { padding: 0; margin-bottom: 8px; align-items: center; }
.me-shell--rail .me-shell-team-avatar { width: 34px; height: 34px; margin-bottom: 0; border-radius: 10px; }
.me-shell--rail .me-shell-team-meta { display: none; }
.me-shell--rail .me-shell-nav { gap: 6px; align-items: center; padding: 0; }
.me-shell--rail .me-shell-nav-item { width: 40px; height: 40px; padding: 0; gap: 0; justify-content: center; border-radius: 11px; }
.me-shell--rail .me-shell-nav-item > span:last-child { display: none; }
.me-shell--rail .me-shell-nav-icon { width: 21px; height: 21px; }
.me-shell--rail .me-shell-nav-item.is-active { background: #f5f5f5; }
.me-shell--rail .me-shell-back-wrap { padding: 0; }
.me-shell--rail .me-shell-back {
  width: 40px; height: 40px; padding: 0; gap: 0; justify-content: center;
  border-radius: 11px; border: 0; background: transparent;
  backdrop-filter: none; -webkit-backdrop-filter: none;
}
.me-shell--rail .me-shell-back span { display: none; }
/* 团队名：Figma 18px / Medium / tracking -0.1px */
.me-shell-team-name {
  font-size: 18px;
  font-weight: 500;
  letter-spacing: -0.1px;
  color: #1d1d1f;
  margin: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* 发布状态：Figma 14px / Regular / #86868b（已发布）。草稿保留暖琥珀作未发布标识。 */
.me-shell-team-status {
  font-size: 14px;
  font-weight: 400;
  color: #c2730c;
  margin: 4px 0 0;
}
.me-shell-team-status.is-published {
  color: #86868b;
}
/* Sidebar 导航项 */
.me-shell-nav {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 0;
  margin: 0;
}
.me-shell-nav-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-radius: 10px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  font-size: 14px;
  font-weight: 400;
  color: #3c3c43;
  text-decoration: none;
  transition: background 0.15s, color 0.15s;
  /* §1.3 允许的 hover 临时态用 bg-soft */
}
.me-shell-nav-item:hover {
  background: #f5f5f5;
  color: #1d1d1f;
}
.me-shell-nav-item.is-active {
  background: #f7f7f7;
  color: #1d1d1f;
  font-weight: 500;
}
/* 选中态蓝色「！」—— 线上导航同款（#007AFF iOS 蓝） */
.me-shell-nav-bang {
  color: #007aff;
  font-weight: 600;
  margin-left: 1px;
}
.me-shell-nav-icon {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  color: currentColor;
  display: inline-flex;
}

.me-shell-spacer { flex: 1; }

/* 底部「返回找工地图」描边 pill（Figma 435:4133）：rgba(white,.85) + 1px #ececef，
   居中，padding 13/24，icon 16 + 文案 14/Medium/#1d1d1f。 */
.me-shell-back-wrap {
  display: flex;
  justify-content: center;
  padding: 0 8px 4px;
}
.me-shell-back {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 13px 24px;
  border: 1px solid #ececef;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.85);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  font-size: 14px;
  font-weight: 500;
  color: #1d1d1f;
  text-decoration: none;
  transition: border-color 0.15s, background 0.15s;
}
.me-shell-back:hover {
  border-color: #1d1d1f;
}

@media (max-width: 900px) {
  /* 横排时清掉竖排侧栏遗留的 8px 8px 0 不对称内边距 —— 否则头像在框里被压到中线偏下、
     和右侧地图/心形图标不对齐（基础规则那条是给桌面竖排用的）。 */
  .me-shell-team { padding: 0; margin-bottom: 0; flex-shrink: 0; flex-direction: row; align-items: center; }
  .me-shell-team-avatar { margin-bottom: 0; }
  .me-shell-team-meta { display: none; }
  .me-shell-nav { flex-direction: row; flex: 1; padding-left: 8px; }
  .me-shell-nav-item { padding: 8px 12px; white-space: nowrap; }
  .me-shell-nav-item span:not(.me-shell-nav-icon) { display: none; }
  .me-shell-spacer, .me-shell-back-wrap { display: none; }
}

/* /me/* 后台子页统一头部：右上角按钮位（其余文案靠卡片内容自带）。 */
.me-page-head {
  margin-bottom: 32px;
}
.me-page-head--admin-row {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}
/* 页头说明区(Read.cv「Careers」表头形态):标题 + 说明文案在左,按钮在右。 */
.me-page-head-intro {
  min-width: 0;
  max-width: 540px;
}
.me-page-title {
  margin: 0;
  font-size: 15px;
  /* §1.1 层级靠颜色(ink-1)+ 字号撑，完全不加粗(400)。h1 默认 700 在这里被显式覆盖。 */
  font-weight: 400;
  letter-spacing: -0.01em;
  color: #1d1d1f;
}
.me-page-desc {
  margin: 4px 0 0;
  font-size: 15px;
  line-height: 1.5;
  color: #86868b;
}
/* 表单 + 左侧 TOC 的两栏布局 —— 资料编辑这种长表单专用。
   桌面：sticky TOC 200px + 1fr form；窄屏（≤1100px）单列，TOC 降级成横向 chip 行。 */
.me-with-toc {
  /* 表单(.me-form)在内容区水平居中；TOC 作为"边注"挂在表单左侧。
     用对称 1fr 左右边距让中间的 form 列居中，TOC 落进左边距并贴着表单左缘。 */
  display: grid;
  grid-template-columns: [edge-l] 1fr [form-start] minmax(0, 620px) [form-end] 1fr [edge-r];
  align-items: start;
}
.me-with-toc .me-form { grid-column: form-start / form-end; }
.me-form-toc {
  grid-column: edge-l / form-start;
  justify-self: end;
  width: 180px;
  margin: 0 48px 0 0;
  position: sticky;
  top: 24px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 0;
  min-width: 0;
}
.me-form-toc-item {
  display: block;
  font-size: 13px;
  color: #86868b;
  padding: 8px 12px;
  text-decoration: none;
  border-radius: 8px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  transition: color 0.15s, background 0.15s;
}
.me-form-toc-item:hover {
  background: #f5f5f5;
  color: #1d1d1f;
}
.me-form-toc-item.is-active {
  color: #1d1d1f;
  font-weight: 500;
}
@media (max-width: 1440px) {
  /* 内容区不够宽以容纳"居中表单 + 左侧 TOC"时，降级成单列 + 顶部横向目录 */
  .me-with-toc {
    grid-template-columns: 1fr;
    gap: 24px;
  }
  .me-with-toc .me-form { grid-column: 1; }
  .me-form-toc {
    grid-column: 1;
    justify-self: stretch;
    width: auto;
    margin: 0 0 8px;
    position: static;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 6px;
  }
  .me-form-toc-item {
    padding: 6px 12px;
    border-radius: 999px;
    background: #ffffff;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
  }
  .me-form-toc-item.is-active {
    color: #1d1d1f;
    font-weight: 500;
  }
}

/* Section card —— 白底 + shadow-3，无 border。 */
.me-section {
  /* 平铺：取消白卡片 chrome，靠 section-title + 64px 大间距分组
     （§1.5：用大标题 + 大间距分组，不用 hr / border）。 */
  padding: 0;
  margin-bottom: 64px;
  /* TOC anchor 跳转时给一点呼吸缓冲，section 头不贴顶 */
  scroll-margin-top: 24px;
}
.me-section-head {
  margin-bottom: 20px;
}
/* §1.1 + §5 Main+Sub 文本对：title + desc 同字号同字重，靠 ink 颜色区分层级。
   字号取 row 15/400（公开站 .section-title 同款），letter-spacing 跟整体页面对齐。 */
.me-section-title {
  font-size: 15px;
  font-weight: 400;
  color: #1d1d1f;
  margin: 0;
  letter-spacing: -0.005em;
}
.me-section-desc {
  font-size: 15px;
  font-weight: 400;
  color: #86868b;
  margin: 2px 0 0;
  letter-spacing: -0.005em;
}
/* me-field 上下间距统一 10px（section 内 / 列表 item 内 / 行内 grid 都一致）。 */
.me-section-body {
  display: grid;
  gap: 10px;
}

/* 表单根 —— 顶层 grid，section 之间不再额外 gap（卡片 margin 自己管）。 */
.me-form {
  display: block;
}

/* 列表 item 卡片里的内部 grid */
.me-item-inner {
  display: grid;
  gap: 10px;
}
.me-grid-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
@media (max-width: 720px) {
  .me-section { margin-bottom: 48px; }
  .me-grid-2 { grid-template-columns: 1fr; }
}

/* ─────────────────────────────────────────────────────────
 * 团队主页编辑（/team-manage/profile）专属视觉 —— Read.cv 风格
 * 作用域收口在 .me-with-toc（仅 TeamOwnerEditForm 用），不影响其它
 * me- 页面 / .me-mod 卡片，可放心迭代。
 * 取舍备注：填充灰输入框（#f1f1ef）偏离 DS §1.3（bg-soft 仅用于 hover/code），
 * 本页有意采用以贴合 Read.cv 观感；若验证后想全站统一，再上提到 .me-input 基类。
 * ───────────────────────────────────────────────────────── */

/* 区块：更大的呼吸 + 更强的标题层级（weight ≤ 600，仍守 §1.1 角色字重） */
.me-with-toc .me-section { margin-bottom: 56px; }
.me-with-toc .me-section-head { margin-bottom: 18px; }
/* §1.1：标题与描述同字号同字重，靠 ink 颜色区分层级（对齐 267：16px Regular）。 */
.me-with-toc .me-section-title {
  font-size: 16px;
  font-weight: 400;
  letter-spacing: -0.005em;
}
.me-with-toc .me-section-desc {
  font-size: 16px;
  margin-top: 4px;
  line-height: 1.5;
  letter-spacing: -0.005em;
  color: #8e8e8e;
}
.me-with-toc .me-section-body { gap: 16px; }

/* 字段标签：中性灰 #8e8e8e（对齐 267），间距加大 */
.me-with-toc .me-field-label {
  color: #8e8e8e;
  margin-bottom: 8px;
}

/* 输入框 / 文本域 / markdown —— 填充灰、无可见边框、内距更舒展 */
.me-with-toc .me-input {
  background: #f7f7f7;
  border-color: transparent;
  padding: 13px 16px;
}
.me-with-toc .me-input:focus {
  background: #f0f0f0;
  border-color: transparent;
  box-shadow: inset 0 0 0 1.5px rgba(29, 29, 31, 0.12);
}
.me-with-toc .me-textarea {
  min-height: 76px;
  padding: 13px 16px;
}
.me-with-toc .me-markdown { min-height: 150px; }

/* 社交链接平台选择器：跟随填充风格 */
.me-with-toc .me-social-platform {
  background: #f7f7f7;
  border-color: transparent;
}
.me-with-toc .me-social-platform:focus-within {
  border-color: transparent;
  box-shadow: inset 0 0 0 1.5px rgba(29, 29, 31, 0.12);
}

/* Logo 上传：填充灰方块，去掉白底投影，读起来跟输入框同语言 */
.me-with-toc .me-image-btn {
  background: #f7f7f7;
  box-shadow:
    0 1px 2px rgba(0, 0, 0, 0.05),
    0 8px 20px -8px rgba(0, 0, 0, 0.1);
  border: 1px solid #efefef;
  /* 普通圆角：squircle + 描边会在四角留毛刺（Chromium 渲染问题），这里关掉 squircle */
  -webkit-corner-shape: round;
  corner-shape: round;
}
.me-with-toc .me-image-btn:hover:not(:disabled) {
  background: #f0f0f0;
  box-shadow:
    0 2px 4px rgba(0, 0, 0, 0.06),
    0 14px 28px -10px rgba(0, 0, 0, 0.12);
}

/* 添加按钮：胶囊 + 浅虚线 #efefef + 文字中性灰 #8e8e8e（对齐 267） */
.me-with-toc .me-add-btn {
  border-color: #efefef;
  border-radius: 999px;
  padding: 8px 16px;
  color: #8e8e8e;
}

/* Base 地 / 自定义 tag：chips 直接铺在页面上（无背景框），chip 用浅 hairline。 */
.me-with-toc .me-chips-empty { color: #8e8e8e; }
.me-with-toc .me-chip {
  background: #ffffff;
  border-color: #e2e2de;
}
.me-with-toc .me-chip-x { color: #a1a1a6; }
/* 放大 chip 内的 ×（按钮仍 20×20，chip 尺寸不变） */
.me-with-toc .me-chip-x svg { width: 16px; height: 16px; }
/* inline「+ 添加」保持紧凑（避免被上面的 me-add-btn padding 撑大） */
.me-with-toc .me-add-btn--inline {
  padding: 5px 12px;
  font-size: 12px;
}

/* 标签录入：点 + 添加后原地出现的输入框（虚线→聚焦实线，胶囊，跟 chip 同高） */
.me-with-toc .me-chip-input {
  appearance: none;
  font: inherit;
  font-size: 13px;
  color: #1d1d1f;
  background: #ffffff;
  border: 1px dashed #d2d2d7;
  border-radius: 999px;
  padding: 5px 14px;
  outline: none;
  min-width: 160px;
  transition: border-color 0.15s, border-style 0.15s;
}
.me-with-toc .me-chip-input::placeholder { color: #a1a1a6; }
.me-with-toc .me-chip-input:focus {
  border-style: solid;
  border-color: #1d1d1f;
}

/* 保存栏提示文案：中性灰 #8e8e8e（对齐 267） */
.me-with-toc .me-savebar-hint { color: #8e8e8e; }

/* TOC 目录项间距微调 */
.me-with-toc .me-form-toc { gap: 4px; }

/* Logo：圆形头像 + 顶部独立成行（贴合 267：头像在「基本信息」标题之上） */
.me-with-toc .me-logo-row { margin-bottom: 56px; }
/* Logo 为圆角方块（更适合 team logo，且与当前视觉一致），非圆形 */
.me-with-toc .me-image-btn { border-radius: 16px; }

/* Markdown 工具栏编辑器（仅外观，按钮暂不接功能）——
 * 白底 + 1px 描边的盒子，顶部一条工具栏 + 细分隔，文本域内嵌无边框。 */
.me-md-editor {
  border: 1px solid #e6e6e3;
  border-radius: 10px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  background: #ffffff;
  overflow: hidden;
}
.me-md-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  border-bottom: 1px solid #f0f0ee;
}
.me-md-toolbar-left {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.me-md-tsize { font-size: 13px; color: #86868b; }
.me-md-normal {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 14px;
  color: #1d1d1f;
}
.me-md-toolbar-right {
  display: inline-flex;
  align-items: center;
  gap: 14px;
}
.me-md-toolbar-right svg { display: block; }
.me-md-b { font-size: 14px; font-weight: 600; color: #55555a; }
.me-md-i { font-size: 14px; font-style: italic; color: #55555a; }
.me-md-s { font-size: 14px; text-decoration: line-through; color: #55555a; }
.me-with-toc .me-md-area {
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 14px 16px;
  min-height: 150px;
}
.me-with-toc .me-md-area:focus {
  background: transparent;
  box-shadow: none;
}

/* 底部 sticky 提交栏 —— 跟首页吸顶 nav 同款（半透明 + blur）。 */
.me-savebar {
  position: sticky;
  bottom: 16px;
  z-index: 20;
  margin: 24px auto 0;
  max-width: 760px;
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 12px 20px;
  background: rgba(255, 255, 255, 0.82);
  -webkit-backdrop-filter: saturate(180%) blur(20px);
  backdrop-filter: saturate(180%) blur(20px);
  border-radius: 999px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  box-shadow: 0 14px 44px -10px rgba(0, 0, 0, 0.14);
}
.me-savebar-msg {
  flex: 1;
  min-width: 0;
  font-size: 14px;
  color: #86868b;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.me-savebar-ok { color: #1d1d1f; }
.me-savebar-err { color: #b91c1c; }
.me-savebar-pending { color: #86868b; }
.me-savebar-hint { color: #86868b; }

.me-savebar-btn {
  appearance: none;
  border: 0;
  background: #1d1d1f;
  color: #ffffff;
  font: inherit;
  font-size: 14px;
  font-weight: 500;
  padding: 10px 20px;
  border-radius: 999px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  cursor: pointer;
  transition: opacity 0.15s;
}
.me-savebar-btn:hover:not(:disabled) { opacity: 0.85; }
.me-savebar-btn:disabled { opacity: 0.5; cursor: not-allowed; }

/* ── 职位创建 / 编辑表单（Figma 482:5039）：扁平字段（gap 32）+ 底部操作栏 ── */
.me-jobform {
  display: flex;
  flex-direction: column;
  gap: 32px;
}

/* ── 分步切换动画 —— 消除硬切感 ──
   当前步内容包在 key=step 的容器里（JobOwnerEditForm / admin JobEditForm），切步时
   重挂载 → 重放 me-step-in（淡入 + 轻微上移）。本样式表全局加载，admin 向导同样用
   .me-step-anim。.me-jobform-step 复刻 .me-jobform 的 flex 列 + 32 间距，字段间距不变。 */
@keyframes me-step-in {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: none; }
}
.me-step-anim {
  animation: me-step-in 0.28s cubic-bezier(0.2, 0, 0, 1);
}
.me-jobform-step {
  display: flex;
  flex-direction: column;
  gap: 32px;
}
@media (prefers-reduced-motion: reduce) {
  .me-step-anim { animation: none; }
}

/* ── 左栏模块切换（/team-manage 子页）主内容淡入 ──
   MeShell 用 key=pathname 包裹 children，切模块时重挂载 → 重放。纯 opacity：不建立
   containing block，不影响内部 sticky/fixed（资料编辑 TOC、富文本工具条等）。 */
@keyframes me-shell-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
.me-shell-fade {
  animation: me-shell-in 0.24s ease;
}
@media (prefers-reduced-motion: reduce) {
  .me-shell-fade { animation: none; }
}

/* 整页模式表单顶部标题（弹窗模式标题在 modal head，不渲染这个） */
.me-jobform-title {
  font-size: 20px;
  font-weight: 500;
  color: #1d1d1f;
  letter-spacing: -0.01em;
  margin: 0;
}
.me-jobform-saved {
  margin: 0;
  font-size: 13px;
  color: #1d1d1f;
}

/* 底部操作栏：左「预览」/ 右「删除 · 状态 · 保存」。顶部 1px 分隔（§1.5 允许的 footer 线）。 */
.me-jobfoot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  /* 无分割线（设计系统：编辑器/操作栏用留白分组，不画线）；上方间距靠 padding。 */
  padding-top: 20px;
}
/* 弹窗内：全宽贴边 + sticky 贴 body 底（白底盖住下方滚动内容） */
.me-modal-body .me-jobfoot {
  position: sticky;
  bottom: 0;
  z-index: 2;
  margin: 0 -28px;
  padding: 20px 28px;
  background: #ffffff;
}
.me-jobfoot-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}
/* 预览（描边 pill，radius 10） */
.me-jobfoot-preview {
  appearance: none;
  font: inherit;
  font-size: 14px;
  color: #3c3c43;
  background: #ffffff;
  border: 1px solid #ececef;
  padding: 9px 20px;
  /* 纯胶囊圆角（跟「下一步」.me-btn 一致）——不用 squircle，新浏览器里 squircle
     会把 999px 渲染成偏方的超椭圆，跟同排的 .me-btn 胶囊对不齐。 */
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.15s;
}
.me-jobfoot-preview:hover:not(:disabled) { background: #f5f5f5; }
.me-jobfoot-preview:disabled { opacity: 0.5; cursor: not-allowed; }
/* 删除（icon-only，无边框，红） */
.me-jobfoot-del {
  appearance: none;
  border: 0;
  background: #ffffff;
  color: #b91c1c;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 7px 16px;
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.15s;
}
.me-jobfoot-del:hover:not(:disabled) { background: #fdeeee; }
.me-jobfoot-del:disabled { opacity: 0.5; cursor: not-allowed; }
.me-jobfoot-del svg { width: 22px; height: 22px; }
/* 状态切换（描边 pill + 状态图标），下拉菜单向上弹出 */
.me-jobfoot-status { position: relative; }
.me-jobfoot-statusbtn {
  appearance: none;
  font: inherit;
  font-size: 14px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #1d1d1f; /* 灰底黑字 */
  background: #f5f5f5;
  border: 0;
  padding: 10px 20px; /* 无边框后补 1px，跟同排描边按钮等高 */
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.15s;
}
.me-jobfoot-statusbtn:hover:not(:disabled) { background: #ececec; }
.me-jobfoot-statusbtn:disabled { opacity: 0.5; cursor: not-allowed; }
.me-jobfoot-statusbtn svg { width: 22px; height: 22px; }
.me-jobfoot-menu {
  position: absolute;
  right: 0;
  bottom: calc(100% + 8px);
  min-width: 140px;
  display: flex;
  flex-direction: column;
  padding: 6px;
  background: #ffffff;
  border-radius: 12px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  box-shadow:
    0 1px 2px rgba(0, 0, 0, 0.04),
    0 14px 44px -10px rgba(0, 0, 0, 0.18);
  z-index: 5;
}
.me-jobfoot-menuitem {
  appearance: none;
  border: 0;
  background: transparent;
  font: inherit;
  font-size: 14px;
  color: #1d1d1f;
  text-align: left;
  padding: 9px 12px;
  border-radius: 8px;
  cursor: pointer;
  transition: background 0.15s;
}
.me-jobfoot-menuitem:hover { background: #f5f5f5; }
/* 保存（黑色主按钮 + 保存图标） */
.me-jobfoot-save {
  appearance: none;
  border: 0;
  font: inherit;
  font-size: 14px;
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
  color: #ffffff;
  background: #1d1d1f;
  padding: 9px 20px;
  border-radius: 999px;
  cursor: pointer;
  transition: opacity 0.15s;
}
.me-jobfoot-save:hover:not(:disabled) { opacity: 0.85; }
.me-jobfoot-save:disabled { opacity: 0.5; cursor: not-allowed; }
.me-jobfoot-save svg { width: 22px; height: 22px; }

.me-empty {
  font-size: 14px;
  color: #86868b;
  text-align: center;
  padding: 64px 24px;
}
.me-inline-link {
  color: #1d67f1;
  text-decoration: none;
}
.me-inline-link:hover { text-decoration: underline; }

/* 名值对列表 —— /me/settings / /me/jobs/[id] 等纯展示场景。
   左 ink-3 标签 + 右 ink-1 内容。stack row 用 line-1 间隔（§1.5 允许）。 */
.me-defs {
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0;
}
.me-def {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  padding: 12px 0;
  font-size: 14px;
}
.me-def + .me-def {
  border-top: 1px solid #ececef;
}
.me-def dt {
  color: #86868b;
  flex-shrink: 0;
}
.me-def dd {
  margin: 0;
  color: #1d1d1f;
  text-align: right;
  word-break: break-word;
}
.me-def dd code {
  font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
  font-size: 13px;
}

/* Markdown 原文展示 —— /me/jobs/[id] 暂时不渲染 markdown，先 pre 出来给 owner 看 */
.me-md-raw {
  margin: 0;
  padding: 16px;
  background: #f5f5f5;
  border-radius: 12px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
  font-size: 13px;
  line-height: 1.6;
  color: #1d1d1f;
  white-space: pre-wrap;
  word-wrap: break-word;
  overflow-x: auto;
}

/* /me/jobs 列表的富版本 —— 可点击行 + 右侧时间 + 箭头 */
/* 负 margin 外扩 16 + 行内 padding 16 抵消(同职位管理列表)：行内容与「在招职位」
   头部左对齐(x=0)，但可点击行的 hover 高亮向两侧各外扩 16px、有呼吸感、不顶边。
   两类选择器升特异性，避免被靠后的基础 .me-joblist{margin:0} 盖掉。 */
.me-joblist.me-joblist--rich {
  margin: 0 -16px;
}
.me-joblist--rich .me-joblist-row {
  padding: 0;
}
/* 可点击行：头像 + 标题/雇佣信息(左) + 投递数/箭头(右)，对齐投递列表(ApplicationList)。 */
.me-joblist-link {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  color: inherit;
  text-decoration: none;
  border-radius: 12px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  transition: background 0.15s;
}
/* 标题块吃掉中间空间，把右侧投递数推到行尾 */
.me-joblist-link .me-joblist-main {
  flex: 1;
}
.me-joblist-link:hover { background: #f5f5f5; }
/* 行改 <button>(点开投递弹窗)—— 复用 .me-joblist-link 布局 + hover,补按钮重置 */
.me-joblist-link--btn {
  appearance: none;
  -webkit-appearance: none;
  border: 0;
  /* 重置浏览器按钮默认底色（buttonface #efefef）→ 透明，白卡上即白底；
     hover 才走 .me-joblist-link:hover 的 #f5f5f5。否则整行常驻灰、很重。 */
  background: transparent;
  width: 100%;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.me-joblist-main {
  display: grid;
  gap: 4px;
  min-width: 0;
}
.me-joblist-side {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: #86868b;
  font-size: 13px;
  flex-shrink: 0;
}
/* 右侧投递数 —— 有投递 ink-1 靠颜色吸睛(§1.1),无投递 ink-4 弱化,不抢视线 */
.me-joblist-appcount { white-space: nowrap; color: #a1a1a6; }
.me-joblist-appcount.has { color: #1d1d1f; }
.me-joblist-arr { font-size: 18px; line-height: 1; }
.me-joblist-hot { margin-left: 6px; font-size: 13px; }

/* ─────────── 职位管理列表（/team-manage/jobs，Read.cv「Careers」形态）───────────
   两行结构：上 = 头像(团队 logo) + 职位名/雇佣信息；下 = 状态 + 编辑/删除(缩进对齐标题)。
   行间用 line-1 细线分隔（§1.5 允许的 stack row 横线）。 */
/* 用两类选择器 .me-joblist.me-joblist--manage 升特异性 —— 基础 .me-joblist{padding:0;
   margin:0} 在本规则之后、同特异性会把 padding/margin 盖掉(同 display 那处的坑)。
   负 margin 外扩 16px + 行内 padding 16px 抵消：行内容仍与头部左对齐(x=0)，
   但行的背景/拖拽圆角高亮向两侧各外扩 16px，留出呼吸感、不顶边。 */
.me-joblist.me-joblist--manage {
  margin: 8px -16px 0;
  padding: 0;
}
/* 用两类选择器提高特异性 —— 基础 .me-joblist-row{display:flex} 在本规则之后，
   单类同特异性会被它盖掉 display，这里 .me-joblist--manage .me-joblist-row 升一级。
   行间不画分割线(去掉 border-top)，靠间距区分 —— 拖拽时不会出现突兀横线。 */
.me-joblist--manage .me-joblist-row {
  display: block;
  padding: 14px 16px;
  cursor: pointer; /* 整行可点 → 开投递弹窗 */
  border-radius: 12px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  transition: background 0.15s;
}
.me-joblist--manage .me-joblist-row:hover {
  background: #f7f7f7;
}
/* 拖拽中的行：抬起感(阴影 + 圆角)。放在 :hover 之后 → 拖拽态仍保持白卡。 */
.me-joblist--manage .me-joblist-row.is-dragging,
.me-joblist--manage .me-joblist-row.is-dragging:hover {
  background: #ffffff;
  box-shadow: 0 14px 44px -10px rgba(0, 0, 0, 0.14);
  border-radius: 14px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
}
/* 状态 eyebrow（已发布/草稿/已关闭）—— 行顶小标。Figma：13px、已发布 70% 透明灰。
   左缘对齐头像（x=0，不缩进到标题）；与下方主体行间距 12。 */
.me-jobrow-eyebrow {
  display: block;
  margin: 0 0 12px 0;
  font-size: 13px;
  color: rgba(134, 134, 139, 0.7);
}
.me-jobrow-eyebrow--draft {
  color: #c2730c;
}
.me-jobrow-eyebrow--closed {
  color: #a1a1a6;
}
/* 主体行：头像 + 标题块 + 投递统计 + 图标动作。Figma 头像↔标题间距 24。 */
.me-jobrow-head {
  display: flex;
  align-items: center;
  gap: 24px;
}
.me-jobrow-head .me-joblist-main {
  flex: 1;
}
.me-jobrow-avatar {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 999px;
  overflow: hidden;
  background: #f0f0ee;
  display: flex;
  align-items: center;
  justify-content: center;
  -webkit-corner-shape: round;
  corner-shape: round;
}
.me-jobrow-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.me-jobrow-avatar-fb {
  font-size: 15px;
  color: #86868b;
}
.me-joblist-row--manage .me-joblist-main {
  display: grid;
  gap: 2px;
  min-width: 0;
}
/* 标题 / 副信息同字号 16px，靠 ink-1↔ink-3 颜色区分主副（§1.1）。 */
.me-joblist-row--manage .me-joblist-role {
  font-size: 16px;
  letter-spacing: -0.005em;
}
.me-joblist-row--manage .me-joblist-meta {
  font-size: 16px;
}
/* 右侧组：统计 + 图标，两组间距 32px（Figma）。 */
.me-jobrow-right {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 32px;
}
/* 统计（未读 · 信号）—— 17px（与标题/副信息统一），未读 #2e84fa/Medium，
   信号 #5d5d5d/Regular，分隔为 2px 圆点 #86868b，组内 gap 9px。 */
.me-jobrow-stats {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-size: 15px;
  white-space: nowrap;
}
.me-jobrow-unread {
  color: #2e84fa;
  font-weight: 500;
}
.me-jobrow-signal {
  color: #5d5d5d;
  font-weight: 400;
}
.me-jobrow-sep {
  width: 2px;
  height: 2px;
  border-radius: 3px;
  background: #86868b;
}
/* 图标动作：编辑 / 删除 / 拖拽手柄 —— 36px 按钮、SVG 显示 22px、组内 gap 16px。
   图标默认深色(对齐设计稿，原来误填了浅灰)；hover 加底/危险态变红；都 stopPropagation。 */
.me-jobrow-icons {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 16px;
}
.me-jobrow-icon {
  appearance: none;
  border: 0;
  background: transparent;
  width: 36px;
  height: 36px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #1d1d1f;
  cursor: pointer;
  text-decoration: none;
  transition: color 0.15s, background 0.15s;
}
.me-jobrow-icon svg {
  width: 20px;
  height: 20px;
}
.me-jobrow-icon:hover {
  background: #f0f0f0;
  color: #1d1d1f;
}
.me-jobrow-icon--danger:hover {
  background: #fdeeee;
  color: #b91c1c;
}
.me-jobrow-handle {
  cursor: grab;
  touch-action: none;
}
.me-jobrow-handle:active {
  cursor: grabbing;
}

/* ── 移动端职位行：避免标题被右侧统计/图标挤成多行 ──
   头部换行：头像 + 标题/雇佣信息占第一行（标题拿满宽度），统计 + 操作图标整组
   掉到第二行、两端对齐。间距收紧。 */
@media (max-width: 720px) {
  .me-joblist-row--manage .me-jobrow-head {
    flex-wrap: wrap;
    gap: 12px;
  }
  .me-joblist-row--manage .me-jobrow-head .me-joblist-main {
    flex: 1 1 auto;
  }
  .me-joblist-row--manage .me-jobrow-right {
    width: 100%;
    justify-content: space-between;
    gap: 12px;
  }
}

/* 列表空态 —— Read.cv 用描边框，但 §1.4 禁 border 当边界，
   改成居中留白文案（纯白上靠间距撑空间，不画框）。 */
.me-joblist-empty {
  margin: 8px 0 0;
  padding: 40px 0;
  text-align: center;
  font-size: 14px;
  color: #86868b;
}

/* ─────────── 二次确认弹窗（删除职位等不可逆动作）───────────
   复用 .me-modal-root 遮罩；容器是更紧凑的小卡（非全表单弹窗）。 */
.me-confirm {
  background: #ffffff;
  border-radius: 20px;
  -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: 420px;
  padding: 28px;
  animation: me-modal-rise 0.22s cubic-bezier(.2, 0, 0, 1);
}
.me-confirm-title {
  margin: 0;
  font-size: 19px;
  /* 小确认弹窗标题:克制不上 600,靠字号 + ink-1 即够突出 */
  font-weight: 500;
  letter-spacing: -0.01em;
  color: #1d1d1f;
}
.me-confirm-body {
  margin: 10px 0 0;
  font-size: 15px;
  line-height: 1.5;
  color: #86868b;
}
.me-confirm-actions {
  margin-top: 24px;
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 10px;
}
.me-confirm-actions form {
  margin: 0;
}
.me-confirm-actions .me-btn[disabled],
.me-confirm-actions .me-btn[aria-busy="true"] {
  opacity: 0.7;
  cursor: progress;
}

/* ─────────── Dashboard 模块卡 ───────────
   .me-mod 跟 .me-section 视觉同款（白底 + shadow-3 + 大间距），
   但用于 Dashboard 上的功能模块；section 留给编辑表单段。 */
/* 「加 Bonnie」提示条与下方团队卡之间留白（否则贴在一起） */
.me-bonnie-tip {
  /* 滚动时吸顶（总览页是文档滚动，祖先无 overflow:hidden）。吸顶时下方内容会滚过，
     故给不透明白带（页面白底，#fff 无缝）+ 上下 padding 呼吸感 + z-index 盖住内容；
     padding-top 用等量负 margin-top 抵消，让未滚动时 banner 位置与原来一致。 */
  position: sticky;
  top: 0;
  z-index: 20;
  background: #ffffff;
  padding: 12px 0;
  margin-top: -12px;
  margin-bottom: 12px;
}
.me-mod {
  /* 平铺(对齐已有的 .me-section / 团队页 .t4-sec)—— 纯白页面上靠
     section-title + 56px 间距分组,不做投影 / 不做卡片边界。
     白卡叠白底全靠 shadow 撑、竖向堆叠起来太重(滥用 Block 阴影)。 */
  background: transparent;
  padding: 0;
  margin-bottom: 56px;
}
.me-mod-empty {
  font-size: 14px;
  color: #86868b;
  margin: 16px 0 0;
}
.me-mod-actions {
  margin-top: 24px;
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}

/* 概览模块 ——「团队信息概览」用 OwnerTeamHeroCard 直接套公开页 .t4-topcard。
   .t4-topcard 原本在 TeamDetail 里 margin: 96px -32px 20px（依赖 .t4-doc 32px
   水平 padding 向外撑）。Dashboard 没有那个父级，用 .t4--in-dashboard 修饰
   把上 / 左右 margin 收回到 0。下方 CTA 用 me-mod-actions--hero 留 24px gap。 */
.t4--in-dashboard .t4-topcard {
  margin: 0;
  padding: 32px;
  /* 只在 dashboard 收轻阴影（跟 .me-shell-side 同款），不动公开 /team 页的 .t4-topcard。
     公开页通常单卡，重 shadow-3 没问题；dashboard 多卡同屏叠起来才发灰。 */
  box-shadow:
    0 1px 2px rgba(0, 0, 0, 0.03),
    0 8px 24px -12px rgba(0, 0, 0, 0.06);
}
.t4--in-dashboard .t4-topcard:hover {
  /* dashboard 上的 hero 是只读卡片，去掉公开页的 hover lift —— 没人会"点开"它 */
  transform: none;
  box-shadow:
    0 1px 2px rgba(0, 0, 0, 0.03),
    0 8px 24px -12px rgba(0, 0, 0, 0.06);
}
/* dashboard 上 owner 看自己的团队，几个公开页的元素都不必要：
   - .t4-hero-id-row：「去官网 / 去投递」pill，自己看自己没意义
   - .t4-hero-chiprow：融资/规模/地点 chip 行，dashboard 简化呈现
   公开页 /team/[slug] 和 /me/team/preview 不挂 .t4--in-dashboard，不受影响。 */
.t4--in-dashboard .t4-hero-id-row,
.t4--in-dashboard .t4-hero-chiprow {
  display: none;
}
/* dashboard 上 logo + 标题收小一档 —— 公开页那套 80px logo / 24px 大标题在管理后台
   显得"傻大"。只在 .t4--in-dashboard 作用域改，公开页 hero 不动。 */
.t4--in-dashboard .t4-hero-top {
  gap: 16px;
  align-items: center;
}
.t4--in-dashboard .t4-hero-avatar {
  width: 56px;
  height: 56px;
  border-radius: 14px;
}
.t4--in-dashboard .t4-hero-headline {
  padding-top: 0;
}
.t4--in-dashboard .t4-hero-name {
  font-size: 19px;
}
.t4--in-dashboard .t4-hero-tag {
  font-size: 15px;
  margin-top: 6px;
}
/* .t4 a { color: inherit }（team.css）会盖过 .me-btn 的 color，导致 Link 形态
   的按钮变成深色文本。这里显式覆盖（specificity 0,2,0 > 0,1,1）。 */
.t4 .me-btn { color: #1d1d1f; }
.t4 .me-btn--primary { color: #ffffff; }
.t4 .me-btn--disabled { color: #a1a1a6; }
.me-hero-section {
  /* 56px:对齐团队页 hero → 首个 section 的间距,跟下方 flat 模块节奏一致 */
  margin-bottom: 56px;
}
.me-mod-actions--hero {
  margin-top: 16px;
  align-items: center;
}
/* 「你上次编辑于 X」独立一行，紧贴 hero 内容之后、按钮之前。
   ink-3 灰文本 + 关键时间 ink-1 加粗，扫一眼就能看到。 */
.me-hero-updated {
  margin: 36px 0 0;
  font-size: 14px;
  color: #86868b;
  line-height: 1.5;
}
.me-hero-updated strong {
  color: #1d1d1f;
  font-weight: 500;
}
@media (max-width: 720px) {
  .me-mod-actions--hero { margin-top: 12px; }
  .me-hero-updated { margin-top: 28px; }
}

/* JD 列表（read-only） */
.me-joblist {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0;
}
.me-joblist-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  padding: 10px 0;
  font-size: 15px;
}
/* 行之间不画分割线(参考团队页 .t4-jobs)—— 靠 padding 间距区分,不用 stack row 横线 */
.me-joblist-role {
  color: #1d1d1f;
}
.me-joblist-meta {
  color: #86868b;
  font-size: 13px;
}

/* 通用 按钮 */
.me-btn {
  appearance: none;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font: inherit;
  font-size: 14px;
  font-weight: 500;
  color: #1d1d1f;
  background: #ffffff;
  border: 1px solid #ececef;
  border-radius: 999px;
  padding: 10px 18px;
  cursor: pointer;
  text-decoration: none;
  transition: border-color 0.15s, color 0.15s, background 0.15s;
}
.me-btn:hover:not(.me-btn--disabled) {
  border-color: #1d1d1f;
}
.me-btn--primary {
  background: #1d1d1f;
  color: #ffffff;
  border-color: #1d1d1f;
}
.me-btn--primary:hover {
  opacity: 0.85;
}
/* 次级动作：灰底无描边（编辑页底栏「下一步」等 —— 比白描边轻、比 primary 弱） */
.me-btn--soft {
  background: #f5f5f7;
  border-color: transparent;
}
.me-btn--soft:hover:not(.me-btn--disabled) {
  background: #ececef;
  border-color: transparent;
}
.me-btn--disabled {
  color: #a1a1a6;
  cursor: not-allowed;
  background: #ffffff;
}
.me-btn--danger {
  color: #b91c1c;
}
.me-btn--danger:hover:not(:disabled) {
  border-color: #b91c1c;
  background: #fff5f5;
}

/* ── 上线前临时门禁：禁用态按钮 + hover「施工中」tooltip ──
   功能就绪后，按钮去掉 .is-wip 与外层 .me-wip 包裹即可恢复。 */
.me-btn.is-wip {
  opacity: 0.5;
  cursor: not-allowed;
}
.me-btn.is-wip:hover {
  /* 压掉 me-btn / me-btn--brand 的 hover 态，禁用按钮不要有“可点”反馈 */
  border-color: #ececef;
}
.me-wip {
  position: relative;
  display: inline-flex;
}
/* tooltip 右对齐锚定：左侧按钮往左展开、右侧按钮也不会顶出视口右边 */
.me-wip::after {
  content: attr(data-wip);
  position: absolute;
  right: 0;
  bottom: calc(100% + 8px);
  z-index: 30;
  width: max-content;
  max-width: 260px;
  padding: 8px 12px;
  border-radius: 10px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  background: rgba(29, 29, 31, 0.92);
  color: #ffffff;
  font-size: 13px;
  line-height: 1.45;
  letter-spacing: -0.01em;
  white-space: normal;
  text-align: left;
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.18);
  opacity: 0;
  visibility: hidden;
  transform: translateY(4px);
  transition: opacity 0.15s, transform 0.15s, visibility 0.15s;
  pointer-events: none;
}
.me-wip:hover::after,
.me-wip:focus-within::after {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
  .me-wip::after { transition: none; transform: none; }
}
/* 品牌蓝实心按钮（新建职位等主操作）—— 公开站 #2e84fa 同款 + 白字 + 白箭头。 */
.me-btn--brand {
  background: #2e84fa;
  border-color: #2e84fa;
  color: #ffffff;
}
.me-btn--brand:hover:not(:disabled) {
  background: #2374e8;
  border-color: #2374e8;
}
.me-btn--brand .me-btn-arr {
  color: #ffffff;
}
.me-btn--brand:hover .me-btn-arr {
  color: #ffffff;
  transform: translate(1px, -1px);
}
/* 跳转指示箭头 ——「↗」放在按钮文本左侧，跟 .t4-id-pill 的 .t4-id-arr 同款。
   hover 时整体往右上微动 1px，给一个轻微的"指向"反馈。 */
.me-btn-arr {
  flex-shrink: 0;
  color: #86868b;
  transition: transform 0.15s cubic-bezier(.2,0,0,1), color 0.15s ease;
}
/* 品牌实心按钮的箭头 hover 仍是白色（见下方 --brand 规则）；这里排除掉它，
   否则本规则(5 类特异性)会盖过 .me-btn--brand:hover .me-btn-arr(3 类)，箭头变黑。 */
.me-btn:hover:not(.me-btn--disabled):not(:disabled):not(.me-btn--brand) .me-btn-arr {
  color: #1d1d1f;
  transform: translate(1px, -1px);
}
.me-form-foot {
  margin: 24px 0 0;
  font-size: 13px;
  color: #86868b;
}

/* ─────────── 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;
}

/* ── 信号收件箱（双栏，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; }

/* 带标题的弹窗头(投递弹窗):左标题 + 份数,右「编辑职位」+ 关闭 */
.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; }
}

/* ─────────── 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 {
  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;
}
.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 覆盖）。 */
.me-tip-body {
  height: 320px;
  overflow-y: auto;
  padding: 14px 16px;
  font-size: 15px;
  line-height: 1.7;
  color: #1d1d1f;
  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 决定 */
}
.me-tip-body:focus {
  outline: none;
}
.me-tip-body > * {
  margin: 0 0 12px;
}
.me-tip-body > *:last-child {
  margin-bottom: 0;
}
.me-tip-body h2 {
  font-size: 18px;
  font-weight: 600;
  margin: 20px 0 10px;
}
.me-tip-body h3 {
  font-size: 16px;
  font-weight: 600;
  margin: 16px 0 8px;
}
.me-tip-body ul,
.me-tip-body ol {
  padding-left: 22px;
  margin: 0 0 12px;
}
.me-tip-body li {
  margin: 2px 0;
}
.me-tip-body li > p {
  margin: 0;
}
.me-tip-body a {
  color: #2f6fed;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.me-tip-body blockquote {
  margin: 0 0 12px;
  padding-left: 12px;
  border-left: 2px solid #ececef;
  color: #5d5d5d;
}
.me-tip-body code {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.92em;
  background: #f5f5f7;
  border-radius: 4px;
  padding: 1px 5px;
}
.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;
}
/* 顶栏行内动作胶囊 —— 编辑页「查看投递」/ 投递详情「编辑职位」共用。白底描边小胶囊，
   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;
}

/* ─────────── Input / textarea ─────────── */
/* 1px line-1 hairline 作为可输入感知 affordance —— 不属于"卡片视觉边界"范畴。 */
.me-input {
  display: block;
  width: 100%;
  font: inherit;
  font-size: 15px;
  color: #1d1d1f;
  padding: 10px 14px;
  background: #ffffff;
  border: 1px solid #ececef;
  border-radius: 10px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  outline: none;
  transition: border-color 0.15s, box-shadow 0.15s;
  box-sizing: border-box;
}
.me-input:focus {
  border-color: #1d1d1f;
}
/* 校验出错的输入：红描边高亮出问题的控件（薪资 min/max 等）。双类 0,2,0 稳压
   .me-input（0,1,0）；:focus 版 0,3,0 压过 .me-input:focus（0,2,0），聚焦也保持红。 */
.me-input.me-input--err,
.me-input.me-input--err:focus {
  border-color: #e5484d;
}
.me-input::placeholder {
  color: #a1a1a6;
}
.me-textarea {
  resize: vertical;
  line-height: 1.5;
  min-height: 80px;
}
/* 原生 select 视觉 —— 跟 .me-input 同 chrome，自定义箭头不强行做（让 OS / 浏览器
   保留原生体验，跨设备一致性更好）。 */
.me-select {
  appearance: auto;
  padding-right: 32px;
}

/* 单个 checkbox 行 */
.me-checkbox-field {
  display: block;
}
.me-checkbox-row {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  font-size: 14px;
  color: #1d1d1f;
}
.me-checkbox-row input[type="checkbox"] {
  width: 16px;
  height: 16px;
  accent-color: #1d1d1f;
  cursor: pointer;
}
.me-markdown {
  font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
  font-size: 14px;
  min-height: 240px;
}
/* JD 文本域始终透明无边框（外层 .me-md-editor 已经给了边框 + 圆角）——
   去掉它自带的 .me-input 边框（与工具栏底线叠成"分割线"）和白底，去掉 resize 手柄。 */
.me-md-area {
  background: transparent;
  border: 0;
  border-radius: 0;
  resize: none;
}
.me-md-area:focus {
  border: 0;
  box-shadow: none;
}
/* 弹窗内：JD 编辑器吃满剩余高度，只在文本域内部滚动（form 撑满 body 才有空间可分配）。 */
.me-modal-body .me-jobform {
  min-height: 100%;
}
.me-md-editor {
  display: flex;
  flex-direction: column;
}
.me-modal-body .me-jobform > .me-field:has(.me-md-editor) {
  flex: 1 1 auto;
  min-height: 330px;
  display: flex;
  flex-direction: column;
}
.me-modal-body .me-jobform > .me-field:has(.me-md-editor) .me-field-body {
  flex: 1;
  min-height: 0;
  display: flex;
}
.me-modal-body .me-md-editor {
  flex: 1;
  min-height: 0;
}
.me-modal-body .me-md-area {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
}
/* 滚动条：透明轨道、无边框 / 无分割线，只留细的半透明拇指（弹窗 body + JD 文本域共用）。
   设计偏好：这些位置不要分割线和背景色填充。 */
.me-modal-body,
.me-md-area,
.me-sig-rail,
.me-sig-detail-body {
  scrollbar-width: thin;
  scrollbar-color: rgba(0, 0, 0, 0.18) transparent;
}
.me-modal-body::-webkit-scrollbar,
.me-md-area::-webkit-scrollbar,
.me-sig-rail::-webkit-scrollbar,
.me-sig-detail-body::-webkit-scrollbar {
  width: 8px;
}
.me-modal-body::-webkit-scrollbar-track,
.me-md-area::-webkit-scrollbar-track,
.me-sig-rail::-webkit-scrollbar-track,
.me-sig-detail-body::-webkit-scrollbar-track {
  background: transparent;
  border: 0;
}
.me-modal-body::-webkit-scrollbar-thumb,
.me-md-area::-webkit-scrollbar-thumb,
.me-sig-rail::-webkit-scrollbar-thumb,
.me-sig-detail-body::-webkit-scrollbar-thumb {
  background: rgba(0, 0, 0, 0.18);
  border-radius: 999px;
  border: 0;
}

/* ─────────── 列表 ─────────── */
.me-list {
  display: grid;
  gap: 12px;
}
.me-list-empty {
  font-size: 13px;
  color: #a1a1a6;
  margin: 0;
  padding: 12px 0;
}
.me-list-item {
  background: #ffffff;
  border-radius: 14px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  padding: 14px 16px;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}
.me-list-item-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}
.me-list-item-idx {
  font-size: 12px;
  color: #a1a1a6;
  letter-spacing: 0.04em;
}
.me-list-item-actions {
  display: inline-flex;
  gap: 4px;
}
.me-list-item-body {
  display: grid;
  gap: 10px;
}

/* ─────────── Icon button ─────────── */
.me-icon-btn {
  appearance: none;
  border: 0;
  background: transparent;
  color: #86868b;
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}
.me-icon-btn:hover:not(:disabled) {
  background: #f5f5f5;
  color: #1d1d1f;
}
.me-icon-btn:disabled {
  opacity: 0.3;
  cursor: not-allowed;
}
.me-icon-btn--danger:hover:not(:disabled) {
  color: #b91c1c;
}

/* ─────────── Add 按钮（虚线轮廓） ─────────── */
.me-add-btn {
  appearance: none;
  font: inherit;
  font-size: 13px;
  color: #86868b;
  background: transparent;
  border: 1px dashed #ececef;
  border-radius: 10px;
  padding: 8px 16px;
  cursor: pointer;
  justify-self: start;
  transition: color 0.15s, border-color 0.15s;
}
.me-add-btn:hover {
  color: #1d1d1f;
  border-color: #86868b;
}
.me-add-btn--inline {
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 12px;
}

/* ─────────── String list / Social row ─────────── */
.me-stringlist {
  display: grid;
  gap: 8px;
}
.me-stringlist-row {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 8px;
}
.me-social-row {
  display: grid;
  grid-template-columns: minmax(140px, 160px) 1fr auto;
  align-items: center;
  gap: 8px;
}
/* icon + select 融合成一个 platform 选择组件：共享 1px line-1 圆角边框，
   icon 在 select 左侧内部，看起来像一个整体。 */
.me-social-platform {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0 8px 0 8px;
  background: #ffffff;
  border: 1px solid #ececef;
  border-radius: 10px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  transition: border-color 0.15s;
}
.me-social-platform:focus-within {
  border-color: #1d1d1f;
}
.me-social-icon {
  width: 18px;
  height: 18px;
  border-radius: 4px;
  background: #f5f5f5;
  flex-shrink: 0;
}
.me-social-select {
  appearance: auto;
  background: transparent;
  border: 0;
  outline: none;
  padding: 8px 4px;
  font: inherit;
  font-size: 14px;
  color: #1d1d1f;
  cursor: pointer;
  flex: 1;
  min-width: 0;
}

/* ─────────── Image upload ───────────
 * 见 components/public/me/Fields.jsx 顶部注释 + DESIGN_SYSTEM.md §1.8：
 * 客户端上传交互只暴露按钮，不要 URL 输入框。 */
.me-image-row {
  display: inline-flex;
  align-items: center;
  gap: 12px;
}
.me-image-file {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}
.me-image-btn {
  /* squircle 20 跟公开站 .t4-hero-avatar 对齐 —— 让带四角装饰的 logo（Bonjour
     的手掌 + L 标）裁出来跟 hero 一样的视觉。白底承接深色 SVG logo 也清晰。 */
  appearance: none;
  border: 0;
  background: #ffffff;
  border-radius: 20px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  overflow: hidden;
  cursor: pointer;
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
  transition: box-shadow 0.15s;
  padding: 0;
}
.me-image-btn:hover:not(:disabled) {
  box-shadow:
    0 2px 4px rgba(0, 0, 0, 0.06),
    0 14px 28px -10px rgba(0, 0, 0, 0.10);
}
.me-image-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
.me-image-thumb {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.me-image-empty {
  color: #a1a1a6;
}
.me-image-overlay {
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0.85);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  color: #1d1d1f;
}
/* 更新图片：文字按钮（对齐设计：白底 + 1px #e6e6e3 + 圆角8 + shadow-1），
   取代原先孤零零的 × 图标。round 圆角避免 squircle+描边的四角毛刺。 */
.me-image-action {
  appearance: none;
  font: inherit;
  font-size: 14px;
  font-weight: 500;
  color: #1d1d1f;
  background: #ffffff;
  border: 1px solid #e6e6e3;
  border-radius: 8px;
  -webkit-corner-shape: round;
  corner-shape: round;
  padding: 10px 16px;
  cursor: pointer;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
  transition: box-shadow 0.15s, background 0.15s;
}
.me-image-action:hover {
  box-shadow:
    0 2px 4px rgba(0, 0, 0, 0.06),
    0 14px 28px -10px rgba(0, 0, 0, 0.1);
}

/* ─────────── Chips（地址多选） ─────────── */
.me-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
/* 校验出错的 chip 组（如经验必选）：套一圈红环定位到控件。outline 不占布局。 */
.me-chips--err {
  outline: 1.5px solid #e5484d;
  outline-offset: 5px;
  border-radius: 8px;
}
.me-chips-empty {
  font-size: 13px;
  color: #a1a1a6;
}
/* 已选标签 pill（工作地点 / 社交链接 / 字符串列表共用）：灰底无边框，跟
   toggle chip 未选态同底（#f7f7f7），不用描边（§1.4 白底场景不用 border 分组）。 */
.me-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: #f7f7f7;
  border: 0;
  color: #1d1d1f;
  font-size: 13px;
  padding: 5px 6px 5px 12px;
  border-radius: 999px;
}
/* 放大档：与 .me-chip-toggle（14px + 8px 纵向 padding）同高。地址多选的已选
   chip 用它，跟同排的「+ 选择地点」pill / 经验 / 薪资 chip 大小一致。 */
.me-chip.me-chip--lg {
  font-size: 14px;
  padding: 8px 6px 8px 14px;
}
/* 固定集合多选的 toggle chip（Figma 482:5053）：pill 999，前缀 16px 图标 + gap 4。
   未选 = 灰底 #f7f7f7 + 加号 + ink-2 文本；已选 = 蓝底 #3b82f6 + 白勾 + 白字。 */
.me-chip-toggle {
  appearance: none;
  font: inherit;
  font-size: 14px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: #f7f7f7;
  border: 0;
  color: #3c3c43;
  padding: 8px 16px 8px 14px;
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}

/* ─────────── 投递发送至 选择器（components/shared/JobContactPicker me 皮肤） ─────────── */
.me-contact {
  display: grid;
  gap: 8px;
}
.me-contact-hint {
  margin: 0;
  font-size: 13px;
  color: #a1a1a6;
  line-height: 1.5;
}
.me-contact-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
/* 头像 + 名字·角色的单选 chip —— 左侧留头像位，选中态品牌蓝（同 me-chip-toggle） */
.me-contact-chip {
  appearance: none;
  font: inherit;
  font-size: 14px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: #f7f7f7;
  border: 0;
  color: #3c3c43;
  padding: 5px 14px 5px 5px;
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}
.me-contact-chip:hover {
  background: #ededed;
}
.me-contact-chip.is-on {
  background: #3b82f6;
  color: #ffffff;
}
.me-contact-chip.is-on:hover {
  background: #2f74e8;
}
.me-contact-avatar {
  width: 26px;
  height: 26px;
  flex-shrink: 0;
  border-radius: 50%;
  background-size: cover;
  background-position: center;
}
.me-contact-avatar--fb {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #e6e6e9;
  color: #5d5d5d;
  font-size: 12px;
}
.me-contact-chip.is-on .me-contact-avatar--fb {
  background: rgba(255, 255, 255, 0.25);
  color: #ffffff;
}
.me-contact-name {
  line-height: 1.1;
}
.me-contact-role {
  opacity: 0.7;
}
.me-chip-toggle-ic {
  display: inline-flex;
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}
.me-chip-toggle:hover {
  background: #ededed;
}
.me-chip-toggle.is-on {
  background: #3b82f6;
  color: #ffffff;
}
.me-chip-toggle.is-on:hover {
  background: #2f74e8;
}
.me-chip-x {
  appearance: none;
  border: 0;
  background: transparent;
  color: #86868b;
  width: 20px;
  height: 20px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}
.me-chip-x:hover {
  /* chip 底已是 #f7f7f7，× hover 底再深一档才看得出 */
  background: #e4e4e4;
  color: #1d1d1f;
}
.me-picker {
  margin-top: 12px;
  background: #ffffff;
  border-radius: 14px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.07);
  padding: 8px;
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}
.me-picker-item {
  appearance: none;
  border: 0;
  background: transparent;
  font: inherit;
  font-size: 13px;
  color: #1d1d1f;
  padding: 6px 12px;
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.15s;
}
.me-picker-item:hover {
  background: #f5f5f5;
}
.me-picker-empty {
  font-size: 13px;
  color: #a1a1a6;
  margin: 0;
  padding: 8px 12px;
}

/* ─────────── Error banner ─────────── */
.me-error-banner {
  background: #ffffff;
  border-radius: 14px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
  padding: 14px 18px;
  margin-bottom: 16px;
  color: #b91c1c;
}
.me-error-banner-head {
  margin: 0 0 4px;
  font-size: 14px;
  font-weight: 500;
}
.me-error-banner-list {
  margin: 0;
  padding-left: 18px;
  font-size: 12px;
}
.me-error-banner-list code {
  font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
}

@media (max-width: 720px) {
  /* 窄屏：platform 选择器换行到 URL 输入框上方，第二行 input 全宽 */
  .me-social-row {
    grid-template-columns: 1fr auto;
    grid-template-rows: auto auto;
  }
  .me-social-platform {
    grid-column: 1 / -1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .me-section, .me-savebar, .me-form-toc-item, .me-savebar-btn,
  .me-input, .me-icon-btn, .me-add-btn, .me-chip-x, .me-image-btn,
  .me-picker-item, .me-shell-bottom-link, .me-shell-nav-item,
  .me-btn, .me-btn-arr { transition: none; }
}

/* ───────────── 邀请兑换页 /invite/<token> ───────────── */
.me-invite-wrap {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px 20px;
  background: #ffffff;
}
.me-invite-card {
  width: 100%;
  max-width: 440px;
  background: #ffffff;
  border-radius: 24px;
  -webkit-corner-shape: squircle;
  corner-shape: squircle;
  box-shadow: 0 14px 44px -10px rgba(0, 0, 0, 0.1);
  padding: 40px 36px;
}
.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-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;
}
.me-invite-meta > div {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 12px 0;
  font-size: 15px;
}
.me-invite-meta > div + div {
  border-top: 1px solid #ececef;
}
.me-invite-meta dt {
  margin: 0;
  color: #86868b;
}
.me-invite-meta dd {
  margin: 0;
  color: #1d1d1f;
}
.me-invite-accept-form {
  margin-top: 24px;
}
.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: #1d1d1f;
  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:hover:not(:disabled) {
  opacity: 0.85;
}
.me-invite-accept:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
.me-invite-accept-err {
  margin: 12px 0 0;
  font-size: 13px;
  color: #b91c1c;
}
.me-invite-foot {
  margin: 16px 0 0;
  font-size: 13px;
  color: #a1a1a6;
  line-height: 1.5;
}

/* ── 兑换成功后的「加 Bonnie」引导屏（不加也能进，纯引导提订阅率） ── */
.me-invite-bonnie {
  display: flex;
  flex-direction: column;
  align-items: 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-invite-bonnie .bm-qr-img {
  margin: 20px 0 4px;
}

/* ── 投递列表（仪表盘卡 + 投递情况页共用） ── */
.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，旧类无人引用。） */

/* ═══════════ 团队管理 · 其他设置页（Figma 572:2 / 564:4015）═══════════ */
.me-set { display: flex; flex-direction: column; gap: 44px; }
.me-set-sec { display: flex; flex-direction: column; gap: 16px; }
/* section 标题：克制——15px / ink-1 / 不加粗（靠颜色分层 §1.1） */
.me-set-h { margin: 0; font-size: 15px; line-height: 26px; color: #1d1d1f; font-weight: 400; }
.me-set-head { display: flex; flex-direction: column; gap: 4px; }
.me-set-head .me-set-h { line-height: 26px; }
.me-set-sub { margin: 0; font-size: 15px; line-height: 19px; color: #86868b; }

/* ── 账号行 ── */
.me-set-acct { display: flex; flex-direction: column; }
.me-set-acct-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 0; }
.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; }

/* ── 白色描边 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-members { display: flex; flex-direction: column; }
.me-set-member { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 16px 0; }
.me-set-member-left { display: flex; 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; }

/* ── chip（你 / 角色）：白底 + 1px ink-3 描边 + icon 前缀（§1.6/§1.7）── */
.me-set-chip {
  display: inline-flex; align-items: center; gap: 6px;
  background: #ffffff; border: 1px solid #86868b; border-radius: 999px;
  -webkit-corner-shape: squircle; corner-shape: squircle;
  padding: 4px 10px 4px 9px; font-size: 13px; line-height: 18px; color: #1d1d1f; white-space: nowrap;
}
.me-set-chip svg { width: 14px; height: 14px; flex-shrink: 0; color: #1d1d1f; }

/* ── 邀请协作者 ── */
.me-set-invite-head { display: flex; align-items: center; gap: 16px; }
.me-set-invite-head .me-set-head { flex: 1; min-width: 0; }
/* 尺寸对齐「新建职位」按钮（.me-btn）：padding 10/18、14px、gap 6、pill */
.me-set-invite-btn {
  display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0;
  background: #1d1d1f; color: #ffffff; border: 0; border-radius: 999px;
  -webkit-corner-shape: squircle; corner-shape: squircle;
  padding: 10px 18px; font: inherit; font-size: 14px; font-weight: 500; line-height: 20px; cursor: pointer;
  transition: opacity 0.15s;
}
.me-set-invite-btn:hover { opacity: 0.85; }
.me-set-invite-btn svg { width: 14px; height: 14px; color: #ffffff; }

/* 待接受的邀请列表 */
.me-set-pending { display: flex; flex-direction: column; gap: 10px; padding-top: 8px; }
.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; }

/* ── 邀请弹窗（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: #1d1d1f; 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: 32px; }
  .me-set-invite-row { flex-direction: column; align-items: stretch; gap: 10px; }
  .me-set-invite-side { justify-content: flex-end; }
}

/* ── 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;
}

/* ───────── 投递看板 /team-manage/inbox（Figma 1243:6298）───────── */
.tib { display: flex; flex-direction: column; gap: 28px; }
.tib-head { display: flex; flex-direction: column; gap: 7px; }
.tib-title { margin: 0; font-size: 32px; font-weight: 600; letter-spacing: -0.6px; color: #1d1d1f; }
.tib-sub { margin: 0; font-size: 16px; color: #86868b; letter-spacing: -0.1px; }

.tib-filters { display: flex; align-items: center; gap: 10px; }
.tib-search {
  display: flex; align-items: center; gap: 9px; height: 42px; width: 320px; max-width: 100%;
  padding: 0 12px 0 13px; border: 1px solid #ececef; border-radius: 12px; background: #fff;
}
.tib-search svg { width: 16px; height: 16px; color: #86868b; flex-shrink: 0; }
.tib-search input {
  flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; font: inherit;
  font-size: 14.5px; letter-spacing: -0.1px; color: #1d1d1f;
}
.tib-search input::placeholder { color: #a1a1a6; }
.tib-pill {
  display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0;
  padding: 9px 14px; border: 1px solid #ececef; border-radius: 999px; background: #fff;
  font: inherit; font-size: 13.5px; letter-spacing: -0.1px; color: #3c3c43; cursor: pointer;
  transition: border-color .15s, color .15s;
}
.tib-pill svg { width: 14px; height: 14px; }
.tib-pill:hover { border-color: #d2d2d7; }
.tib-pill.is-on { border-color: #1d1d1f; color: #1d1d1f; font-weight: 500; }
.tib-spacer { flex: 1; }

.tib-sec { display: flex; flex-direction: column; gap: 14px; }
.tib-sec-head { display: flex; align-items: center; gap: 8px; }
.tib-sec-head svg { width: 16px; height: 16px; color: #1d1d1f; }
.tib-sec-title { font-size: 16px; font-weight: 500; color: #1d1d1f; letter-spacing: -0.2px; }
.tib-sec-note { font-size: 13.5px; color: #a1a1a6; letter-spacing: -0.1px; }

/* 「需要处理」卡片 */
.tib-cards { display: flex; gap: 18px; align-items: stretch; flex-wrap: wrap; }
.tib-card {
  flex: 1 1 240px; min-width: 0; display: flex; flex-direction: column; gap: 13px; align-items: flex-start;
  text-align: left; padding: 20px 22px 18px; border: 0; border-radius: 22px; background: #fff;
  box-shadow: 0 14px 44px -10px rgba(0, 0, 0, 0.1); cursor: pointer;
}
.tib-card-top { display: flex; align-items: center; gap: 8px; width: 100%; }
.tib-newbadge {
  display: inline-flex; align-items: center; gap: 5px; padding: 5px 11px 5px 9px;
  border-radius: 999px; background: #2e84fa; color: #fff; font-size: 12.5px; font-weight: 500; letter-spacing: -0.1px;
}
.tib-newbadge svg { width: 13px; height: 13px; }
.tib-card-time { margin-left: auto; font-size: 12.5px; color: #a1a1a6; letter-spacing: -0.1px; }
.tib-card-role { margin: 0; font-size: 18px; font-weight: 500; color: #1d1d1f; letter-spacing: -0.3px; }
.tib-card-meta { margin: 0; font-size: 13.5px; color: #86868b; letter-spacing: -0.1px; }
.tib-card-foot { display: flex; align-items: center; gap: 8px; width: 100%; margin-top: 4px; }
.tib-card-count { font-size: 13px; color: #86868b; letter-spacing: -0.1px; }
.tib-card-cta { margin-left: auto; display: inline-flex; align-items: center; gap: 5px; font-size: 13.5px; font-weight: 500; color: #1d67f1; letter-spacing: -0.1px; }
.tib-card-cta svg { width: 14px; height: 14px; }

/* 「全部职位」分组列表 */
.tib-group { display: flex; flex-direction: column; }
.tib-group + .tib-group { margin-top: 10px; }
.tib-group-head { display: flex; align-items: center; gap: 8px; padding: 8px 0 8px 4px; }
.tib-group-title { font-size: 16px; font-weight: 500; color: #1d1d1f; letter-spacing: -0.2px; }
.tib-group-count { font-size: 13.5px; color: #a1a1a6; letter-spacing: -0.1px; }
.tib-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
/* 职位行 = 对齐的表格栅格：职位名(弹性) | 时间 | 投递数 | 未读角标 | 动作 | chevron。
   各列定宽 → 行与行对齐成整齐的列，撑满更宽的看板、不再是右侧一坨。 */
.tib-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 150px 76px 60px auto 18px;
  align-items: center; column-gap: 24px;
  padding: 15px 14px 15px 16px;
  border-radius: 14px; cursor: pointer; transition: background .15s;
}
.tib-row:hover { background: #f5f5f5; }
.tib-row-main { min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.tib-row-role { margin: 0; font-size: 15.5px; font-weight: 500; color: #1d1d1f; letter-spacing: -0.2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tib-row-meta { margin: 0; font-size: 14px; color: #86868b; letter-spacing: -0.1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tib-row-time { justify-self: start; display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: #a1a1a6; letter-spacing: -0.1px; white-space: nowrap; }
.tib-row-time svg { width: 13px; height: 13px; flex-shrink: 0; }
.tib-row-count { justify-self: end; display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.tib-row-num { font-size: 15.5px; font-weight: 500; color: #1d1d1f; letter-spacing: -0.2px; }
.tib-row-unit { font-size: 11.5px; color: #a1a1a6; }
.tib-row-badge { justify-self: center; display: flex; justify-content: center; }
.tib-plus { display: inline-flex; align-items: center; padding: 4px 9px 4px 8px; border-radius: 999px; background: #2e84fa; color: #fff; font-size: 12px; font-weight: 500; }
/* 行内管理动作（✏️/🗑️/≡）：复用 me-jobrow-icon 样式，在看板较密的行里收一点尺寸/间距。 */
.tib-row-actions { justify-self: end; display: inline-flex; align-items: center; gap: 6px; }
.tib-row-actions .me-jobrow-icon { width: 32px; height: 32px; }
.tib-row-actions .me-jobrow-icon svg { width: 18px; height: 18px; }
.tib-row-chev { justify-self: center; width: 16px; height: 16px; color: #c7c7cc; }
/* 骨架行保持 flex（占位结构和真实行不同，不套表格栅格）。 */
.tib-row.tib-skel-row { display: flex; align-items: center; gap: 14px; }

/* 投递看板骨架屏（board + 三栏详情共用） */
@keyframes tib-shimmer { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } }
.tib-skel { display: block; border-radius: 8px; background: linear-gradient(90deg, #ededed 25%, #f6f6f6 37%, #ededed 63%); background-size: 400% 100%; animation: tib-shimmer 1.4s ease infinite; }
.tib-skel-line { height: 12px; }
.tib-skel-title { width: 220px; height: 30px; }
.tib-skel-sub { width: 320px; height: 16px; margin-top: 4px; }
.tib-skel-pill { width: 96px; height: 24px; border-radius: 999px; }
.tib-skel-card { pointer-events: none; gap: 12px; }
.tib-skel-row { pointer-events: none; }
.tib-skel-num { width: 40px; height: 26px; border-radius: 8px; flex-shrink: 0; }
/* CV 骨架屏：跟真实 .cvx 同款留白（36/56），不贴边；结构 = 头像圆 + 名字两行 → 一封信卡 → 两段要点 */
.tib-cvskel { padding: 36px 56px 48px; display: flex; flex-direction: column; gap: 28px; pointer-events: none; }
.tib-cvskel-head { display: flex; align-items: center; gap: 12px; }
.tib-skel-av { width: 40px; height: 40px; border-radius: 999px; flex-shrink: 0; }
.tib-cvskel-id { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.tib-skel-block { width: 100%; height: 92px; border-radius: 14px; }
.tib-cvskel-sec { display: flex; flex-direction: column; gap: 12px; }
.tib-skel-row { pointer-events: none; opacity: 1 !important; }
.tib-applicant-skel { pointer-events: none; opacity: 1 !important; }

.tib-card-tier { display: inline-flex; align-items: center; }
