@charset "UTF-8";
/* ============================================================================
   effects.css — UI 润色层（科技感氛围、渐变、辉光、动效）
   ----------------------------------------------------------------------------
   设计语言：深海蓝 × 海洋青 · 柔光渐变 / 流动光效 / 悬浮辉光
   本层仅做视觉增强，不改变任何布局结构与交互逻辑
   ========================================================================== */

/* ==========================================================================
   全局氛围背景：柔光渐变 + 三处光斑
   ========================================================================== */
body {
  background: linear-gradient(180deg, var(--bg-soft) 0%, var(--bg-soft-2) 45%, var(--bg-soft-3) 100%);
}

#ambient-bg {
  position: fixed;
  inset: 0;
  z-index: var(--z-ambient);
  pointer-events: none;
  background:
    radial-gradient(1100px 540px at 88% -10%, rgba(70, 147, 208, .16), transparent 62%),
    radial-gradient(900px 520px at -12% 22%, rgba(20, 184, 166, .11), transparent 60%),
    radial-gradient(820px 460px at 52% 112%, rgba(10, 74, 140, .09), transparent 65%);
}

/* ==========================================================================
   品牌行
   ========================================================================== */
.header-top {
  background: linear-gradient(180deg, #FFFFFF 0%, #F5F9FE 100%);
}

.logo .mark {
  box-shadow: 0 0 0 3px rgba(10, 74, 140, .07), 0 4px 14px rgba(10, 74, 140, .12);
}

.brand-cn {
  background: linear-gradient(92deg, #0A4A8C 20%, #1173C4 80%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-size: var(--fs-5xl);
  letter-spacing: 4px;
}

.brand-en {
  font-size: var(--fs-xs);
  margin-top: 3px;
  white-space: nowrap;
}

.slogan {
  position: relative;
  padding-left: 14px;
}

.slogan::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 4px;
  height: 18px;
  border-radius: 2px;
  background: linear-gradient(180deg, var(--cyan), var(--deep));
}

/* ==========================================================================
   主导航
   ========================================================================== */
.mainnav {
  background: linear-gradient(90deg, #062E5C 0%, #0A4A8C 46%, #0E5FA6 100%);
}

.mainnav::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .45), transparent);
}

.menu > li > a::after {
  background: linear-gradient(90deg, #2FD4C0, #7FC4FF);
}

.dropdown {
  backdrop-filter: blur(8px);
}

/* ==========================================================================
   按钮辉光
   ========================================================================== */
.btn-primary {
  background: linear-gradient(135deg, #0A4A8C, #1173C4);
  box-shadow: 0 4px 14px rgba(10, 74, 140, .26);
}

.btn-primary:hover {
  background: linear-gradient(135deg, #083A6E, #0E5FA6);
  transform: translateY(-1px);
  box-shadow: 0 7px 18px rgba(10, 74, 140, .34);
}

.btn-danger {
  background: linear-gradient(135deg, #A01D1C, #D33430);
  box-shadow: 0 4px 14px rgba(200, 36, 35, .24);
}

.btn-danger:hover {
  transform: translateY(-1px);
  box-shadow: 0 7px 18px rgba(200, 36, 35, .32);
}

.btn-outline:hover {
  box-shadow: 0 4px 12px rgba(10, 74, 140, .16);
}

/* ==========================================================================
   卡片体系：顶部流光细线 + 悬浮辉光
   （.card / .list-item 已在 components.css 中声明 position:relative，
     否则绝对定位的 ::before 会脱离卡片、堆叠到内容容器顶部）
   ========================================================================== */
.card::before,
.value-card::before,
.list-item::before {
  content: "";
  position: absolute;
  left: 12%;
  right: 12%;
  top: 0;
  height: 2px;
  z-index: 1;
  border-radius: 2px;
  opacity: 0;
  transition: var(--ease-glow);
  background: linear-gradient(90deg, transparent, rgba(70, 147, 208, .65), rgba(20, 184, 166, .45), transparent);
}

.card:hover::before,
.value-card:hover::before,
.list-item:hover::before {
  opacity: 1;
  left: 6%;
  right: 6%;
}

.card-hover:hover,
.value-card:hover {
  box-shadow: 0 16px 36px rgba(10, 74, 140, .15), 0 0 0 1px rgba(70, 147, 208, .16);
}

.list-item:hover {
  box-shadow: 0 14px 30px rgba(10, 74, 140, .14);
}

.card-img,
.list-item .thumb {
  background: linear-gradient(135deg, #EAF2FA, #DCE9F5);
}

.value-card .vico {
  filter: drop-shadow(0 5px 10px rgba(10, 74, 140, .22));
}

/* ==========================================================================
   区块标题：居中渐变锚线
   ========================================================================== */
.section-title::after {
  content: "";
  display: block;
  width: 56px;
  height: 3px;
  margin: 10px auto 0;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--deep), var(--cyan));
}

/* 左对齐标题：锚线跟随左对齐（本文件加载在 inner.css 之后，
   此处 margin 覆盖上面的居中 auto，横线与标题左缘对齐） */
.section-title--left::after {
  margin: 10px 0 0;
}

.section-sub {
  margin-top: 10px;
}

/* ==========================================================================
   数据速览：渐变数字
   ========================================================================== */
.stat .num {
  background: linear-gradient(135deg, #0A4A8C 20%, #14B8A6 90%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* ==========================================================================
   首页 Banner：柔光斑 + 底部海浪过渡
   ========================================================================== */
.banner-wrap::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background:
    radial-gradient(620px 320px at 82% 18%, rgba(255, 255, 255, .14), transparent 62%),
    radial-gradient(520px 320px at 10% 86%, rgba(47, 212, 192, .16), transparent 60%);
}

.banner-wrap::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -2px;
  height: 92px;
  z-index: 3;
  pointer-events: none;
  background:
    url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1600 70' preserveAspectRatio='none'><path d='M0,40 C266,12 533,12 800,40 C1066,68 1333,68 1600,40 L1600,70 L0,70 Z' fill='%23DFEAF5'/></svg>") bottom / 1600px 70px repeat-x,
    url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 60' preserveAspectRatio='none'><path d='M0,32 C200,6 400,6 600,32 C800,58 1000,58 1200,32 L1200,60 L0,60 Z' fill='%23F5F9FE'/></svg>") bottom / 1200px 60px repeat-x;
}

/* ==========================================================================
   时间轴 / 表格 / 分页 / 筛选
   ========================================================================== */
.tl-item::before {
  box-shadow: 0 0 0 2px var(--deep), 0 0 12px rgba(20, 184, 166, .55);
}

.table th {
  background: linear-gradient(90deg, #E8F1FA, #F2F7FC);
}

.pagination button.active,
.pagination a.active,
.pager-static .cur {
  background: linear-gradient(135deg, #0A4A8C, #1173C4);
  border-color: transparent;
  box-shadow: 0 3px 10px rgba(10, 74, 140, .3);
}

.filter-bar .chip.active {
  background: linear-gradient(135deg, #0A4A8C, #1173C4);
  border-color: transparent;
}

/* ==========================================================================
   页脚：暗夜渐变 + 顶部流光 + 底部海洋辉光
   ========================================================================== */
.footer {
  background: linear-gradient(180deg, var(--dark-2) 0%, var(--dark-3) 100%);
  overflow: hidden;
}

.footer::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 2px;
  z-index: 1;
  background: linear-gradient(90deg, transparent, rgba(70, 147, 208, .75), rgba(20, 184, 166, .6), transparent);
}

.footer::after {
  content: "";
  position: absolute;
  top: -140px;
  left: 50%;
  transform: translateX(-50%);
  width: 680px;
  height: 220px;
  pointer-events: none;
  background: radial-gradient(closest-side, rgba(10, 74, 140, .38), transparent);
}

.footer .container {
  position: relative;
  z-index: 1;
}

/* ==========================================================================
   其他组件微调
   ========================================================================== */
.back-top {
  background: linear-gradient(135deg, #0A4A8C, #1173C4);
  box-shadow: 0 6px 18px rgba(10, 74, 140, .4);
}

.form-control:focus {
  border-color: var(--deep-bright);
  box-shadow: 0 0 0 3px rgba(20, 184, 166, .14);
}

.honor:hover {
  box-shadow: 0 10px 26px rgba(200, 36, 35, .2);
}

.honor.union:hover {
  box-shadow: 0 10px 26px rgba(10, 74, 140, .22);
}

.honor.culture:hover {
  box-shadow: 0 10px 26px rgba(20, 184, 166, .22);
}

/* ==========================================================================
   站点 LOGO（页头 .logo > .mark + 页脚 .f-logo > .mark）
   图片地址由后台「站点配置 → 站点 LOGO」下发，未配置或加载失败时回落「LOGO」占位
   ========================================================================== */
.mark .mark-img {
  width: 100%;
  height: 100%;
  /* 徽标素材为「白底方图 + 圆形徽标」：cover 让圆形徽标正好填满圆形底，
     再配合圆形裁切，去掉素材自带的白底方角（深色页脚上尤其明显） */
  object-fit: cover;
  border-radius: 50%;
  flex-shrink: 0;
}

/* 使用真实 LOGO 时：容器保持圆形，去掉占位描边 / 白底 / 阴影 */
.logo .mark--img,
.f-logo .mark--img {
  border: none !important;
  background: transparent;
  box-shadow: none;
  border-radius: 50%;
}

/* 图片正常加载时隐去占位文字；加载失败时 .img-missing 会移除图片，占位自动复位 */
.mark--img .mark-img:not(.img-missing) ~ .mark-ph {
  display: none;
}

/* ==========================================================================
   缺图兜底（素材未就位时隐藏 img，露出底层占位 / 渐变底）
   ========================================================================== */
.img-missing {
  display: none !important;
}

/* ==========================================================================
   滚动浮现（由 effects.js 控制添加/移除，不影响悬停位移）
   ========================================================================== */
.rv {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .6s ease, transform .6s ease;
}

.rv.rv-in {
  opacity: 1;
  transform: none;
}

/* 尊重系统「减少动态效果」偏好 */
@media (prefers-reduced-motion: reduce) {
  .rv {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .banner-slide.active .bg,
  .banner-wrap .bub {
    animation: none;
  }

  html {
    scroll-behavior: auto;
  }
}
