/* =====================================================
 * Elementor 小部件 — 合作伙伴 (qing-partners)
 * 前缀: qpar-  对应源码 .partners / .partner-*
 * Logo 直接显示，无悬停蒙版
 * ===================================================== */

/* ── 作用域重置 ── */
.qpar {
  box-sizing: border-box;
}
.qpar *,
.qpar *::before,
.qpar *::after {
  box-sizing: inherit;
}
.qpar p,
.qpar h2,
.qpar h3 {
  margin: 0;
}
.qpar a {
  text-decoration: none;
  color: inherit;
}
.qpar img {
  max-width: 100%;
  display: block;
}

/* ── CSS 变量 ── */
.qpar {
  --qpar-accent:        #1f6feb;
  --qpar-accent-light:  #4a90ff;
  --qpar-btn-gradient:  linear-gradient(135deg, #0b3d91 0%, #1f6feb 55%, #4a90ff 100%);
  --qpar-bg:            #fff;
  --qpar-title-color:   #111;
  --qpar-rule-color:    var(--qpar-btn-gradient);
  --qpar-logo-bg:       #fff;
  --qpar-logo-border:   #e6e6e6;
  --qpar-logo-radius:   10px;
  --qpar-logo-min-h:    96px;
  --qpar-logo-padding:  18px 22px;
  --qpar-logo-img-h:    52px;
}

/* ── 整体版块 ── */
.qpar-partners {
  background: var(--qpar-bg);
  padding: 76px 0 84px;
}

.qpar-partners-inner {
  max-width: 1140px;
  margin: 0 auto;
  padding: 0 50px;
}

/* ── 版块标题 ── */
.qpar-section-title {
  font-size: 40px;
  font-weight: 800;
  color: var(--qpar-title-color);
  line-height: 1.2;
  text-align: center;
  margin-bottom: 40px;
}

.qpar-section-title::after {
  content: "";
  display: block;
  width: 48px;
  height: 4px;
  margin: 18px auto 0;
  background: var(--qpar-rule-color);
  border-radius: 2px;
}

.qpar-section-title.qpar-is-left {
  text-align: left;
}

.qpar-section-title.qpar-is-left::after {
  margin-left: 0;
  margin-right: auto;
}

.qpar-section-title.qpar-no-rule::after {
  display: none;
}

/* ── Logo 网格 ── */
.qpar-partner-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 22px;
}

/* ── Logo 卡片 ── */
.qpar-partner-logo {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: var(--qpar-logo-min-h);
  padding: var(--qpar-logo-padding);
  background: var(--qpar-logo-bg);
  border: 1px solid var(--qpar-logo-border);
  border-radius: var(--qpar-logo-radius);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.qpar-partner-logo:hover {
  border-color: #c8d0dc;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.07);
}

/* ── Logo 图片：直接显示，无蒙版 ── */
.qpar-partner-logo img {
  max-width: 100%;
  max-height: var(--qpar-logo-img-h);
  object-fit: contain;
  display: block;
}

/* ── 响应式 1080px ── */
@media (max-width: 1080px) {
  .qpar-partners-inner {
    padding: 0 24px;
  }

  .qpar-section-title {
    font-size: 32px;
  }

  .qpar-partner-grid {
    grid-template-columns: repeat(4, 1fr);
  }
}

/* ── 响应式 860px ── */
@media (max-width: 860px) {
  .qpar-partners {
    padding: 48px 0 56px;
  }

  .qpar-section-title {
    font-size: 27px;
  }

  .qpar-partner-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
  }
}

/* ── 响应式 520px ── */
@media (max-width: 520px) {
  .qpar-partner-logo {
    min-height: 76px;
    padding: 14px;
  }
}

/* =====================================================
 * 动态效果
 * ===================================================== */

.qpar {
  --qpar-stagger:     130ms;
  --qpar-glow:        rgba(31, 111, 235, 0.28);
}

/* ── 入场：滚动进入视口后逐个浮现 ──
   .qpar-reveal 由 JS 在容器进入视口时添加；
   --qpar-i 是 JS 写入的序号，用来错开每张卡片的延迟。
   JS 没跑时（脚本失败/被拦）卡片保持默认可见状态，不会白屏。 */
.qpar-partner-grid.qpar-anim .qpar-partner-logo {
  opacity: 0;
  transform: translateY(46px) scale(0.94);
  transition: opacity 1.05s cubic-bezier(0.16, 1, 0.3, 1),
              transform 1.05s cubic-bezier(0.16, 1, 0.3, 1);
  transition-delay: calc(var(--qpar-i, 0) * var(--qpar-stagger));
}

.qpar-section-title.qpar-anim {
  opacity: 0;
  transform: translate3d(0, 42px, 0);
  transition: opacity 1.05s cubic-bezier(.16,1,.3,1), transform 1.05s cubic-bezier(.16,1,.3,1);
}

.qpar-section-title.qpar-anim.qpar-reveal {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.qpar-partner-grid.qpar-anim.qpar-reveal .qpar-partner-logo {
  opacity: 1;
  transform: translateY(0) scale(1);
}

/* ── 卡片：悬停抬起 + 蓝色辉光 ── */
.qpar-partner-logo {
  position: relative;
  overflow: hidden;
  will-change: transform;
}

.qpar-partner-logo:hover {
  transform: translateY(-6px);
  border-color: var(--qpar-accent);
  box-shadow: 0 10px 28px var(--qpar-glow);
}

/* 抬起要和入场的 transform 共存：入场结束后才接管，
   所以这里把 transition 一并声明，避免悬停时被入场延迟拖住。 */
.qpar-partner-grid.qpar-reveal .qpar-partner-logo {
  transition: opacity 1.05s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.32s cubic-bezier(0.22, 1, 0.36, 1),
              border-color 0.25s ease,
              box-shadow 0.32s ease;
  transition-delay: calc(var(--qpar-i, 0) * var(--qpar-stagger));
}

.qpar-partner-grid.qpar-reveal .qpar-partner-logo:hover {
  transition-delay: 0s;
}

/* ── 高光扫过：悬停时一束斜光划过卡片 ── */
.qpar-partner-logo::after {
  content: "";
  position: absolute;
  top: 0;
  left: -75%;
  width: 50%;
  height: 100%;
  background: linear-gradient(
    100deg,
    rgba(255, 255, 255, 0) 0%,
    rgba(255, 255, 255, 0.55) 50%,
    rgba(255, 255, 255, 0) 100%
  );
  transform: skewX(-18deg);
  pointer-events: none;
}

.qpar-partner-logo:hover::after {
  animation: qpar-sheen 0.7s ease;
}

@keyframes qpar-sheen {
  to {
    left: 130%;
  }
}

/* ── Logo 图片：默认去色，悬停复原 ── */
.qpar-partner-logo img {
  filter: grayscale(100%);
  opacity: 0.72;
  transition: filter 0.3s ease, opacity 0.3s ease, transform 0.32s ease;
}

.qpar-partner-logo:hover img {
  filter: grayscale(0);
  opacity: 1;
  transform: scale(1.06);
}

/* ── 标题下方色条：入场时横向展开 ── */
.qpar-section-title.qpar-anim::after {
  transform: scaleX(0);
  transform-origin: center;
  transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1) 0.1s;
}

.qpar-section-title.qpar-anim.qpar-reveal::after {
  transform: scaleX(1);
}

/* ── 无障碍：用户要求减少动效时，全部关掉并直接显示终态 ── */
@media (prefers-reduced-motion: reduce) {
  .qpar-section-title.qpar-anim {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .qpar-partner-grid.qpar-anim .qpar-partner-logo {
    opacity: 1;
    transform: none;
    transition: none;
    transition-delay: 0s;
  }

  .qpar-partner-logo:hover {
    transform: none;
  }

  .qpar-partner-logo:hover::after {
    animation: none;
  }

  .qpar-partner-logo:hover img {
    transform: none;
  }

  .qpar-section-title.qpar-anim::after {
    transform: scaleX(1);
    transition: none;
  }
}
