/* Live and fallback characters share the same projected, two-foot floor. */
/* Clip the scene without creating a scroll container for fragment/focus jumps. */
.hero--character { overflow: clip; }
.hero-character,
.character-viewport { overflow: visible; }
.character-viewport.has-grounding::before { display: none; }
.character-grounding {
  position: absolute; inset: 0; z-index: 0;
  overflow: visible; pointer-events: none;
}
.character-viewport .character-ground-reflection {
  position: absolute; inset: 0 auto auto 0; z-index: 0;
  display: block; max-width: none; max-height: none;
  opacity: 1; transition: none; pointer-events: none;
}
.character-ground-contact,
.character-ground-ambient {
  display: block; position: absolute; pointer-events: none;
  transform: translate(-50%, -50%); border-radius: 50%;
}
.character-ground-contact {
  z-index: 2;
  background: radial-gradient(ellipse, #071322eb 0%, #071322d9 20%, #0815228c 47%, #0a1c3438 67%, transparent 79%);
  filter: blur(.65px);
}
.character-ground-ambient {
  z-index: 1;
  background: radial-gradient(ellipse, #06142670 0%, #0614264d 24%, #06142620 48%, transparent 72%);
  filter: blur(4px);
}
