/* Скрытие данных частицами (particles.js): текст гаснет, поверх летит облако */
.pe-root {
  position: relative;
}

.pe-content {
  display: inline-block;
  max-width: 100%;
  overflow: hidden;
  vertical-align: top;
  text-overflow: ellipsis;
  white-space: inherit;
  transition: filter 300ms cubic-bezier(0.23, 1, 0.32, 1);
}

/* filter: opacity() сплющивает поддерево в один буфер, поэтому гаснет и всё вложенное */
.pe-root.pe-hidden > .pe-content {
  filter: opacity(0);
  user-select: none;
}

.pe-root.pe-hidden {
  cursor: pointer;
}

/* Облако выходит за границы элемента, чтобы частицам было где колыхаться */
.pe-root:has(> .pe-canvas) {
  overflow: visible;
}

.pe-canvas {
  position: absolute;
  pointer-events: none;
}

.pe-root.pe-hidden > .pe-canvas {
  animation: pe-cloud-in 300ms cubic-bezier(0.23, 1, 0.32, 1);
}

@keyframes pe-cloud-in {
  from { opacity: 0; }
}

/* Без WebGL2: значение размывается */
.pe-root.pe-fallback > .pe-canvas {
  display: none;
}

.pe-root.pe-fallback.pe-hidden > .pe-content {
  filter: blur(7px);
}

/* Остальное, что нельзя закрыть частицами: подписи на графе, карта и адрес на карте */
.g-stage .node-label {
  transition: filter 300ms ease;
}

.g-stage.data-hidden .node-label {
  filter: blur(7px);
}

.data-hidden .geo-map,
.data-hidden .geo-place,
.data-hidden .geo-time {
  filter: blur(10px);
  transition: filter 300ms ease;
  pointer-events: none;
}

.data-hidden .geo-tools,
.data-hidden .geo-ext,
.data-hidden .geo-nav {
  pointer-events: none;
  opacity: 0.35;
}

@media (prefers-reduced-motion: reduce) {
  .pe-content,
  .pe-root.pe-hidden > .pe-canvas {
    transition: none;
    animation: none;
  }
}
