/* 右下角 AI 浮层入口 */
.ub-ai-fab {
  position: fixed;
  right: 22px;
  bottom: 96px;
  width: 76px;
  height: 76px;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
  z-index: 80;
  display: block;
  transition: transform .28s cubic-bezier(.2,.8,.2,1);
}
.ub-ai-fab::before {
  content: "";
  position: absolute;
  inset: 8%;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(45,110,255,.20), rgba(45,110,255,0) 70%);
  z-index: -1;
  animation: ubAiPulse 3.4s ease-in-out infinite;
}
.ub-ai-fab img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
  filter: drop-shadow(0 10px 22px rgba(34,78,200,.28));
  transition: filter .28s ease;
}
.ub-ai-fab:hover { transform: translateY(-4px) scale(1.05); }
.ub-ai-fab:hover img { filter: drop-shadow(0 16px 30px rgba(34,78,200,.38)); }
.ub-ai-fab:active { transform: scale(.96); }
@keyframes ubAiPulse {
  0%, 100% { transform: scale(.9); opacity: .5; }
  50% { transform: scale(1.12); opacity: .85; }
}
@media (max-width: 640px) {
  .ub-ai-fab { width: 60px; height: 60px; right: 12px; bottom: 78px; }
}
@media (prefers-reduced-motion: reduce) {
  .ub-ai-fab::before { animation: none; }
}

.ub-ai-fab picture { display: block; width: 100%; height: 100%; }

/* 上移到右侧中部偏下 */
.ub-ai-fab { bottom: clamp(120px, 18vh, 190px); }
@media (max-width: 640px) {
  .ub-ai-fab { bottom: clamp(96px, 15vh, 140px); }
}
