/* Loaded with the swarm field. Canvases are added only after this loads. */
.swarm-host {
  position: relative;
}
.swarm-host .industry-pills {
  position: relative;
}
.swarm-colony {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.9s ease;
}
.swarm-colony[data-ready="true"] {
  opacity: 1;
}
/* Industries: a fixed strip over the gutter beside the sticky index. */
.swarm-dispatch {
  position: fixed;
  top: 0;
  height: 100vh;
  pointer-events: none;
  z-index: 18;
  opacity: 0;
  transition: opacity 0.6s ease;
}
.swarm-dispatch[data-ready="true"] {
  opacity: 1;
}
/* Research: inside each card's artwork, clipped by the picture frame. */
.swarm-art {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}
/* Phones hide an artwork's shader canvas; a hero's light trace still runs. */
@media (max-width: 760px) {
  .luminous-artwork > .swarm-trace {
    display: block;
  }
}
/* Platform: a narrow strip over the layer thumbnails only. */
.swarm-host-layers {
  position: relative;
}
.swarm-layers {
  position: absolute;
  pointer-events: none;
}
/* Ecosystem banners: the infinity current in the empty half. */
.swarm-host-infinity {
  position: relative;
}
.swarm-infinity {
  position: absolute;
  pointer-events: none;
}
/* Homepage "Built with you" cards: the crew draws over the art and under the words. */
.swarm-host-study > .light-study-label,
.swarm-host-study > h3,
.swarm-host-study > .light-study-description {
  position: relative;
  z-index: 1;
}
.swarm-study {
  z-index: 0;
}
/* Artless intros: the loop draws under the words' layer. */
.swarm-host-infinity > .swarm-infinity {
  position: absolute;
  z-index: 0;
}
