/* Dark Hole v3: geometry/motion are managed by black-hole-engine.js.
   CSS controls dimensions only. Do not rotate .bh-loader or .bh-scene.
   Core/camera remain stationary; the disk's material moves in its own plane. */
.bh-loader {
  --bh-size: 160px;
  display: inline-block;
  width: var(--bh-size);
  max-width: 100%;
  aspect-ratio: 1;
  vertical-align: middle;
  contain: layout style;
}
.bh-loader .bh-scene {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}

/* Use with cloud-engine.js and cloud-component.html.
   Formation and subtle floating are continuous SVG geometry updates. */
.cloud-loader {
  --cloud-size: 160px;
  display: inline-block;
  width: var(--cloud-size);
  max-width: 100%;
  aspect-ratio: 1;
  vertical-align: middle;
  contain: layout style;
}
.cloud-loader .cloud-scene {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}

/* Geometry and plasma motion are driven by sun-engine.js. */
.sun-loader {
  --sun-size: 160px;
  display: inline-block;
  width: var(--sun-size);
  max-width: 100%;
  aspect-ratio: 1;
  vertical-align: middle;
  contain: layout style;
}
.sun-loader .sun-scene {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}

/* The SVG engine controls sequential construction and subtle lighting. */
.health-shield-loader {
  --health-shield-size: 180px;
  display: inline-block;
  width: var(--health-shield-size);
  max-width: 100%;
  aspect-ratio: 1;
  vertical-align: middle;
  contain: layout style;
}
.health-shield-loader .health-shield-scene {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}

/* The supplied story engines control the SVG geometry and camera themselves. */
.leaf-story-loader,.heart-pulse-loader,.rocket-loader {
  --loader-size:180px;
  display:inline-block;
  width:var(--loader-size);
  max-width:100%;
  aspect-ratio:1;
  vertical-align:middle;
  contain:layout style;
}
.leaf-story-scene,.heart-pulse-scene,.rocket-scene {
  display:block;
  width:100%;
  height:100%;
  overflow:visible;
}
