/* ===== 标签页 3D 旋转词云 ===== */
.tag3d {
  position: relative;
  height: var(--tag3d-height, 440px);
  background: var(--color-card);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  margin-bottom: 8px;
  cursor: grab;
  user-select: none;
  -webkit-user-select: none;
}
.tag3d.is-dragging {
  cursor: grabbing;
}
/* 中心柔光 */
.tag3d-glow {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(
    closest-side at 50% 50%,
    var(--color-primary-bg) 0%,
    transparent 72%
  );
}
.tag3d-viewport {
  position: absolute;
  inset: 0;
  touch-action: pan-y;
}
.tag3d-item {
  position: absolute;
  left: 50%;
  top: 50%;
  text-decoration: none;
  white-space: nowrap;
  will-change: transform, opacity;
  line-height: 1.4;
  -webkit-user-drag: none;
}
.tag3d-label {
  display: inline-block;
  font-size: var(--tag-size, 14px);
  font-weight: 500;
  color: var(--color-text);
  transition:
    color var(--transition),
    text-shadow var(--transition),
    transform 0.2s ease;
}
.tag3d-item.is-warm .tag3d-label {
  font-weight: 600;
}
.tag3d-item.is-hot .tag3d-label {
  color: var(--color-primary);
  font-weight: 700;
  text-shadow: 0 0 18px var(--color-primary-bg);
}
.tag3d-item:hover .tag3d-label,
.tag3d-item:focus-visible .tag3d-label {
  color: var(--color-primary);
  transform: scale(1.16);
}
.tag3d-item:focus-visible {
  outline: none;
}
/* 悬停时显示文章数量徽标 */
.tag3d-item::after {
  content: attr(data-count);
  vertical-align: super;
  margin-left: 3px;
  font-size: 10px;
  font-family: var(--font-mono);
  color: var(--color-primary);
  background: var(--color-primary-bg);
  border-radius: var(--radius-full);
  padding: 1px 6px;
  opacity: 0;
  transition: opacity var(--transition);
}
.tag3d-item:hover::after {
  opacity: 1;
}
.tag3d-hint {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 10px;
  margin: 0;
  text-align: center;
  font-size: 12px;
  color: var(--color-text-muted);
  opacity: 0.75;
  pointer-events: none;
}
.tag3d-hint svg {
  width: 12px;
  height: 12px;
  vertical-align: -2px;
  margin-right: 4px;
}
@media (width<=768px) {
  .tag3d {
    height: min(var(--tag3d-height, 440px), 78vw);
    border-radius: var(--radius-md);
  }
  .tag3d-label {
    font-size: calc(var(--tag-size, 14px) * 0.88);
  }
  .tag3d-hint {
    font-size: 11px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .tag3d .tag3d-label,
  .tag3d-item::after {
    transition: none;
  }
}
