/* 网页版样式（cloudfunctions/web/assets/app.css）
 *
 * 与小程序 app.wxss 同源：同一套 design token（品牌蓝 #0052d9、层级靠字号字重明度差、
 * 颜色只出现在稀缺信息上），但排布按 Web 重排 —— 小程序是窄屏单列，网页版是
 * 居中定宽 + 桌面双栏，移动端自动回落单列。
 */

:root {
  --c-brand: #0052d9;
  --c-brand-deep: #003a9b;
  --c-brand-weak: #e8f0fe;
  --c-brand-line: #bed4ff;
  --c-ink: #12151a;
  --c-ink-2: #4a5160;
  --c-ink-3: #8a919f;
  --c-line: #e8eaef;
  --c-line-soft: #f0f2f5;
  --c-bg: #f6f7f9;
  --c-card: #ffffff;
  --c-warn: #b54708;
  --c-warn-weak: #fff4e6;
  --c-danger: #b42318;
  --c-ok: #027a48;
  --c-ok-weak: #ecfdf3;
  /* ---------- 企业分类色（2026-11-06 补） ----------
   * 网页版此前没有这套变量，企业分类只能渲染成纯文本，
   * 加上企业归属图标后没法按归属上色。
   * 取值与小程序 app.wxss 的 :root 逐字一致，保证两端观感统一。 */
  --c-soe: #0f7b6c;
  --c-soe-bg: #e6f6f4;
  --c-csoe: #b03a2e;
  --c-csoe-bg: #fdecea;
  --c-sme: #6b4fbb;
  --c-sme-bg: #f0ecfb;
  --c-fgn: #2a5fb4;
  --c-fgn-bg: #eaf0fc;
  --c-mnc: #b0651a;
  --c-mnc-bg: #fdf1e4;
  --c-pri: #2f7a45;
  --c-pri-bg: #e9f5ec;
  --c-big: #8a5a00;
  --c-big-bg: #faf1de;
  --c-uni: #0e7c9b;
  --c-uni-bg: #e6f4f8;
  --r-sm: 8px;
  --r-md: 12px;
  --r-lg: 16px;
  --r-pill: 999px;
  --shadow-1: 0 1px 2px rgba(18, 21, 26, .04), 0 1px 3px rgba(18, 21, 26, .06);
  --shadow-2: 0 4px 12px rgba(18, 21, 26, .07), 0 2px 4px rgba(18, 21, 26, .04);
  --shadow-3: 0 12px 32px rgba(18, 21, 26, .12);
  --w: 1120px;
  --font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB",
    "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
}

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  font-family: var(--font);
  color: var(--c-ink);
  background: var(--c-bg);
  font-size: 15px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

a { color: inherit; text-decoration: none; }
a:hover { color: var(--c-brand); }

.wrap { max-width: var(--w); margin: 0 auto; padding: 0 24px; }

/* ---------- 顶栏 ---------- */
.topbar {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(255, 255, 255, .86);
  backdrop-filter: saturate(180%) blur(12px);
  -webkit-backdrop-filter: saturate(180%) blur(12px);
  border-bottom: 1px solid var(--c-line);
}

.topbar-inner {
  display: flex;
  align-items: center;
  gap: 28px;
  height: 62px;
}

.brand {
  display: flex;
  align-items: baseline;
  gap: 9px;
  font-weight: 700;
  font-size: 17px;
  letter-spacing: -.2px;
  white-space: nowrap;
}

.brand-mark {
  display: inline-block;
  width: 9px;
  height: 9px;
  border-radius: 3px;
  background: linear-gradient(135deg, var(--c-brand), #4c8dff);
  box-shadow: 0 0 0 3px var(--c-brand-weak);
}

.brand-sub {
  font-size: 12px;
  font-weight: 500;
  color: var(--c-ink-3);
}

.nav { display: flex; gap: 4px; margin-left: auto; align-items: center; }

.nav a {
  padding: 7px 12px;
  border-radius: var(--r-sm);
  font-size: 14px;
  color: var(--c-ink-2);
  transition: background .16s ease, color .16s ease;
}

.nav a:hover { background: var(--c-line-soft); color: var(--c-ink); }

.nav a.on { color: var(--c-brand); background: var(--c-brand-weak); font-weight: 600; }

.nav .me {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 6px 13px;
  border-radius: var(--r-pill);
  border: 1px solid var(--c-line);
  background: var(--c-card);
  font-size: 13px;
  color: var(--c-ink-2);
}

.nav .me:hover { border-color: var(--c-brand); color: var(--c-brand); }

.dot { width: 6px; height: 6px; border-radius: 50%; background: var(--c-brand); }

/* ---------- 搜索条 ---------- */
.searchbar { padding: 22px 0 6px; }

.searchbar form {
  display: flex;
  gap: 10px;
  background: var(--c-card);
  border: 1px solid var(--c-line);
  border-radius: var(--r-lg);
  padding: 8px 8px 8px 18px;
  box-shadow: var(--shadow-1);
  transition: box-shadow .18s ease, border-color .18s ease;
}

.searchbar form:focus-within { border-color: var(--c-brand); box-shadow: var(--shadow-2); }

.searchbar input {
  flex: 1;
  border: 0;
  outline: 0;
  font: inherit;
  font-size: 15px;
  background: transparent;
  color: var(--c-ink);
  min-width: 0;
}

.searchbar input::placeholder { color: var(--c-ink-3); }

.btn {
  border: 0;
  cursor: pointer;
  font: inherit;
  font-size: 14px;
  font-weight: 600;
  padding: 9px 20px;
  border-radius: var(--r-md);
  background: var(--c-brand);
  color: #fff;
  transition: background .16s ease, transform .12s ease, box-shadow .16s ease;
}

.btn:hover { background: var(--c-brand-deep); color: #fff; box-shadow: 0 6px 16px rgba(0, 82, 217, .22); }
.btn:active { transform: translateY(1px); }
.btn.ghost { background: var(--c-card); color: var(--c-ink-2); border: 1px solid var(--c-line); }
.btn.ghost:hover { background: var(--c-line-soft); color: var(--c-ink); border-color: #d6d9e0; box-shadow: none; }
.btn.block { width: 100%; }
.btn[disabled] { opacity: .5; cursor: not-allowed; }

/* ---------- 筛选轴 ---------- */
.filters {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  padding: 14px 0 6px;
}

.filters .dim { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }

.filters .dim-label {
  font-size: 12px;
  color: var(--c-ink-3);
  font-weight: 600;
  letter-spacing: .3px;
}

.chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 12px;
  border-radius: var(--r-pill);
  border: 1px solid var(--c-line);
  background: var(--c-card);
  font-size: 13px;
  color: var(--c-ink-2);
  cursor: pointer;
  transition: all .14s ease;
}

.chip:hover { border-color: #b9c6e8; color: var(--c-brand); background: #fbfcff; }

/* 选中态用「浅底 + 品牌字 + 品牌描边」，不是实心色块 ——
 * 实心块比岗位标题还抢眼（与小程序 .chip.active 同款处理）。 */
.chip.on {
  background: var(--c-brand-weak);
  border-color: var(--c-brand-line);
  color: var(--c-brand);
  font-weight: 600;
}

.chip .n { color: var(--c-ink-3); font-size: 12px; }
.chip.on .n { color: var(--c-brand); }

.chip.ghost { border-style: dashed; color: var(--c-ink-3); }

/* ---------- 统计条 ---------- */
.result-bar {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 16px 0 10px;
  color: var(--c-ink-3);
  font-size: 13px;
}

.result-bar b { color: var(--c-ink); font-size: 15px; }

/* ---------- 企业分组 ---------- */
.group { margin-bottom: 26px; }

.group-head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 2px 10px;
  position: sticky;
  top: 62px;
  background: linear-gradient(var(--c-bg) 72%, rgba(246, 247, 249, 0));
  z-index: 5;
}

.group-head h2 { margin: 0; font-size: 20px; font-weight: 700; letter-spacing: -.3px; line-height: 1.25; }

.group-head h2 a { color: var(--c-ink); }

.group-head .count {
  font-size: 12px;
  color: var(--c-ink-3);
  background: var(--c-card);
  border: 1px solid var(--c-line);
  padding: 1px 9px;
  border-radius: var(--r-pill);
}

.group-head .tag {
  font-size: 12px;
  color: var(--c-brand);
  background: var(--c-brand-weak);
  padding: 2px 9px;
  border-radius: var(--r-pill);
}

.group-head .more { margin-left: auto; font-size: 13px; color: var(--c-ink-3); }
.group-head .more:hover { color: var(--c-brand); }

/* ---------- 企业归属图标（对齐小程序 .grp-logo） ---------- */
.grp-logo {
  flex: 0 0 auto;
  width: 44px;
  height: 44px;
  border-radius: 13px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  font-weight: 700;
  color: #fff;
  background: var(--c-ink-3);
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .06);
}

.grp-logo.big { width: 52px; height: 52px; border-radius: 16px; font-size: 24px; }

.grp-info { min-width: 0; flex: 1 1 auto; }

.grp-sub {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin-top: 4px;
}

.grp-badge {
  display: inline-block;
  font-size: 11.5px;
  line-height: 1.6;
  padding: 1px 8px;
  border-radius: var(--r-pill);
  background: var(--c-line-soft);
  color: var(--c-ink-2);
}

.grp-count {
  flex: 0 0 auto;
  font-size: 12.5px;
  color: var(--c-ink-3);
  white-space: nowrap;
}

.grp-count b { font-size: 16px; color: var(--c-ink); font-weight: 700; }

.t-weak { color: var(--c-ink-3); font-size: 12.5px; }

/* 分类配色：图标底色与分类徽标同一套
 * （分类 → 类名映射见 lib/category.js 的 BADGE_CLS，与小程序 utils/ownership.js 对齐） */
.cat-csoe { background: var(--c-csoe); }
.cat-soe { background: var(--c-soe); }
.cat-fgn { background: var(--c-fgn); }
.cat-pri { background: var(--c-pri); }
.cat-mnc { background: var(--c-mnc); }
.cat-sme { background: var(--c-sme); }
.cat-big { background: var(--c-big); }
.cat-uni { background: var(--c-uni); }

.grp-badge.cat-csoe { background: var(--c-csoe-bg); color: var(--c-csoe); }
.grp-badge.cat-soe { background: var(--c-soe-bg); color: var(--c-soe); }
.grp-badge.cat-fgn { background: var(--c-fgn-bg); color: var(--c-fgn); }
.grp-badge.cat-pri { background: var(--c-pri-bg); color: var(--c-pri); }
.grp-badge.cat-mnc { background: var(--c-mnc-bg); color: var(--c-mnc); }
.grp-badge.cat-sme { background: var(--c-sme-bg); color: var(--c-sme); }
.grp-badge.cat-big { background: var(--c-big-bg); color: var(--c-big); }
.grp-badge.cat-uni { background: var(--c-uni-bg); color: var(--c-uni); }

/* ---------- 岗位卡 ---------- */
/* 桌面双栏：1120px 定宽下，单栏卡片右侧会空掉近一半画面，信息量与版面都失衡。
 * 窄屏（≤900px）回落单栏。 */
.cards {
  display: grid;
  gap: 10px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

@media (max-width: 900px) {
  .cards { grid-template-columns: minmax(0, 1fr); }
}

.jc {
  position: relative;
  display: block;
  background: var(--c-card);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  padding: 15px 18px 14px;
  transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}

/* 整卡点击层：透明覆盖，承接「点哪里都进详情」 */
.jc-hit {
  position: absolute;
  inset: 0;
  z-index: 1;
  border-radius: var(--r-md);
}

.jc:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-2);
  border-color: #dfe3ea;
  color: inherit;
}

/* 公司行：只在没有企业分组标题的场景出现（当前只有「我的收藏」）。
 * 列表页的公司名在分组头上，卡片里不重复；「我的收藏」没有分组头，
 * 不写公司名就只剩职位名与城市，用户认不出是哪家公司。 */
.jc-org {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 6px;
}

.jc-org-name {
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: -.1px;
  color: var(--c-ink-2);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.jc-top { display: flex; align-items: baseline; gap: 12px; padding-right: 30px; }

.jc-title {
  position: relative;
  z-index: 2;
  font-size: 16px;
  font-weight: 650;
  letter-spacing: -.2px;
  color: var(--c-ink);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.jc-salary {
  margin-left: auto;
  font-size: 15px;
  font-weight: 700;
  color: var(--c-brand);
  white-space: nowrap;
}

.jc-meta {
  margin-top: 7px;
  display: flex;
  flex-wrap: wrap;
  gap: 7px 12px;
  font-size: 13px;
  color: var(--c-ink-2);
}

.jc-meta .sep { color: var(--c-line); }

.jc-tags { margin-top: 9px; display: flex; flex-wrap: wrap; gap: 6px; }

.tag {
  font-size: 11.5px;
  padding: 2px 8px;
  border-radius: var(--r-sm);
  background: var(--c-line-soft);
  color: var(--c-ink-2);
}

.tag.warn { background: var(--c-warn-weak); color: var(--c-warn); }
.tag.ok { background: var(--c-ok-weak); color: var(--c-ok); }
.tag.brand { background: var(--c-brand-weak); color: var(--c-brand); }

.jc-fav {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border: 0;
  background: transparent;
  cursor: pointer;
  border-radius: var(--r-sm);
  color: var(--c-ink-3);
  transition: color .14s ease, background .14s ease, transform .14s ease;
}

.jc-fav:hover { color: var(--c-brand); background: var(--c-brand-weak); transform: scale(1.08); }
.jc-fav.on { color: var(--c-brand); }
.jc-fav svg { width: 17px; height: 17px; }

.deadline { font-size: 12.5px; color: var(--c-ink-3); }
.deadline.dl-soon { color: var(--c-warn); font-weight: 600; }
.deadline.dl-expired { color: var(--c-danger); }
.deadline.dl-fixed { color: var(--c-ok); }

/* ---------- 分页 ---------- */
.pager {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 26px 0 40px;
}

.pager a, .pager span {
  min-width: 38px;
  height: 38px;
  padding: 0 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--r-md);
  border: 1px solid var(--c-line);
  background: var(--c-card);
  font-size: 14px;
  color: var(--c-ink-2);
}

.pager a:hover { border-color: var(--c-brand); color: var(--c-brand); }
.pager .on { background: var(--c-brand); border-color: var(--c-brand); color: #fff; font-weight: 600; }
.pager .gap { border: 0; background: transparent; }

/* ---------- 详情页 ---------- */
.detail {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 300px;
  gap: 24px;
  padding: 26px 0 48px;
  align-items: start;
}

.panel {
  background: var(--c-card);
  border: 1px solid var(--c-line);
  border-radius: var(--r-lg);
  padding: 24px 26px;
  box-shadow: var(--shadow-1);
}

.panel + .panel { margin-top: 16px; }

/* 企业页标题（2026-11-06 改）：公司名加大 + 前面带归属色图标 */
.panel h1 {
  margin: 0 0 6px;
  font-size: 28px;
  letter-spacing: -.4px;
  line-height: 1.3;
  display: flex;
  align-items: center;
  gap: 12px;
}

/* 企业图标：企业名首字圆形徽标，底色跟企业分类走 */
.co-mark {
  flex: 0 0 auto;
  width: 40px;
  height: 40px;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 19px;
  font-weight: 700;
  color: #fff;
  background: var(--c-mnc);
}
.co-mark.cat-soe { background: var(--c-soe); }
.co-mark.cat-csoe { background: var(--c-csoe); }
.co-mark.cat-sme { background: var(--c-sme); }
.co-mark.cat-fgn { background: var(--c-fgn); }
.co-mark.cat-mnc { background: var(--c-mnc); }
.co-mark.cat-pri { background: var(--c-pri); }
.co-mark.cat-big { background: var(--c-big); }
.co-mark.cat-uni { background: var(--c-uni); }
.panel h3 { margin: 0 0 12px; font-size: 15px; font-weight: 650; }

.d-sub { color: var(--c-ink-3); font-size: 13.5px; margin-bottom: 14px; }

.d-facts {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  padding: 14px 0;
  border-top: 1px solid var(--c-line-soft);
  border-bottom: 1px solid var(--c-line-soft);
  font-size: 13.5px;
  color: var(--c-ink-2);
}

.d-facts b { color: var(--c-ink); font-weight: 600; }

.d-cta { display: flex; gap: 10px; margin-top: 18px; }

.jd { margin-top: 6px; }

.jd-sec { margin-bottom: 22px; }

.jd-sec h4 {
  margin: 0 0 8px;
  font-size: 14.5px;
  font-weight: 650;
  color: var(--c-ink);
  padding-left: 10px;
  border-left: 3px solid var(--c-brand);
}

.jd-sec h4.fb { color: var(--c-ink-3); border-left-color: var(--c-line); font-weight: 600; }

.jd-sec ul { margin: 0; padding-left: 20px; }

.jd-sec li { margin-bottom: 7px; color: var(--c-ink-2); }

.jd-sec li.num { list-style: none; margin-left: -18px; }

.jd-origin {
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px dashed var(--c-line);
  font-size: 12.5px;
  color: var(--c-ink-3);
}

.side-list { display: grid; gap: 8px; }

.side-job {
  display: block;
  padding: 10px 12px;
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  transition: border-color .14s ease, background .14s ease;
}

.side-job:hover { border-color: #c3d2f2; background: #fbfcff; color: inherit; }
.side-job .t { font-size: 14px; font-weight: 600; }
.side-job .s { font-size: 12.5px; color: var(--c-brand); font-weight: 600; }
.side-job .m { font-size: 12.5px; color: var(--c-ink-3); margin-top: 2px; }

/* ---------- 表单 ---------- */
.form {
  max-width: 440px;
  margin: 44px auto 60px;
  /* 不覆盖 .panel 的 padding：那会把左右内边距清零，
   * 表单控件直接贴到卡片边缘，白底卡片也就看不出是张卡片。 */
}

.field { margin-bottom: 16px; }

.field label { display: block; font-size: 13px; color: var(--c-ink-2); margin-bottom: 6px; font-weight: 600; }

.field input {
  width: 100%;
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  padding: 11px 14px;
  font: inherit;
  font-size: 15px;
  background: var(--c-card);
  outline: 0;
  transition: border-color .14s ease, box-shadow .14s ease;
}

.field input:focus { border-color: var(--c-brand); box-shadow: 0 0 0 3px var(--c-brand-weak); }

.field .hint { font-size: 12px; color: var(--c-ink-3); margin-top: 6px; line-height: 1.5; }

.msg { display: none; padding: 10px 14px; border-radius: var(--r-md); font-size: 13.5px; margin-bottom: 14px; }
.msg.err { display: block; background: #fef3f2; color: var(--c-danger); }
.msg.ok { display: block; background: var(--c-ok-weak); color: var(--c-ok); }

.alt { text-align: center; margin-top: 16px; font-size: 13px; color: var(--c-ink-3); }
.alt a { color: var(--c-brand); font-weight: 600; }

/* ---------- 我的 ---------- */
.account {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 22px 24px;
  border-radius: var(--r-lg);
  background: linear-gradient(135deg, #123a8f 0%, var(--c-brand) 58%, #3b7bff 100%);
  color: #fff;
  box-shadow: var(--shadow-2);
}

.avatar {
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .18);
  display: grid;
  place-items: center;
  font-size: 21px;
  font-weight: 700;
  border: 1px solid rgba(255, 255, 255, .28);
}

.account .nm { font-size: 18px; font-weight: 700; }
.account .ph { font-size: 13px; opacity: .82; margin-top: 2px; }
.account .rt { margin-left: auto; text-align: right; font-size: 12.5px; opacity: .82; }

.tabs { display: flex; gap: 4px; margin: 18px 0 14px; background: var(--c-card); padding: 5px; border-radius: var(--r-md); border: 1px solid var(--c-line); }

.tabs a {
  flex: 1;
  text-align: center;
  padding: 8px 12px;
  border-radius: var(--r-sm);
  font-size: 14px;
  color: var(--c-ink-2);
  transition: background .14s ease, color .14s ease;
}

.tabs a:hover { background: var(--c-line-soft); color: var(--c-ink); }
.tabs a.on { background: var(--c-brand-weak); color: var(--c-brand); font-weight: 650; }

.rows { display: grid; }

.row {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 2px;
  border-bottom: 1px solid var(--c-line-soft);
  font-size: 14px;
}

.row:last-child { border-bottom: 0; }
.row .k { color: var(--c-ink-3); width: 96px; flex: none; }
.row .v { color: var(--c-ink); }
.row .act { margin-left: auto; color: var(--c-brand); font-weight: 600; font-size: 13.5px; }

/* ---------- 空态 ---------- */
.empty {
  text-align: center;
  padding: 62px 20px;
  color: var(--c-ink-3);
}

.empty .ico { font-size: 34px; opacity: .35; }
.empty .t { font-size: 15px; color: var(--c-ink-2); margin: 10px 0 16px; }

/* ---------- 页脚 ---------- */
.footer {
  border-top: 1px solid var(--c-line);
  background: var(--c-card);
  padding: 26px 0 34px;
  margin-top: 20px;
}

.footer .f-cols { display: grid; gap: 6px; font-size: 13px; color: var(--c-ink-3); }
.footer .f-links { display: flex; gap: 16px; margin-top: 10px; font-size: 13px; flex-wrap: wrap; }
.footer .f-links a { color: var(--c-ink-2); }
.footer .f-links a:hover { color: var(--c-brand); }
.footer .f-note { margin-top: 14px; font-size: 12.5px; color: var(--c-ink-3); line-height: 1.7; max-width: 820px; }

/* ---------- 移动端 ---------- */
@media (max-width: 900px) {
  .detail { grid-template-columns: minmax(0, 1fr); }
  .topbar-inner { gap: 14px; }
  .nav a { padding: 7px 9px; font-size: 13.5px; }
  .brand-sub { display: none; }
}

@media (max-width: 640px) {
  .wrap { padding: 0 14px; }
  .topbar-inner { height: 56px; flex-wrap: wrap; }
  /* 窄屏顶栏只留「品牌 + 登录入口」：三个导航项在 430px 下会溢出并互相压住。
   * 页脚有同名的「来源说明 / 企业信息 / 用户协议」链接，去路不丢。 */
  .nav > a:not(.me) { display: none; }
  .group-head { top: 56px; }
  .panel { padding: 18px 16px; }
  .panel h1 { font-size: 21px; gap: 10px; }
  .co-mark { width: 34px; height: 34px; border-radius: 10px; font-size: 16px; }
  .jc-title { font-size: 15px; }
  .jc-salary { font-size: 14px; }
  .account { padding: 18px; }
}

/* ---------- 首屏横幅（2026-11-06 补） ---------- */
/* 首屏是页面的第一印象，之前 .hero 完全没有样式（裸文字堆在顶部）。
 * 做法：深色渐变底 + 两团光晕 + 细网格纹理，文字层压在最上面；
 * 搜索框上浮压住横幅下沿，形成「入口浮在视觉重心上」的层次。 */
.hero {
  position: relative;
  overflow: hidden;
  color: #fff;
  background:
    radial-gradient(1100px 420px at 6% -25%, rgba(76, 141, 255, .40), transparent 62%),
    radial-gradient(760px 300px at 94% -10%, rgba(0, 209, 190, .20), transparent 64%),
    linear-gradient(140deg, #0a1020 0%, #101d36 52%, #0b2745 100%);
}

.hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(255, 255, 255, .055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, .055) 1px, transparent 1px);
  background-size: 54px 54px;
  -webkit-mask-image: radial-gradient(760px 340px at 28% 0%, #000 0%, transparent 78%);
  mask-image: radial-gradient(760px 340px at 28% 0%, #000 0%, transparent 78%);
  pointer-events: none;
}

.hero-inner {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 40px;
  padding: 52px 24px 60px;
}

.hero-txt h1 {
  margin: 0 0 12px;
  font-size: 33px;
  font-weight: 750;
  letter-spacing: -.9px;
  line-height: 1.22;
}

.hero-txt p {
  margin: 0;
  max-width: 620px;
  font-size: 14.5px;
  line-height: 1.8;
  color: rgba(255, 255, 255, .72);
}

.hero-stats {
  display: flex;
  gap: 12px;
  flex: none;
}

.hero-stats .hs {
  min-width: 112px;
  padding: 13px 17px;
  border-radius: var(--r-lg);
  background: rgba(255, 255, 255, .07);
  border: 1px solid rgba(255, 255, 255, .14);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.hero-stats .hs b {
  display: block;
  font-size: 23px;
  font-weight: 700;
  letter-spacing: -.6px;
  line-height: 1.3;
}

.hero-stats .hs span {
  font-size: 11.5px;
  color: rgba(255, 255, 255, .62);
  letter-spacing: .3px;
}

/* 搜索框上浮压住横幅下沿。
 * z-index 是必需的：.hero 是 position:relative（定位元素），绘制层级高于后继的静态块，
 * 不给搜索条也定位的话，上浮的表单会被横幅盖住上半截。 */
.searchbar.over { padding: 0 0 4px; position: relative; z-index: 6; }

.searchbar.over form {
  margin-top: -32px;
  border-color: rgba(255, 255, 255, .7);
  box-shadow: 0 22px 48px -22px rgba(10, 16, 32, .55), 0 2px 6px rgba(18, 21, 26, .05);
}

/* ---------- 卡片细节 ---------- */
/* 「面议」降级：官方渠道 98% 的岗位没公开薪资，有数字才配品牌色 */
.jc-salary.muted {
  color: var(--c-ink-3);
  font-weight: 500;
  font-size: 13px;
}

/* 企业分组头吸顶时用毛玻璃，避免渐变遮罩在滚动中割裂 */
.group-head {
  background: rgba(246, 247, 249, .88);
  backdrop-filter: saturate(180%) blur(10px);
  -webkit-backdrop-filter: saturate(180%) blur(10px);
}

/* ---------- 进场动效 ---------- */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(9px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes heroIn {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: translateY(0); }
}

.hero-txt { animation: heroIn .6s cubic-bezier(.22, .7, .3, 1) backwards; }
.hero-stats { animation: heroIn .6s cubic-bezier(.22, .7, .3, 1) .09s backwards; }

/* 用 backwards 而不是 both：动画结束后不保留 transform，
 * 否则 fill-mode 会压掉 hover 的 translateY(-2px) 抬升。 */
.jc { animation: fadeUp .32s ease backwards; }
.cards .jc:nth-child(2) { animation-delay: .04s; }
.cards .jc:nth-child(3) { animation-delay: .08s; }
.cards .jc:nth-child(4) { animation-delay: .12s; }
.cards .jc:nth-child(5) { animation-delay: .16s; }
.cards .jc:nth-child(6) { animation-delay: .2s; }

@media (prefers-reduced-motion: reduce) {
  .hero-txt, .hero-stats, .jc { animation: none; }
  * { transition-duration: .01ms !important; animation-duration: .01ms !important; }
}

@media (max-width: 640px) {
  .hero-inner {
    flex-direction: column;
    align-items: flex-start;
    gap: 22px;
    padding: 34px 14px 46px;
  }
  .hero-txt h1 { font-size: 23px; letter-spacing: -.5px; }
  .hero-txt p { font-size: 13.5px; }
  .hero-stats { width: 100%; }
  .hero-stats .hs { flex: 1; min-width: 0; padding: 11px 12px; }
  .hero-stats .hs b { font-size: 18px; }
}

/* 分组头 / 企业页的「查看全部 N 个岗位」展开条（2026-11-06）
 * 旧版是一句「仅显示前 N 个，其余 M 个见企业页」的静态说明，
 * 用户明确不要 —— 改成可点的按钮，在本页直接铺出该企业的岗位。 */
.expand-bar {
  margin-top: 12px;
  display: flex;
  justify-content: center;
}
.expand-btn {
  display: inline-block;
  padding: 9px 20px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--c-brand);
  background: var(--c-brand-weak);
  border: 1px solid var(--c-brand-line);
  border-radius: var(--r-pill);
}
.expand-btn:hover {
  color: #fff;
  background: var(--c-brand);
  border-color: var(--c-brand);
}

/* ==========================================================================
   筛选条（对齐小程序 pages/index 的 filter-bar）
   结构与视觉照抄小程序：分段控件 → 实习三分类 → 所有制四档 → 行业/标签入口 + 结果数。
   ========================================================================== */
.fbar {
  background: var(--c-card);
  border: 1px solid var(--c-line);
  border-radius: var(--r-lg);
  padding: 16px 20px 14px;
  margin: 14px 0 4px;
  box-shadow: var(--shadow-1);
}

/* 分段控件：全部 / 实习 / 校招 / 社招 —— 四等分铺满，选中态实底品牌色 */
.seg-row {
  display: flex;
  gap: 8px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--c-line);
}

.seg {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 9px 4px;
  border-radius: var(--r-md);
  background: var(--c-card);
  border: 1px solid var(--c-line);
  transition: all .14s ease;
}

.seg:hover { border-color: var(--c-brand-line); }

.seg-label {
  font-size: 14px;
  font-weight: 600;
  line-height: 1.25;
  color: var(--c-ink);
}

.seg-cnt {
  font-size: 11.5px;
  line-height: 1.2;
  margin-top: 2px;
  color: var(--c-ink-3);
}

.seg.on { background: var(--c-brand); border-color: var(--c-brand); }
.seg.on .seg-label { color: #fff; }
.seg.on .seg-cnt { color: rgba(255, 255, 255, .82); }

/* 「全部」是聚合项，字号更小、颜色更弱 —— 它不是分类，是分类的清空键 */
.seg-all .seg-label { font-size: 12.5px; font-weight: 500; }

/* 校招 / 实习是本产品的主场景，字号更大一档 */
.seg-key .seg-label { font-size: 16px; }
.seg-key .seg-cnt { font-size: 12px; }

/* 实习三分类（只在「实习」被选中时出现）：比主轴 chip 更轻一档 */
.chip-row-thin { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.chip-row-thin .chip { padding: 4px 11px; font-size: 12px; }
.chip-row-thin .chip .n { margin-left: 5px; font-size: 11px; }

/* 所有制四档：固定四列，色点 + 名称在上、数字在下 */
.chip-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 14px;
}

.chip-grid .chip {
  width: calc(25% - 6px);
  margin-right: 0;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  padding: 9px 4px;
  font-size: 12.5px;
  box-sizing: border-box;
}

.own-grid { margin-top: 14px; }
.own-head { display: flex; align-items: center; }
.own-label { font-size: 13.5px; font-weight: 600; }
.chip-grid .chip .n { margin-left: 0; font-size: 12px; }

.own-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  flex-shrink: 0;
  margin-right: 6px;
  align-self: center;
}

.own-dot-csoe { background: #b03a2e; }
.own-dot-soe { background: #0f7b6c; }
.own-dot-fgn { background: #2a5fb4; }
.own-dot-pri { background: #2f7a45; }
.own-dot-mnc { background: #8a919f; }

/* 行业 / 标签入口 + 结果数 */
.filter-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  row-gap: 8px;
  margin-top: 14px;
}

.pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
  padding: 7px 12px;
  margin-right: 8px;
  border-radius: var(--r-md);
  background: var(--c-card);
  border: 1px solid var(--c-line);
  font-size: 13px;
  color: var(--c-ink-2);
  cursor: pointer;
  list-style: none;
  transition: all .14s ease;
}

.pill::-webkit-details-marker { display: none; }
.pill:hover { border-color: var(--c-brand-line); color: var(--c-brand); }
.pill.on { background: var(--c-brand-weak); color: var(--c-brand); border-color: var(--c-brand-line); }
.pill .chev { width: 13px; height: 13px; flex-shrink: 0; }

.pill-badge {
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  border-radius: var(--r-pill);
  background: var(--c-brand);
  color: #fff;
  font-size: 11px;
  font-weight: 600;
  line-height: 16px;
  text-align: center;
}

.filter-count {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  color: var(--c-ink-3);
}

.filter-count b { color: var(--c-ink); font-size: 14px; }

.link {
  color: var(--c-brand);
  font-weight: 600;
  background: none;
  border: 0;
  padding: 0;
  font: inherit;
  cursor: pointer;
}

/* ---------- 筛选面板（底部弹层） ---------- */
.fpanel { display: block; }

.fpanel-mask {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 60;
  background: rgba(18, 21, 26, .45);
  animation: fpFade .18s ease;
}

.fpanel[open] .fpanel-mask { display: block; }

.fpanel-panel {
  display: none;
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 61;
  max-width: 620px;
  margin: 0 auto;
  /* 不写 border-box 的话，左右 padding 会把面板撑出视口（窄屏必现） */
  box-sizing: border-box;
  background: var(--c-card);
  border-radius: 20px 20px 0 0;
  padding: 20px 22px 22px;
  box-shadow: 0 -16px 48px rgba(18, 21, 26, .18);
  animation: fpUp .22s cubic-bezier(.22, .72, .3, 1);
}

.fpanel[open] .fpanel-panel { display: block; }

@keyframes fpUp { from { transform: translateY(28px); opacity: .35; } to { transform: none; opacity: 1; } }
@keyframes fpFade { from { opacity: 0; } to { opacity: 1; } }

.panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--c-line);
}

.panel-title { font-size: 16px; font-weight: 700; letter-spacing: -.2px; }

.panel-body { max-height: 56vh; overflow-y: auto; }

.panel-group { padding: 14px 0 4px; }
.panel-group:first-child { padding-top: 8px; }

.pg-title {
  padding-bottom: 2px;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--c-ink-3);
}

.tag-opt {
  display: flex;
  align-items: center;
  padding: 11px 0;
  border-bottom: 1px solid var(--c-line);
  cursor: pointer;
  text-decoration: none;
  color: inherit;
  transition: color .14s ease;
}

.tag-opt:last-child { border-bottom: none; }
.tag-opt:hover .tag-opt-label { color: var(--c-brand); }

/* 勾选框：服务端按选中状态渲染 .cb.on（勾选态不依赖 JS） */
.cb {
  width: 18px;
  height: 18px;
  border: 1.5px solid var(--c-line);
  border-radius: 6px;
  margin-right: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: all .14s ease;
}

.cb.on { background: var(--c-brand); border-color: var(--c-brand); }

.cb.on::after {
  content: '';
  width: 4px;
  height: 8px;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg) translate(-1px, -2px);
}

.tag-opt-label { flex: 1; font-size: 14px; color: var(--c-ink); }
.tag-opt.on .tag-opt-label { color: var(--c-brand); font-weight: 600; }
.tag-opt .cnt { color: var(--c-ink-3); font-size: 12px; }

.panel-foot { display: flex; gap: 10px; padding-top: 16px; }
.panel-foot .btn { flex: 1; }
.panel-foot .btn:last-child { flex: 2; }

/* 搜索框左边的放大镜（小程序 .search 同款：图标 + 输入框） */
.searchbar input[type="search"] {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a919f' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-3.6-3.6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: 14px center;
  background-size: 17px 17px;
  padding-left: 40px;
}

/* ---------- 企业主页与内容模块（2026-11-07 视觉重做） ----------
 * 对齐小程序 pages/enterprise/detail 与 pages/enterprise/module：
 * 企业名片 + 统计条 + 五个模块入口；模块页是「模块头 + 内容卡 + 模块切换」。
 *
 * 本轮只动呈现层：路由、信息结构、文案、class 契约一律不改。
 * 配色全部取自 :root 已有色板，不新增第三套色板。
 */

.ent-page { padding-bottom: 56px; }

.ent-head { padding: 30px 0 18px; }

.ent-head-t { margin: 0; font-size: 26px; font-weight: 750; letter-spacing: -.6px; }

.ent-head-sub { margin: 8px 0 0; font-size: 14px; color: var(--c-ink-3); max-width: 720px; }

/* ---------- 企业条目（精选列表 / 全量名录） ---------- */
.ent-list {
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
}

.ent-card {
  position: relative;
  display: flex;
  align-items: center;
  gap: 13px;
  padding: 15px 18px;
  background: var(--c-card);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-1);
  transition: box-shadow .16s ease, transform .16s ease, border-color .16s ease;
}

.ent-card:hover { box-shadow: var(--shadow-2); border-color: #d6d9e0; transform: translateY(-1px); }

/* 左侧归属色条：颜色跟企业分类走，条目多时一眼能分出是哪一类 */
.ent-card-bar {
  flex: 0 0 auto;
  width: 4px;
  height: 38px;
  border-radius: 3px;
  background: var(--c-brand);
}

.ent-card-bar.cat-soe { background: var(--c-soe); }
.ent-card-bar.cat-csoe { background: var(--c-csoe); }
.ent-card-bar.cat-fgn { background: var(--c-fgn); }
.ent-card-bar.cat-pri { background: var(--c-pri); }
.ent-card-bar.cat-mnc { background: var(--c-mnc); }
.ent-card-bar.cat-sme { background: var(--c-sme); }
.ent-card-bar.cat-big { background: var(--c-big); }
.ent-card-bar.cat-uni { background: var(--c-uni); }

.ent-info { min-width: 0; flex: 1 1 auto; }

.ent-name { display: block; font-size: 16px; font-weight: 650; color: var(--c-ink); }

.ent-sub-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 5px; }

.ent-more { padding: 26px 0 8px; text-align: center; }

/* ---------- 企业名片 ---------- */
/* 深色品牌面板：跟首页首屏横幅同一套语言，白字 + 光晕 + 细网格 */
.ent-hero {
  position: relative;
  overflow: hidden;
  margin-top: 26px;
  padding: 30px 32px;
  color: #fff;
  border-radius: var(--r-lg);
  background:
    radial-gradient(680px 300px at 4% -30%, rgba(76, 141, 255, .42), transparent 64%),
    radial-gradient(520px 260px at 96% 8%, rgba(0, 209, 190, .22), transparent 66%),
    linear-gradient(140deg, #0a1020 0%, #101d36 54%, #0b2745 100%);
  box-shadow: 0 18px 40px -24px rgba(10, 16, 32, .55);
}

.ent-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(255, 255, 255, .05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, .05) 1px, transparent 1px);
  background-size: 46px 46px;
  -webkit-mask-image: radial-gradient(520px 240px at 22% 0%, #000 0%, transparent 76%);
  mask-image: radial-gradient(520px 240px at 22% 0%, #000 0%, transparent 76%);
  pointer-events: none;
}

.ent-hero-top { position: relative; z-index: 1; display: flex; align-items: center; gap: 18px; }

.ent-hero-info { min-width: 0; flex: 1 1 auto; }

.ent-hero-name { margin: 0; font-size: 27px; font-weight: 750; letter-spacing: -.6px; color: #fff; }

.ent-hero-tags { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 10px; }

/* 名片里的归属图标：放大 + 玻璃描边 + 提亮，深底上也看得清 */
.ent-hero .grp-logo.big {
  width: 60px;
  height: 60px;
  border-radius: 18px;
  font-size: 27px;
  border: 1px solid rgba(255, 255, 255, .28);
  box-shadow: 0 10px 24px -14px rgba(0, 0, 0, .65), inset 0 1px 0 rgba(255, 255, 255, .22);
  filter: brightness(1.08) saturate(1.06);
}

/* 深底上的徽标改玻璃底，别再用灰底 */
.ent-hero .grp-badge {
  background: rgba(255, 255, 255, .15);
  color: rgba(255, 255, 255, .92);
  border: 1px solid rgba(255, 255, 255, .2);
}

.ent-hero .t-weak { color: rgba(255, 255, 255, .68); }

/* 统计条：玻璃卡片，不再是灰底方块 */
.ent-stats {
  position: relative;
  z-index: 1;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 24px 0 20px;
}

.ent-stat {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 136px;
  padding: 11px 15px;
  background: rgba(255, 255, 255, .09);
  border: 1px solid rgba(255, 255, 255, .16);
  border-radius: var(--r-md);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.ent-stat-ic { flex: 0 0 auto; display: inline-flex; color: rgba(255, 255, 255, .82); }
.ent-stat-ic svg { width: 20px; height: 20px; }

.ent-stat-txt { display: block; min-width: 0; }

.ent-stat-txt b {
  display: block;
  font-size: 20px;
  font-weight: 750;
  letter-spacing: -.4px;
  line-height: 1.25;
  color: #fff;
}

.ent-stat-txt em { font-style: normal; font-size: 12.5px; color: rgba(255, 255, 255, .64); }

/* 名片里的主按钮改成白底，深底上白底更跳 */
.ent-jobs-btn {
  position: relative;
  z-index: 1;
  display: inline-block;
  background: #fff;
  color: var(--c-brand-deep);
  border-color: #fff;
}

.ent-jobs-btn:hover {
  background: #eef3ff;
  color: var(--c-brand-deep);
  box-shadow: 0 10px 26px -14px rgba(0, 0, 0, .6);
}

.ent-jobs-link { margin: 14px 0 4px; }

/* ---------- 岗位来源 ---------- */
.ent-src {
  margin-top: 12px;
  padding: 14px 20px;
  background: var(--c-card);
  border: 1px solid var(--c-line);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-1);
}

.ent-src-row { display: flex; gap: 14px; padding: 6px 0; font-size: 13px; }

.ent-src-k { flex: 0 0 68px; color: var(--c-ink-3); }

.ent-src-v { flex: 1 1 auto; min-width: 0; color: var(--c-ink-2); word-break: break-all; }

.ent-src-v a { color: var(--c-brand); border-bottom: 1px solid var(--c-brand-line); }

/* ---------- 模块入口 ---------- */
.ent-sec { margin-top: 30px; }

.ent-sec-title {
  margin: 0 0 14px;
  font-size: 18px;
  font-weight: 700;
  letter-spacing: -.3px;
  display: flex;
  align-items: center;
  gap: 10px;
}

.ent-sec-title::before {
  content: '';
  flex: 0 0 auto;
  width: 4px;
  height: 18px;
  border-radius: 2px;
  background: linear-gradient(180deg, var(--c-brand), #4c8dff);
}

/* 五个模块卡：自适应等分。宽屏一行排下 5 张，不再有第 5 张落单 */
.ent-mods {
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(auto-fit, minmax(196px, 1fr));
}

.ent-mod {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: 13px;
  padding: 18px 16px;
  background: var(--c-card);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-1);
  overflow: hidden;
  transition: box-shadow .18s ease, transform .18s ease, border-color .18s ease;
}

/* 悬停时底部亮一条品牌色 */
.ent-mod::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--c-brand), #4c8dff);
  opacity: 0;
  transition: opacity .18s ease;
}

.ent-mod:hover { box-shadow: var(--shadow-2); border-color: #d6d9e0; transform: translateY(-2px); }
.ent-mod:hover::after { opacity: 1; }

.ent-mod-icon {
  flex: 0 0 auto;
  width: 38px;
  height: 38px;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.ent-mod-icon svg { width: 20px; height: 20px; }

/* 五个模块各一色（取 :root 已有色板）：浅底 + 同色描边图标 */
.mi-intro { background: var(--c-soe-bg); color: var(--c-soe); }
.mi-notice { background: var(--c-fgn-bg); color: var(--c-fgn); }
.mi-flow { background: var(--c-sme-bg); color: var(--c-sme); }
.mi-benefit { background: var(--c-pri-bg); color: var(--c-pri); }
.mi-guide { background: var(--c-big-bg); color: var(--c-big); }

.ent-mod-main { min-width: 0; flex: 1 1 auto; }

/* 标题不折行：五个模块名最长 7 字，窄屏放不下就省略号，不允许「企业简单介 / 绍」这种断法 */
.ent-mod-title {
  display: block;
  font-size: 14.5px;
  font-weight: 650;
  color: var(--c-ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* 描述限两行，五张卡的高度才齐 */
.ent-mod-desc {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  font-size: 12px;
  color: var(--c-ink-3);
  margin-top: 4px;
  line-height: 1.55;
}

/* 箭头移到卡片右上角绝对定位 —— 原来它占着横向空间，把标题挤到折行 */
.ent-mod-arrow {
  position: absolute;
  top: 14px;
  right: 12px;
  color: var(--c-ink-3);
  font-size: 14px;
  transition: transform .16s ease;
}

.ent-mod:hover .ent-mod-arrow { transform: translateX(2px); color: var(--c-brand); }

.ent-sec-note { margin: 14px 0 0; font-size: 12.5px; color: var(--c-ink-3); line-height: 1.7; }

/* ---------- 模块页 ---------- */
.md-head {
  position: relative;
  overflow: hidden;
  margin-top: 26px;
  padding: 24px 28px;
  border-radius: var(--r-lg);
  background: linear-gradient(135deg, #f1f5ff 0%, #ffffff 62%);
  border: 1px solid var(--c-line);
  box-shadow: var(--shadow-1);
}

.md-head::before {
  content: '';
  position: absolute;
  right: -70px;
  top: -90px;
  width: 230px;
  height: 230px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(0, 82, 217, .10), transparent 68%);
  pointer-events: none;
}

.md-back { position: relative; z-index: 1; display: inline-block; font-size: 13px; }

.md-head-main { position: relative; z-index: 1; display: flex; align-items: center; gap: 15px; margin-top: 14px; }

.md-head-ic {
  flex: 0 0 auto;
  width: 52px;
  height: 52px;
  border-radius: 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--shadow-1);
}

.md-head-ic svg { width: 26px; height: 26px; }

.md-head-txt { min-width: 0; }

.md-title { margin: 0; font-size: 24px; font-weight: 750; letter-spacing: -.5px; }

.md-sub { margin: 5px 0 0; font-size: 13.5px; color: var(--c-ink-3); }

.md-card {
  margin-top: 16px;
  padding: 24px 26px;
  background: var(--c-card);
  border: 1px solid var(--c-line);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-1);
}

.md-h {
  position: relative;
  margin: 26px 0 12px;
  padding-left: 12px;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: -.2px;
  color: var(--c-ink);
}

.md-h::before {
  content: '';
  position: absolute;
  left: 0;
  top: 3px;
  bottom: 3px;
  width: 3px;
  border-radius: 2px;
  background: linear-gradient(180deg, var(--c-brand), #4c8dff);
}

.md-card > .md-h:first-child { margin-top: 0; }

/* 空态 */
.md-empty { text-align: center; padding: 28px 10px 22px; }

.md-empty-ic {
  display: inline-flex;
  width: 50px;
  height: 50px;
  border-radius: 16px;
  background: var(--c-line-soft);
  color: var(--c-ink-3);
  align-items: center;
  justify-content: center;
}

.md-empty-ic svg { width: 24px; height: 24px; }

.md-empty-t { margin-top: 13px; font-size: 14.5px; font-weight: 650; color: var(--c-ink-2); }

.md-empty-d { margin-top: 6px; font-size: 12.5px; color: var(--c-ink-3); line-height: 1.7; }

.md-note {
  margin-top: 18px;
  padding: 12px 14px;
  font-size: 12.5px;
  color: var(--c-ink-3);
  line-height: 1.75;
  background: var(--c-line-soft);
  border-left: 3px solid var(--c-brand-line);
  border-radius: var(--r-sm);
}

.md-rows > .md-note, .md-kv > .md-note { margin-top: 0; }

/* 键值区：从密表格行改成自适应卡片网格 */
.md-kv, .md-rows {
  display: grid;
  gap: 8px;
  grid-template-columns: repeat(auto-fit, minmax(268px, 1fr));
}

.md-kv { grid-template-columns: repeat(auto-fit, minmax(212px, 1fr)); }

.md-row {
  display: grid;
  grid-template-columns: minmax(72px, 116px) 1fr;
  gap: 12px;
  align-items: baseline;
  padding: 10px 13px;
  background: var(--c-line-soft);
  border: 1px solid transparent;
  border-radius: var(--r-sm);
  font-size: 13.5px;
  transition: background .16s ease, border-color .16s ease;
}

.md-row:hover { background: #eef1f6; border-color: var(--c-line); }

.md-row-k { color: var(--c-ink-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.md-row-v { min-width: 0; color: var(--c-ink); font-weight: 550; word-break: break-word; }

/* ---------- 公告 ---------- */
.md-notices { display: grid; gap: 10px; }

.md-notice {
  display: flex;
  align-items: center;
  gap: 13px;
  padding: 14px 16px;
  background: var(--c-card);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-1);
  transition: box-shadow .16s ease, transform .16s ease, border-color .16s ease;
}

.md-notice:hover { box-shadow: var(--shadow-2); border-color: var(--c-brand-line); transform: translateY(-1px); }

.md-notice-ic {
  flex: 0 0 auto;
  width: 34px;
  height: 34px;
  border-radius: 11px;
  background: var(--c-fgn-bg);
  color: var(--c-fgn);
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.md-notice-ic svg { width: 18px; height: 18px; }

.md-notice-body { flex: 1 1 auto; min-width: 0; }

.md-notice-t { display: block; font-size: 14.5px; font-weight: 650; color: var(--c-ink); line-height: 1.5; }

.md-notice-meta { display: block; font-size: 12px; color: var(--c-ink-3); margin-top: 5px; }

.md-notice-go { flex: 0 0 auto; color: var(--c-ink-3); font-size: 15px; transition: transform .16s ease, color .16s ease; }

.md-notice:hover .md-notice-go { transform: translateX(2px); color: var(--c-brand); }

/* ---------- 流程 ---------- */
.md-flow { display: grid; gap: 10px; }

.md-step {
  position: relative;
  display: flex;
  gap: 14px;
  padding: 15px 18px;
  background: var(--c-card);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-1);
}

/* 步骤之间的连接线：把一列方块变成一条流程 */
.md-step::before {
  content: '';
  position: absolute;
  left: 28px;
  top: 42px;
  bottom: -11px;
  width: 2px;
  background: linear-gradient(180deg, var(--c-brand-line), var(--c-line));
}

.md-step:last-child::before { display: none; }

.md-node {
  position: relative;
  z-index: 1;
  flex: 0 0 auto;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--c-brand);
  color: #fff;
  font-size: 12.5px;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 0 0 4px var(--c-brand-weak);
}

.md-step-body { min-width: 0; flex: 1 1 auto; }

.md-step-t { font-size: 14.5px; font-weight: 650; color: var(--c-ink); }

.md-step-d { font-size: 13px; color: var(--c-ink-2); margin-top: 5px; line-height: 1.75; }

/* ---------- 学历分布 ---------- */
.md-edu-list { display: grid; gap: 10px; }

.md-edu { display: flex; align-items: center; gap: 12px; font-size: 13px; }

.md-edu-k { flex: 0 0 116px; color: var(--c-ink-2); }

.md-edu-bar { flex: 1 1 auto; height: 8px; border-radius: var(--r-pill); background: var(--c-line-soft); overflow: hidden; }

.md-edu-bar i { display: block; height: 100%; border-radius: var(--r-pill); background: linear-gradient(90deg, var(--c-brand), #4c8dff); }

.md-edu-v { flex: 0 0 auto; color: var(--c-ink-3); font-size: 12px; }

/* ---------- 福利关键词 ---------- */
.md-welfare { display: flex; flex-wrap: wrap; gap: 8px; }

.md-chip {
  font-size: 12.5px;
  padding: 5px 12px;
  border-radius: var(--r-pill);
  background: var(--c-brand-weak);
  color: var(--c-brand);
  border: 1px solid var(--c-brand-line);
}

/* ---------- 指南 ---------- */
.md-guides { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }

.md-guide {
  display: flex;
  gap: 12px;
  padding: 16px 18px;
  background: var(--c-card);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-1);
  transition: box-shadow .16s ease, transform .16s ease;
}

.md-guide:hover { box-shadow: var(--shadow-2); transform: translateY(-1px); }

.md-guide-n {
  flex: 0 0 auto;
  width: 26px;
  height: 26px;
  border-radius: 9px;
  background: var(--c-brand-weak);
  color: var(--c-brand);
  font-size: 12.5px;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.md-guide-body { min-width: 0; }

.md-guide-t { font-size: 14px; font-weight: 650; color: var(--c-ink); }

.md-guide-d { font-size: 13px; color: var(--c-ink-2); margin-top: 6px; line-height: 1.75; }

/* ---------- 模块切换 ---------- */
.ent-mod-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 20px;
  padding: 7px;
  background: var(--c-card);
  border: 1px solid var(--c-line);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-1);
}

.ent-mod-nav-item {
  font-size: 13px;
  padding: 7px 15px;
  border-radius: var(--r-pill);
  background: transparent;
  border: 1px solid transparent;
  color: var(--c-ink-2);
  transition: background .16s ease, color .16s ease, border-color .16s ease;
}

.ent-mod-nav-item:hover { background: var(--c-brand-weak); color: var(--c-brand); border-color: var(--c-brand-line); }

.ent-mod-nav-item.on {
  background: var(--c-brand);
  border-color: var(--c-brand);
  color: #fff;
  box-shadow: 0 6px 16px -10px rgba(0, 82, 217, .7);
}

/* ---------- 全站润色（2026-11-07） ----------
 * 只调呈现层：圆角、阴影、留白、层次。结构、类名、文案一律不动。
 */

/* 岗位卡：标题更透气，卡片更“浮”一点 */
.jc { padding: 16px 19px 15px; }
.jc:hover { box-shadow: var(--shadow-2); border-color: #dfe3ea; }
.jc-title { font-size: 16.5px; font-weight: 680; letter-spacing: -.3px; }
.jc-salary { font-size: 15.5px; }
.jc-meta { margin-top: 8px; }
.jc-tags { margin-top: 10px; }
.tag { padding: 3px 9px; border-radius: var(--r-pill); }

/* 筛选胶囊 */
.chip { transition: border-color .16s ease, background .16s ease, color .16s ease; }

/* 详情页 */
.panel h1 { font-size: 29px; }
.d-facts { padding: 15px 0; gap: 10px 20px; }
.side-job { transition: border-color .14s ease, background .14s ease, box-shadow .14s ease; }
.side-job:hover { box-shadow: var(--shadow-1); }

/* 分页：胶囊按钮 */
.pager a, .pager span { border-radius: var(--r-pill); transition: border-color .14s ease, color .14s ease, background .14s ease; }
.pager a:hover { background: var(--c-brand-weak); border-color: var(--c-brand-line); color: var(--c-brand); }
.pager .on { box-shadow: 0 6px 16px -10px rgba(0, 82, 217, .7); }

/* 页脚 */
.footer {
  margin-top: 28px;
  padding: 30px 0 36px;
  background:
    linear-gradient(180deg, rgba(0, 82, 217, .035), transparent 120px),
    var(--c-card);
}

.footer .f-cols { font-size: 13.5px; }

/* ---------- 响应式 ---------- */
@media (max-width: 900px) {
  .ent-list { grid-template-columns: minmax(0, 1fr); }
  .ent-hero { padding: 22px; }
  .ent-mods { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
  .md-head { padding: 22px; }
  .md-card { padding: 20px 18px; }
  .md-kv, .md-rows, .md-guides { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 640px) {
  .ent-mods { grid-template-columns: minmax(0, 1fr); }
  .ent-stat { min-width: 0; flex: 1 1 44%; }
  .ent-hero-name { font-size: 23px; }
}
