/* ===== 站点公共样式（协会官网） =====
   各页面通过 <link rel="stylesheet" href="_files/css/site.css"> 引入；
   页面特有的样式仍写在页面 <style> 中，同名规则会覆盖本文件（后定义优先） */

/* 全局 */
/* 注意：绝不能给 body 设 height:100%，否则 body 会成为 sticky 的“包含块”并被锁死在
   一个视口高度内，导致 position:sticky 吸顶的 header 滚动超过一个视口后就消失。
   这里只用 min-height:100vh 让 footer 贴底，body 高度由内容撑开（远超视口），
   sticky 的包含块覆盖整页，header 才能一直吸顶。 */
body { display: flex; flex-direction: column; min-height: 100vh; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif; color: #333; }
body > footer { margin-top: auto; }
/* body 使用 flex column 后，直接子元素在 cross axis（横向）上默认 stretch；
   但带 mx-auto 的 flex item 会被 margin 居中而不拉伸，宽度由内容决定。
   给 section 显式 width:100%，保证 max-w-6xl 这类容器始终占满可用宽度，
   避免内容多少导致页面主体宽度忽大忽小。 */
body > section, body > main { width: 100%; }

/* 区块标题 */
.section-title { text-align: center; margin-bottom: 2.5rem; }
.section-title h2 { font-size: 1.75rem; font-weight: 700; color: #111827; }

/* 标签（渐变体系） */
.tag { display: inline-block; padding: 0.25rem 0.75rem; border-radius: 0.25rem; font-size: 0.75rem; font-weight: 500; }
.tag-blue { background: linear-gradient(54.6deg, #4990ff 0%, #6278ff 100%); color: #fff; }
.tag-green { background: linear-gradient(54.6deg, #3dc8a0 0%, #2ec8cb 100%); color: #fff; }
.tag-orange { background: linear-gradient(54.6deg, #ffbc79 0%, #ffa25f 100%); color: #fff; }
.tag-red { background: linear-gradient(54.6deg, #ff7d6b 0%, #ffb094 100%); color: #fff; }
.tag-gray { background: #9ca3af; color: #fff; }

/* 按钮 */
.btn-primary { display: inline-flex; align-items: center; justify-content: center; padding: 0.625rem 1.75rem; background: #1380DE; color: #fff; border-radius: 4px; font-weight: 500; transition: all 0.3s ease; box-shadow: 0 4px 14px rgba(19, 128, 222, 0.35); }
.btn-primary:hover { background: #0F6BBE; transform: translateY(-2px); box-shadow: 0 6px 20px rgba(19, 128, 222, 0.45); }
.btn-outline { display: inline-flex; align-items: center; justify-content: center; padding: 0.625rem 1.75rem; background: #fff; color: #333; border: 1px solid #e5e7eb; border-radius: 4px; font-weight: 500; transition: all 0.3s ease; }
.btn-outline:hover { border-color: #1380DE; color: #1380DE; transform: translateY(-2px); }

/* tab 胶囊（页面导航 tab；特殊变体由页面覆盖 padding/font-size） */
.tab-btn { border-radius: 9999px; padding: 0.375rem 1.125rem; transition: all 0.3s ease; }
.tab-btn.active, .tab-btn.active:hover { background: #1380DE; color: #fff; }
.tab-btn:not(.active) { color: #666; background: transparent; }
.tab-btn:not(.active):hover { color: #1380DE; }

/* 轮播指示器 */
.banner-dot { background: rgba(255,255,255,0.45); width: 10px; height: 10px; border-radius: 9999px; transition: all 0.3s ease; }
.banner-dot.active { background: #1380DE; width: 28px; }

/* 分页 */
.page-btn { min-width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; border-radius: 4px; font-size: 14px; color: #666; }
.page-btn:hover { color: #1380DE; }
.page-btn.active { background: #1380DE; color: #fff; }
.page-btn.disabled { color: #ccc; cursor: not-allowed; }

/* 滚动显现 */
.reveal { opacity: 0; transform: translateY(30px); transition: opacity 0.6s ease, transform 0.6s ease; }
.reveal.active { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; transition: none; }
}

/* 右侧悬浮按钮（在线咨询） */
.float-btn { display: flex; flex-direction: column; align-items: center; gap: 2px; width: 3.25rem; padding: 0.625rem 0; background: #fff; border-radius: 0.5rem; box-shadow: 0 4px 12px rgba(0,0,0,0.08); color: #1380DE; font-size: 0.6875rem; transition: all 0.3s ease; }
.float-btn:hover { background: #1380DE; color: #fff; box-shadow: 0 6px 16px rgba(19,128,222,0.35); }
.float-btn i { font-size: 1rem; }

/* 移动端：轮播按钮/指示器随图缩小 */
@media (max-width: 640px) {
  #banner-carousel .banner-btns { transform: scale(0.6); transform-origin: left bottom; }
  #banner-carousel .banner-dots { bottom: 0.5rem; gap: 0.375rem; }
  #banner-carousel .banner-dot { width: 6px; height: 6px; }
  #banner-carousel .banner-dot.active { width: 16px; }
}

/* ===== 触摸设备禁用 hover 效果（防移动端点击后 hover 样式残留） ===== */
.no-hover .card:hover,
.no-hover .activity-card:hover,
.no-hover .train-card:hover,
.no-hover .expert-card:hover,
.no-hover .interview-card:hover,
.no-hover .news-card:hover,
.no-hover .news-item:hover,
.no-hover .leader-card:hover,
.no-hover .btn-primary:hover,
.no-hover .btn-outline:hover,
.no-hover .tab-btn:not(.active):hover,
.no-hover .float-btn:hover,
.no-hover .page-btn:hover,
.no-hover .nav-link:hover,
.no-hover .dropdown-link:hover,
.no-hover .m-link:hover,
.no-hover .search-btn:hover,
.no-hover .btn-login:hover,
.no-hover .mobile-nav-btn:hover,
.no-hover .switch-arrow:hover {
  transform: none !important;
  box-shadow: none !important;
  background-color: inherit !important;
  border-color: inherit !important;
  color: inherit !important;
}
.tag-lt-tb{
    border-radius: 0 0.25rem 0 0.25rem;
}