:root {
  /* 品牌色：取自新 logo 的松鼠橙 #F47A20 */
  --brand: #f47a20;          /* 主色：Logo、主按钮、品牌强调 */
  --brand-dark: #d95f16;     /* 深色：Hover/按下底色、浅底上的品牌文字 */
  --brand-ink: #a64a0f;      /* 更深：浅底上的 Hover 文字（保证对比度） */
  --brand-light: #fff1e6;    /* 浅色：背景块、标签、选中态 */
  --brand-soft: #ffe3d0;     /* 浅色加深：Hover 背景、次级描边 */
  --brand-border: #ffd3b0;   /* 浅橙描边：卡片 Hover、标签边框 */
  /* 中性色 */
  --bg: #f8f9fb;             /* 页面整体背景 */
  --card: #ffffff;           /* 卡片、搜索框 */
  --text: #262626;           /* 主文字：标题、正文 */
  --text-2: #6b7280;         /* 次文字：描述、辅助信息 */
  --line: #e5e7eb;           /* 边框、分割线 */
  /* 状态色 */
  --info: #3b82f6;           /* 辅助蓝：信息状态、来源说明 */
  --info-bg: #eff6ff;
  --info-border: #bfdbfe;
  --info-ink: #1d4ed8;
  --success: #22a06b;        /* 成功：微信来源原文按钮 */
  --success-dark: #1c8a5c;
  --warning: #f59e0b;        /* 警示 */
  --warning-bg: #fffbeb;
  --warning-border: #fde68a;
  --warning-ink: #92400e;
  --danger: #dc2626;         /* 危险/错误 */
  --danger-bg: #fef2f2;
  --danger-border: #fecaca;
  --danger-ink: #991b1b;
  --radius: 12px;
  --shadow: 0 1px 3px rgba(16, 24, 40, .08);
  /* Typography baseline (site-wide tracking / leading / paragraph spacing).
     Ref: W3C Chinese Layout Requirements - body leading 1.6-2.0 (1.75 recommended);
     Material Design / Ant Design - body leading 1.5+; paragraph gap about 1em;
     CJK body tracking about 0.02em. */
  --leading-body: 1.75;
  --leading-read: 1.8;
  --leading-ui: 1.5;
  --leading-title: 1.35;
  --tracking-body: .02em;
  --tracking-title: 0;
  --para-gap: 1em;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei",
    "Segoe UI", Roboto, sans-serif;
  color: var(--text);
  background: var(--bg);
  line-height: var(--leading-body);
  letter-spacing: var(--tracking-body);
}
a { color: var(--brand-dark); text-decoration: none; }
a:hover { color: var(--brand-ink); }
a:focus-visible,
button:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--brand);
  outline-offset: 2px;
}
.search-box input:focus-visible { outline: none; }
img { max-width: 100%; }

.container {
  width: 100%;
  max-width: 1120px;
  margin: 0 auto;
  padding: 0 16px;
}

/* ---------- header ---------- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 20;
  background: rgba(255, 255, 255, .92);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--line);
}
/* 顶部栏三段式：左品牌 / 中 TAB / 右辅助入口（中间 TAB 始终居中） */
.header-inner {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  min-height: 56px;
  gap: 12px;
}
.brand {
  display: flex;
  align-items: center;
  justify-self: start;
  gap: 8px;
  color: var(--text);
  font-weight: 700;
  font-size: 18px;
}
.brand-icon {
  width: 30px;
  height: 30px;
  border-radius: 8px;
  object-fit: contain;
}
/* ---------- hero ---------- */
.hero {
  padding: 32px 0 20px;
  text-align: center;
}
.hero h1 {
  margin: 0 0 16px;
  font-size: 24px;
  line-height: 1.3;
}
.hero p {
  margin: 0 auto 18px;
  max-width: 640px;
  color: var(--text-2);
  font-size: 14px;
}
.search-box {
  display: flex;
  max-width: 640px;
  margin: 0 auto;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 999px;
  overflow: hidden;
  box-shadow: var(--shadow);
}
.search-box input {
  flex: 1;
  min-width: 0;
  border: 0;
  outline: 0;
  padding: 12px 18px;
  font-size: 16px;
  color: var(--text);
  background: transparent;
}
.search-box button {
  border: 0;
  background: var(--brand);
  color: #fff;
  padding: 0 24px;
  font-size: 16px;
  cursor: pointer;
}
.search-box button:active { background: var(--brand-dark); }
.search-box button:hover { background: var(--brand-dark); }
.search-box:focus-within {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px rgba(244, 122, 32, .18);
}
/* ---------- 大家都在搜 ---------- */
.hot-search {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px 6px;
  margin-top: 12px;
  font-size: 13px;
  color: var(--text-2);
}
.hot-search-label { color: var(--text-2); }
.hot-search-item {
  color: var(--brand-dark);
  background: var(--brand-light);
  border: 1px solid var(--brand-soft);
  border-radius: 999px;
  padding: 3px 12px;
  line-height: 1.4;
  white-space: nowrap;
}
.hot-search-item:hover {
  background: var(--brand-soft);
  border-color: var(--brand-border);
  color: var(--brand-ink);
}

.section-title {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin: 16px 0 12px;
  font-size: 17px;
  font-weight: 700;
}
.section-title small { color: var(--text-2); font-weight: 400; font-size: 13px; }

/* ---------- job cards ---------- */
.job-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
}
.job-card {
  display: flex;
  min-width: 0;
  content-visibility: auto;
  contain-intrinsic-size: auto 100px;
  gap: 12px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 14px;
  box-shadow: var(--shadow);
  color: var(--text);
  transition: transform .12s ease, box-shadow .12s ease;
}
.job-card:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(16, 24, 40, .1);
  color: var(--text);
}
.job-logo {
  width: 48px;
  height: 48px;
  flex: 0 0 48px;
  border-radius: 10px;
  object-fit: contain;
  background: #f3f4f6;
  border: 1px solid var(--line);
}
.job-card-body { min-width: 0; flex: 1; }
.job-card-title {
  margin: 0 0 4px;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.4;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.job-card-meta {
  display: flex;
  /* 始终单行：城市/公司超长时以省略号收缩，避免岗位卡片文字变成 3 行 */
  flex-wrap: nowrap;
  gap: 6px 12px;
  color: var(--text-2);
  font-size: 13px;
}
.job-card-meta .job-city {
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex-shrink: 1;
}
.job-card-meta .job-card-company {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.job-card-time {
  margin-left: auto;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
}
.job-card-time.time-today::before,
.job-card-time.time-yesterday::before {
  content: '';
  width: 6px;
  height: 6px;
  border-radius: 50%;
  flex-shrink: 0;
}
.job-card-time.time-today {
  color: var(--brand-dark, #d95f16);
}
.job-card-time.time-today::before {
  background: var(--brand, #f47a20);
}
.job-card-time.time-yesterday {
  color: #9ca3af;
}
.job-card-time.time-yesterday::before {
  background: #9ca3af;
}

/* ---------- detail pages ---------- */
.detail-card {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 18px;
  margin: 18px 0;
  box-shadow: var(--shadow);
}
.detail-head { display: flex; gap: 14px; align-items: flex-start; }
.detail-logo {
  width: 64px;
  height: 64px;
  flex: 0 0 64px;
  border-radius: 12px;
  object-fit: contain;
  background: #f3f4f6;
  border: 1px solid var(--line);
}
.detail-title { margin: 0 0 6px; font-size: 20px; line-height: 1.35; }
.detail-meta { color: var(--text-2); font-size: 14px; }
.detail-section { margin-top: 18px; }
.detail-section h2 {
  margin: 0 0 8px;
  font-size: 15px;
  color: var(--brand-dark);
}
.detail-section .content {
  white-space: pre-wrap;
  word-break: break-word;
  font-size: 14px;
  color: var(--text);
}
.btn {
  display: inline-block;
  padding: 9px 20px;
  border-radius: 999px;
  background: var(--brand);
  color: #fff;
  font-size: 14px;
  cursor: pointer;
  border: 0;
}
.btn:hover { background: var(--brand-dark); color: #fff; }
.btn-secondary {
  background: var(--brand-light);
  color: var(--brand-dark);
}
.btn-secondary:hover { background: var(--brand-soft); color: var(--brand-ink); }
.btn-wechat {
  background: var(--success);
}
.btn-wechat:hover {
  background: var(--success-dark);
  color: #fff;
}

.detail-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.notice {
  margin: 12px 0;
  padding: 10px 14px;
  border-radius: 10px;
  background: var(--warning-bg);
  border: 1px solid var(--warning-border);
  color: var(--warning-ink);
  font-size: 13px;
}
.notice-danger {
  background: var(--danger-bg);
  border-color: var(--danger-border);
  color: var(--danger-ink);
}



.company-meta-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
  margin-top: 8px;
}
.company-meta-grid .item { background: #f8fafc; border-radius: 10px; padding: 10px 12px; }
.company-meta-grid .item b { display: block; font-size: 13px; color: var(--text-2); font-weight: 500; }
.company-meta-grid .item span { font-size: 14px; }

/* ---------- legal pages ---------- */
.legal h1 { font-size: 22px; }
.legal h2 { font-size: 16px; margin-top: 22px; }
.legal p, .legal li { font-size: 14px; color: var(--text); }
.legal ul { padding-left: 20px; }
.legal .updated { color: var(--text-2); font-size: 13px; }

/* ---------- load more / states ---------- */
.load-more-wrap { text-align: center; margin: 20px 0; }
.list-footer { min-height: 56px; }
.list-footer .list-end { text-align: center; padding: 20px 16px; color: var(--text-2); font-size: 13px; }
.load-more-wrap.is-scroll { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 16px 0; margin: 0; color: var(--text-2); font-size: 13px; }
.empty {
  text-align: center;
  padding: 48px 16px;
  color: var(--text-2);
}
.empty .empty-icon { font-size: 40px; display: block; margin-bottom: 8px; }
.loading { text-align: center; padding: 36px 16px; color: var(--text-2); }
/* ---------- skeleton ---------- */
.skeleton-card {
  display: flex;
  gap: 12px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--card);
  box-shadow: var(--shadow);
}
.skeleton-logo,
.skeleton-line {
  background: linear-gradient(90deg, #eef1f6 25%, #e2e8f0 37%, #eef1f6 63%);
  background-size: 400% 100%;
  animation: shimmer 1.4s ease infinite;
}
.skeleton-logo {
  width: 48px;
  height: 48px;
  flex: 0 0 48px;
  border-radius: 10px;
}
.skeleton-lines { flex: 1; min-width: 0; padding-top: 4px; }
.skeleton-line {
  height: 14px;
  border-radius: 7px;
  margin-bottom: 10px;
}
.skeleton-line.w70 { width: 70%; }
.skeleton-line.w40 { width: 40%; }
@keyframes shimmer {
  0% { background-position: 100% 0; }
  100% { background-position: -100% 0; }
}

.spinner {
  display: inline-block;
  width: 26px;
  height: 26px;
  border: 3px solid var(--brand-soft);
  border-top-color: var(--brand);
  border-radius: 50%;
  animation: spin .8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* ---------- footer ---------- */
.site-footer {
  margin-top: 40px;
  padding: 28px 0 36px;
  background: #262626;
  color: #9ca3af;
  font-size: 13px;
}
.site-footer a { color: #d1d5db; }
.footer-disclaimer { max-width: 760px; margin: 0 auto 10px; text-align: center; }
.footer-links {
  display: flex;
  justify-content: center;
  gap: 18px;
  margin: 0 0 10px;
}
.footer-icp, .footer-copy { text-align: center; margin: 4px 0; }
.footer-contact { text-align: center; margin: 0 0 10px; }

/* ---------- responsive ---------- */
@media (min-width: 720px) {
  .hero h1 { font-size: 30px; }
  .job-grid { grid-template-columns: repeat(2, 1fr); }
  .detail-card { padding: 26px; }
}
@media (min-width: 1080px) {
  .job-grid { grid-template-columns: repeat(3, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; animation: none !important; }
}

/* ---------- 岗位详情：公司名入口 ---------- */
.company-link {
  color: var(--brand-dark);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
  cursor: pointer;
  padding: 2px 0;
}
.company-link:hover { color: var(--brand-ink); }
/* 搜索结果页：搜索框顶部间距（无 hero 标题） */
.search-top {
  padding: 22px 0 6px;
}
/* ---------- 企业实习岗位专题页 ---------- */
.breadcrumb {
  margin: 16px 0 0;
  font-size: 13px;
  color: var(--text-2);
}
.breadcrumb ol {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.breadcrumb li {
  display: inline-flex;
  align-items: center;
}
.breadcrumb li + li::before {
  content: '›';
  margin-right: 6px;
  color: #9ca3af;
}
.breadcrumb a { color: var(--brand-dark); }
.breadcrumb [aria-current="page"] { color: var(--text-2); }

.company-topic .detail-head {
  align-items: flex-start;
}
.company-topic .detail-title {
  font-size: 22px;
}
/* 顶部中间 TAB：实习｜校招（与岗位后台列表页 TAB 一致：文字 + 底部高亮条） */
.site-nav.side { justify-self: end; }
.site-nav.tabs {
  justify-self: center;
  display: flex;
  align-items: stretch;
  gap: 8px;
  height: 56px;
}
.site-nav.tabs .nav-link {
  position: relative;
  display: inline-flex;
  align-items: center;
  padding: 0 18px;
  font-size: 16px;
  font-weight: 600;
  color: var(--text-2);
  border-radius: 0;
  background: transparent;
}
.site-nav.tabs .nav-link:hover {
  color: var(--brand-dark);
  background: transparent;
}
.site-nav.tabs .nav-link.active {
  color: var(--brand-dark);
  font-weight: 700;
}
.site-nav.tabs .nav-link.active::after {
  content: '';
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 8px;
  height: 3px;
  border-radius: 2px;
  background: var(--brand);
}
@media (max-width: 480px) {
  .brand { font-size: 15px; gap: 6px; }
  .brand-icon { width: 26px; height: 26px; }
  .site-nav.tabs .nav-link { padding: 0 12px; font-size: 15px; }
  .site-nav.side { display: none; }
}
.hero-sub {
  margin: -4px 0 14px;
  color: var(--text-2);
  font-size: 14px;
  line-height: 1.7;
}
.pager {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin: 20px 0 8px;
  font-size: 14px;
}
.pager .pager-info { color: var(--text-2); }
.btn.is-disabled {
  opacity: .5;
  pointer-events: none;
}
.seo-summary {
  margin: 14px 0 0;
  padding: 12px 14px;
  border-radius: 10px;
  background: var(--info-bg);
  border: 1px solid var(--info-border);
  color: var(--info-ink);
  font-size: 14px;
  line-height: 1.8;
}
/* 岗位来源提示：字号与 .notice 保持一致 */
.job-source-note {
  font-size: 13px;
  line-height: 1.7;
}
.company-stat-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
  margin: 14px 0 0;
}
.stat-item {
  background: #f8fafc;
  border-radius: 10px;
  padding: 10px 12px;
  margin: 0;
}
.stat-item dt {
  font-size: 13px;
  color: var(--text-2);
  font-weight: 500;
}
.stat-item dd {
  margin: 2px 0 0;
  font-size: 14px;
  color: var(--text);
}
.topic-block h2 {
  margin: 0 0 6px;
  font-size: 17px;
}
/* 企业详情页：头部 + 企业信息紧凑布局，减少空白、让岗位列表上移 */
.company-summary {
  padding: 16px;
  margin: 10px 0 6px;
}
.company-head {
  display: flex;
  align-items: center;
  gap: 12px;
}
.company-head .detail-logo {
  width: 56px;
  height: 56px;
  flex: 0 0 56px;
  border-radius: 10px;
}
.company-summary .detail-title {
  margin: 0;
  font-size: 20px;
  line-height: 1.35;
}
.company-facts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin: 14px 0 0;
}
.company-fact {
  margin: 0;
  padding: 9px 12px;
  background: #f8fafc;
  border-radius: 10px;
}
.company-fact dt {
  margin: 0;
  font-size: 12px;
  color: var(--text-2);
  font-weight: 500;
}
.company-fact dd {
  margin: 3px 0 0;
  font-size: 14px;
  line-height: 1.7;
  color: var(--text);
}
.company-fact-wide { grid-column: 1 / -1; }
.company-summary .company-stat-grid {
  margin-top: 8px;
  gap: 8px;
}
.company-summary .stat-item { padding: 8px 10px; }
.company-summary .stat-item dt { font-size: 12px; }
.company-summary + .section-title { margin-top: 6px; }
.company-domain {
  color: var(--brand-dark);
  word-break: break-all;
}
@media (min-width: 720px) {
  .company-facts { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.topic-note {
  margin: 0 0 12px;
  color: var(--text-2);
  font-size: 13px;
}
.tag-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.tag-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--brand-light);
  border: 1px solid var(--brand-soft);
  border-radius: 999px;
  padding: 6px 14px;
  font-size: 14px;
  color: var(--brand-dark);
}
.tag-chip:hover {
  background: var(--brand-soft);
  border-color: var(--brand-border);
  color: var(--brand-ink);
}
/* ---------- 招聘单位（校招企业页） ---------- */
.unit-block { margin-top: 10px; }
.unit-block h2 {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
}
.unit-block h2 small { color: var(--text-2); font-weight: 400; font-size: 13px; }
.unit-list { margin-top: 4px; }
.unit-chip.is-active {
  background: var(--brand);
  border-color: var(--brand);
  color: #fff;
}
.unit-chip.is-active .chip-count { color: rgba(255, 255, 255, .85); }
.unit-block:not(.is-expanded) .unit-chip.is-extra { display: none; }
.unit-toggle {
  margin-top: 10px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--brand-dark);
  font-size: 13px;
  cursor: pointer;
}
.unit-toggle:hover { color: var(--brand-ink); }
.unit-children {
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px dashed var(--line);
}
.unit-children-label { margin: 0 0 8px; font-size: 13px; color: var(--text-2); }
.job-card-meta .job-unit {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex-shrink: 2;
  color: var(--brand-dark);
}
.chip-count {
  font-size: 12px;
  color: var(--text-2);
}
.related-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
}
.related-company {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  background: #f8fafc;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 10px 14px;
  color: var(--text);
}
.related-company:hover {
  border-color: var(--brand-border);
  color: var(--brand-ink);
}
.related-company small {
  color: var(--text-2);
  font-size: 12px;
}

@media (min-width: 720px) {
  .company-stat-grid { grid-template-columns: repeat(4, 1fr); }
  .related-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ---------- 站点导航：企业库入口 ---------- */
.site-nav {
  display: flex;
  align-items: center;
  gap: 4px;
}
.nav-link {
  display: inline-flex;
  align-items: center;
  color: var(--text-2);
  font-size: 14px;
  padding: 6px 10px;
  border-radius: 8px;
  font-weight: 500;
}
.nav-link:hover {
  color: var(--brand-dark);
  background: var(--brand-light);
}

/* ---------- /company 企业库索引页 ---------- */
.index-hero {
  margin-top: 16px;
}
.index-hero .detail-title {
  margin-bottom: 8px;
  font-size: 24px;
}
.index-intro {
  margin: 0;
  color: var(--text-2);
  font-size: 14px;
  line-height: 1.8;
}
.index-stat-grid {
  margin-top: 16px;
}
.index-note {
  margin: 10px 0 0;
  color: var(--text-2);
  font-size: 12px;
}
.hub-notice {
  margin-top: 16px;
  color: var(--warning-ink);
  background: var(--warning-bg);
  border-color: var(--warning-border);
  font-size: 14px;
}
.hub-candidate-grid {
  margin-top: 10px;
}
.hub-search-wrap {
  padding: 18px 0 2px;
}
.hub-search-examples {
  text-align: center;
  margin: 10px 0 0;
  color: var(--text-2);
  font-size: 13px;
}
.hub-search-examples a { margin: 0 2px; }
.company-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}
.company-card {
  display: flex;
  align-items: center;
  gap: 12px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 12px 14px;
  box-shadow: var(--shadow);
  color: var(--text);
}
.company-card:hover {
  border-color: var(--brand-border);
  color: var(--brand-ink);
  box-shadow: 0 2px 8px rgba(244, 122, 32, .10);
}
.company-logo {
  width: 46px;
  height: 46px;
  flex: none;
  border-radius: 10px;
  object-fit: cover;
  background: #fff;
  border: 1px solid var(--line);
}
.company-card-body {
  min-width: 0;
  flex: 1;
}
.company-card-title {
  margin: 0 0 3px;
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.company-card:hover .company-card-title { color: var(--brand-ink); }
.company-card-count {
  margin: 0 0 2px;
  font-size: 13px;
  color: var(--brand-dark);
  font-weight: 600;
}
.company-card-cities,
.company-card-time {
  margin: 0;
  font-size: 12px;
  color: var(--text-2);
}
.pagination {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin: 22px 0 10px;
  font-size: 14px;
}
.page-link,
.page-current,
.page-ellipsis,
.page-total {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  height: 34px;
  padding: 0 10px;
  border-radius: 8px;
}
.page-link {
  background: var(--card);
  border: 1px solid var(--line);
  color: var(--brand-dark);
}
.page-link:hover {
  border-color: var(--brand-border);
  background: var(--brand-light);
  color: var(--brand-ink);
}
.page-current {
  background: var(--brand);
  border: 1px solid var(--brand);
  color: #fff;
  font-weight: 600;
}
.page-ellipsis { color: var(--text-2); }
.page-total {
  color: var(--text-2);
  font-size: 13px;
  padding: 0 4px;
}
@media (min-width: 720px) {
  .company-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1080px) {
  .company-grid { grid-template-columns: repeat(3, 1fr); }
}

/* ---------- 校招首页：标题 + 企业卡片模块 ---------- */
.company-module { margin: 20px 0 0; }
.company-module .section-title { margin: 0 0 10px; }
.module-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}
.module-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  min-width: 0;
  padding: 12px 10px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  color: var(--text);
  text-align: center;
  transition: transform .12s ease, box-shadow .12s ease;
}
.module-card:hover {
  transform: translateY(-1px);
  border-color: var(--brand-border);
  box-shadow: 0 4px 12px rgba(16, 24, 40, .1);
  color: var(--text);
}
.module-card-logo {
  width: 46px;
  height: 46px;
  flex: none;
  border-radius: 10px;
  object-fit: contain;
  background: #f3f4f6;
  border: 1px solid var(--line);
}
.module-card-body {
  width: 100%;
  min-width: 0;
}
.module-card-name {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  margin: 0;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.35;
  color: var(--text);
}
.module-card:hover .module-card-name { color: var(--brand-ink); }
/* 校招企业卡片的「N 个校招岗位」：普通文字色、不加粗（与「暂无校招岗位」一致） */
.module-card-count {
  margin: 3px 0 0;
  overflow: hidden;
  font-size: 12px;
  font-weight: 400;
  color: var(--text-2);
  white-space: nowrap;
  text-overflow: ellipsis;
}

/* 中等宽度三列；≥640px 起改为横向卡片（logo 左、名称与岗位数右），一行最多 4 个 */
@media (min-width: 520px) {
  .module-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 640px) {
  .module-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .module-card {
    flex-direction: row;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    text-align: left;
  }
  .module-card-logo {
    width: 44px;
    height: 44px;
  }
  .module-card-body { flex: 1; width: auto; }
  .module-card-name {
    -webkit-line-clamp: 1;
    font-size: 14px;
  }
}
@media (min-width: 900px) {
  .module-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* ---------- 实习首页专题 Banner 轮播 ---------- */
.intern-banner { position: relative; max-width: 1088px; margin: 0 auto; }
.intern-banner[hidden] { display: none; }
.intern-banner-track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; border-radius: 14px; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
/* 滑动动画由 JS 驱动（PC/移动端一致）；动画期间关闭 scroll-snap，避免吸附打断动画 */
.intern-banner-track.is-animating { scroll-snap-type: none; }
.intern-banner-track::-webkit-scrollbar { display: none; }
.intern-banner-slide { flex: 0 0 100%; scroll-snap-align: start; display: block; }
.intern-banner-slide img { display: block; width: 100%; height: auto; object-fit: contain; border-radius: 14px; background: var(--brand-light); }
.intern-banner-skeleton {
  width: 100%;
  aspect-ratio: 6 / 1;
  min-height: 56px;
  max-height: 220px;
  border-radius: 14px;
  background: linear-gradient(90deg, #eef1f6 25%, #e2e8f0 37%, #eef1f6 63%);
  background-size: 400% 100%;
  animation: shimmer 1.4s ease infinite;
}
.intern-banner-dots { display: flex; justify-content: center; gap: 8px; margin-top: 10px; }
.intern-banner-dot { width: 8px; height: 8px; padding: 0; border: 0; border-radius: 50%; background: rgba(244, 122, 32, .28); cursor: pointer; }
.intern-banner-dot.is-active { background: var(--brand); }
.intern-banner-arrow { position: absolute; top: 50%; transform: translateY(-50%); width: 34px; height: 34px; border: 0; border-radius: 50%; background: rgba(17, 24, 39, .45); color: #fff; font-size: 20px; line-height: 1; cursor: pointer; display: none; }
.intern-banner-arrow.prev { left: 10px; }
.intern-banner-arrow.next { right: 10px; }
@media (min-width: 720px) { .intern-banner-arrow { display: block; } }

/* ---------- 实习专题聚合页 ---------- */
.topic-header { margin: 6px 0 12px; }
.topic-meta { margin: 6px 0 0; color: var(--text-2); font-size: 13px; }
.topic-intro { margin: 10px 0 0; color: var(--text-2); font-size: 14px; line-height: 1.7; }
.topic-stat-grid { margin: 12px 0 18px; }
.topic-title-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.topic-title-row .section-title { margin: 0; }
.topic-expand { border: 1px solid var(--brand); color: var(--brand-dark); background: var(--brand-light); border-radius: 999px; padding: 4px 12px; font-size: 13px; cursor: pointer; }
.topic-expand:hover { background: var(--brand-soft); }
.topic-jobs.is-collapsed .job-card:nth-child(n+7) { display: none; }
.topic-note { margin: 10px 0 0; color: var(--text-2); font-size: 13px; }
.topic-companies, .topic-related { margin-top: 22px; }
.topic-companies h2, .topic-related h2 { margin: 0 0 10px; font-size: 16px; }
.topic-index { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; margin-top: 16px; }
.topic-card { display: block; padding: 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--card); }
.topic-card h2 { margin: 0 0 6px; font-size: 16px; }
.topic-card p { margin: 0; color: var(--text-2); font-size: 13px; }
/* ---------- Typography: tracking / leading / paragraph spacing (site-wide) ---------- */
/* Headings: tighter leading, tracking off (large CJK text looks loose when tracked) */
h1, h2, h3, h4,
.section-title, .detail-title, .job-card-title, .company-card-title,
.module-card-name, .topic-card h2, .topic-block h2, .unit-block h2,
.topic-companies h2, .topic-related h2 {
  line-height: var(--leading-title);
  letter-spacing: var(--tracking-title);
}
.job-card-title { margin-bottom: 6px; }
.company-card-title { margin-bottom: 4px; }

/* Long-form copy: one step looser than body leading for comfortable CJK reading */
.legal p, .legal li, .detail-section .content, .detail-section .content p,
.seo-summary, .index-intro, .hero-sub, .topic-intro, .company-fact dd,
.job-source-note {
  line-height: var(--leading-read);
}
.site-footer { line-height: 1.7; }

/* Paragraph spacing: 1em (about one line) between blocks, none after the last one */
.detail-card p, .detail-card ul, .detail-card ol { margin-bottom: var(--para-gap); }
.detail-card p:last-child, .detail-card ul:last-child, .detail-card ol:last-child { margin-bottom: 0; }
.detail-card li + li { margin-top: .4em; }
.legal h1 { margin: 0 0 .5em; }
.legal h2 { margin: 1.6em 0 .6em; }
.legal ul { margin: var(--para-gap) 0; }
.detail-section { margin-top: 24px; }
.detail-section h2 { margin: 0 0 .6em; }
.detail-section + .detail-section { margin-top: 22px; }

/* UI copy: uniform 1.5 leading so wrapped labels and meta rows stay readable */
.btn, .search-box button, .search-box input, .nav-link, .hot-search-item,
.tag-chip, .unit-chip, .notice, .pager, .pagination, .breadcrumb,
.job-card-meta, .company-card-count, .company-card-cities, .company-card-time,
.module-card-count, .company-fact dt, .stat-item dt, .stat-item dd, .topic-note,
.unit-toggle, .unit-children-label, .chip-count, .related-company small,
.index-note, .hub-search-examples, .empty, .loading, .list-footer .list-end {
  line-height: var(--leading-ui);
}