@charset "UTF-8";
/* ============================================================================
   inner.css — 内页通用：页面容器 / 面包屑 / 区块标题 / 科技感头图 /
               党建·工会·文化主题 / 素材位（高校LOGO·荣誉·文化封面）
   ========================================================================== */

/* ==========================================================================
   页面容器
   ========================================================================== */
.page {
  padding: var(--sp-8) 0 56px;
  min-height: 60vh;
}

/* 详情类页面的窄版容器 */
.page--narrow {
  max-width: 900px;
  margin: 0 auto;
}

.page--form {
  max-width: 760px;
  margin: 0 auto;
}

/* 主内容 + 侧栏 两栏布局 */
.layout-aside {
  display: grid;
  grid-template-columns: 1fr 300px;
  gap: var(--sp-6);
  align-items: start;
}

/* 等宽两列（联系页：地图与留言表单，同原型 grid g2） */
.layout-aside--even {
  grid-template-columns: 1fr 1fr;
}

/* ==========================================================================
   面包屑
   ========================================================================== */
.crumb {
  font-size: var(--fs-sm);
  color: var(--muted);
  margin-bottom: var(--sp-5);
}

.crumb a {
  color: var(--sub);
}

.crumb a:hover {
  color: var(--deep);
}

.crumb .sep {
  margin: 0 6px;
}

/* ==========================================================================
   页面标题
   ========================================================================== */
.page-title {
  font-size: var(--fs-4xl);
  font-weight: 700;
  color: var(--deep);
  margin-bottom: 6px;
}

.page-title--sm {
  font-size: var(--fs-3xl);
}

.page-sub {
  color: var(--muted);
  margin-bottom: var(--sp-6);
}

/* 详情页元信息行 */
.detail-meta {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
  color: var(--muted);
  font-size: var(--fs-sm);
  margin-bottom: var(--sp-5);
}

/* 正文排版（新闻/党建/工会/文化详情）
   --------------------------------------------------------------------------
   后台「正文内容」是富文本（标题 / 列表 / 引用 / 图片 / 表格），这里的字号与间距
   与后台编辑器逐条对应（admin.css 里的 .re-body）：编辑器里看到什么，前台就呈现什么，
   包括「图片居中」这类对齐方式。改动本块时请同步另一侧，两侧保持一致。
   -------------------------------------------------------------------------- */
.article-body {
  color: var(--sub);
  font-size: 15px;
  line-height: 1.9;
}

.article-body p { margin: 10px 0; }

.article-body h2,
.article-body h3,
.article-body h4 {
  margin: 18px 0 8px;
  color: var(--deep);
  line-height: 1.4;
  font-weight: 700;
}

.article-body h2 { font-size: 20px; }
.article-body h3 { font-size: 17px; }
.article-body h4 { font-size: 15px; }

.article-body ul,
.article-body ol {
  margin: 10px 0;
  padding-left: 24px;
}

.article-body ul { list-style: disc; }
.article-body ol { list-style: decimal; }

.article-body li { margin: 4px 0; }

.article-body blockquote {
  margin: 12px 0;
  padding: 8px 14px;
  border-left: 3px solid var(--deep);
  background: #f5f8fe;
  border-radius: 0 6px 6px 0;
}

.article-body pre {
  margin: 12px 0;
  padding: 12px 14px;
  overflow: auto;
  border-radius: 6px;
  background: #f6f8fb;
  color: var(--deep);
  font-family: Consolas, Monaco, 'Courier New', monospace;
  font-size: 13px;
  line-height: 1.7;
}

.article-body code {
  padding: 1px 5px;
  border-radius: 4px;
  background: #f1f4f9;
  font-size: 13px;
}

/* 图片必须保持行内块级：全局 img 是 display:block，那样父级的 text-align:center 无法生效，
   编辑器里居中的图片到了前台就会跑到左边。 */
.article-body img {
  display: inline-block;
  max-width: 100%;
  height: auto;
  margin: 6px 0;
  border-radius: 6px;
  vertical-align: middle;
}

.article-body table {
  width: 100%;
  margin: 12px 0;
  border-collapse: collapse;
  font-size: 13px;
}

.article-body th,
.article-body td {
  border: 1px solid #e2e6ee;
  padding: 8px 10px;
  text-align: left;
}

.article-body th {
  background: #f7f8fb;
  color: var(--deep);
  font-weight: 600;
}

.article-body a {
  color: var(--deep);
  text-decoration: underline;
}

.article-body hr {
  margin: 16px 0;
  border: 0;
  border-top: 1px solid #e8ebf1;
}

.article-body figure { margin: 12px 0; }

.article-body figcaption {
  margin-top: 6px;
  font-size: 13px;
  text-align: center;
  color: var(--muted);
}

/* 对齐：编辑器居中 / 右对齐写的是行内 text-align（浏览器原生生效），
   这里再兼容传统 align 属性写法，避免历史内容对齐失效 */
.article-body [align='center'] { text-align: center; }
.article-body [align='right'] { text-align: right; }
.article-body img[align='center'] { display: block; margin-left: auto; margin-right: auto; }
.article-body img[align='right'] { display: block; margin-left: auto; margin-right: 0; }

/* 详情图片位 */
.article-figure {
  height: 240px;
  background: linear-gradient(135deg, #F0F5FA, #E2E8F0);
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--muted);
  margin: 18px 0;
  font-size: var(--fs-sm);
  border: 1px solid var(--border);
}

.article-foot {
  margin-top: var(--sp-8);
  padding-top: var(--sp-5);
  border-top: 1px solid var(--line);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--sp-4);
  flex-wrap: wrap;
}

/* 注：页脚里原有一组「分享 / 打印」按钮（.article-foot .actions），
   属原型阶段的模拟按钮（点击只弹提示），2026-09-21 按客户要求移除，
   对应样式一并删掉；.article-foot 本身仍用于包裹「← 返回××」链接。 */

/* 上一篇 / 下一篇 */
.prev-next {
  display: flex;
  justify-content: space-between;
  gap: var(--sp-5);
  margin-top: 28px;
  padding: var(--sp-4) 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  font-size: var(--fs-sm);
}

.prev-next a {
  color: var(--deep);
}

.prev-next a:hover {
  text-decoration: underline;
}

/* ==========================================================================
   区块标题（首页/内页通用）
   ========================================================================== */
.section {
  padding: var(--sp-12) 0;
}

.section-title {
  text-align: center;
  font-size: var(--fs-3xl);
  font-weight: 700;
  color: var(--deep);
  margin-bottom: var(--sp-2);
}

.section-sub {
  text-align: center;
  color: var(--muted);
  margin-bottom: var(--sp-8);
}

/* 白底区块 */
.section--white {
  background: #fff;
}

/* --------------------------------------------------------------------------
   带左侧色条的段落小标题
   -------------------------------------------------------------------------- */
.sec-title {
  color: var(--deep);
  margin: var(--sp-6) 0 var(--sp-4);
  padding-left: 10px;
  border-left: 4px solid var(--deep);
  font-size: var(--fs-2xl);
}

.sec-title.red {
  color: var(--red);
  border-left-color: var(--red);
}

.sec-title.cyan {
  color: var(--cyan-deep);
  border-left-color: var(--cyan);
}

.sec-title--tight {
  margin-top: 0;
}

/* ==========================================================================
   内页科技感头图（由 h1 + 副标题构成，保留 h1 以利 SEO）
   ========================================================================== */
.page-hero {
  position: relative;
  overflow: hidden;
  border-radius: 12px;
  padding: var(--sp-5) 34px;
  margin-bottom: 22px;
  color: #fff;
  background: linear-gradient(120deg, #062E5C 0%, #0A4A8C 45%, #0E5FA6 78%, #1178C8 100%);
}

.page-hero h1 {
  font-size: var(--fs-4xl);
  font-weight: 800;
  letter-spacing: 1px;
  margin: 0;
  position: relative;
  z-index: 1;
  text-shadow: 0 3px 16px rgba(0, 20, 60, .3);
}

.page-hero p {
  margin: var(--sp-2) 0 0;
  font-size: var(--fs-sm);
  letter-spacing: 2px;
  opacity: .85;
  position: relative;
  z-index: 1;
}

.page-hero .ph-orb {
  position: absolute;
  right: -50px;
  top: -60px;
  width: 190px;
  height: 190px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .10);
  pointer-events: none;
}

.page-hero .ph-ring {
  position: absolute;
  right: 70px;
  bottom: -70px;
  width: 130px;
  height: 130px;
  border-radius: 50%;
  border: 2px solid rgba(255, 255, 255, .16);
  pointer-events: none;
}

/* 底部海浪过渡 */
.page-hero::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 34px;
  pointer-events: none;
  background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 900 34' preserveAspectRatio='none'><path d='M0,18 C150,8 300,28 450,18 C600,8 750,28 900,18 L900,34 L0,34 Z' fill='rgba(255,255,255,0.12)'/></svg>") bottom / 900px 34px repeat-x;
}

/* ==========================================================================
   党建 / 工会 / 文化 主题头图
   ========================================================================== */
.party-head,
.union-head,
.culture-head {
  color: #fff;
  border-radius: var(--radius-lg);
  padding: var(--sp-8);
  margin-bottom: var(--sp-6);
  overflow: hidden;
  position: relative;
}

.party-head {
  background: linear-gradient(135deg, #A01D1C, #C82423);
}

.union-head {
  background: linear-gradient(135deg, #0A4A8C, #4693D0);
}

.culture-head {
  background: linear-gradient(135deg, #0A4A8C, #14B8A6);
}

.party-head h2,
.union-head h2,
.culture-head h2 {
  font-size: var(--fs-4xl);
  margin-bottom: var(--sp-2);
}

.party-head p,
.union-head p,
.culture-head p {
  opacity: .9;
}

/* 头图装饰 */
.theme-head-ico {
  position: absolute;
  right: 32px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 64px;
  opacity: .22;
  pointer-events: none;
}

.party-head::before,
.union-head::before,
.culture-head::before {
  content: "";
  position: absolute;
  right: 56px;
  bottom: -90px;
  width: 160px;
  height: 160px;
  border-radius: 50%;
  border: 2px solid rgba(255, 255, 255, .14);
  pointer-events: none;
}

.party-head::after,
.union-head::after,
.culture-head::after {
  content: "";
  position: absolute;
  right: -70px;
  top: -70px;
  width: 230px;
  height: 230px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .10);
  pointer-events: none;
}

/* 职工福利卡图标：原型中使用 .welfare-ico 承载 emoji */
.welfare-ico {
  font-size: 34px;
  line-height: 1;
  margin-bottom: 10px;
  color: var(--deep);
}

.party-card .card-img {
  background: #F6E5E5;
  color: #B06B6B;
}

.union-card .card-img {
  background: #E6F0FA;
  color: #7E94AB;
}

.culture-card .card-img {
  background: #E0F2F0;
  color: #5A8A85;
}

/* ==========================================================================
   合作高校 LOGO 展示卡（assets/unis/高校名.png，缺图显示占位）
   ========================================================================== */
.uni-card {
  transition: transform .3s, box-shadow .3s;
}

.uni-card .uni-logo {
  position: relative;
  height: 112px;
  margin: var(--sp-4) var(--sp-4) 0;
  border-radius: var(--radius-lg);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background: linear-gradient(135deg, #F5FAFE, #E7F0F9);
  border: 0;
  transition: .3s;
}

/* 2026-09-23：展示框**统一固定高度**，不再按上传图片的比例撑开 ——
   客户要求「无论后台传入何种尺寸，前台显示大小应与默认尺寸一致」。
   图片用 object-fit: contain 完整居中显示（不裁切、不拉伸），
   多大的校徽进来，卡片上的展示框都一样大；`.has-logo` 只用来标记「有校徽」。
   （原先的内联 aspect-ratio 与 Service::logoRatio() 已一并去掉） */
.uni-card .uni-logo.has-logo {
  height: 112px;
}

/* 校徽铺满整块底色并跟着底色圆角（原来限制在 80% / 76%，还留有边距显得很小） */
.uni-card .uni-logo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  border-radius: inherit;
  position: relative;
  z-index: 1;
}

.uni-card .uni-logo .u-ph {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 7px;
  color: var(--ph-text-soft);
  font-size: var(--fs-xs);
  letter-spacing: 2px;
}

.uni-card .uni-logo .u-ph svg {
  opacity: .8;
}

.uni-card:hover .uni-logo {
  box-shadow: inset 0 0 26px rgba(70, 147, 208, .10);
}

/* ==========================================================================
   荣誉图片位（assets/honors/，缺图显示占位）
   ========================================================================== */
.honor-img {
  position: relative;
  width: 100%;
  aspect-ratio: 4 / 3;
  border-radius: 8px;
  margin-bottom: var(--sp-3);
  overflow: hidden;
  background: linear-gradient(135deg, #F5FAFE, #E7F0F9);
  border: 0;
}

/* 传了图就不要再看到占位文字：图片盖住底下的占位层，
   只有缺图（data-fallback=hide 把 img 隐藏）时「荣誉证书 / 奖牌照片」才露出来 */
.honor-img img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 1;
}

.honor-img .h-ph {
  position: absolute;
  inset: 0;
  z-index: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--fs-xs);
  letter-spacing: 2px;
  color: var(--ph-text-soft);
}

.honor.culture .honor-img {
  background: linear-gradient(135deg, #F0FAF9, #DFF2F0);
  border-color: #BFDEDA;
}

.honor.culture .honor-img .h-ph {
  color: #6FB0A9;
}

/* ==========================================================================
   文化载体 / 科普研学封面图位（assets/culture/，缺图显示占位）
   ========================================================================== */
.cov-img {
  position: relative;
  overflow: hidden;
  background: linear-gradient(135deg, #F5FAFE, #E7F0F9);
}

.cov-img.cov-teal {
  background: linear-gradient(135deg, #F0FAF9, #DFF2F0);
}

.cov-img img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.cov-img .cov-ph {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 7px;
  font-size: var(--fs-xs);
  letter-spacing: 2px;
  color: var(--ph-text-soft);
}

.cov-img.cov-teal .cov-ph {
  color: #6FB0A9;
}

/* ==========================================================================
   图文块（图片 + 文字 两栏）
   ========================================================================== */
.media-block {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--gutter, var(--grid-gap));
  align-items: center;
  margin-bottom: var(--sp-8);
}

.media-block--start {
  align-items: start;
}

.media-block .media-figure {
  height: 340px;
  min-height: 0; /* 覆盖 .detail-figure 的兜底 min-height */
}

.media-block--sm .media-figure {
  height: 300px;
}



/* ==========================================================================
   分页器无 JS 兜底（静态站直接可用的页码链接）
   ========================================================================== */
.pager-static {
  display: flex;
  justify-content: center;
  gap: var(--sp-2);
  margin-top: var(--sp-6);
}

.pager-static a,
.pager-static span {
  min-width: 36px;
  height: 36px;
  border: 1px solid var(--border);
  background: #fff;
  border-radius: var(--radius);
  color: var(--sub);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 10px;
}

.pager-static .cur {
  background: var(--deep);
  color: #fff;
  border-color: var(--deep);
}

/* 可点页码悬浮反馈 + 不可用的首尾页弱化（与 .pagination 的观感一致） */
.pager-static a:hover {
  border-color: var(--deep);
  color: var(--deep);
}

.pager-static span[aria-disabled='true'] {
  opacity: .4;
  cursor: not-allowed;
  user-select: none;
}

/* ==========================================================================
   404
   ========================================================================== */
.error-page {
  text-align: center;
  padding: 100px 20px;
}

.error-page .code {
  font-size: var(--fs-9xl);
  font-weight: 800;
  color: var(--deep);
  line-height: 1;
}

.error-page p {
  font-size: var(--fs-xl);
  color: var(--sub);
  margin: var(--sp-4) 0;
}

/* ==========================================================================
   图片位（可承载真实图片；缺图时显示占位提示，版式不塌陷）
   ========================================================================== */
.detail-figure {
  position: relative;
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: linear-gradient(135deg, var(--ph-grad-a), var(--ph-grad-b));
  border: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  /* 独立使用（不在 .media-block 内，如首页速览左图）时防止高度塌陷为 0 */
  min-height: 340px;
}

.detail-figure img {
  width: 100%;
  height: 100%;
  max-height: 360px;
  object-fit: cover;
  display: block;
  position: relative;
  z-index: 1;
}

.detail-figure .fig-ph {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-items: center;
  justify-content: center;
  color: var(--ph-text);
  font-size: var(--fs-sm);
  letter-spacing: 2px;
  text-align: center;
  padding: var(--sp-3);
}

/* 占位图标（与原型 ph() 的图片图标一致） */
.fig-ph::before {
  content: "";
  width: 26px;
  height: 26px;
  flex-shrink: 0;
  background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239DBBD8' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='5' width='18' height='14' rx='2.5'/><circle cx='9' cy='10.5' r='1.8'/><path d='M3 16.5l5-4.5 4 3.5 4.5-4 4.5 4'/></svg>") center / contain no-repeat;
}

/* 卡片头图位（无真实图片时的占位样式） */
.card-img--ph {
  background: linear-gradient(135deg, var(--ph-grad-a), var(--ph-grad-b));
}

/* 传了图就不要再看到占位文字：图片铺满头图位并盖住占位层，
   只有缺图（data-fallback=hide 把 img 隐藏）时占位文字才露出来。
   与 components.css 的 .card-img--media .ph 同一套做法——
   不要改成 flex 并排子项，否则图片与文字各占一半宽、缩略图破版。 */
.card-img--ph img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  position: relative; /* 盖住底下的占位层 */
  z-index: 1;
}

.card-img--ph .fig-ph {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 0;
}

.ph-ico {
  font-size: 40px;
  margin-bottom: var(--sp-2);
  display: block;
  line-height: 1;
}

/* ==========================================================================
   应用场景卡片文案
   ========================================================================== */
.scene-title {
  font-size: var(--fs-xl);
  font-weight: 700;
  margin-bottom: var(--sp-3);
  color: var(--text);
  line-height: 1.4;
}

.scene-desc {
  color: var(--muted);
  font-size: var(--fs-sm);
  line-height: 1.7;
  margin-bottom: var(--sp-4);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ==========================================================================
   应用场景详情主图
   ========================================================================== */
.scene-hero {
  position: relative;
  height: 320px;
  border-radius: var(--radius-lg);
  margin-bottom: var(--sp-6);
  overflow: hidden;
  background: linear-gradient(135deg, var(--deep-dark), var(--deep));
  display: flex;
  align-items: center;
  justify-content: center;
}

.scene-hero > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  z-index: 1;
}

.scene-hero > .ph {
  position: absolute;
  inset: 0;
  z-index: 0;
  border: none;
  border-radius: 0;
}

.scene-hero-cap {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 20px 28px;
  background: linear-gradient(transparent, rgba(0, 0, 0, .6));
  color: #fff;
  z-index: 2;
}

.scene-hero-cap h1 {
  font-size: var(--fs-4xl);
  font-weight: 700;
  margin-bottom: var(--sp-2);
}

.scene-hero-cap .tag {
  background: rgba(255, 255, 255, .92);
}

/* ==========================================================================
   带左侧色条的分段标题（左对齐版）
   ========================================================================== */
.section-title--left {
  text-align: left;
  margin-bottom: var(--sp-3);
}

/* 锚线对齐方式统一由 effects.css 的 .section-title::after / .section-title--left::after 管理，
   此处不再声明 display:none（会因加载顺序被覆盖，产生「隐藏失效」的假规则）。 */

/* ==========================================================================
   项目符号列表（岗位职责 / 任职要求 / 详情要点）
   ========================================================================== */
.bullet-list {
  color: var(--sub);
  margin-bottom: var(--sp-6);
  padding-left: var(--sp-6);
  list-style: disc;
}

.bullet-list li {
  padding: var(--sp-1) 0;
}

/* ==========================================================================
   新闻详情：正文大图位（可点击预览）
   ========================================================================== */
.news-figure {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 400px;
  cursor: zoom-in;
  border-radius: var(--radius-lg);
  background: linear-gradient(135deg, var(--ph-grad-a), var(--ph-grad-b));
  border: 0;
  color: var(--ph-text);
  font-size: var(--fs-sm);
  letter-spacing: 2px;
  transition: var(--ease);
}

.news-figure:hover {
  box-shadow: 0 6px 18px rgba(26, 32, 44, .08);
}

/* ==========================================================================
   文化党建详情页卡片
   ========================================================================== */
.detail-card {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--sp-8) var(--sp-10);
  margin-bottom: var(--sp-6);
}

.detail-badge {
  display: inline-block;
  padding: var(--sp-1) var(--sp-3);
  border-radius: var(--radius-sm);
  font-size: var(--fs-sm);
  font-weight: 600;
  margin-bottom: 14px;
}

.detail-badge--party {
  background: rgba(200, 36, 35, .13);
  color: var(--red);
}

.detail-badge--union {
  background: rgba(10, 74, 140, .13);
  color: var(--deep);
}

.detail-badge--culture {
  background: rgba(20, 184, 166, .15);
  color: var(--cyan-deep);
}

.detail-title {
  font-size: var(--fs-4xl);
  color: var(--text);
  font-weight: 700;
  margin-bottom: var(--sp-4);
  line-height: 1.5;
}

.detail-card .detail-meta {
  padding-bottom: 18px;
  border-bottom: 1px solid var(--line);
}

/* ==========================================================================
   首页新闻行（紧凑版列表项）
   ========================================================================== */
.list-item--compact {
  padding: var(--sp-3);
  margin-bottom: 10px;
  border-color: var(--line);
  align-items: center;
}

.list-item--compact .info h3 {
  font-size: var(--fs-base);
  margin-bottom: 0;
}

/* ==========================================================================
   红色描边按钮（党建主题）
   ========================================================================== */
.btn-outline--red {
  border-color: var(--red);
  color: var(--red);
}

.btn-outline--red:hover {
  background: #FBE8E8;
}

/* ==========================================================================
   内页内的次级横幅（产业孵化 / 科普研学）
   ========================================================================== */
.sub-banner {
  height: 260px;
  border-radius: var(--radius-lg);
  margin-bottom: var(--sp-6);
}

.sub-banner .banner-txt h2 {
  font-size: var(--fs-4xl);
}

/* ==========================================================================
   数据面板（白底卡片承载 .stats）
   ========================================================================== */
.stat-panel {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--sp-8) var(--sp-5);
}

/* ==========================================================================
   组织架构面板
   ========================================================================== */
.org-panel {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--sp-8);
}

/* ==========================================================================
   文化载体 / 科普研学封面高度
   ========================================================================== */
.cov-img--brand {
  height: 140px;
}

.cov-img--science {
  height: 160px;
}

/* ==========================================================================
   党建 / 工会 / 文化 主题头图的标题层级（使用 h1 以利 SEO，视觉同 h2）
   ========================================================================== */
.party-head h1,
.union-head h1,
.culture-head h1 {
  font-size: var(--fs-4xl);
  margin-bottom: var(--sp-2);
}

/* ==========================================================================
   新闻列表缩略图（设计稿未提供图片时显示占位）
   ========================================================================== */
.list-item .thumb {
  text-align: center;
  letter-spacing: 2px;
}

/* ==========================================================================
   侧栏窄容器内的分类 Tab：压缩内边距并等分，避免横向滚动裁切
   （新闻列表页右栏 300px 内放 3 个分类）
   ========================================================================== */
.card .tabs .tab {
  flex: 1;
  padding: 10px 8px;
  font-size: var(--fs-sm);
  text-align: center;
}

/* ==========================================================================
   联系我们页：联系卡片 / 地图占位 / 在线留言表单
   ========================================================================== */
.contact-grid {
  margin-bottom: var(--sp-6);
}
.contact-card {
  position: relative;
  padding: var(--sp-6) var(--sp-5);
  text-align: center;
}
.contact-ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  margin-bottom: var(--sp-3);
  border-radius: 50%;
  font-size: 22px;
  background: linear-gradient(135deg, var(--ph-grad-a), var(--ph-grad-b));
  border: 1px solid var(--ph-line);
}
.contact-title {
  font-size: var(--fs-lg);
  color: var(--deep);
  margin-bottom: var(--sp-2);
}
.contact-main {
  font-size: var(--fs-md);
  font-weight: 600;
  color: var(--text);
  margin-bottom: var(--sp-1);
  overflow-wrap: anywhere;
}
.contact-sub {
  font-size: var(--fs-xs);
  color: var(--muted);
  line-height: 1.7;
}

/* 地图占位区：接入真实地图服务时替换为 iframe，并移除 .map-ph / .map-pin */
.map-box {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 320px;
  border: 0;
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: linear-gradient(135deg, var(--ph-grad-a), var(--ph-grad-b));
}

/* 联系页左侧地图（与原型一致：380px 高，与右侧表单卡并排） */
.map-box--side {
  height: 380px;
  border-style: solid;
  border-color: var(--border);
  background: #E8EDF3;
}

/* 联系页在线留言表单标题 */
.contact-form-title {
  color: var(--deep);
  font-size: var(--fs-xl);
  margin-bottom: var(--sp-4);
}
.map-ph {
  color: var(--ph-text);
  font-size: var(--fs-sm);
  letter-spacing: 2px;
  text-align: center;
  padding: 48px var(--sp-4) 0;
}
.map-pin {
  position: absolute;
  top: 32%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 30px;
  filter: drop-shadow(0 4px 10px rgba(10, 74, 140, .25));
}

/* 已配置经纬度：地图视图 + 底部坐标信息条（经度 / 纬度 / 第三方地图链接） */
.map-frame {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  background: #eef2f7;
}
.map-meta {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 2px 16px;
  padding: 10px 14px;
  background: rgba(255, 255, 255, .94);
  border-top: 1px solid var(--border);
}
.map-meta p {
  margin: 0;
}
.map-meta-name {
  display: flex;
  align-items: center;
  gap: 6px;
  font-weight: 600;
  color: var(--deep);
}
.map-links {
  display: flex;
  gap: 14px;
  margin-left: auto;
  font-size: var(--fs-xs);
}

.msg-form {
  padding: var(--sp-8);
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
}
.msg-form textarea.form-control {
  min-height: 132px;
  resize: vertical;
}

/* ==========================================================================
   站内搜索页
   ========================================================================== */
.search-tip {
  font-size: var(--fs-sm);
  color: var(--sub);
  margin-bottom: var(--sp-4);
}
.search-tip strong {
  color: var(--deep);
  font-weight: 700;
}
.search-result {
  min-height: 120px;
}
.search-hot {
  margin-top: var(--sp-10);
  padding-top: var(--sp-6);
  border-top: 1px solid var(--line);
}
.search-hot .filter-bar {
  margin-bottom: 0;
}
.search-hot .chip {
  display: inline-block;
}

/* ==========================================================================
   研学预约页：表单 + 右侧须知栏
   ========================================================================== */
.booking-wrap {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: var(--sp-6);
  align-items: start;
}
.booking-form {
  padding: var(--sp-8);
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
}
.booking-form textarea.form-control {
  min-height: 108px;
  resize: vertical;
}
.booking-fieldset {
  margin: 0 0 var(--sp-4);
  padding: 0;
  border: 0;
}
.booking-legend {
  padding: 0;
  margin-bottom: var(--sp-3);
  font-size: var(--fs-sm);
  color: var(--sub);
}
.act-picker {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sp-3);
}
.act-option {
  display: flex;
  align-items: flex-start;
  gap: var(--sp-3);
  padding: var(--sp-4);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #fff;
  transition: var(--ease);
}
.act-option:hover {
  border-color: var(--light);
}
.act-option input[type="radio"] {
  width: 16px;
  height: 16px;
  margin-top: 3px;
  flex-shrink: 0;
  accent-color: var(--deep);
}
.act-option:has(input:checked) {
  border-color: var(--deep);
  box-shadow: inset 0 0 0 1px var(--deep);
}
.act-body {
  display: block;
  min-width: 0;
}
.act-name {
  display: block;
  margin-bottom: 2px;
  font-size: var(--fs-md);
  font-weight: 600;
  color: var(--text);
}
.act-meta {
  display: block;
  font-size: var(--fs-xs);
  color: var(--muted);
  line-height: 1.6;
}
.booking-side {
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
}
.notice-card {
  padding: var(--sp-5);
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
}
.notice-card .bullet-list {
  margin-bottom: 0;
  padding-left: var(--sp-5);
  font-size: var(--fs-sm);
  line-height: 1.9;
}
.notice-card--contact {
  background: linear-gradient(135deg, var(--ph-grad-a), var(--ph-grad-b));
  border-color: var(--ph-line);
}
.notice-title {
  font-size: var(--fs-lg);
  color: var(--deep);
  margin-bottom: var(--sp-3);
}
.notice-phone {
  font-size: var(--fs-2xl);
  font-weight: 800;
  margin-bottom: var(--sp-1);
}
.notice-sub {
  font-size: var(--fs-xs);
  color: var(--muted);
}

/* ==========================================================================
   404 页
   ========================================================================== */
.error-page {
  padding: 80px 20px 100px;
}
.error-page h1 {
  font-size: var(--fs-5xl);
  font-weight: 800;
  color: var(--text);
  margin-bottom: var(--sp-3);
}
/* 说明：需用 .error-page 提升特异性，覆盖上方 .error-page p 的字号与外边距 */
.error-page .error-desc {
  max-width: 560px;
  margin: 0 auto var(--sp-6);
  font-size: var(--fs-md);
  color: var(--sub);
}
.error-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--sp-3);
  margin-bottom: var(--sp-10);
}
.error-links h2 {
  margin-bottom: var(--sp-4);
  font-size: var(--fs-lg);
  font-weight: 600;
  color: var(--sub);
}
.error-links ul {
  justify-content: center;
  list-style: none;
}
.error-links li {
  list-style: none;
}
.error-links .filter-bar {
  margin-bottom: 0;
}
.error-links .chip {
  display: inline-block;
}



/* ==========================================================================
   资质荣誉证书卡片（2026-10-14 新增）
   用于「机构概况 → 资质荣誉」页与孵化企业详情页的证书展示：
   证书多为竖版 / 横版扫描件，统一用 contain 完整显示不做裁切，
   点击整块图片在新窗口打开原图查看大图（模板里已加 target=_blank）。
   ========================================================================== */
.cert-grid .card {
  display: flex;
  flex-direction: column;
}

.cert-figure {
  display: block;
  position: relative;
  aspect-ratio: 4 / 3;
  background: #f4f7fb;
  border-radius: 8px 8px 0 0;
  overflow: hidden;
}

.cert-figure img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: 14px;
  box-sizing: border-box;
  transition: transform .3s ease;
}

.cert-figure:hover img {
  transform: scale(1.04);
}

.cert-figure .fig-ph {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #9aa7b8;
  font-size: 14px;
}

/* 窄屏兜底：不支持 aspect-ratio 的浏览器用固定高度 */
@supports not (aspect-ratio: 4 / 3) {
  .cert-figure {
    height: 240px;
  }
}
