/* 波场靓号 — 动态手指引导（仅视觉，不拦截点击） */
.tvg-finger {
  position: fixed;
  left: 0;
  top: 0;
  width: 128px;
  height: 128px;
  z-index: 9998;
  pointer-events: none !important;
  opacity: 0;
  transform: translate3d(-9999px, -9999px, 0) scale(0.92);
  will-change: transform, opacity;
  transition: opacity 0.28s ease;
}
.tvg-finger.is-visible { opacity: 1; }
.tvg-finger.is-press .tvg-finger-img { transform: translate3d(0, 7px, 0) scale(0.94); }
.tvg-finger-img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  filter: drop-shadow(0 6px 12px rgba(15, 23, 42, 0.28));
  transform-origin: 18% 12%;
  transition: transform 0.16s ease;
  pointer-events: none;
  user-select: none;
  -webkit-user-drag: none;
}
.tvg-finger.is-mobile {
  width: 76px;
  height: 76px;
}
.tvg-finger.is-mobile .tvg-finger-img {
  filter: drop-shadow(0 4px 8px rgba(15, 23, 42, 0.25));
}

.tvg-target-press {
  transition: transform 0.16s ease !important;
  transform: scale(0.97) !important;
}
.tvg-target-ripple::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  width: 28px;
  height: 28px;
  margin: -14px 0 0 -14px;
  border-radius: 50%;
  background: rgba(23, 105, 255, 0.22);
  pointer-events: none;
  animation: tvgSoftRipple 0.5s ease-out;
  z-index: 2;
}
@keyframes tvgSoftRipple {
  from { opacity: 0.55; transform: scale(0.5); }
  to { opacity: 0; transform: scale(2.2); }
}

@media (prefers-reduced-motion: reduce) {
  .tvg-finger { display: none !important; }
}
