/* ===== 滚动入场动画 ===== */
.fade-up {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.55s ease, transform 0.55s ease;
}
.fade-up.visible { opacity: 1; transform: translateY(0); }
.fade-up-delay-1 { transition-delay: 0.08s; }
.fade-up-delay-2 { transition-delay: 0.16s; }
.fade-up-delay-3 { transition-delay: 0.24s; }
.fade-up-delay-4 { transition-delay: 0.32s; }
.fade-up-delay-5 { transition-delay: 0.40s; }

/* ===== Hero 入场（页面加载即触发，不需要 IntersectionObserver）===== */
.hero-fade { animation: heroFadeIn 0.6s ease forwards; }
.hero-fade-1 { animation: heroFadeIn 0.6s 0.1s ease both; }
.hero-fade-2 { animation: heroFadeIn 0.6s 0.2s ease both; }
.hero-fade-3 { animation: heroFadeIn 0.6s 0.3s ease both; }
.hero-fade-4 { animation: heroFadeIn 0.6s 0.4s ease both; }
@keyframes heroFadeIn {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ===== Logo party 动效 ===== */
.logo-wrap {
  position: relative;
  display: inline-block;
  cursor: pointer;
}

/* 彩虹光晕 */
.logo-rainbow {
  position: absolute;
  inset: -8px -14px;
  border-radius: 14px;
  background: linear-gradient(90deg, #ff6b6b, #feca57, #48dbfb, #ff9ff3, #54a0ff, #ff6b6b);
  background-size: 300% 100%;
  filter: blur(12px);
  z-index: 0;
  opacity: 0;
  transform: scale(0.5);
  transition: opacity 0.3s ease, transform 0.3s ease;
  animation: rainbowMove 5.5s linear infinite;
  pointer-events: none;
}
.logo-wrap:hover .logo-rainbow { opacity: 0.65; transform: scale(1.2); }
.logo-wrap img { position: relative; z-index: 1; transition: transform 0.3s ease; }
.logo-wrap:hover img { transform: scale(1.05); }

@keyframes rainbowMove {
  0%   { background-position: 0% 50%; }
  100% { background-position: 300% 50%; }
}

/* ===== Logo 星星粒子（JS动态创建）===== */
.logo-star {
  position: absolute;
  pointer-events: none;
  z-index: 10;
  opacity: 0;
  will-change: transform, opacity;
}
@keyframes starFloat {
  0%   { opacity: 0; transform: translate(0,0) scale(0) rotate(0deg); }
  20%  { opacity: 1; transform: translate(var(--sx), var(--sy-start)) scale(1.5) rotate(90deg); }
  80%  { opacity: 0.6; transform: translate(var(--sx), var(--sy-mid)) scale(1) rotate(270deg); }
  100% { opacity: 0; transform: translate(var(--sx), var(--sy-end)) scale(0) rotate(360deg); }
}

/* ===== Logo 彩色碎纸屑（JS动态创建）===== */
.logo-confetti {
  position: absolute;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  pointer-events: none;
  z-index: 10;
  opacity: 0;
  will-change: transform, opacity;
}
@keyframes confettiBurst {
  0%   { opacity: 0; transform: translate(0,0) scale(0) rotate(0deg); }
  15%  { opacity: 1; transform: translate(var(--cx-mid), var(--cy-mid)) scale(1) rotate(180deg); }
  100% { opacity: 0; transform: translate(var(--cx-end), var(--cy-end)) scale(0.5) rotate(360deg); }
}

/* ===== 图片悬停放大 ===== */
.img-zoom { transition: transform 0.35s cubic-bezier(.22,.68,0,1.2); }
.img-zoom:hover { transform: scale(1.04); }

/* ===== 卡片悬停上浮 ===== */
.card-hover { transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease; }
.card-hover:hover { transform: translateY(-6px); }

.hero-selling-icon {
  width: 18px;
  height: 18px;
}

.hero-proof-badge {
  display: inline-flex;
  width: 16px;
  height: 16px;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  border: 1.5px solid #10b981;
  border-radius: 9999px;
  color: #10b981;
}

.hero-proof-badge-icon {
  width: 10px;
  height: 10px;
}

.site-back-to-top {
  position: fixed;
  right: 24px;
  bottom: 150px;
  width: 46px;
  height: 46px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(16, 185, 129, 0.18);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.94);
  color: #059669;
  box-shadow: 0 14px 34px rgba(15, 23, 42, 0.12);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transform: translate3d(0, 10px, 0);
  transition: opacity 0.22s ease, transform 0.22s ease, visibility 0.22s ease, border-color 0.22s ease, background-color 0.22s ease;
  z-index: 60;
}

.site-back-to-top.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translate3d(0, 0, 0);
}

.site-back-to-top:hover {
  border-color: rgba(16, 185, 129, 0.32);
  background: #ecfdf5;
}

.site-back-to-top:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(110, 231, 183, 0.35), 0 14px 34px rgba(15, 23, 42, 0.12);
}

.site-back-to-top-icon {
  width: 18px;
  height: 18px;
}

@media (max-width: 767px) {
  .site-back-to-top {
    right: 16px;
    bottom: 16px;
    width: 42px;
    height: 42px;
    border-radius: 14px;
  }
}

.migration-step-arrow {
  position: absolute;
  top: 50%;
  right: -12px;
  width: 24px;
  height: 24px;
  transform: translateY(-50%);
  border: 1px solid #e2e8f0;
  border-radius: 9999px;
  background: #fff;
  color: #94a3b8;
  display: flex;
  align-items: center;
  justify-content: center;
}

.migration-step-arrow svg {
  width: 17px;
  height: 17px;
}

/* ===== 进度条动画（AI威胁分布）===== */
.bar-fill {
  width: 0;
  transition: width 0.9s ease;
}

.bar-fill.visible { width: var(--bar-w); }

/* ===== 闪烁动画（Live指标）===== */
#mobile-menu {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.35s ease;
}
#mobile-menu.open { max-height: 600px; }

/* ===== 当前导航高亮 ===== */
.nav-link.active { color: #10b981 !important; }

/* ===== ai===== */
    @keyframes terminalEntry { from { opacity:0; transform:translateX(-8px); } to { opacity:1; transform:translateX(0); } }
    .terminal-line { animation: terminalEntry 0.4s ease forwards; opacity:0; }
    .terminal-line:nth-child(1){animation-delay:.1s} .terminal-line:nth-child(2){animation-delay:.4s}
    .terminal-line:nth-child(3){animation-delay:.7s} .terminal-line:nth-child(4){animation-delay:1.0s}
    .terminal-line:nth-child(5){animation-delay:1.3s} .terminal-line:nth-child(6){animation-delay:1.6s}
    .terminal-line:nth-child(7){animation-delay:1.9s}
    @keyframes blink { 0%,100%{opacity:1} 50%{opacity:0} }
    .cursor { animation: blink 1s infinite; }