@import "./too-big-native.css";
@import "./r1-isolation.css";
@import "./airflow-patch-atlas.css";

.room-viewport {
  position: relative;
  width: 100vw;
  height: 100vh;
  overflow: hidden;
  background: #e8dfcf;
}

.remote-validation-overlay {
  position: fixed;
  left: 0;
  top: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 100vw;
  height: 100vh;
  padding: calc(56 * 100vw / 750);
  background: rgba(45, 37, 28, 0.34);
  backdrop-filter: blur(calc(10 * 100vw / 750));
}

.remote-validation-card {
  box-sizing: border-box;
  width: 100%;
  max-width: calc(590 * 100vw / 750);
  padding: calc(56 * 100vw / 750) calc(48 * 100vw / 750) calc(48 * 100vw / 750);
  border: calc(1 * 100vw / 750) solid rgba(103, 82, 55, 0.16);
  border-radius: calc(36 * 100vw / 750);
  background: rgba(247, 241, 231, 0.97);
  box-shadow: 0 calc(28 * 100vw / 750) calc(80 * 100vw / 750) rgba(44, 33, 20, 0.22);
  text-align: center;
}

.remote-validation-title,
.remote-validation-message {
  display: block;
}

.remote-validation-title {
  color: #332b22;
  font-size: calc(40 * 100vw / 750);
  font-weight: 600;
  line-height: 1.25;
}

.remote-validation-message {
  margin-top: calc(28 * 100vw / 750);
  color: rgba(51, 43, 34, 0.72);
  font-size: calc(28 * 100vw / 750);
  line-height: 1.65;
}

.design-stage {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 750px;
  height: 1334px;
  margin-left: -375px;
  margin-top: -667px;
  overflow: hidden;
  transform-origin: 375px 667px;
  background: #e8dfcf;
}

.world-shell {
  position: absolute;
  left: 0;
  top: 0;
  overflow: visible;
  pointer-events: none;
  transform-origin: 0 0;
}

.legacy-scene-frame {
  position: absolute;
  width: 750px;
  height: 1334px;
  pointer-events: none;
}

.shadow-world-rig,
.actor-world-rig {
  position: absolute;
  left: 0;
  top: 0;
  width: 750px;
  height: 1334px;
  pointer-events: none;
  transform-origin: 375px 1042px;
}

.shadow-world-rig { z-index: 1; }
.actor-world-rig { z-index: 3; }

.shadow-presentation-scale,
.actor-presentation-scale {
  position: absolute;
  left: 0;
  top: 0;
  width: 750px;
  height: 1334px;
  pointer-events: none;
  transform: scale(var(--actor-presentation-scale));
  transform-origin: 375px 1042px;
}

.scene-affordance-rig {
  position: absolute;
  /* Idle box sits behind the actor, so its upper-right corner cannot cut
     across the lower-left body silhouette. Interaction phases restore the
     foreground layer for the approved Inspect/Push contact choreography. */
  z-index: 2;
  pointer-events: none;
  transform-origin: 50% 100%;
}

.scene-affordance-rig.is-being-inspected,
.scene-affordance-rig.is-being-nudged,
.scene-affordance-rig.is-r4-push-one,
.scene-affordance-rig.is-r4-push-two {
  z-index: 4;
}

.scene-affordance-image {
  display: block;
  width: 100%;
  height: 100%;
}

.scene-affordance-motion {
  width: 100%;
  height: 100%;
  transform-origin: 50% 100%;
}

.scene-affordance-motion.is-being-nudged {
  animation: autonomous-cardboard-box-nudge var(--autonomous-duration) ease-in-out 1 both;
}

.shadow-world-rig.is-controlled-capturing .ground-shadow,
.shadow-world-rig.is-controlled-capturing .contact-shadow,
.shadow-world-rig.is-controlled-holding .ground-shadow,
.shadow-world-rig.is-controlled-holding .contact-shadow,
.shadow-world-rig.is-controlled-settling .ground-shadow,
.shadow-world-rig.is-controlled-settling .contact-shadow,
.shadow-world-rig.is-controlled-grounded .ground-shadow,
.shadow-world-rig.is-controlled-grounded .contact-shadow,
.shadow-world-rig.is-controlled-moving .ground-shadow,
.shadow-world-rig.is-controlled-moving .contact-shadow,
.shadow-world-rig.is-controlled-releasing .ground-shadow,
.shadow-world-rig.is-controlled-releasing .contact-shadow {
  animation-play-state: paused;
}

/* Preserve the exact airborne Idle shadow, then settle it into the planted
   walk shadow together with the body. The walking keyframes begin from these
   same values, so gait takeover cannot darken or stretch the shadow in one frame. */
.shadow-world-rig.is-controlled-holding .ground-shadow,
.shadow-world-rig.is-controlled-holding .contact-shadow {
  animation: none;
  opacity: var(--actor-shadow-start-opacity);
  transform: var(--actor-shadow-start-transform);
}

.shadow-world-rig.is-controlled-settling .ground-shadow {
  animation: controlled-ground-shadow-settle var(--actor-settle-duration) ease-out 1 forwards;
  animation-play-state: running;
}

.shadow-world-rig.is-controlled-settling .contact-shadow {
  animation: controlled-contact-shadow-settle var(--actor-settle-duration) ease-out 1 forwards;
  animation-play-state: running;
}

.shadow-world-rig.is-controlled-grounded .ground-shadow {
  animation: none;
  opacity: 0.96;
  transform: scaleX(1.1) scaleY(0.98);
}

.shadow-world-rig.is-controlled-grounded .contact-shadow {
  animation: none;
  opacity: 0.91;
  transform: scaleX(1.02) scaleY(0.96);
}

@keyframes controlled-ground-shadow-settle {
  from { opacity: var(--actor-shadow-start-opacity); transform: var(--actor-shadow-start-transform); }
  to { opacity: 0.96; transform: scaleX(1.1) scaleY(0.98); }
}

@keyframes controlled-contact-shadow-settle {
  from { opacity: var(--actor-shadow-start-opacity); transform: var(--actor-shadow-start-transform); }
  to { opacity: 0.91; transform: scaleX(1.02) scaleY(0.96); }
}

/* Pause only long enough to read the actual rendered matrices, then freeze
   those matrices explicitly for the settle/walk handoff. */
.actor-world-rig.is-controlled-capturing .idle-rig,
.actor-world-rig.is-controlled-capturing .deform-rig {
  animation-play-state: paused;
}

.actor-world-rig.is-controlled-holding .idle-rig,
.actor-world-rig.is-controlled-settling .idle-rig,
.actor-world-rig.is-controlled-grounded .idle-rig,
.actor-world-rig.is-controlled-moving .idle-rig,
.actor-world-rig.is-controlled-releasing .idle-rig {
  animation: none;
  transform: var(--actor-idle-snapshot-transform);
}

.actor-world-rig.is-controlled-holding .deform-rig,
.actor-world-rig.is-controlled-settling .deform-rig,
.actor-world-rig.is-controlled-grounded .deform-rig,
.actor-world-rig.is-controlled-moving .deform-rig {
  animation: none;
  transform: var(--actor-deform-snapshot-transform);
}

/* Preserve the exact last walking shape on takeover, then release it to the
   neutral idle shape continuously instead of snapping on the final frame. */
.actor-world-rig.is-controlled-releasing .deform-rig {
  animation: controlled-deform-release var(--actor-release-duration) ease-out 1 forwards;
}

.actor-world-rig.is-controlled-settling .reaction-rig {
  animation: controlled-actor-settle var(--actor-settle-duration) ease-out 1 forwards;
}

.actor-world-rig.is-controlled-holding .reaction-rig {
  animation: none;
  transform: translate3d(0, 0, 0);
}

.actor-world-rig.is-controlled-grounded .reaction-rig {
  animation: none;
  transform: translate3d(0, var(--actor-settle-distance), 0);
}

.actor-world-rig.is-controlled-moving.movement-2-step .reaction-rig {
  animation: controlled-weight-two-step var(--actor-move-duration) linear 1 forwards;
}

.actor-world-rig.is-controlled-moving.movement-4-step .reaction-rig {
  animation: controlled-weight-four-step var(--actor-move-duration) linear 1 forwards;
}

.actor-world-rig.is-controlled-moving.movement-8-step .reaction-rig {
  animation: controlled-weight-four-step var(--actor-gait-pair-duration) linear 2 forwards;
}

.actor-world-rig.is-controlled-releasing .reaction-rig {
  animation: controlled-actor-release var(--actor-release-duration) linear 1 forwards;
}

.actor-world-rig.is-controlled-moving.movement-2-step.movement-dir-left .reaction-pupil {
  animation: controlled-gaze-two-step-left var(--actor-move-duration) ease-in-out 1 both;
}

.actor-world-rig.is-controlled-moving.movement-2-step.movement-dir-right .reaction-pupil {
  animation: controlled-gaze-two-step-right var(--actor-move-duration) ease-in-out 1 both;
}

.actor-world-rig.is-controlled-moving.movement-4-step.movement-dir-left .reaction-pupil {
  animation: controlled-gaze-four-step-left var(--actor-move-duration) ease-in-out 1 both;
}

.actor-world-rig.is-controlled-moving.movement-4-step.movement-dir-right .reaction-pupil {
  animation: controlled-gaze-four-step-right var(--actor-move-duration) ease-in-out 1 both;
}

.actor-world-rig.is-controlled-moving.movement-2-step {
  animation: controlled-actor-two-step var(--actor-move-duration) ease-in-out 1 forwards;
}

.shadow-world-rig.is-controlled-moving.movement-2-step {
  animation: controlled-shadow-two-step var(--actor-move-duration) ease-in-out 1 forwards;
}

.actor-world-rig.is-controlled-moving.movement-4-step {
  animation: controlled-actor-four-step var(--actor-move-duration) ease-in-out 1 forwards;
}

.actor-world-rig.is-controlled-moving.movement-8-step {
  animation: controlled-actor-four-step var(--actor-move-duration) linear 1 forwards;
}

.shadow-world-rig.is-controlled-moving.movement-4-step {
  animation: controlled-shadow-four-step var(--actor-move-duration) ease-in-out 1 forwards;
}

.shadow-world-rig.is-controlled-moving.movement-8-step {
  animation: controlled-shadow-four-step var(--actor-move-duration) linear 1 forwards;
}

@keyframes controlled-actor-settle {
  0% { transform: translate3d(0, 0, 0); }
  100% { transform: translate3d(0, var(--actor-settle-distance), 0); }
}

@keyframes controlled-actor-release {
  0% { transform: translate3d(0, var(--actor-settle-distance), 0); }
  100% { transform: translate3d(0, var(--actor-settle-distance), 0); }
}

@keyframes controlled-deform-release {
  0% { transform: var(--actor-deform-snapshot-transform); }
  100% { transform: scaleX(1) scaleY(1); }
}

@keyframes controlled-gaze-two-step-left {
  0%, 8% { transform: translate3d(0, 0, 0); }
  18%, 30% { transform: translate3d(-4px, 0, 0); }
  42%, 58% { transform: translate3d(0, 0, 0); }
  69%, 82% { transform: translate3d(-3px, 0, 0); }
  92%, 100% { transform: translate3d(0, 0, 0); }
}

@keyframes controlled-gaze-two-step-right {
  0%, 8% { transform: translate3d(0, 0, 0); }
  18%, 30% { transform: translate3d(4px, 0, 0); }
  42%, 58% { transform: translate3d(0, 0, 0); }
  69%, 82% { transform: translate3d(3px, 0, 0); }
  92%, 100% { transform: translate3d(0, 0, 0); }
}

@keyframes controlled-gaze-four-step-left {
  0%, 6% { transform: translate3d(0, 0, 0); }
  13%, 22% { transform: translate3d(-4px, 0, 0); }
  31%, 43% { transform: translate3d(0, 0, 0); }
  51%, 61% { transform: translate3d(-3px, 0, 0); }
  70%, 83% { transform: translate3d(0, 0, 0); }
  89%, 95% { transform: translate3d(-2px, 0, 0); }
  100% { transform: translate3d(0, 0, 0); }
}

@keyframes controlled-gaze-four-step-right {
  0%, 6% { transform: translate3d(0, 0, 0); }
  13%, 22% { transform: translate3d(4px, 0, 0); }
  31%, 43% { transform: translate3d(0, 0, 0); }
  51%, 61% { transform: translate3d(3px, 0, 0); }
  70%, 83% { transform: translate3d(0, 0, 0); }
  89%, 95% { transform: translate3d(2px, 0, 0); }
  100% { transform: translate3d(0, 0, 0); }
}

@keyframes planted-full-atlas-two-v07 {
  0.0000% { transform: translate3d(0px, 0px, 0); }
  2.5641% { transform: translate3d(-420px, 0px, 0); }
  5.1282% { transform: translate3d(-840px, 0px, 0); }
  7.6923% { transform: translate3d(-1260px, 0px, 0); }
  10.2564% { transform: translate3d(-1680px, 0px, 0); }
  12.8205% { transform: translate3d(-2100px, 0px, 0); }
  15.3846% { transform: translate3d(-2520px, 0px, 0); }
  17.9487% { transform: translate3d(-2940px, 0px, 0); }
  20.5128% { transform: translate3d(-3360px, 0px, 0); }
  23.0769% { transform: translate3d(0px, -440px, 0); }
  25.6410% { transform: translate3d(-420px, -440px, 0); }
  28.2051% { transform: translate3d(-840px, -440px, 0); }
  30.7692% { transform: translate3d(-1260px, -440px, 0); }
  33.3333% { transform: translate3d(-1680px, -440px, 0); }
  35.8974% { transform: translate3d(-2100px, -440px, 0); }
  38.4615% { transform: translate3d(-2520px, -440px, 0); }
  41.0256% { transform: translate3d(-2940px, -440px, 0); }
  43.5897% { transform: translate3d(-3360px, -440px, 0); }
  46.1538% { transform: translate3d(0px, -880px, 0); }
  48.7179% { transform: translate3d(-420px, -880px, 0); }
  51.2821% { transform: translate3d(-840px, -880px, 0); }
  53.8462% { transform: translate3d(-1260px, -880px, 0); }
  56.4103% { transform: translate3d(-1680px, -880px, 0); }
  58.9744% { transform: translate3d(-2100px, -880px, 0); }
  61.5385% { transform: translate3d(-2520px, -880px, 0); }
  64.1026% { transform: translate3d(-2940px, -880px, 0); }
  66.6667% { transform: translate3d(-3360px, -880px, 0); }
  69.2308% { transform: translate3d(0px, -1320px, 0); }
  71.7949% { transform: translate3d(-420px, -1320px, 0); }
  74.3590% { transform: translate3d(-840px, -1320px, 0); }
  76.9231% { transform: translate3d(-1260px, -1320px, 0); }
  79.4872% { transform: translate3d(-1680px, -1320px, 0); }
  82.0513% { transform: translate3d(-2100px, -1320px, 0); }
  84.6154% { transform: translate3d(-2520px, -1320px, 0); }
  87.1795% { transform: translate3d(-2940px, -1320px, 0); }
  89.7436% { transform: translate3d(-3360px, -1320px, 0); }
  92.3077% { transform: translate3d(0px, -1760px, 0); }
  94.8718% { transform: translate3d(-420px, -1760px, 0); }
  97.4359% { transform: translate3d(-840px, -1760px, 0); }
  100.0000% { transform: translate3d(-1260px, -1760px, 0); }
}
@keyframes planted-full-atlas-four-v07 {
  0.0000% { transform: translate3d(0px, 0px, 0); }
  1.2658% { transform: translate3d(-420px, 0px, 0); }
  2.5316% { transform: translate3d(-840px, 0px, 0); }
  3.7975% { transform: translate3d(-1260px, 0px, 0); }
  5.0633% { transform: translate3d(-1680px, 0px, 0); }
  6.3291% { transform: translate3d(-2100px, 0px, 0); }
  7.5949% { transform: translate3d(-2520px, 0px, 0); }
  8.8608% { transform: translate3d(-2940px, 0px, 0); }
  10.1266% { transform: translate3d(-3360px, 0px, 0); }
  11.3924% { transform: translate3d(0px, -440px, 0); }
  12.6582% { transform: translate3d(-420px, -440px, 0); }
  13.9241% { transform: translate3d(-840px, -440px, 0); }
  15.1899% { transform: translate3d(-1260px, -440px, 0); }
  16.4557% { transform: translate3d(-1680px, -440px, 0); }
  17.7215% { transform: translate3d(-2100px, -440px, 0); }
  18.9873% { transform: translate3d(-2520px, -440px, 0); }
  20.2532% { transform: translate3d(-2940px, -440px, 0); }
  21.5190% { transform: translate3d(-3360px, -440px, 0); }
  22.7848% { transform: translate3d(0px, -880px, 0); }
  24.0506% { transform: translate3d(-420px, -880px, 0); }
  25.3165% { transform: translate3d(-840px, -880px, 0); }
  26.5823% { transform: translate3d(-1260px, -880px, 0); }
  27.8481% { transform: translate3d(-1680px, -880px, 0); }
  29.1139% { transform: translate3d(-2100px, -880px, 0); }
  30.3797% { transform: translate3d(-2520px, -880px, 0); }
  31.6456% { transform: translate3d(-2940px, -880px, 0); }
  32.9114% { transform: translate3d(-3360px, -880px, 0); }
  34.1772% { transform: translate3d(0px, -1320px, 0); }
  35.4430% { transform: translate3d(-420px, -1320px, 0); }
  36.7089% { transform: translate3d(-840px, -1320px, 0); }
  37.9747% { transform: translate3d(-1260px, -1320px, 0); }
  39.2405% { transform: translate3d(-1680px, -1320px, 0); }
  40.5063% { transform: translate3d(-2100px, -1320px, 0); }
  41.7722% { transform: translate3d(-2520px, -1320px, 0); }
  43.0380% { transform: translate3d(-2940px, -1320px, 0); }
  44.3038% { transform: translate3d(-3360px, -1320px, 0); }
  45.5696% { transform: translate3d(0px, -1760px, 0); }
  46.8354% { transform: translate3d(-420px, -1760px, 0); }
  48.1013% { transform: translate3d(-840px, -1760px, 0); }
  49.3671% { transform: translate3d(-1260px, -1760px, 0); }
  50.6329% { transform: translate3d(-1680px, -1760px, 0); }
  51.8987% { transform: translate3d(-2100px, -1760px, 0); }
  53.1646% { transform: translate3d(-2520px, -1760px, 0); }
  54.4304% { transform: translate3d(-2940px, -1760px, 0); }
  55.6962% { transform: translate3d(-3360px, -1760px, 0); }
  56.9620% { transform: translate3d(0px, -2200px, 0); }
  58.2278% { transform: translate3d(-420px, -2200px, 0); }
  59.4937% { transform: translate3d(-840px, -2200px, 0); }
  60.7595% { transform: translate3d(-1260px, -2200px, 0); }
  62.0253% { transform: translate3d(-1680px, -2200px, 0); }
  63.2911% { transform: translate3d(-2100px, -2200px, 0); }
  64.5570% { transform: translate3d(-2520px, -2200px, 0); }
  65.8228% { transform: translate3d(-2940px, -2200px, 0); }
  67.0886% { transform: translate3d(-3360px, -2200px, 0); }
  68.3544% { transform: translate3d(0px, -2640px, 0); }
  69.6203% { transform: translate3d(-420px, -2640px, 0); }
  70.8861% { transform: translate3d(-840px, -2640px, 0); }
  72.1519% { transform: translate3d(-1260px, -2640px, 0); }
  73.4177% { transform: translate3d(-1680px, -2640px, 0); }
  74.6835% { transform: translate3d(-2100px, -2640px, 0); }
  75.9494% { transform: translate3d(-2520px, -2640px, 0); }
  77.2152% { transform: translate3d(-2940px, -2640px, 0); }
  78.4810% { transform: translate3d(-3360px, -2640px, 0); }
  79.7468% { transform: translate3d(0px, -3080px, 0); }
  81.0127% { transform: translate3d(-420px, -3080px, 0); }
  82.2785% { transform: translate3d(-840px, -3080px, 0); }
  83.5443% { transform: translate3d(-1260px, -3080px, 0); }
  84.8101% { transform: translate3d(-1680px, -3080px, 0); }
  86.0759% { transform: translate3d(-2100px, -3080px, 0); }
  87.3418% { transform: translate3d(-2520px, -3080px, 0); }
  88.6076% { transform: translate3d(-2940px, -3080px, 0); }
  89.8734% { transform: translate3d(-3360px, -3080px, 0); }
  91.1392% { transform: translate3d(0px, -3520px, 0); }
  92.4051% { transform: translate3d(-420px, -3520px, 0); }
  93.6709% { transform: translate3d(-840px, -3520px, 0); }
  94.9367% { transform: translate3d(-1260px, -3520px, 0); }
  96.2025% { transform: translate3d(-1680px, -3520px, 0); }
  97.4684% { transform: translate3d(-2100px, -3520px, 0); }
  98.7342% { transform: translate3d(-2520px, -3520px, 0); }
  /* The source atlas has 79 painted frames (0-78); cells 79-80 are empty.
     Holding frame 78 here prevents a transparent terminal frame and keeps
     the next four-step cycle from reading as an extra left-foot plant. */
  100.0000% { transform: translate3d(-2520px, -3520px, 0); }
}

@keyframes controlled-actor-two-step {
  0%, 10% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0) rotate(0deg); }
  44%, 54% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0) rotate(0deg); }
  90%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0) rotate(0deg); }
}

@keyframes controlled-shadow-two-step {
  0%, 10% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0); }
  44%, 54% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0); }
  90%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0); }
}

@keyframes controlled-actor-four-step {
  0%, 5% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0) rotate(0deg); }
  23%, 28% { transform: translate3d(var(--actor-move-quarter-x), var(--actor-move-quarter-y), 0) rotate(0deg); }
  46%, 54% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0) rotate(0deg); }
  72%, 77% { transform: translate3d(var(--actor-move-three-quarters-x), var(--actor-move-three-quarters-y), 0) rotate(0deg); }
  95%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0) rotate(0deg); }
}

@keyframes controlled-shadow-four-step {
  0%, 5% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0); }
  23%, 28% { transform: translate3d(var(--actor-move-quarter-x), var(--actor-move-quarter-y), 0); }
  46%, 54% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0); }
  72%, 77% { transform: translate3d(var(--actor-move-three-quarters-x), var(--actor-move-three-quarters-y), 0); }
  95%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0); }
}

@keyframes controlled-weight-two-step {
  0%, 10% {
    transform-origin: 278px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg);
  }
  27% {
    transform-origin: 278px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(-1.55deg);
  }
  44% {
    transform-origin: 278px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg);
  }
  54% {
    transform-origin: 437px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg);
  }
  72% {
    transform-origin: 437px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(1.55deg);
  }
  90%, 100% {
    transform-origin: 437px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg);
  }
}

@keyframes controlled-weight-four-step {
  0%, 5% {
    transform-origin: 278px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg);
  }
  14% {
    transform-origin: 278px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(-1.45deg);
  }
  23% {
    transform-origin: 278px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg);
  }
  28% {
    transform-origin: 437px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg);
  }
  37% {
    transform-origin: 437px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(1.45deg);
  }
  46% {
    transform-origin: 437px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg);
  }
  54% {
    transform-origin: 278px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg);
  }
  63% {
    transform-origin: 278px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(-1.45deg);
  }
  72% {
    transform-origin: 278px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg);
  }
  77% {
    transform-origin: 437px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg);
  }
  86% {
    transform-origin: 437px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(1.45deg);
  }
  95%, 100% {
    transform-origin: 437px 1006px;
    transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg);
  }
}

.layer {
  position: absolute;
  display: block;
  pointer-events: none;
}

.room-background {
  left: 0;
  top: 0;
  z-index: 0;
  width: 750px;
  height: 1334px;
}

.ground-shadow {
  z-index: 1;
  border-radius: 50%;
  background: rgba(46, 30, 18, 0.44);
  filter: blur(8px);
  transform-origin: center;
  animation: idle-shadow 5.6s linear var(--idle-animation-delay) infinite;
}

.contact-shadow {
  z-index: 1;
  border-radius: 50%;
  background: rgba(36, 23, 14, 0.55);
  filter: blur(4px);
  transform-origin: center;
  animation: idle-contact-shadow 5.6s linear var(--idle-animation-delay) infinite;
}

.idle-rig {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 2;
  width: 750px;
  height: 1334px;
  pointer-events: none;
  transform-origin: 375px 1042px;
  animation: idle-weight-shift 5.6s linear var(--idle-animation-delay) infinite;
}

.reaction-rig {
  position: absolute;
  left: 0;
  top: 0;
  width: 750px;
  height: 1334px;
  pointer-events: none;
  transform-origin: 375px 1042px;
}

.idle-rig.autonomous-inspect-hole,
.idle-rig.autonomous-inspect-hole .deform-rig {
  animation-play-state: paused;
}

.reaction-rig.is-autonomous-inspect-hole {
  animation: autonomous-inspect-hole-v2 var(--autonomous-duration) ease-in-out 1 both;
}

.reaction-rig.is-autonomous-inspect-hole .reaction-pupil[data-eye="left"] {
  animation: autonomous-inspect-pupil-left-v2 var(--autonomous-duration) ease-in-out 1 both;
}

.reaction-rig.is-autonomous-inspect-hole .reaction-pupil[data-eye="right"] {
  animation: autonomous-inspect-pupil-right-v2 var(--autonomous-duration) ease-in-out 1 both;
}

@keyframes autonomous-inspect-hole-v2 {
  0%, 8% { transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1); }
  18%, 24% { transform: translate3d(0, var(--squish-settle-y), 0) rotate(0deg) scale(1, 1); }
  31%, 40% { transform: translate3d(0, var(--squish-settle-y), 0) rotate(-0.8deg) scale(1, 1); }
  46% { transform: translate3d(0, var(--squish-settle-y), 0) rotate(0deg) scale(1, 1); }
  54%, 64% { transform: translate3d(0, var(--squish-settle-y), 0) rotate(0.72deg) scale(1, 1); }
  70% { transform: translate3d(0, var(--squish-settle-y), 0) rotate(0deg) scale(1, 1); }
  76% { transform: translate3d(0, var(--squish-settle-y), 0) rotate(0deg) scale(1.03, 0.965); }
  81% { transform: translate3d(0, var(--squish-settle-y), 0) rotate(0deg) scale(0.995, 1.008); }
  85%, 90% { transform: translate3d(0, var(--squish-settle-y), 0) rotate(0deg) scale(1, 1); }
  100% { transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1); }
}

@keyframes autonomous-inspect-pupil-left-v2 {
  0%, 19% { transform: translate3d(0, 0, 0); }
  27%, 40% { transform: translate3d(-4px, 5px, 0); }
  46% { transform: translate3d(0, 2px, 0); }
  54%, 64% { transform: translate3d(4px, 5px, 0); }
  70% { transform: translate3d(0, 2px, 0); }
  76%, 90% { transform: translate3d(0, 5px, 0); }
  100% { transform: translate3d(0, 0, 0); }
}

@keyframes autonomous-inspect-pupil-right-v2 {
  0%, 19% { transform: translate3d(0, 0, 0); }
  27%, 40% { transform: translate3d(-4px, 5px, 0); }
  46% { transform: translate3d(0, 2px, 0); }
  54%, 64% { transform: translate3d(4px, 5px, 0); }
  70% { transform: translate3d(0, 2px, 0); }
  76%, 90% { transform: translate3d(0, 5px, 0); }
  100% { transform: translate3d(0, 0, 0); }
}

.idle-rig.autonomous-failed-rest,
.idle-rig.autonomous-failed-rest .deform-rig,
.idle-rig.autonomous-settle-somewhere,
.idle-rig.autonomous-settle-somewhere .deform-rig,
.idle-rig.autonomous-inspect-object,
.idle-rig.autonomous-inspect-object .deform-rig,
.idle-rig.autonomous-nudge-minor-failure,
.idle-rig.autonomous-nudge-minor-failure .deform-rig {
  animation-play-state: paused;
}

.reaction-rig.is-autonomous-failed-rest {
  animation: autonomous-failed-rest var(--autonomous-duration) linear 1 both;
  transform-origin: 375px 1007px;
}

.reaction-rig.is-autonomous-failed-rest .eye-socket-pair,
.reaction-rig.is-autonomous-failed-rest .reaction-pupil {
  animation: autonomous-failed-rest-open-eyes var(--autonomous-duration) linear 1 both;
}

.reaction-rig.is-autonomous-failed-rest .sleep-eye-pair {
  animation: autonomous-failed-rest-closed-eyes var(--autonomous-duration) linear 1 both;
}

.reaction-rig.is-autonomous-settle-somewhere {
  animation: autonomous-settle-somewhere var(--autonomous-duration) ease-in-out 1 both;
  transform-origin: 375px 1007px;
}

.reaction-rig.is-autonomous-settle-somewhere .reaction-pupil[data-eye="left"],
.reaction-rig.is-autonomous-settle-somewhere .reaction-pupil[data-eye="right"] {
  animation: autonomous-settle-gaze var(--autonomous-duration) ease-in-out 1 both;
}

.reaction-rig.is-autonomous-inspect-object {
  animation: autonomous-inspect-object var(--autonomous-duration) ease-in-out 1 both;
  transform-origin: 375px 1007px;
}

.reaction-rig.is-autonomous-inspect-object .reaction-pupil[data-eye="left"],
.reaction-rig.is-autonomous-inspect-object .reaction-pupil[data-eye="right"] {
  animation: autonomous-inspect-object-gaze var(--autonomous-duration) ease-in-out 1 both;
}

.reaction-rig.is-autonomous-nudge-minor-failure {
  animation: autonomous-nudge-minor-failure var(--autonomous-duration) linear 1 both;
  transform-origin: 375px 1007px;
}

.reaction-rig.is-autonomous-nudge-minor-failure .reaction-pupil[data-eye="left"],
.reaction-rig.is-autonomous-nudge-minor-failure .reaction-pupil[data-eye="right"] {
  animation: autonomous-nudge-gaze var(--autonomous-duration) ease-in-out 1 both;
}

.shadow-world-rig.is-autonomous-failed-rest-shadow .ground-shadow,
.shadow-world-rig.is-autonomous-failed-rest-shadow .contact-shadow,
.shadow-world-rig.is-autonomous-settle-shadow .ground-shadow,
.shadow-world-rig.is-autonomous-settle-shadow .contact-shadow,
.shadow-world-rig.is-autonomous-inspect-object-shadow .ground-shadow,
.shadow-world-rig.is-autonomous-inspect-object-shadow .contact-shadow,
.shadow-world-rig.is-autonomous-nudge-shadow .ground-shadow,
.shadow-world-rig.is-autonomous-nudge-shadow .contact-shadow {
  animation-play-state: paused;
}

@keyframes autonomous-failed-rest {
  0%, 8% {
    transform: translate3d(0, 0, 0) rotate(0deg) scaleX(1) scaleY(1);
  }

  22% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(0deg) scaleX(1.014) scaleY(0.986);
  }

  38%, 48% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(-0.35deg) scaleX(1.038) scaleY(0.962);
  }

  57% {
    transform: translate3d(3px, var(--squish-settle-y), 0) rotate(1.35deg) scaleX(1.045) scaleY(0.955);
  }

  66% {
    transform: translate3d(-1px, var(--squish-settle-y), 0) rotate(-0.55deg) scaleX(0.998) scaleY(1.002);
  }

  78%, 86% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(0deg) scaleX(1.012) scaleY(0.988);
  }

  100% {
    transform: translate3d(0, 0, 0) rotate(0deg) scaleX(1) scaleY(1);
  }
}

@keyframes autonomous-failed-rest-open-eyes {
  0%, 24% { opacity: 1; }
  34%, 50% { opacity: 0; }
  59%, 100% { opacity: 1; }
}

@keyframes autonomous-failed-rest-closed-eyes {
  0%, 26% { opacity: 0; }
  36%, 50% { opacity: 1; }
  59%, 100% { opacity: 0; }
}

@keyframes autonomous-settle-somewhere {
  0%, 10% {
    transform: translate3d(0, 0, 0) rotate(0deg) scaleX(1) scaleY(1);
  }

  24% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(0deg) scaleX(1.012) scaleY(0.988);
  }

  42% {
    transform: translate3d(-1.5px, var(--squish-settle-y), 0) rotate(-0.65deg) scaleX(1.018) scaleY(0.982);
  }

  58% {
    transform: translate3d(1px, var(--squish-settle-y), 0) rotate(0.42deg) scaleX(1.022) scaleY(0.978);
  }

  72%, 82% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(0deg) scaleX(1.026) scaleY(0.974);
  }

  100% {
    transform: translate3d(0, 0, 0) rotate(0deg) scaleX(1) scaleY(1);
  }
}

@keyframes autonomous-settle-gaze {
  0%, 18% { transform: translate3d(0, 0, 0); }
  30%, 44% { transform: translate3d(-3px, 2px, 0); }
  54%, 64% { transform: translate3d(2px, 2px, 0); }
  74%, 100% { transform: translate3d(0, 0, 0); }
}

@keyframes autonomous-inspect-object {
  0%, 10% { transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1); }
  22% { transform: translate3d(0, var(--squish-settle-y), 0) rotate(0deg) scale(1.012, 0.988); }
  36%, 49% { transform: translate3d(-5px, var(--squish-settle-y), 0) rotate(-0.8deg) scale(1.018, 0.982); }
  59% { transform: translate3d(-2px, var(--squish-settle-y), 0) rotate(-0.25deg) scale(1.006, 0.994); }
  69%, 79% { transform: translate3d(-7px, var(--squish-settle-y), 0) rotate(-1.05deg) scale(1.022, 0.978); }
  88% { transform: translate3d(-1px, var(--squish-settle-y), 0) rotate(0deg) scale(1.006, 0.994); }
  100% { transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1); }
}

@keyframes autonomous-inspect-object-gaze {
  0%, 16% { transform: translate3d(0, 0, 0); }
  27%, 48% { transform: translate3d(-5px, 4px, 0); }
  58% { transform: translate3d(-1px, 1px, 0); }
  67%, 80% { transform: translate3d(-4px, 6px, 0); }
  90%, 100% { transform: translate3d(0, 0, 0); }
}

@keyframes autonomous-nudge-minor-failure {
  0%, 12% { transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1); }
  24% { transform: translate3d(3px, var(--squish-settle-y), 0) rotate(0.45deg) scale(1.012, 0.988); }
  36% { transform: translate3d(-8px, var(--squish-settle-y), 0) rotate(-0.2deg) scale(1.018, 0.982); }
  42% {
    transform: translate3d(-15px, var(--squish-settle-y), 0) rotate(-0.55deg) scale(1.026, 0.974);
    animation-timing-function: cubic-bezier(0.38, 0, 0.22, 1);
  }
  68% { transform: translate3d(-34px, var(--squish-settle-y), 0) rotate(-1.15deg) scale(1.05, 0.95); }
  76% { transform: translate3d(-18px, var(--squish-settle-y), 0) rotate(-0.25deg) scale(1.012, 0.988); }
  86% { transform: translate3d(-5px, var(--squish-settle-y), 0) rotate(0.2deg) scale(1.004, 0.996); }
  100% { transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1); }
}

@keyframes autonomous-nudge-gaze {
  0%, 22% { transform: translate3d(0, 0, 0); }
  31%, 60% { transform: translate3d(-6px, 3px, 0); }
  69% { transform: translate3d(2px, 1px, 0); }
  78%, 100% { transform: translate3d(0, 0, 0); }
}

@keyframes autonomous-cardboard-box-nudge {
  0%, 48% {
    transform: translate3d(0, 0, 0) rotate(0deg);
    animation-timing-function: cubic-bezier(0.38, 0, 0.22, 1);
  }
  70% { transform: translate3d(var(--box-nudge-end-x), 0, 0) rotate(-0.55deg); }
  82% { transform: translate3d(var(--box-nudge-end-x), 0, 0) rotate(-0.2deg); }
  100% { transform: translate3d(var(--box-nudge-end-x), 0, 0) rotate(0deg); }
}

/* R4 isolated gaze-led, contact-maintained double shove. The lower-left body
   edge stays loaded against the box through one continuous force curve. */
.room-viewport.is-r4-isolation .idle-rig,
.room-viewport.is-r4-isolation .idle-rig .deform-rig {
  animation-play-state: paused;
}

.room-viewport.is-r4-isolation .reaction-rig.is-r4-push-one {
  animation: r4-actor-push-one var(--autonomous-duration) linear 1 both;
  transform-origin: 375px 1007px;
}

.room-viewport.is-r4-isolation .reaction-rig.is-r4-push-two {
  animation: r4-actor-push-two var(--autonomous-duration) linear 1 both;
  transform-origin: 375px 1007px;
}

.room-viewport.is-r4-isolation .scene-affordance-motion.is-r4-push-one {
  animation: r4-box-push-one var(--autonomous-duration) linear 1 both;
}

.room-viewport.is-r4-isolation .scene-affordance-motion.is-r4-push-two {
  animation: r4-box-push-two var(--autonomous-duration) linear 1 both;
}

.room-viewport.is-r4-isolation.r4-phase-first-approach-hold .reaction-pupil {
  animation: r4-eye-preview-box 800ms cubic-bezier(0.2, 0.72, 0.22, 1) 1 both;
}

.room-viewport.is-r4-isolation .reaction-rig.is-r4-push-one .reaction-pupil,
.room-viewport.is-r4-isolation .reaction-rig.is-r4-push-two .reaction-pupil {
  animation: r4-eye-track-box var(--autonomous-duration) cubic-bezier(0.2, 0.72, 0.22, 1) 1 both;
}

.room-viewport.is-r4-isolation .reaction-rig.is-r4-push-one .character-body-normal,
.room-viewport.is-r4-isolation .reaction-rig.is-r4-push-two .character-body-normal {
  animation: r4-body-contact-yield var(--autonomous-duration) linear 1 both;
}

.r4-contact-dent {
  display: none;
  position: absolute;
  z-index: 4;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
}

.r4-contact-dent-rim {
  position: absolute;
  left: 18%;
  top: 75.5%;
  width: 12%;
  height: 12%;
  border-radius: 50%;
  opacity: 0;
  background: radial-gradient(ellipse at 8% 50%, rgba(57, 38, 23, 0.12) 0%, rgba(87, 61, 40, 0.06) 34%, rgba(129, 98, 70, 0.012) 64%, rgba(129, 98, 70, 0) 84%);
  transform-origin: left center;
}

.room-viewport.is-r4-isolation .reaction-rig.is-r4-push-one .r4-contact-dent,
.room-viewport.is-r4-isolation .reaction-rig.is-r4-push-two .r4-contact-dent {
  display: block;
  animation: r4-body-contact-yield var(--autonomous-duration) linear 1 both,
             r4-contact-pressure-visible var(--autonomous-duration) linear 1 both;
}

.room-viewport.is-r4-isolation .reaction-rig.is-r4-push-one .r4-contact-dent-rim,
.room-viewport.is-r4-isolation .reaction-rig.is-r4-push-two .r4-contact-dent-rim {
  animation: r4-contact-pressure-track var(--autonomous-duration) linear 1 both;
}

.room-viewport.is-r4-isolation .shadow-world-rig.is-r4-push-shadow .ground-shadow,
.room-viewport.is-r4-isolation .shadow-world-rig.is-r4-push-shadow .contact-shadow {
  animation-play-state: paused;
}

.room-viewport.is-r4-isolation.r4-phase-push-one .shadow-world-rig.is-r4-push-shadow .shadow-motion-rig {
  animation: r4-shadow-push-one var(--autonomous-duration) linear 1 both;
}

.room-viewport.is-r4-isolation.r4-phase-push-two .shadow-world-rig.is-r4-push-shadow .shadow-motion-rig {
  animation: r4-shadow-push-two var(--autonomous-duration) linear 1 both;
}

@keyframes r4-actor-push-one {
  0%, 10% { transform: translate3d(0, 0, 0) rotate(0deg) scaleX(1) scaleY(1); }
  18% { transform: translate3d(-3px, 1px, 0) rotate(-0.15deg) scaleX(1.01) scaleY(0.99); }
  22% { transform: translate3d(-6px, 2.5px, 0) rotate(-0.25deg) scaleX(1.018) scaleY(0.982); }
  26% { transform: translate3d(-8px, 4px, 0) rotate(-0.36deg) scaleX(1.025) scaleY(0.975); }
  38% { transform: translate3d(-12px, 7px, 0) rotate(-0.7deg) scaleX(1.04) scaleY(0.96); }
  51% { transform: translate3d(-15px, 8px, 0) rotate(-0.8deg) scaleX(1.045) scaleY(0.955); }
  63% { transform: translate3d(-18px, 8px, 0) rotate(-0.85deg) scaleX(1.05) scaleY(0.95); }
  78% { transform: translate3d(-18px, 7px, 0) rotate(-0.72deg) scaleX(1.047) scaleY(0.953); }
  86% { transform: translate3d(-14px, 5px, 0) rotate(-0.48deg) scaleX(1.035) scaleY(0.965); }
  94% { transform: translate3d(-5px, 2px, 0) rotate(-0.16deg) scaleX(1.012) scaleY(0.988); }
  100% { transform: translate3d(0, 0, 0) rotate(0deg) scaleX(1) scaleY(1); }
}

@keyframes r4-actor-push-two {
  0%, 10% { transform: translate3d(0, 0, 0) rotate(0deg) scaleX(1) scaleY(1); }
  18% { transform: translate3d(-3px, 1px, 0) rotate(-0.15deg) scaleX(1.01) scaleY(0.99); }
  22% { transform: translate3d(-6px, 2.5px, 0) rotate(-0.26deg) scaleX(1.018) scaleY(0.982); }
  26% { transform: translate3d(-8px, 4px, 0) rotate(-0.38deg) scaleX(1.026) scaleY(0.974); }
  38% { transform: translate3d(-13px, 7px, 0) rotate(-0.75deg) scaleX(1.042) scaleY(0.958); }
  51% { transform: translate3d(-18px, 8px, 0) rotate(-0.88deg) scaleX(1.05) scaleY(0.95); }
  63% { transform: translate3d(-22px, 9px, 0) rotate(-0.95deg) scaleX(1.055) scaleY(0.945); }
  78% { transform: translate3d(-24px, 8px, 0) rotate(-0.82deg) scaleX(1.052) scaleY(0.948); }
  86% { transform: translate3d(-21px, 7px, 0) rotate(-0.62deg) scaleX(1.045) scaleY(0.955); }
  92% { transform: translate3d(-14px, 5px, 0) rotate(-0.4deg) scaleX(1.032) scaleY(0.968); }
  97% { transform: translate3d(-4px, 1px, 0) rotate(-0.12deg) scaleX(1.01) scaleY(0.99); }
  100% { transform: translate3d(0, 0, 0) rotate(0deg) scaleX(1) scaleY(1); }
}

@keyframes r4-box-push-one {
  0%, 39% {
    transform: translate3d(0, 0, 0) rotate(0deg);
    animation-timing-function: cubic-bezier(0.3, 0, 0.18, 1);
  }
  82%, 100% { transform: translate3d(-22px, 0, 0) rotate(0deg); }
}

@keyframes r4-box-push-two {
  0%, 39% {
    transform: translate3d(0, 0, 0) rotate(0deg);
    animation-timing-function: cubic-bezier(0.3, 0, 0.18, 1);
  }
  82%, 100% { transform: translate3d(-38px, 0, 0) rotate(0deg); }
}

@keyframes r4-eye-preview-box {
  0% { transform: translate3d(0, 0, 0); }
  28%, 100% { transform: translate3d(-7px, 5px, 0); }
}

@keyframes r4-eye-track-box {
  0% { transform: translate3d(-3px, 2px, 0); }
  18%, 88% { transform: translate3d(-8px, 6px, 0); }
  100% { transform: translate3d(0, 0, 0); }
}

@keyframes r4-contact-pressure-visible {
  0%, 21.5% {
    opacity: 0;
  }
  22% {
    opacity: 0.34;
  }
  38% {
    opacity: 0.44;
  }
  48%, 62% {
    opacity: 0.52;
  }
  70% { opacity: 0.4; }
  76% { opacity: 0.25; }
  82% { opacity: 0.08; }
  86%, 100% { opacity: 0; }
}

@keyframes r4-contact-pressure-track {
  0%, 21.5% { opacity: 0; transform: translate3d(0, 0, 0) scaleX(0.82) scaleY(0.9); }
  22% { opacity: 0.28; transform: translate3d(3px, 0, 0) scaleX(0.86) scaleY(0.93); }
  26% { opacity: 0.34; transform: translate3d(6px, 0, 0) scaleX(0.9) scaleY(0.96); }
  39% { opacity: 0.42; transform: translate3d(9px, 0, 0) scaleX(0.94) scaleY(0.98); }
  48%, 62% { opacity: 0.48; transform: translate3d(12px, 0, 0) scaleX(0.96) scaleY(0.99); }
  70% { opacity: 0.34; transform: translate3d(8px, 0, 0) scaleX(0.92) scaleY(0.97); }
  76% { opacity: 0.2; transform: translate3d(4px, 0, 0) scaleX(0.88) scaleY(0.95); }
  82% { opacity: 0.06; transform: translate3d(2px, 0, 0) scaleX(0.84) scaleY(0.92); }
  86%, 100% { opacity: 0; transform: translate3d(0, 0, 0) scaleX(0.82) scaleY(0.9); }
}

@keyframes r4-body-contact-yield {
  0%, 21.5% {
    -webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 0 87.5%, 0 85.5%, 0 84.5%, 0 83.5%, 0 82.5%, 0 81.5%, 0 80.5%, 0 79.5%, 0 78.5%, 0 77.5%, 0 76.5%, 0 76%);
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 0 87.5%, 0 85.5%, 0 84.5%, 0 83.5%, 0 82.5%, 0 81.5%, 0 80.5%, 0 79.5%, 0 78.5%, 0 77.5%, 0 76.5%, 0 76%);
  }
  22% {
    -webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 26.4% 87.5%, 25.8% 85.5%, 23.8% 84.5%, 23% 83.5%, 22% 82.5%, 21.4% 81.5%, 20.8% 80.5%, 20% 79.5%, 19% 78.5%, 17.6% 77.5%, 16.1% 76.5%, 0 76%);
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 26.4% 87.5%, 25.8% 85.5%, 23.8% 84.5%, 23% 83.5%, 22% 82.5%, 21.4% 81.5%, 20.8% 80.5%, 20% 79.5%, 19% 78.5%, 17.6% 77.5%, 16.1% 76.5%, 0 76%);
  }
  26% {
    -webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 26.4% 87.5%, 26% 85.5%, 24.3% 84.5%, 23.5% 83.5%, 22.6% 82.5%, 22.4% 81.5%, 22.3% 80.5%, 21.5% 79.5%, 20.2% 78.5%, 18.3% 77.5%, 16.3% 76.5%, 0 76%);
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 26.4% 87.5%, 26% 85.5%, 24.3% 84.5%, 23.5% 83.5%, 22.6% 82.5%, 22.4% 81.5%, 22.3% 80.5%, 21.5% 79.5%, 20.2% 78.5%, 18.3% 77.5%, 16.3% 76.5%, 0 76%);
  }
  39% {
    -webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 26.5% 87.5%, 26.2% 85.5%, 24.3% 84.5%, 23.8% 83.5%, 22.8% 82.5%, 22.6% 81.5%, 22.8% 80.5%, 22.5% 79.5%, 21.2% 78.5%, 19.3% 77.5%, 16.8% 76.5%, 0 76%);
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 26.5% 87.5%, 26.2% 85.5%, 24.3% 84.5%, 23.8% 83.5%, 22.8% 82.5%, 22.6% 81.5%, 22.8% 80.5%, 22.5% 79.5%, 21.2% 78.5%, 19.3% 77.5%, 16.8% 76.5%, 0 76%);
  }
  48%, 62% {
    -webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 26.5% 87.5%, 26.2% 85.5%, 24.3% 84.5%, 23.8% 83.5%, 22.8% 82.5%, 22.6% 81.5%, 22.8% 80.5%, 22.5% 79.5%, 21.2% 78.5%, 19.3% 77.5%, 16.8% 76.5%, 0 76%);
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 26.5% 87.5%, 26.2% 85.5%, 24.3% 84.5%, 23.8% 83.5%, 22.8% 82.5%, 22.6% 81.5%, 22.8% 80.5%, 22.5% 79.5%, 21.2% 78.5%, 19.3% 77.5%, 16.8% 76.5%, 0 76%);
  }
  70% {
    -webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 26.4% 87.5%, 26% 85.5%, 24.3% 84.5%, 23.5% 83.5%, 22.6% 82.5%, 22.4% 81.5%, 22.3% 80.5%, 21.5% 79.5%, 20.2% 78.5%, 18.3% 77.5%, 16.3% 76.5%, 0 76%);
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 26.4% 87.5%, 26% 85.5%, 24.3% 84.5%, 23.5% 83.5%, 22.6% 82.5%, 22.4% 81.5%, 22.3% 80.5%, 21.5% 79.5%, 20.2% 78.5%, 18.3% 77.5%, 16.3% 76.5%, 0 76%);
  }
  76% {
    -webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 26.4% 87.5%, 25.8% 85.5%, 23.8% 84.5%, 23% 83.5%, 22% 82.5%, 21.4% 81.5%, 20.8% 80.5%, 20% 79.5%, 19% 78.5%, 17.6% 77.5%, 16.1% 76.5%, 0 76%);
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 26.4% 87.5%, 25.8% 85.5%, 23.8% 84.5%, 23% 83.5%, 22% 82.5%, 21.4% 81.5%, 20.8% 80.5%, 20% 79.5%, 19% 78.5%, 17.6% 77.5%, 16.1% 76.5%, 0 76%);
  }
  82% {
    -webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 0 87.5%, 0 85.5%, 0 84.5%, 0 83.5%, 0 82.5%, 0 81.5%, 0 80.5%, 0 79.5%, 0 78.5%, 0 77.5%, 0 76.5%, 0 76%);
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 0 87.5%, 0 85.5%, 0 84.5%, 0 83.5%, 0 82.5%, 0 81.5%, 0 80.5%, 0 79.5%, 0 78.5%, 0 77.5%, 0 76.5%, 0 76%);
  }
  86%, 100% {
    -webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 0 87.5%, 0 85.5%, 0 84.5%, 0 83.5%, 0 82.5%, 0 81.5%, 0 80.5%, 0 79.5%, 0 78.5%, 0 77.5%, 0 76.5%, 0 76%);
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 89.5%, 0 87.5%, 0 85.5%, 0 84.5%, 0 83.5%, 0 82.5%, 0 81.5%, 0 80.5%, 0 79.5%, 0 78.5%, 0 77.5%, 0 76.5%, 0 76%);
  }
}

@keyframes r4-shadow-push-one {
  0%, 12% { transform: translate3d(0, 0, 0) scaleX(1); }
  38%, 78% { transform: translate3d(-5px, 1px, 0) scaleX(1.024); }
  100% { transform: translate3d(0, 0, 0) scaleX(1); }
}

@keyframes r4-shadow-push-two {
  0%, 12% { transform: translate3d(0, 0, 0) scaleX(1); }
  38%, 78% { transform: translate3d(-6px, 1px, 0) scaleX(1.028); }
  100% { transform: translate3d(0, 0, 0) scaleX(1); }
}

.deform-rig {
  position: absolute;
  left: 0;
  top: 0;
  width: 750px;
  height: 1334px;
  pointer-events: none;
  transform-origin: 375px 1042px;
  animation: idle-deform 5.6s linear var(--idle-animation-delay) infinite;
}

.object-rig {
  position: absolute;
  z-index: 2;
  pointer-events: none;
  transform-origin: center;
}

.found-object {
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
}

.character-body {
  z-index: 3;
}

.eye-socket-pair {
  z-index: 4;
}

.pupil {
  z-index: 5;
}

.sleep-eye-pair {
  left: 282px;
  top: 621px;
  z-index: 5;
  width: 151px;
  height: 80px;
  opacity: 0;
}

.sleep-eye {
  position: absolute;
  top: 39px;
  width: 31px;
  height: 6px;
  border-radius: 50%;
  background: rgba(33, 28, 23, 0.88);
  transform: scaleY(0.62);
}

.sleep-eye-left {
  left: 18px;
  transform: rotate(2deg) scaleY(0.62);
}

.sleep-eye-right {
  right: 18px;
  transform: rotate(-2deg) scaleY(0.62);
}

.character-hit-target {
  position: absolute;
  z-index: 6;
  border-radius: 50%;
  pointer-events: auto;
  background: transparent;
}

.object-hit-target {
  position: absolute;
  z-index: 7;
  border-radius: 50%;
  pointer-events: auto;
  background: transparent;
}

.reaction-rig.is-squish-settling {
  animation: squish-settle-to-ground var(--squish-settle-duration) linear 1 forwards;
  transform-origin: 375px 1007px;
}

.idle-rig.qa-squish-settle,
.idle-rig.qa-squish-settle .deform-rig,
.design-stage.qa-squish-settle .ground-shadow,
.design-stage.qa-squish-settle .contact-shadow {
  animation-play-state: paused;
}

.reaction-rig.is-squishing {
  animation: deliberate-squish 2.25s linear 1;
  transform-origin: 375px 1007px;
}

.reaction-rig.is-squishing .eye-socket-pair {
  animation: pressure-eye-sockets 2.25s linear 1;
  transform-origin: center;
}

.reaction-rig.is-squishing .reaction-pupil[data-eye="left"] {
  animation: pressure-pupil-left 2.25s linear 1;
  transform-origin: center;
}

.reaction-rig.is-squishing .reaction-pupil[data-eye="right"] {
  animation: pressure-pupil-right 2.25s linear 1;
  transform-origin: center;
}

.idle-rig.qa-squish {
  animation: none;
  transform: translate3d(0, 13.7px, 0) rotate(-0.5deg);
}

.idle-rig.qa-squish .deform-rig {
  animation: none;
  transform: scaleX(1) scaleY(1);
}

.design-stage.qa-squish .ground-shadow {
  animation: strong-squish-ground-shadow 2.25s linear 1;
}

.design-stage.qa-squish .contact-shadow {
  animation: strong-squish-contact-shadow 2.25s linear 1;
}

.idle-rig.qa-squish-exit {
  animation: squish-exit-to-idle 1.55s linear 1 forwards;
}

.idle-rig.qa-squish-exit .deform-rig {
  animation: none;
  transform: scaleX(1) scaleY(1);
}

.design-stage.qa-squish-exit .ground-shadow {
  animation: squish-shadow-exit 1.55s linear 1 forwards;
}

.design-stage.qa-squish-exit .contact-shadow {
  animation: squish-contact-shadow-exit 1.55s linear 1 forwards;
}

.reaction-rig.is-sleep-entering {
  animation: sleep-body-enter 2.35s linear 1 forwards;
}

.reaction-rig.is-sleep-entering .eye-socket-pair,
.reaction-rig.is-sleep-entering .pupil {
  animation: open-eyes-hide 1.65s linear 1 forwards;
}

.reaction-rig.is-sleep-entering .sleep-eye-pair {
  animation: sleep-eyes-show 1.75s linear 1 forwards;
}

.idle-rig.qa-sleep,
.idle-rig.qa-sleep .deform-rig,
.design-stage.qa-sleep .ground-shadow,
.design-stage.qa-sleep .contact-shadow,
.idle-rig.life-sleep,
.idle-rig.life-sleep .deform-rig,
.design-stage.life-sleep .ground-shadow,
.design-stage.life-sleep .contact-shadow {
  animation-play-state: paused;
}

.reaction-rig.is-sleeping {
  animation: sleep-breathe 4.2s ease-in-out infinite;
}

.reaction-rig.is-sleeping .eye-socket-pair,
.reaction-rig.is-sleeping .pupil {
  opacity: 0;
}

.reaction-rig.is-sleeping .sleep-eye-pair {
  opacity: 1;
}

.reaction-rig.is-waking {
  animation: sleep-body-wake 1.5s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-waking .eye-socket-pair,
.reaction-rig.is-waking .pupil {
  animation: open-eyes-return 1.5s ease-in-out 1;
}

.reaction-rig.is-waking .sleep-eye-pair {
  animation: sleep-eyes-hide 1.1s ease-in-out 1 forwards;
}

.reaction-rig.is-object-storing {
  animation: object-store-body 1.8s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-object-storing .reaction-pupil {
  animation: object-store-gaze 1.8s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.object-rig.is-storing {
  animation: approved-store-object-path 8.8s linear 1 forwards;
}

.reaction-rig.is-object-rejecting {
  animation: object-reject-body 1.7s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-object-rejecting .reaction-pupil {
  animation: object-reject-gaze 1.7s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.object-rig.is-rejecting {
  animation: object-reject-exit 1.7s linear 1 forwards;
}

.reaction-rig.is-object-heavy-storing {
  animation: object-heavy-store-body 2.05s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-object-heavy-storing .reaction-pupil {
  animation: object-heavy-store-gaze 2.05s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.object-rig.is-heavy-storing {
  animation: object-heavy-store-sink 2.05s linear 1 forwards;
}

.reaction-rig.is-noticing.body-left {
  animation: click-notice-left 1.2s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-noticing.body-right {
  animation: click-notice-right 1.2s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-noticing.body-center {
  animation: click-notice-center 1.2s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-noticing.gaze-left .reaction-pupil {
  animation: click-gaze-left 1.2s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-noticing.gaze-right .reaction-pupil {
  animation: click-gaze-right 1.2s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-noticing.gaze-center .reaction-pupil {
  animation: click-gaze-center 1.2s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-noticing.gaze-up .reaction-pupil {
  animation: click-gaze-up 1.2s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-noticing.gaze-down .reaction-pupil {
  animation: click-gaze-down 1.2s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-noticing.gaze-up-left .reaction-pupil {
  animation: click-gaze-up-left 1.2s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-noticing.gaze-up-right .reaction-pupil {
  animation: click-gaze-up-right 1.2s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

/* Stage 4-F.6-P1 v0.2 — object-specific sightlines for elevated room targets. */
.reaction-rig.is-noticing.gaze-window-light .reaction-pupil {
  animation: ambient-gaze-window-light 1.2s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-noticing.gaze-shelf .reaction-pupil {
  animation: ambient-gaze-shelf 2.2s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-noticing.body-center.gaze-shelf {
  animation-duration: 2.2s;
}

/* Stage 4-H-P4.3.1 — eye-led tracking of a moving floor-light patch.
   The clock lives on the reaction rig only to provide one reliable completion
   event; the body, feet, shadow and locomotion renderers remain untouched. */
.reaction-rig.is-autonomous-light-follow {
  animation: autonomous-light-follow-clock var(--autonomous-duration) linear 1;
}

.reaction-rig.is-autonomous-light-follow .reaction-pupil {
  animation: autonomous-light-follow-gaze var(--autonomous-duration) linear 1;
}

.light-follow-floor-patch {
  position: absolute;
  left: 0;
  top: 0;
  width: 54px;
  height: 18px;
  z-index: 2;
  border-radius: 50%;
  pointer-events: none;
  opacity: 0;
  background: rgba(255, 242, 184, 0.72);
  box-shadow:
    0 0 12px rgba(255, 238, 160, 0.76),
    0 0 26px rgba(255, 228, 132, 0.42);
  filter: blur(1.5px);
  transform-origin: center;
  animation: autonomous-light-follow-patch var(--autonomous-duration) linear 1 both;
}

/* Stage 4-H-P4.3.2 — a faint, dust-bearing current crosses the aperture.
   v0.3.18 renders the deformation as complete-body atlas frames whose local
   warp fades to zero before the outer silhouette and feet. */
.reaction-rig.is-autonomous-aperture-airflow {
  animation: autonomous-aperture-airflow-clock var(--autonomous-duration) linear 1;
}

.reaction-rig.is-autonomous-aperture-airflow .reaction-pupil {
  animation: autonomous-aperture-airflow-gaze var(--autonomous-duration) linear 1;
}

.aperture-airflow-rig {
  position: absolute;
  left: 318px;
  top: 750px;
  width: 114px;
  height: 112px;
  z-index: 2;
  overflow: hidden;
  border-radius: 50%;
  pointer-events: none;
}

.aperture-airflow-rig::before {
  content: "";
  position: absolute;
  left: -58px;
  top: 18px;
  width: 82px;
  height: 74px;
  border-radius: 50%;
  opacity: 0;
  background: radial-gradient(ellipse at center,
    rgba(232, 210, 164, 0.38) 0%,
    rgba(201, 177, 130, 0.2) 48%,
    rgba(174, 151, 113, 0) 74%);
  animation: v0315-airflow-field var(--autonomous-duration) linear 1 both;
}

.aperture-airflow-mote {
  position: absolute;
  left: -46px;
  width: 84px;
  height: 17px;
  border-top: 6px solid rgba(196, 169, 119, 0.98);
  border-radius: 50% 52% 0 0;
  background: transparent;
  filter: drop-shadow(0 1px 2px rgba(91, 72, 48, 0.48)) drop-shadow(0 0 3px rgba(229, 204, 153, 0.34));
  opacity: 0;
  animation: autonomous-aperture-airflow-mote var(--autonomous-duration) linear 1;
}

.aperture-airflow-mote-one { top: 35px; --airflow-tilt: 4deg; }
.aperture-airflow-mote-two { top: 53px; width: 69px; --airflow-tilt: -3deg; animation-delay: 180ms; animation-duration: calc(var(--autonomous-duration) - 180ms); }
.aperture-airflow-mote-three { top: 70px; width: 57px; --airflow-tilt: 6deg; animation-delay: 360ms; animation-duration: calc(var(--autonomous-duration) - 360ms); }

.aperture-airflow-patch-window {
  position: absolute;
  left: 247px;
  top: 678px;
  width: 256px;
  height: 256px;
  z-index: 3;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
  animation: v0319-airflow-patch-handoff var(--autonomous-duration) linear 1 both;
}

.aperture-airflow-patch-atlas {
  position: absolute;
  left: 0;
  top: 0;
  width: 3072px;
  height: 2048px;
  max-width: none;
  animation: v0319-airflow-patch-atlas var(--autonomous-duration) steps(1, end) 1 both;
}

/* Stage 4-H-P4.4.3 — Object Stuck is defined by an independent prop lifecycle,
   not another inspection pose. The jammed rubber ball stays behind the canonical body
   and therefore exists only inside the aperture; the released copy comes
   forward after the jammed copy has vanished and rolls clear. */
.idle-rig.autonomous-object-stuck,
.idle-rig.autonomous-object-stuck .deform-rig {
  animation-play-state: paused;
}

.reaction-rig.is-autonomous-object-stuck-settling {
  transform-origin: 375px 1042px;
  animation: autonomous-object-stuck-settle var(--squish-settle-duration) cubic-bezier(0.35, 0, 0.25, 1) 1 both;
}

.idle-rig.autonomous-object-stuck.autonomous-phase-object-jammed,
.idle-rig.autonomous-object-stuck.autonomous-phase-recovering-from-object-stuck {
  animation: none;
  transform: translate3d(0, 13.7px, 0) rotate(-0.5deg);
}

.idle-rig.autonomous-object-stuck.autonomous-phase-object-jammed .deform-rig,
.idle-rig.autonomous-object-stuck.autonomous-phase-recovering-from-object-stuck .deform-rig {
  animation: none;
  transform: scaleX(1) scaleY(1);
}

.reaction-rig.is-autonomous-object-stuck {
  transform-origin: 375px 1042px;
  animation: autonomous-object-stuck-body var(--autonomous-duration) linear 1 both;
}

.reaction-rig.is-autonomous-object-stuck-recovering {
  transform-origin: 375px 1042px;
  animation: autonomous-object-stuck-grounded-recovery 520ms ease-out 1 both;
}

/* Stage 4-H-P4.5.2 — preserve the rendered Idle pose while easing down to
   ground contact. The in-flight packet is independent; the body only tracks,
   absorbs the small rim impact and acknowledges the miss. */
.reaction-rig.is-autonomous-failed-delivery-settling {
  transform-origin: 375px 1042px;
  animation: autonomous-failed-delivery-settle var(--squish-settle-duration) cubic-bezier(0.35, 0, 0.25, 1) 1 both;
}

.idle-rig.autonomous-failed-delivery.autonomous-phase-delivery-in-flight {
  animation: none;
  transform: translate3d(0, 13.7px, 0) rotate(-0.5deg);
}

.idle-rig.autonomous-failed-delivery.autonomous-phase-delivery-in-flight .deform-rig {
  animation: none;
  transform: scaleX(1) scaleY(1);
}

.reaction-rig.is-autonomous-failed-delivery {
  transform-origin: 375px 1042px;
  animation: autonomous-failed-delivery-body var(--autonomous-duration) linear 1 both;
}

.reaction-rig.is-autonomous-failed-delivery .reaction-pupil {
  animation: autonomous-failed-delivery-gaze var(--autonomous-duration) linear 1 both;
}

.failed-delivery-prop-rig {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 7;
  width: 750px;
  height: 1120px;
  overflow: visible;
  pointer-events: none;
}

.failed-delivery-packet,
.failed-delivery-floor-envelope {
  position: absolute;
  left: 0;
  top: 0;
  box-sizing: border-box;
  width: 70px;
  height: 46px;
  overflow: hidden;
  border: 3px solid rgba(91, 63, 39, 0.72);
  border-radius: 6px 7px 8px 5px;
  background: #c69a67;
  box-shadow: 0 5px 8px rgba(53, 37, 24, 0.22);
  transform-origin: 35px 23px;
}

.failed-delivery-packet {
  animation: autonomous-failed-delivery-packet var(--autonomous-duration) linear 1 both;
}

.failed-delivery-floor-world {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 4;
  width: 750px;
  height: 1334px;
  pointer-events: none;
  transform-origin: 375px 1042px;
}

.failed-delivery-floor-depth,
.failed-delivery-floor-presentation,
.failed-delivery-floor-idle-frame {
  position: absolute;
  inset: 0;
  pointer-events: none;
  transform-origin: 375px 1042px;
}

.failed-delivery-floor-idle-frame {
  transform: translate3d(0, 13.7px, 0) rotate(-0.5deg);
}

.failed-delivery-floor-envelope {
  transform: translate3d(548px, 1018px, 0) rotate(4deg) scale(1, 0.62);
}

.failed-delivery-flap {
  position: absolute;
  left: 7px;
  top: -18px;
  width: 50px;
  height: 38px;
  border: 2px solid rgba(108, 75, 45, 0.5);
  background: #d8b889;
  transform: rotate(45deg) skew(-5deg, -5deg);
}

.failed-delivery-seal {
  position: absolute;
  left: 29px;
  top: 18px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #8d5c49;
  box-shadow: inset 0 1px 2px rgba(255, 235, 204, 0.35);
}

/* Stage 4-H-P4.5.1 v0.2 — after the half-frame exit, the grounded body leans
   left and down far enough to bring both eyes back into the locked CENTER
   frame. Two explicit blinks precede the separate center glance. */
.reaction-rig.is-autonomous-almost-leave-pause {
  transform-origin: 375px 1042px;
  animation: autonomous-almost-leave-threshold-pause 5.2s linear 1 both;
}

.reaction-rig.is-autonomous-almost-leave-pause .reaction-pupil {
  animation: autonomous-almost-leave-gaze-and-blinks 5.2s linear 1 both;
}

.reaction-rig.is-autonomous-almost-leave-pause .eye-socket-pair {
  animation: autonomous-almost-leave-open-eyes 5.2s linear 1 both;
}

.reaction-rig.is-autonomous-almost-leave-pause .almost-leave-eye-lids {
  animation: autonomous-almost-leave-closed-eyes 5.2s linear 1 both;
}

.reaction-rig.is-autonomous-object-stuck .reaction-pupil {
  animation: autonomous-object-stuck-gaze var(--autonomous-duration) linear 1 both;
}

.shadow-world-rig.is-autonomous-object-stuck-shadow .shadow-motion-rig {
  animation: autonomous-object-stuck-shadow var(--autonomous-duration) linear 1 both;
}

.object-stuck-aperture-rig,
.object-stuck-release-rig {
  position: absolute;
  left: 318px;
  top: 750px;
  width: 114px;
  height: 112px;
  pointer-events: none;
}

.object-stuck-aperture-rig {
  z-index: 2;
  overflow: hidden;
  border-radius: 50%;
}

.object-stuck-release-rig {
  z-index: 6;
  overflow: visible;
}

.object-stuck-ball {
  position: absolute;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  box-sizing: border-box;
  border: 4px solid rgba(91, 47, 37, 0.88);
  background:
    radial-gradient(circle at 31% 25%, rgba(250, 224, 194, 0.94) 0 7%, transparent 8%),
    linear-gradient(112deg, transparent 0 38%, rgba(220, 196, 158, 0.95) 39% 48%, transparent 49% 100%),
    radial-gradient(circle at 39% 34%, #c27658 0 20%, #a35642 49%, #7b3d32 77%, #5b2f29 100%);
  box-shadow:
    inset -8px -9px 10px rgba(67, 30, 25, 0.34),
    inset 3px 3px 5px rgba(244, 196, 157, 0.2),
    0 5px 8px rgba(54, 34, 24, 0.42);
}

.object-stuck-ball::after {
  content: "";
  position: absolute;
  left: 10px;
  top: 26px;
  width: 30px;
  height: 7px;
  border-top: 2px solid rgba(83, 40, 32, 0.52);
  border-radius: 50%;
  transform: rotate(-13deg);
}

.object-stuck-ball-jammed {
  left: -60px;
  top: 29px;
  animation: autonomous-object-stuck-jammed-ball var(--autonomous-duration) linear 1 both;
}

.object-stuck-ball-released {
  left: 29px;
  top: 29px;
  opacity: 0;
  animation: autonomous-object-stuck-released-ball var(--autonomous-duration) linear 1 both;
}

.object-stuck-pressure-line {
  position: absolute;
  z-index: 3;
  width: 22px;
  height: 11px;
  border-top: 4px solid rgba(226, 205, 174, 0.92);
  border-radius: 50%;
  opacity: 0;
  animation: autonomous-object-stuck-pressure var(--autonomous-duration) linear 1 both;
}

.object-stuck-pressure-one { left: 7px; top: 23px; transform: rotate(-39deg); }
.object-stuck-pressure-two { right: 5px; top: 26px; transform: rotate(35deg); }
.object-stuck-pressure-three { left: 46px; bottom: 5px; transform: rotate(2deg); }

/* Stage 4-H-P4.3.3 v0.8 — settle the currently rendered idle pose onto the
   floor before inspection. The first 14% retains the intact canonical body;
   connected foot articulation is mounted only after grounded contact, then
   an explicit grounded recovery restarts Idle from the same endpoint. */
.idle-rig.autonomous-foot-check,
.idle-rig.autonomous-foot-check .deform-rig {
  animation-play-state: paused;
}

.reaction-rig.is-autonomous-foot-check {
  transform-origin: 375px 1042px;
  animation: autonomous-foot-check-weight var(--autonomous-duration) cubic-bezier(0.35, 0, 0.25, 1) 1 both;
}

.idle-rig.autonomous-foot-check.autonomous-phase-recovering-from-foot-check {
  animation: none;
  transform: translate3d(0, 13.7px, 0) rotate(-0.5deg);
}

.idle-rig.autonomous-foot-check.autonomous-phase-recovering-from-foot-check .deform-rig {
  animation: none;
  transform: scaleX(1) scaleY(1);
}

.reaction-rig.is-autonomous-foot-check-recovering {
  transform-origin: 375px 1042px;
  animation: autonomous-foot-check-grounded-recovery 520ms ease-out 1 both;
}

.reaction-rig.is-autonomous-foot-check .character-body-normal {
  opacity: 1;
  animation: autonomous-foot-check-canonical-visibility var(--autonomous-duration) linear 1 both;
}

.foot-check-body-rig {
  position: absolute;
  z-index: 3;
  overflow: visible;
  pointer-events: none;
  opacity: 0;
  animation: none;
}

/* Foot Check alone owns its inspection visibility clock. Keeping this off the
   base rig prevents Failed Delivery and every other timed Event from exposing
   an articulated foot fragment. */
.idle-rig.autonomous-foot-check .foot-check-body-rig {
  animation: autonomous-foot-check-articulated-visibility var(--autonomous-duration) linear 1 both;
}

/* v0.3.7 — controlled locomotion stays on the canonical body source.
   The already validated seamless body fragments replace the full-body gait
   atlas visually, so entering/leaving a walk cannot change the silhouette in
   one compositor frame. The atlas may remain mounted only as a non-painting
   compatibility preload for the existing movement state machine. */
.actor-world-rig.is-controlled-capturing .character-body-normal,
.actor-world-rig.is-controlled-holding .character-body-normal,
.actor-world-rig.is-controlled-settling .character-body-normal,
.actor-world-rig.is-controlled-grounded .character-body-normal,
.actor-world-rig.is-controlled-moving .character-body-normal,
.actor-world-rig.is-controlled-releasing .character-body-normal {
  opacity: 0 !important;
}

.actor-world-rig.is-controlled-capturing .controlled-walk-body-rig,
.actor-world-rig.is-controlled-holding .controlled-walk-body-rig,
.actor-world-rig.is-controlled-settling .controlled-walk-body-rig,
.actor-world-rig.is-controlled-grounded .controlled-walk-body-rig,
.actor-world-rig.is-controlled-moving .controlled-walk-body-rig,
.actor-world-rig.is-controlled-releasing .controlled-walk-body-rig {
  opacity: 1;
  animation: none;
}

.actor-world-rig.is-controlled-moving .planted-gait-body {
  opacity: 0 !important;
  visibility: hidden !important;
  animation: none !important;
}

.actor-world-rig.is-controlled-moving .controlled-walk-body-rig .foot-check-foot-left {
  animation: controlled-canonical-right-foot var(--actor-gait-pair-duration) linear infinite;
}

.actor-world-rig.is-controlled-moving .controlled-walk-body-rig .foot-check-foot-right {
  animation: controlled-canonical-left-foot var(--actor-gait-pair-duration) linear infinite;
}

.actor-world-rig.is-controlled-moving .controlled-walk-body-rig .foot-check-joint-left {
  animation: controlled-canonical-right-joint var(--actor-gait-pair-duration) linear infinite;
}

.actor-world-rig.is-controlled-moving .controlled-walk-body-rig .foot-check-joint-right {
  animation: controlled-canonical-left-joint var(--actor-gait-pair-duration) linear infinite;
}

.foot-check-fragment {
  position: absolute;
  overflow: hidden;
  pointer-events: none;
}

.foot-check-fragment-image {
  position: absolute;
  width: 512px;
  height: 512px;
  max-width: none;
}

.foot-check-static-top { left: 0; top: 0; width: 512px; height: 430px; }
.foot-check-static-top .foot-check-fragment-image { left: 0; top: 0; }
.foot-check-static-left { left: 0; top: 418px; width: 126px; height: 94px; }
.foot-check-static-left .foot-check-fragment-image { left: 0; top: -418px; }
.foot-check-static-middle { left: 195px; top: 418px; width: 89px; height: 94px; }
.foot-check-static-middle .foot-check-fragment-image { left: -195px; top: -418px; }
.foot-check-static-right { left: 351px; top: 418px; width: 161px; height: 94px; }
.foot-check-static-right .foot-check-fragment-image { left: -351px; top: -418px; }

.foot-check-foot {
  top: 418px;
  height: 81px;
  transform-origin: center 14px;
  will-change: transform;
  z-index: 2;
}

.foot-check-joint {
  top: 425px;
  width: 30px;
  height: 36px;
  z-index: 1;
  border-radius: 50%;
  transform-origin: center;
  will-change: transform;
}

.foot-check-joint-left {
  left: 178px;
  animation: autonomous-foot-check-left-joint var(--autonomous-duration) cubic-bezier(0.22, 0.61, 0.36, 1) 1 both;
}
.foot-check-joint-left .foot-check-fragment-image { left: -178px; top: -425px; }

.foot-check-joint-right {
  left: 276px;
  animation: autonomous-foot-check-right-joint var(--autonomous-duration) cubic-bezier(0.22, 0.61, 0.36, 1) 1 both;
}
.foot-check-joint-right .foot-check-fragment-image { left: -276px; top: -425px; }

.foot-check-foot-left {
  left: 126px;
  width: 81px;
  height: 78px;
  -webkit-clip-path: polygon(0 0, 100% 0, 100% 30%, 80% 48%, 78% 100%, 0 100%);
  clip-path: polygon(0 0, 100% 0, 100% 30%, 80% 48%, 78% 100%, 0 100%);
  animation: autonomous-foot-check-left-foot var(--autonomous-duration) cubic-bezier(0.22, 0.61, 0.36, 1) 1 both;
}
.foot-check-foot-left .foot-check-fragment-image { left: -126px; top: -418px; }
.foot-check-foot-right {
  left: 272px;
  width: 79px;
  height: 81px;
  -webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 24% 100%, 22% 48%, 0 30%);
  clip-path: polygon(0 0, 100% 0, 100% 100%, 24% 100%, 22% 48%, 0 30%);
  animation: autonomous-foot-check-right-foot var(--autonomous-duration) cubic-bezier(0.22, 0.61, 0.36, 1) 1 both;
}
.foot-check-foot-right .foot-check-fragment-image { left: -272px; top: -418px; }

.reaction-rig.is-autonomous-foot-check .reaction-pupil {
  animation: autonomous-foot-check-gaze var(--autonomous-duration) cubic-bezier(0.35, 0, 0.25, 1) 1 both;
}

.shadow-world-rig.is-autonomous-foot-check-shadow .shadow-motion-rig {
  animation: autonomous-foot-check-shadow var(--autonomous-duration) cubic-bezier(0.35, 0, 0.25, 1) 1 both;
}

.reaction-rig.is-noticing.gaze-down-left .reaction-pupil {
  animation: click-gaze-down-left 1.2s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-noticing.gaze-down-right .reaction-pupil {
  animation: click-gaze-down-right 1.2s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-noticing.gaze-down-steep-left .reaction-pupil {
  animation: click-gaze-down-steep-left 1.2s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

.reaction-rig.is-noticing.gaze-down-steep-right .reaction-pupil {
  animation: click-gaze-down-steep-right 1.2s cubic-bezier(0.35, 0, 0.25, 1) 1;
}

/* Stage 4-F.4-P1 — an eye-only return acknowledgement; Idle and body stay live. */
.reaction-rig.is-return-aware {
  animation: return-awareness-clock 1.6s linear 1;
}

.reaction-rig.is-return-aware.return-gaze-left .reaction-pupil {
  animation: return-awareness-gaze-left 1.6s cubic-bezier(0.28, 0, 0.22, 1) 1;
}

.reaction-rig.is-return-aware.return-gaze-right .reaction-pupil {
  animation: return-awareness-gaze-right 1.6s cubic-bezier(0.28, 0, 0.22, 1) 1;
}

@keyframes return-awareness-clock {
  0%, 100% { opacity: 1; }
}

@keyframes return-awareness-gaze-left {
  0%, 18% { transform: translate3d(0, 0, 0); }
  34%, 62% { transform: translate3d(-4px, 0.5px, 0); }
  82%, 100% { transform: translate3d(0, 0, 0); }
}

@keyframes return-awareness-gaze-right {
  0%, 18% { transform: translate3d(0, 0, 0); }
  34%, 62% { transform: translate3d(4px, 0.5px, 0); }
  82%, 100% { transform: translate3d(0, 0, 0); }
}

@keyframes idle-weight-shift {
  0%, 4%, 92%, 100% {
    transform: translate3d(0, 0, 0) rotate(0deg);
  }

  16% {
    transform: translate3d(0, 2px, 0) rotate(-0.07deg);
  }

  26% {
    transform: translate3d(0, 7px, 0) rotate(-0.25deg);
  }

  35%, 44% {
    transform: translate3d(0, 13.7px, 0) rotate(-0.5deg);
  }

  50% {
    transform: translate3d(0, 12.8px, 0) rotate(-0.47deg);
  }

  58% {
    transform: translate3d(0, 10.2px, 0) rotate(-0.37deg);
  }

  68% {
    transform: translate3d(0, 6px, 0) rotate(-0.22deg);
  }

  80% {
    transform: translate3d(0, 2px, 0) rotate(-0.07deg);
  }

  88% {
    transform: translate3d(0, 0.4px, 0) rotate(-0.01deg);
  }
}

@keyframes idle-deform {
  0%, 4%, 35%, 92%, 100% {
    transform: scaleX(1) scaleY(1);
  }

  39% {
    transform: scaleX(1.018) scaleY(0.982);
  }

  43% {
    transform: scaleX(1.048) scaleY(0.952);
  }

  47% {
    transform: scaleX(1.08) scaleY(0.92);
  }

  54% {
    transform: scaleX(1.06) scaleY(0.94);
  }

  64% {
    transform: scaleX(1.025) scaleY(0.975);
  }

  76% {
    transform: scaleX(1.006) scaleY(0.994);
  }

  88% {
    transform: scaleX(1.001) scaleY(0.999);
  }
}

@keyframes idle-shadow {
  0%, 4%, 92%, 100% {
    opacity: 0.72;
    transform: scaleX(0.86) scaleY(0.78);
  }

  16% {
    opacity: 0.76;
    transform: scaleX(0.91) scaleY(0.82);
  }

  26% {
    opacity: 0.86;
    transform: scaleX(1.01) scaleY(0.9);
  }

  35% {
    opacity: 0.96;
    transform: scaleX(1.1) scaleY(0.98);
  }

  44% {
    opacity: 0.98;
    transform: scaleX(1.12) scaleY(1);
  }

  50% {
    opacity: 0.96;
    transform: scaleX(1.1) scaleY(0.98);
  }

  58% {
    opacity: 0.9;
    transform: scaleX(1.04) scaleY(0.93);
  }

  68% {
    opacity: 0.83;
    transform: scaleX(0.97) scaleY(0.87);
  }

  80% {
    opacity: 0.76;
    transform: scaleX(0.9) scaleY(0.81);
  }

  88% {
    opacity: 0.73;
    transform: scaleX(0.87) scaleY(0.79);
  }
}

@keyframes idle-contact-shadow {
  0%, 4%, 92%, 100% {
    opacity: 0.64;
    transform: scaleX(0.82) scaleY(0.7);
  }

  16% {
    opacity: 0.69;
    transform: scaleX(0.86) scaleY(0.74);
  }

  26% {
    opacity: 0.79;
    transform: scaleX(0.94) scaleY(0.84);
  }

  35% {
    opacity: 0.91;
    transform: scaleX(1.02) scaleY(0.96);
  }

  44% {
    opacity: 0.96;
    transform: scaleX(1.05) scaleY(1);
  }

  50% {
    opacity: 0.92;
    transform: scaleX(1.03) scaleY(0.96);
  }

  58% {
    opacity: 0.84;
    transform: scaleX(0.98) scaleY(0.89);
  }

  68% {
    opacity: 0.76;
    transform: scaleX(0.92) scaleY(0.82);
  }

  80% {
    opacity: 0.69;
    transform: scaleX(0.86) scaleY(0.74);
  }

  88% {
    opacity: 0.65;
    transform: scaleX(0.83) scaleY(0.71);
  }
}

@keyframes click-notice-left {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0) rotate(0deg);
  }

  32%, 68% {
    transform: translate3d(-2px, 1px, 0) rotate(-0.8deg);
  }
}

@keyframes click-notice-right {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0) rotate(0deg);
  }

  32%, 68% {
    transform: translate3d(2px, 1px, 0) rotate(0.8deg);
  }
}

@keyframes click-notice-center {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0) scaleX(1) scaleY(1);
  }

  32%, 68% {
    transform: translate3d(0, 2px, 0) scaleX(1.004) scaleY(0.996);
  }
}

@keyframes click-gaze-left {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0);
  }

  30%, 72% {
    transform: translate3d(-5px, 0, 0);
  }
}

@keyframes click-gaze-right {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0);
  }

  30%, 72% {
    transform: translate3d(5px, 0, 0);
  }
}

@keyframes click-gaze-center {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0);
  }

  30%, 72% {
    transform: translate3d(0, 0, 0);
  }
}

@keyframes click-gaze-up {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0);
  }

  30%, 72% {
    transform: translate3d(0, -4px, 0);
  }
}

@keyframes click-gaze-down {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0);
  }

  30%, 72% {
    transform: translate3d(0, 4px, 0);
  }
}

@keyframes click-gaze-up-left {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0);
  }

  30%, 72% {
    transform: translate3d(-4px, -3px, 0);
  }
}

@keyframes click-gaze-up-right {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0);
  }

  30%, 72% {
    transform: translate3d(4px, -3px, 0);
  }
}

@keyframes ambient-gaze-window-light {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0);
  }

  30%, 72% {
    transform: translate3d(-4px, -5px, 0);
  }
}

@keyframes ambient-gaze-shelf {
  0% {
    transform: translate3d(0, 0, 0);
  }

  12%, 100% {
    transform: translate3d(7px, -6px, 0);
  }
}

@keyframes autonomous-light-follow-clock {
  0%, 100% { opacity: 1; }
}

@keyframes autonomous-light-follow-gaze {
  0% {
    transform: translate3d(0, 0, 0);
  }

  29% {
    transform: translate3d(-4px, 4px, 0);
  }

  50% {
    transform: translate3d(0, 5px, 0);
  }

  71% {
    transform: translate3d(4px, 4px, 0);
  }

  100% {
    transform: translate3d(0, 0, 0);
  }
}

@keyframes autonomous-light-follow-patch {
  0% {
    opacity: 0;
    transform: translate3d(188px, 1058px, 0) scale(0.78, 0.72);
  }

  10% {
    opacity: 0.82;
  }

  29% {
    opacity: 0.9;
    transform: translate3d(230px, 1071px, 0) scale(1, 0.8);
  }

  50% {
    opacity: 0.94;
    transform: translate3d(348px, 1080px, 0) scale(1.08, 0.82);
  }

  71% {
    opacity: 0.9;
    transform: translate3d(466px, 1071px, 0) scale(1, 0.8);
  }

  90% {
    opacity: 0.82;
  }

  100% {
    opacity: 0;
    transform: translate3d(508px, 1058px, 0) scale(0.78, 0.72);
  }
}

@keyframes controlled-canonical-left-foot {
  0%, 48%, 52%, 100% { transform: translate3d(-5px, 0, 0) rotate(0deg); }
  12% { transform: translate3d(-2px, -5px, 0) rotate(-2deg); }
  25% { transform: translate3d(8px, -16px, 0) rotate(7deg); }
  38% { transform: translate3d(11px, -5px, 0) rotate(3deg); }
  46% { transform: translate3d(7px, 0, 0) rotate(0deg); }
  64% { transform: translate3d(4px, 0, 0) rotate(0deg); }
  82% { transform: translate3d(-3px, 0, 0) rotate(-1deg); }
}

@keyframes controlled-canonical-right-foot {
  0%, 48%, 52%, 100% { transform: translate3d(5px, 0, 0) rotate(0deg); }
  12% { transform: translate3d(3px, 0, 0) rotate(1deg); }
  30% { transform: translate3d(-4px, 0, 0) rotate(0deg); }
  62% { transform: translate3d(-7px, -5px, 0) rotate(-3deg); }
  75% { transform: translate3d(-8px, -16px, 0) rotate(-7deg); }
  88% { transform: translate3d(2px, -5px, 0) rotate(2deg); }
  96% { transform: translate3d(7px, 0, 0) rotate(0deg); }
}

@keyframes controlled-canonical-left-joint {
  0%, 50%, 100% { transform: translate3d(0, 0, 0) scale(1); }
  12% { transform: translate3d(0, -3px, 0) scale(1.02, 1.08); }
  25% { transform: translate3d(4px, -9px, 0) rotate(5deg) scale(1.06, 1.18); }
  38% { transform: translate3d(5px, -3px, 0) rotate(2deg) scale(1.03, 1.08); }
}

@keyframes controlled-canonical-right-joint {
  0%, 50%, 100% { transform: translate3d(0, 0, 0) scale(1); }
  62% { transform: translate3d(-5px, -3px, 0) rotate(-2deg) scale(1.03, 1.08); }
  75% { transform: translate3d(-4px, -9px, 0) rotate(-5deg) scale(1.06, 1.18); }
  88% { transform: translate3d(0, -3px, 0) scale(1.02, 1.08); }
}

@keyframes autonomous-aperture-airflow-clock {
  0%, 100% { opacity: 1; }
}

@keyframes autonomous-aperture-airflow-gaze {
  0%, 24% {
    transform: translate3d(0, 0, 0);
  }

  58% {
    transform: translate3d(3px, 4px, 0);
  }

  78% {
    transform: translate3d(4px, 3px, 0);
  }

  100% {
    transform: translate3d(0, 0, 0);
  }
}

@keyframes autonomous-aperture-airflow-mote {
  0%, 18% {
    opacity: 0;
    transform: translate3d(0, 2px, 0) rotate(var(--airflow-tilt));
  }

  30% {
    opacity: 1;
    transform: translate3d(34px, -2px, 0) rotate(var(--airflow-tilt));
  }

  54% {
    opacity: 0.98;
    transform: translate3d(92px, 3px, 0) rotate(var(--airflow-tilt));
  }

  72% {
    opacity: 0.9;
    transform: translate3d(138px, -1px, 0) rotate(var(--airflow-tilt));
  }

  86%, 100% {
    opacity: 0;
    transform: translate3d(180px, 2px, 0) rotate(var(--airflow-tilt));
  }
}

@keyframes v0315-airflow-field {
  0%, 16% { opacity: 0; transform: translate3d(0, 0, 0) scale(0.86); }
  30% { opacity: 0.72; transform: translate3d(45px, 1px, 0) scale(1); }
  56% { opacity: 0.82; transform: translate3d(96px, -1px, 0) scale(1.08); }
  78% { opacity: 0.48; transform: translate3d(142px, 1px, 0) scale(0.94); }
  90%, 100% { opacity: 0; transform: translate3d(174px, 0, 0) scale(0.82); }
}

@keyframes v0319-airflow-patch-handoff {
  0%, 20% { opacity: 0; }
  22%, 89% { opacity: 1; }
  91%, 100% { opacity: 0; }
}

@keyframes autonomous-object-stuck-settle {
  0% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1);
  }
  100% {
    transform: translate3d(0, var(--squish-settle-y), 0)
      rotate(var(--object-stuck-settle-rotation))
      scale(var(--object-stuck-settle-scale-x), var(--object-stuck-settle-scale-y));
  }
}

@keyframes autonomous-failed-delivery-settle {
  0% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1);
  }
  100% {
    transform: translate3d(0, var(--squish-settle-y), 0)
      rotate(var(--failed-delivery-settle-rotation))
      scale(var(--failed-delivery-settle-scale-x), var(--failed-delivery-settle-scale-y));
  }
}

@keyframes autonomous-failed-delivery-body {
  0%, 57% { transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1); }
  59% { transform: translate3d(0, 1px, 0) rotate(0deg) scale(1.012, 0.988); }
  63% { transform: translate3d(-1px, 4px, 0) rotate(-0.35deg) scale(1.035, 0.965); }
  66% { transform: translate3d(-2px, 7px, 0) rotate(-0.55deg) scale(1.065, 0.935); }
  69% { transform: translate3d(2px, -2px, 0) rotate(0.45deg) scale(0.988, 1.012); }
  74%, 88% { transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1); }
  94%, 100% { transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1); }
}

@keyframes autonomous-failed-delivery-gaze {
  0%, 5% { transform: translate3d(-8px, -8px, 0); }
  16% { transform: translate3d(-7px, -6px, 0); }
  24% { transform: translate3d(-4px, -2px, 0); }
  32%, 39% { transform: translate3d(4px, 5px, 0); }
  42%, 49% { transform: translate3d(0, 0, 0); }
  52%, 66% { transform: translate3d(4px, 5px, 0); }
  69% { transform: translate3d(7px, 1px, 0); }
  74% { transform: translate3d(8px, 2px, 0); }
  79% { transform: translate3d(8px, 5px, 0); }
  85%, 94% { transform: translate3d(8px, 8px, 0); }
  98%, 100% { transform: translate3d(0, 0, 0); }
}

@keyframes autonomous-failed-delivery-packet {
  0%, 3% { opacity: 0; transform: translate3d(-115px, 180px, 0) rotate(18deg) scale(0.9); }
  5% { opacity: 1; transform: translate3d(-80px, 200px, 0) rotate(17deg) scale(0.94); }
  8% { opacity: 1; transform: translate3d(-25px, 245px, 0) rotate(16deg) scale(0.97); }
  16% { opacity: 1; transform: translate3d(125px, 385px, 0) rotate(13deg) scale(1); }
  24% { opacity: 1; transform: translate3d(275px, 550px, 0) rotate(10deg) scale(1); }
  32%, 57% { opacity: 1; transform: translate3d(425px, 800px, 0) rotate(10deg) scale(1); }
  59% { opacity: 1; transform: translate3d(425px, 802px, 0) rotate(10deg) scale(1.01, 0.99); }
  63% { opacity: 1; transform: translate3d(423px, 808px, 0) rotate(9deg) scale(1.025, 0.975); }
  66% { opacity: 1; transform: translate3d(420px, 815px, 0) rotate(8deg) scale(1.04, 0.96); }
  69% { opacity: 1; transform: translate3d(455px, 770px, 0) rotate(14deg) scale(1); }
  74% { opacity: 1; transform: translate3d(490px, 758px, 0) rotate(15deg) scale(1); }
  79% { opacity: 1; transform: translate3d(520px, 800px, 0) rotate(13deg) scale(1); }
  85% { opacity: 1; transform: translate3d(540px, 875px, 0) rotate(10deg) scale(1); }
  90% { opacity: 1; transform: translate3d(548px, 955px, 0) rotate(8deg) scale(1); }
  94% { opacity: 1; transform: translate3d(548px, 1000px, 0) rotate(6deg) scale(1); }
  97% { opacity: 1; transform: translate3d(548px, 1012px, 0) rotate(5deg) scale(1.02, 0.55); }
  100% { opacity: 1; transform: translate3d(548px, 1018px, 0) rotate(4deg) scale(1, 0.62); }
}

@keyframes autonomous-almost-leave-threshold-pause {
  0%, 5% { transform: translate3d(0, 0, 0) rotate(0deg); }
  19%, 86% { transform: translate3d(-48px, 14px, 0) rotate(-5deg); }
  100% { transform: translate3d(0, 0, 0) rotate(0deg); }
}

@keyframes autonomous-almost-leave-gaze-and-blinks {
  0%, 29% { opacity: 1; transform: translate3d(0, 0, 0); }
  31%, 34% { opacity: 0; transform: translate3d(0, 0, 0); }
  36%, 43% { opacity: 1; transform: translate3d(0, 0, 0); }
  45%, 48% { opacity: 0; transform: translate3d(0, 0, 0); }
  50%, 61% { opacity: 1; transform: translate3d(0, 0, 0); }
  70%, 78% { opacity: 1; transform: translate3d(-8px, 1px, 0); }
  84%, 100% { opacity: 1; transform: translate3d(0, 0, 0); }
}

@keyframes autonomous-almost-leave-open-eyes {
  0%, 29% { opacity: 1; }
  31%, 34% { opacity: 0; }
  36%, 43% { opacity: 1; }
  45%, 48% { opacity: 0; }
  50%, 100% { opacity: 1; }
}

@keyframes autonomous-almost-leave-closed-eyes {
  0%, 29% { opacity: 0; }
  31%, 34% { opacity: 1; }
  36%, 43% { opacity: 0; }
  45%, 48% { opacity: 1; }
  50%, 100% { opacity: 0; }
}

@keyframes autonomous-object-stuck-grounded-recovery {
  0%, 100% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1);
  }
}

@keyframes autonomous-object-stuck-body {
  0%, 7% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1);
  }
  15%, 23% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(0deg) scale(1, 1);
  }
  29% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(-0.6deg) scale(1.015, 0.985);
  }
  35% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(0.65deg) scale(0.988, 1.012);
  }
  40%, 44% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(0deg) scale(1, 1);
  }
  48% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(0.9deg) scale(1.025, 0.975);
  }
  54% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(-0.85deg) scale(0.98, 1.02);
  }
  59%, 62% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(0deg) scale(1, 1);
  }
  66% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(-1.2deg) scale(1.04, 0.96);
  }
  71% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(1.25deg) scale(0.968, 1.032);
  }
  73% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(-0.45deg) scale(0.992, 1.008);
  }
  78% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(0deg) scale(1, 1);
  }
  88% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(0deg) scale(1, 1);
  }
  100% {
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(0deg) scale(1, 1);
  }
}

@keyframes autonomous-object-stuck-gaze {
  0%, 7% { transform: translate3d(-4px, 1px, 0); }
  15%, 26% { transform: translate3d(0, 6px, 0); }
  29%, 40% { transform: translate3d(-2px, 6px, 0) scale(0.96); }
  44% { transform: translate3d(1px, 5px, 0); }
  48%, 59% { transform: translate3d(3px, 6px, 0) scale(0.92); }
  62% { transform: translate3d(0, 6px, 0); }
  66%, 75% { transform: translate3d(0, 7px, 0) scale(0.86); }
  80%, 88% { transform: translate3d(5px, 6px, 0); }
  94%, 100% { transform: translate3d(0, 0, 0); }
}

@keyframes autonomous-object-stuck-jammed-ball {
  0%, 5% { opacity: 0; transform: translate3d(0, 0, 0) rotate(0deg); }
  8% { opacity: 1; transform: translate3d(18px, 0, 0) rotate(35deg); }
  15%, 23% { opacity: 1; transform: translate3d(87px, 0, 0) rotate(155deg); }
  29% { transform: translate3d(72px, 3px, 0) rotate(126deg) scale(1.04, 0.96); }
  35% { transform: translate3d(98px, -3px, 0) rotate(189deg) scale(0.96, 1.04); }
  40%, 44% { transform: translate3d(89px, 0, 0) rotate(169deg); }
  48% { transform: translate3d(105px, 5px, 0) rotate(215deg) scale(1.06, 0.94); }
  54% { transform: translate3d(67px, -5px, 0) rotate(128deg) scale(0.94, 1.06); }
  59%, 62% { transform: translate3d(93px, -1px, 0) rotate(184deg); }
  66% { transform: translate3d(55px, 7px, 0) rotate(94deg) scale(1.09, 0.91); }
  70% { opacity: 1; transform: translate3d(112px, -8px, 0) rotate(246deg) scale(0.9, 1.1); }
  72%, 100% { opacity: 0; transform: translate3d(120px, -13px, 0) rotate(284deg) scale(0.78); }
}

@keyframes autonomous-object-stuck-released-ball {
  0%, 71.9% { opacity: 0; transform: translate3d(0, 0, 0) rotate(0deg) scale(0.78); }
  72% { opacity: 1; transform: translate3d(0, -13px, 0) rotate(0deg) scale(0.78); }
  76% { opacity: 1; transform: translate3d(42px, 48px, 0) rotate(128deg) scale(1); }
  82% { opacity: 1; transform: translate3d(84px, 218px, 0) rotate(292deg) scale(1.16, 0.78); }
  83% { opacity: 1; transform: translate3d(91px, 211px, 0) rotate(318deg) scale(0.9, 1.12); }
  87% { opacity: 1; transform: translate3d(126px, 126px, 0) rotate(430deg) scale(0.98, 1.02); }
  91% { opacity: 1; transform: translate3d(165px, 218px, 0) rotate(548deg) scale(1.12, 0.82); }
  92% { opacity: 1; transform: translate3d(176px, 211px, 0) rotate(575deg) scale(0.93, 1.08); }
  95% { opacity: 1; transform: translate3d(214px, 174px, 0) rotate(678deg) scale(0.98, 1.02); }
  97% { opacity: 1; transform: translate3d(249px, 218px, 0) rotate(765deg) scale(1.06, 0.9); }
  100% { opacity: 0; transform: translate3d(370px, 218px, 0) rotate(1080deg) scale(1); }
}

@keyframes autonomous-object-stuck-pressure {
  0%, 27%, 41%, 46%, 60%, 64%, 74%, 100% { opacity: 0; }
  29%, 36%, 48%, 55%, 66%, 71% { opacity: 1; }
}

@keyframes autonomous-object-stuck-shadow {
  0%, 15% { transform: translate3d(0, 0, 0) scale(1, 1); }
  29%, 35% { transform: translate3d(0, 0, 0) scale(1.015, 1.025); }
  40%, 44% { transform: translate3d(0, 0, 0) scale(1, 1); }
  48%, 54% { transform: translate3d(0, 0, 0) scale(1.025, 1.04); }
  59%, 62% { transform: translate3d(0, 0, 0) scale(1, 1); }
  66%, 71% { transform: translate3d(0, 0, 0) scale(1.04, 1.06); }
  78%, 100% { transform: translate3d(0, 0, 0) scale(1, 1); }
}

@keyframes autonomous-foot-check-weight {
  0%, 4% {
    transform-origin: 375px 1042px;
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1);
  }

  14% {
    transform-origin: 375px 1042px;
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(var(--foot-check-settle-rotation)) scale(1, 1);
  }

  24%, 38% {
    transform-origin: 420px 1042px;
    transform: translate3d(3px, calc(var(--squish-settle-y) + 1px), 0) rotate(calc(var(--foot-check-settle-rotation) + 3.2deg)) scale(1.01, 0.988);
  }

  46% {
    transform-origin: 375px 1042px;
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(var(--foot-check-settle-rotation)) scale(1, 1);
  }

  56%, 70% {
    transform-origin: 330px 1042px;
    transform: translate3d(-3px, calc(var(--squish-settle-y) + 1px), 0) rotate(calc(var(--foot-check-settle-rotation) - 3.2deg)) scale(1.01, 0.988);
  }

  78% {
    transform-origin: 375px 1042px;
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(var(--foot-check-settle-rotation)) scale(1, 1);
  }

  86%, 94% {
    transform-origin: 375px 1042px;
    transform: translate3d(0, calc(var(--squish-settle-y) + 3px), 0) rotate(var(--foot-check-settle-rotation)) scale(1.022, 0.978);
  }

  100% {
    transform-origin: 375px 1042px;
    transform: translate3d(0, var(--squish-settle-y), 0) rotate(var(--foot-check-settle-rotation)) scale(1, 1);
  }
}

@keyframes autonomous-foot-check-left-foot {
  0%, 14%, 46%, 100% { transform: translate3d(0, 0, 0) rotate(0deg); }
  24%, 38% { transform: translate3d(-6px, -8px, 0) rotate(-4deg); }
  56%, 78% { transform: translate3d(0, 0, 0) rotate(0deg); }
  86%, 94% { transform: translate3d(0, -6px, 0) rotate(0deg); }
}

@keyframes autonomous-foot-check-right-foot {
  0%, 46%, 78%, 100% { transform: translate3d(0, 0, 0) rotate(0deg); }
  56%, 70% { transform: translate3d(6px, -8px, 0) rotate(4deg); }
  86%, 94% { transform: translate3d(0, -6px, 0) rotate(0deg); }
}

@keyframes autonomous-foot-check-left-joint {
  0%, 14%, 46%, 100% { transform: translate3d(0, 0, 0) rotate(0deg); }
  24%, 38% { transform: translate3d(-3px, -4px, 0) rotate(-2deg); }
  56%, 78% { transform: translate3d(0, 0, 0) rotate(0deg); }
  86%, 94% { transform: translate3d(0, -3px, 0) rotate(0deg); }
}

@keyframes autonomous-foot-check-right-joint {
  0%, 46%, 78%, 100% { transform: translate3d(0, 0, 0) rotate(0deg); }
  56%, 70% { transform: translate3d(3px, -4px, 0) rotate(2deg); }
  86%, 94% { transform: translate3d(0, -3px, 0) rotate(0deg); }
}

@keyframes autonomous-foot-check-gaze {
  0%, 14% { transform: translate3d(0, 0, 0); }
  24%, 38% { transform: translate3d(-5px, 6px, 0); }
  46% { transform: translate3d(0, 1px, 0); }
  56%, 70% { transform: translate3d(5px, 6px, 0); }
  78% { transform: translate3d(0, 1px, 0); }
  86%, 94% { transform: translate3d(0, 5px, 0); }
  100% { transform: translate3d(0, 0, 0); }
}

@keyframes autonomous-foot-check-shadow {
  0%, 14%, 46%, 78%, 100% {
    transform: translate3d(0, 0, 0) scale(1, 1);
  }

  24%, 38% {
    transform: translate3d(3px, 0, 0) scale(0.99, 1);
  }

  56%, 70% {
    transform: translate3d(-3px, 0, 0) scale(0.99, 1);
  }

  86%, 94% {
    transform: translate3d(0, 1px, 0) scale(1.025, 0.99);
  }
}

@keyframes autonomous-foot-check-canonical-visibility {
  0%, 13.9% { opacity: 1; }
  14%, 100% { opacity: 0; }
}

@keyframes autonomous-foot-check-articulated-visibility {
  0%, 13.9% { opacity: 0; }
  14%, 100% { opacity: 1; }
}

@keyframes autonomous-foot-check-grounded-recovery {
  0%, 100% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1);
  }
}

@keyframes click-gaze-down-left {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0);
  }

  30%, 72% {
    transform: translate3d(-4px, 3px, 0);
  }
}

@keyframes click-gaze-down-right {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0);
  }

  30%, 72% {
    transform: translate3d(4px, 3px, 0);
  }
}

@keyframes click-gaze-down-steep-left {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0);
  }

  30%, 72% {
    transform: translate3d(-2.5px, 4px, 0);
  }
}

@keyframes click-gaze-down-steep-right {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0);
  }

  30%, 72% {
    transform: translate3d(2.5px, 4px, 0);
  }
}

@keyframes object-store-body {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0) scaleX(1) scaleY(1);
  }

  28%, 62% {
    transform: translate3d(0, 2px, 0) scaleX(1.006) scaleY(0.994);
  }
}

@keyframes object-store-gaze {
  0%, 10%, 100% {
    transform: translate3d(0, 0, 0);
  }

  22%, 72% {
    transform: translate3d(0, 5px, 0);
  }
}

@keyframes object-store-sink {
  0%, 22% {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1) rotate(0deg);
  }

  30% {
    opacity: 1;
    transform: translate3d(0, 1px, 0) scale(0.995) rotate(0.3deg);
  }

  40% {
    opacity: 0.98;
    transform: translate3d(0, 5px, 0) scale(0.94) rotate(1.2deg);
  }

  52% {
    opacity: 0.9;
    transform: translate3d(0, 11px, 0) scale(0.87) rotate(2.5deg);
  }

  65% {
    opacity: 0.7;
    transform: translate3d(0, 19px, 0) scale(0.78) rotate(3.8deg);
  }

  78% {
    opacity: 0.42;
    transform: translate3d(0, 27px, 0) scale(0.68) rotate(5deg);
  }

  90% {
    opacity: 0.15;
    transform: translate3d(0, 33px, 0) scale(0.59) rotate(5.7deg);
  }

  100% {
    opacity: 0;
    transform: translate3d(0, 36px, 0) scale(0.55) rotate(6deg);
  }
}

@keyframes object-reject-body {
  0%, 16%, 100% {
    transform: translate3d(0, 0, 0) rotate(0deg);
  }

  34%, 72% {
    transform: translate3d(2px, 1px, 0) rotate(0.45deg);
  }
}

@keyframes object-reject-gaze {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0);
  }

  22%, 46% {
    transform: translate3d(0, 5px, 0);
  }

  58%, 82% {
    transform: translate3d(-3px, 3px, 0);
  }
}

@keyframes object-reject-exit {
  0%, 22% {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1) rotate(0deg);
  }

  36% {
    opacity: 1;
    transform: translate3d(-4px, -3px, 0) scale(1) rotate(-2deg);
  }

  55% {
    opacity: 0.96;
    transform: translate3d(-17px, -7px, 0) scale(0.99) rotate(-8deg);
  }

  78% {
    opacity: 0.62;
    transform: translate3d(-38px, 2px, 0) scale(0.96) rotate(-15deg);
  }

  100% {
    opacity: 0;
    transform: translate3d(-58px, 18px, 0) scale(0.92) rotate(-21deg);
  }
}

@keyframes object-heavy-store-body {
  0%, 12%, 100% {
    transform: translate3d(0, 0, 0) scaleX(1) scaleY(1);
  }

  28%, 70% {
    transform: translate3d(0, 3px, 0) scaleX(1.01) scaleY(0.99);
  }
}

@keyframes object-heavy-store-gaze {
  0%, 10%, 100% {
    transform: translate3d(0, 0, 0);
  }

  20%, 78% {
    transform: translate3d(0, 5px, 0);
  }
}

@keyframes object-heavy-store-sink {
  0%, 20% {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1) rotate(0deg);
  }

  32% {
    opacity: 1;
    transform: translate3d(0, 2px, 0) scale(0.98) rotate(-0.8deg);
  }

  46% {
    opacity: 0.97;
    transform: translate3d(0, 8px, 0) scale(0.91) rotate(-2.4deg);
  }

  61% {
    opacity: 0.8;
    transform: translate3d(0, 17px, 0) scale(0.82) rotate(-4.5deg);
  }

  76% {
    opacity: 0.52;
    transform: translate3d(0, 27px, 0) scale(0.7) rotate(-6.5deg);
  }

  90% {
    opacity: 0.18;
    transform: translate3d(0, 36px, 0) scale(0.57) rotate(-8.2deg);
  }

  100% {
    opacity: 0;
    transform: translate3d(0, 41px, 0) scale(0.5) rotate(-9deg);
  }
}

@keyframes squish-settle-to-ground {
  0% {
    transform: translate3d(0, 0, 0);
  }

  100% {
    transform: translate3d(0, var(--squish-settle-y), 0);
  }
}

@keyframes deliberate-squish {
  0% {
    transform: translate3d(0, 0, 0) scaleX(var(--squish-start-x)) scaleY(var(--squish-start-y));
  }

  20% {
    transform: translate3d(-0.5px, 0, 0) skewX(-0.3deg) scaleX(1.075) scaleY(0.925);
  }

  38% {
    transform: translate3d(-2px, 0, 0) skewX(-1.4deg) scaleX(1.19) scaleY(0.79);
  }

  52% {
    transform: translate3d(1.6px, 0, 0) skewX(0.9deg) scaleX(1.16) scaleY(0.83);
  }

  70% {
    transform: translate3d(-0.6px, 0, 0) skewX(-0.25deg) scaleX(1.1) scaleY(0.895);
  }

  86% {
    transform: translate3d(0, 0, 0) skewX(0deg) scaleX(1.038) scaleY(0.962);
  }

  100% {
    transform: translate3d(0, 0, 0) scaleX(1) scaleY(1);
  }
}

@keyframes pressure-eye-sockets {
  0%, 100% {
    transform: translate3d(0, 0, 0) scaleX(1) scaleY(1);
  }

  38% {
    transform: translate3d(0, 8px, 0) scaleX(1.12) scaleY(0.82);
  }

  56% {
    transform: translate3d(0, 5px, 0) scaleX(1.07) scaleY(0.88);
  }

  72% {
    transform: translate3d(0, 0, 0) scaleX(1) scaleY(1);
  }
}

@keyframes pressure-pupil-left {
  0%, 100% {
    transform: translate3d(0, 0, 0) scaleX(1) scaleY(1);
  }

  38% {
    transform: translate3d(5px, 7px, 0) scaleX(1.22) scaleY(0.55);
  }

  56% {
    transform: translate3d(3px, 4px, 0) scaleX(1.12) scaleY(0.72);
  }

  72% {
    transform: translate3d(0, 0, 0) scaleX(1) scaleY(1);
  }
}

@keyframes pressure-pupil-right {
  0%, 100% {
    transform: translate3d(0, 0, 0) scaleX(1) scaleY(1);
  }

  38% {
    transform: translate3d(-5px, 7px, 0) scaleX(1.22) scaleY(0.55);
  }

  56% {
    transform: translate3d(-3px, 4px, 0) scaleX(1.12) scaleY(0.72);
  }

  72% {
    transform: translate3d(0, 0, 0) scaleX(1) scaleY(1);
  }
}

@keyframes strong-squish-ground-shadow {
  0%, 100% {
    opacity: 0.98;
    transform: scaleX(1.12) scaleY(1);
  }

  38% {
    opacity: 1;
    transform: scaleX(1.32) scaleY(1.05);
  }
}

@keyframes strong-squish-contact-shadow {
  0%, 100% {
    opacity: 0.96;
    transform: scaleX(1.05) scaleY(1);
  }

  38% {
    opacity: 1;
    transform: scaleX(1.24) scaleY(1.04);
  }
}

@keyframes squish-exit-to-idle {
  0% {
    transform: translate3d(0, 13.7px, 0) rotate(-0.5deg);
  }

  38% {
    transform: translate3d(0, 10.2px, 0) rotate(-0.37deg);
  }

  72% {
    transform: translate3d(0, 4px, 0) rotate(-0.14deg);
  }

  100% {
    transform: translate3d(0, 0, 0) rotate(0deg);
  }
}

@keyframes squish-shadow-exit {
  0% {
    opacity: 0.98;
    transform: scaleX(1.12) scaleY(1);
  }

  100% {
    opacity: 0.72;
    transform: scaleX(0.86) scaleY(0.78);
  }
}

@keyframes squish-contact-shadow-exit {
  0% {
    opacity: 0.96;
    transform: scaleX(1.05) scaleY(1);
  }

  100% {
    opacity: 0.64;
    transform: scaleX(0.82) scaleY(0.7);
  }
}

@keyframes squish-ground-shadow {
  0%, 16%, 100% {
    opacity: 0.72;
    transform: scaleX(0.86) scaleY(0.78);
  }

  62%, 70% {
    opacity: 0.99;
    transform: scaleX(1.18) scaleY(1.02);
  }
}

@keyframes squish-contact-shadow {
  0%, 16%, 100% {
    opacity: 0.64;
    transform: scaleX(0.82) scaleY(0.7);
  }

  62%, 70% {
    opacity: 0.98;
    transform: scaleX(1.12) scaleY(1);
  }
}

@keyframes sleep-body-enter {
  0% {
    transform: translate3d(0, 0, 0) scaleX(1) scaleY(1);
  }

  52% {
    transform: translate3d(0, 5px, 0) scaleX(1.012) scaleY(0.988);
  }

  100% {
    transform: translate3d(0, 12px, 0) scaleX(1.03) scaleY(0.97);
  }
}

@keyframes sleep-breathe {
  0%, 100% {
    transform: translate3d(0, 12px, 0) scaleX(1.03) scaleY(0.97);
  }

  50% {
    transform: translate3d(0, 15px, 0) scaleX(1.055) scaleY(0.945);
  }
}

@keyframes open-eyes-hide {
  0%, 35% {
    opacity: 1;
  }

  100% {
    opacity: 0;
  }
}

@keyframes sleep-eyes-show {
  0%, 42% {
    opacity: 0;
  }

  100% {
    opacity: 1;
  }
}

@keyframes sleep-body-wake {
  0% {
    transform: translate3d(0, 13.5px, 0) scaleX(1.042) scaleY(0.958);
  }

  100% {
    transform: translate3d(0, 0, 0) scaleX(1) scaleY(1);
  }
}

@keyframes open-eyes-return {
  0%, 40% {
    opacity: 0;
  }

  100% {
    opacity: 1;
  }
}

@keyframes sleep-eyes-hide {
  0%, 28% {
    opacity: 1;
  }

  100% {
    opacity: 0;
  }
}

/* Stage 4.0 v0.2 — world-static prop + live-idle grounding takeover. */
.shadow-motion-rig {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 1;
  width: 750px;
  height: 1334px;
  pointer-events: none;
}

.world-store-object {
  z-index: 2;
}

.world-store-hit-target {
  z-index: 8;
}

.idle-rig.store-settling,
.idle-rig.store-settling .deform-rig {
  animation-play-state: paused;
}

.reaction-rig.is-store-settling {
  animation: approved-store-settle-to-ground var(--squish-settle-duration) linear 1 forwards;
}

.reaction-rig.is-store-settling .deform-rig {
  animation: approved-store-deform-settle var(--squish-settle-duration) linear 1 forwards;
  animation-play-state: running;
}

.reaction-rig.is-store-settling .reaction-pupil {
  transform: translate3d(5px, 5px, 0);
}

.idle-rig.store-performing {
  animation: none;
  transform: translate3d(0, 13.7px, 0);
}

.idle-rig.store-performing .deform-rig {
  animation: none;
  transform: scaleX(1) scaleY(1);
}

.shadow-motion-rig.store-shadow-performing {
  animation: approved-store-shadow-motion 8.8s linear 1 forwards;
}

.reaction-rig.is-object-storing {
  animation: approved-store-character 8.8s linear 1 forwards;
  transform-origin: 375px 1000px;
}

.world-store-object.store-back-object-rig.is-storing {
  z-index: 2;
  animation:
    approved-store-object-path 8.8s linear 1 forwards,
    approved-store-back-depth 8.8s linear 1 forwards;
}

.store-front-object-rig {
  z-index: 6;
}

.world-store-object.store-front-object-rig.is-storing {
  animation:
    approved-store-object-path 8.8s linear 1 forwards,
    approved-store-front-depth 8.8s linear 1 forwards;
}

.store-strain-eye-pair {
  left: 282px;
  top: 621px;
  z-index: 7;
  width: 151px;
  height: 80px;
  opacity: 0;
}

.store-strain-eye {
  position: absolute;
  top: 20px;
  width: 42px;
  height: 40px;
}

.store-strain-eye-left { left: 34px; }
.store-strain-eye-right { left: 98px; }

.store-eye-crease {
  position: absolute;
  top: 18px;
  width: 39px;
  height: 10px;
  border-top: 3px solid rgba(58, 53, 46, 0.9);
  border-radius: 50%;
  box-sizing: border-box;
}

.store-strain-eye-left .store-eye-crease { right: 0; transform-origin: right center; }
.store-strain-eye-left .store-eye-crease-upper { transform: rotate(28deg); }
.store-strain-eye-left .store-eye-crease-middle { width: 43px; transform: rotate(1deg); }
.store-strain-eye-left .store-eye-crease-lower { width: 37px; transform: rotate(-30deg); }

.store-strain-eye-right .store-eye-crease { left: 0; transform-origin: left center; }
.store-strain-eye-right .store-eye-crease-upper { width: 37px; transform: rotate(-28deg); }
.store-strain-eye-right .store-eye-crease-middle { width: 43px; transform: rotate(-1deg); }
.store-strain-eye-right .store-eye-crease-lower { transform: rotate(30deg); }

.reaction-rig.is-object-storing .eye-socket-pair,
.reaction-rig.is-object-storing .reaction-pupil {
  animation: approved-store-open-eyes 8.8s linear 1 forwards;
}

.reaction-rig.is-object-storing .reaction-pupil {
  animation:
    approved-store-open-eyes 8.8s linear 1 forwards,
    approved-store-gaze 8.8s linear 1 forwards;
}

.reaction-rig.is-object-storing .store-strain-eye-pair {
  animation: approved-store-strain-eyes 8.8s linear 1 forwards;
}

.store-airflow {
  left: 365px;
  top: 795px;
  z-index: 6;
  width: 190px;
  height: 190px;
  opacity: 0;
}

.store-airflow-line {
  position: absolute;
  width: 74px;
  height: 24px;
  border-top: 2px solid rgba(255, 255, 255, 0.52);
  border-radius: 50%;
  transform: rotate(-128deg);
  animation: approved-store-airflow-pulse 0.72s ease-in-out infinite;
}

.store-airflow-line-one { left: 88px; top: 108px; }
.store-airflow-line-two { left: 58px; top: 80px; animation-delay: -0.22s; }
.store-airflow-line-three { left: 30px; top: 49px; animation-delay: -0.44s; }

.reaction-rig.is-object-storing .store-airflow {
  animation: approved-store-airflow-window 8.8s linear 1 forwards;
}

@keyframes approved-store-character {
  0%, 11.36% { transform: translate3d(0, 0, 0) scaleX(1) scaleY(1); }
  15.9% { transform: translate3d(7px, -1.2px, 0) rotate(-1.15deg) scaleX(1.006) scaleY(0.994); }
  20.45% { transform: translate3d(15px, 0, 0) scaleX(1) scaleY(1); }
  25% { transform: translate3d(22px, -1.1px, 0) rotate(1.05deg) scaleX(1.005) scaleY(0.995); }
  29.55%, 50.5% { transform: translate3d(30px, 0, 0) scaleX(1) scaleY(1); }
  52% { transform: translate3d(30.7px, 0, 0) scaleX(1.003) scaleY(0.997); }
  54% { transform: translate3d(29.4px, 0, 0) scaleX(1.002) scaleY(0.998); }
  56% { transform: translate3d(30.6px, 0, 0) scaleX(1.003) scaleY(0.997); }
  58% { transform: translate3d(29.5px, 0, 0) scaleX(1.002) scaleY(0.998); }
  60%, 71.59% { transform: translate3d(30px, 0, 0) scaleX(1) scaleY(1); }
  82.39% { transform: translate3d(0, 0, 0) scaleX(1) scaleY(1); }
  93%, 100% { transform: translate3d(0, -13.7px, 0) scaleX(1) scaleY(1); }
}

@keyframes approved-store-settle-to-ground {
  0% { transform: translate3d(0, 0, 0); }
  100% { transform: translate3d(0, var(--squish-settle-y), 0); }
}

@keyframes approved-store-deform-settle {
  0% { transform: scaleX(var(--squish-start-x)) scaleY(var(--squish-start-y)); }
  100% { transform: scaleX(1) scaleY(1); }
}

@keyframes approved-store-shadow-motion {
  0%, 11.36% { transform: translate3d(0, 0, 0); }
  20.45% { transform: translate3d(15px, 0, 0); }
  29.55%, 71.59% { transform: translate3d(30px, 0, 0); }
  82.39%, 100% { transform: translate3d(0, 0, 0); }
}

@keyframes approved-store-ground-shadow {
  0%, 11.36% { transform: translate3d(0, 0, 0) scale(1); }
  20.45% { transform: translate3d(15px, 0, 0) scale(1.003); }
  29.55%, 71.59% { transform: translate3d(30px, 0, 0) scale(1.006); }
  82.39%, 100% { transform: translate3d(0, 0, 0) scale(1); }
}

@keyframes approved-store-contact-shadow {
  0%, 11.36% { transform: translate3d(0, 0, 0) scaleX(1); }
  20.45% { transform: translate3d(15px, 0, 0) scaleX(1.01); }
  29.55%, 71.59% { transform: translate3d(30px, 0, 0) scaleX(1.015); }
  82.39%, 100% { transform: translate3d(0, 0, 0) scaleX(1); }
}

@keyframes approved-store-object-path {
  0%, 11.36% { transform: translate3d(0, 0, 0); }
  20.45%, 29.55%, 35.8% { transform: translate3d(0, 0, 0); }
  45.45% { transform: translate3d(-58px, 1px, 0); }
  52.84% { transform: translate3d(-82px, -17px, 0); }
  57.39% { transform: translate3d(-98px, -44px, 0); }
  61.36% { transform: translate3d(-127px, -99px, 0); }
  63.07% { transform: translate3d(-135px, -114px, 0); }
  69.89% { transform: translate3d(-175px, -175px, 0); }
  73.64%, 100% { transform: translate3d(-179px, -122px, 0); }
}

@keyframes approved-store-front-depth {
  0%, 69.89% { opacity: 1; }
  69.90%, 100% { opacity: 0; }
}

@keyframes approved-store-back-depth {
  0%, 69.89% { opacity: 0; }
  69.90%, 71.36% { opacity: 1; }
  73.64%, 100% { opacity: 0; }
}

@keyframes approved-store-open-eyes {
  0%, 36.9% { opacity: 1; }
  40.3%, 68.5% { opacity: 0; }
  71.6%, 100% { opacity: 1; }
}

@keyframes approved-store-strain-eyes {
  0%, 36.9% { opacity: 0; }
  40.3%, 68.5% { opacity: 1; }
  71.6%, 100% { opacity: 0; }
}

@keyframes approved-store-gaze {
  0%, 7% { transform: translate3d(0, 0, 0); }
  12%, 36.9% { transform: translate3d(5px, 5px, 0); }
  40.3%, 68.5% { transform: translate3d(0, 0, 0); }
  71.6%, 77.8% { transform: translate3d(0, 5px, 0); }
  84%, 100% { transform: translate3d(0, 0, 0); }
}

@keyframes approved-store-airflow-window {
  0%, 33.5% { opacity: 0; }
  36%, 68% { opacity: 1; }
  71.5%, 100% { opacity: 0; }
}

@keyframes approved-store-airflow-pulse {
  0% { opacity: 0; transform: translate3d(10px, 14px, 0) rotate(-128deg) scaleX(1.08); }
  30% { opacity: 0.58; }
  100% { opacity: 0; transform: translate3d(-12px, -16px, 0) rotate(-128deg) scaleX(0.84); }
}

/* Stage 4-F.6-P2R.4 — locked P2R.3R lower-body runtime integration. */
.actor-depth-rig,
.shadow-depth-rig {
  position: absolute;
  inset: 0;
  pointer-events: none;
  transform: scale(var(--actor-depth-scale));
  transform-origin: 375px 1042px;
}
.actor-world-rig.is-controlled-moving .actor-depth-rig,
.shadow-world-rig.is-controlled-moving .shadow-depth-rig {
  animation: planted-depth-travel var(--actor-move-duration) linear 1 forwards;
}
@keyframes planted-depth-travel {
  0% { transform: scale(var(--actor-move-start-scale)); }
  100% { transform: scale(var(--actor-move-end-scale)); }
}

.planted-gait-body {
  position: absolute;
  left: 165px;
  top: 586px;
  width: 420px;
  height: 440px;
  overflow: hidden;
  z-index: 3;
  opacity: 0;
  pointer-events: none;
}
.planted-gait-full-atlas {
  position: absolute;
  left: 0;
  top: 0;
  width: 3780px;
  height: 2200px;
  max-width: none;
  will-change: transform;
}
.planted-store-atlas-layer {
  position: absolute;
  inset: 0;
  opacity: 0;
}
.actor-world-rig.is-controlled-moving.is-gait-takeover-ready .character-body-normal {
  animation: controlled-normal-to-gait-handoff 180ms ease-out 1 forwards;
}
.actor-world-rig.is-controlled-moving.is-gait-takeover-ready .planted-gait-body {
  animation: controlled-gait-from-normal-handoff 180ms ease-in 1 forwards;
}

@keyframes controlled-normal-to-gait-handoff {
  from { opacity: 1; }
  to { opacity: 0; }
}

@keyframes controlled-gait-from-normal-handoff {
  from { opacity: 0; }
  to { opacity: 1; }
}

.actor-world-rig.is-controlled-releasing.is-gait-ready .character-body-normal {
  opacity: 1;
}

.actor-world-rig.is-controlled-releasing.is-gait-ready .planted-gait-body {
  opacity: 0;
  animation: none;
}

/* R3 single-renderer lock: normal body and full gait atlas are never
   paintable in the same phase. This prevents the pre-Inspect double body. */
.room-viewport.is-r3-isolation .planted-gait-body {
  visibility: hidden;
}

.room-viewport.is-r3-isolation .character-body-normal {
  visibility: visible;
}

.room-viewport.is-r3-isolation .actor-world-rig.is-controlled-moving.is-gait-takeover-ready .character-body-normal {
  opacity: 0;
  visibility: hidden;
}

.room-viewport.is-r3-isolation .actor-world-rig.is-controlled-moving.is-gait-takeover-ready .planted-gait-body {
  opacity: 1;
  visibility: visible;
}

.room-viewport.is-r3-isolation .actor-world-rig.is-controlled-releasing .character-body-normal,
.room-viewport.is-r3-isolation .idle-rig.autonomous-inspect-object .character-body-normal {
  opacity: 1;
  visibility: visible;
}

.room-viewport.is-r3-isolation .actor-world-rig.is-controlled-releasing .planted-gait-body,
.room-viewport.is-r3-isolation .idle-rig.autonomous-inspect-object .planted-gait-body {
  opacity: 0;
  visibility: hidden;
}

.actor-world-rig.is-controlled-moving.is-gait-takeover-ready .planted-gait-body { top: 586px; }

.stored-cap-world {
  z-index: 4;
  pointer-events: none;
  transform-origin: 50% 70%;
}

.shadow-world-rig.is-controlled-moving .ground-shadow,
.shadow-world-rig.is-controlled-releasing .ground-shadow {
  animation: none;
  opacity: 0.96;
  transform: scaleX(1.1) scaleY(0.98);
}

.shadow-world-rig.is-controlled-moving .contact-shadow,
.shadow-world-rig.is-controlled-releasing .contact-shadow {
  animation: none;
  opacity: 0.91;
  transform: scaleX(1.02) scaleY(0.96);
}

/* R2 begins on the exact shadow frame used by walk and release. Keeping this
   value through boot/hold/return prevents a visual shadow takeover at step 1.
   The rule ends only after r2Phase becomes complete, where Idle phase 35 has
   the same values and can resume without a discontinuity. */
.room-viewport.is-r2-isolation.r2-phase-booting .ground-shadow,
.room-viewport.is-r2-isolation.r2-phase-window-hold .ground-shadow,
.room-viewport.is-r2-isolation.r2-phase-returning .ground-shadow {
  animation: none;
  opacity: 0.96;
  transform: scaleX(1.1) scaleY(0.98);
}

.room-viewport.is-r2-isolation.r2-phase-booting .contact-shadow,
.room-viewport.is-r2-isolation.r2-phase-window-hold .contact-shadow,
.room-viewport.is-r2-isolation.r2-phase-returning .contact-shadow {
  animation: none;
  opacity: 0.91;
  transform: scaleX(1.02) scaleY(0.96);
}

.reaction-rig.is-continuous-cap-notice .reaction-pupil[data-eye="left"],
.reaction-rig.is-continuous-cap-notice .reaction-pupil[data-eye="right"] {
  animation: continuous-cap-entry-gaze 1.05s cubic-bezier(0.25, 0, 0.22, 1) 1 both;
}

@keyframes continuous-cap-entry-gaze {
  0% { transform: translate3d(0, 0, 0); }
  20%, 78% { transform: translate3d(6px, 4px, 0); }
  100% { transform: translate3d(0, 0, 0); }
}
.actor-world-rig.is-controlled-moving.movement-2-step { animation-timing-function: linear; }
.actor-world-rig.is-controlled-moving.movement-4-step { animation-timing-function: linear; }
.shadow-world-rig.is-controlled-moving.movement-2-step,
.shadow-world-rig.is-controlled-moving.movement-4-step { animation-timing-function: linear; }

.object-rig.is-continuous-arriving {
  animation: continuous-object-arrival 1150ms cubic-bezier(0.2, 0.72, 0.24, 1) 1 both;
  transform-origin: 50% 72%;
}

@keyframes continuous-object-arrival {
  0% { opacity: 0; transform: translate3d(190px, -5px, 0) rotate(310deg) scale(0.96); }
  8% { opacity: 1; }
  72% { opacity: 1; transform: translate3d(-9px, 0, 0) rotate(-16deg) scale(1); }
  87% { opacity: 1; transform: translate3d(4px, -1px, 0) rotate(7deg) scale(1); }
  100% { opacity: 1; transform: translate3d(0, 0, 0) rotate(0deg) scale(1); }
}
.actor-world-rig.is-controlled-moving.movement-2-step .planted-gait-controlled-atlas {
  animation: planted-full-atlas-two-v07 var(--actor-gait-duration) step-end 1 var(--actor-gait-delay) both;
}
.actor-world-rig.is-controlled-moving.movement-4-step .planted-gait-controlled-atlas {
  height: 3960px;
  animation: planted-full-atlas-four-v07 var(--actor-move-duration) step-end 1 both;
}
.actor-world-rig.is-controlled-moving.movement-8-step .planted-gait-controlled-atlas {
  height: 3960px;
  animation: planted-full-atlas-four-v07 var(--actor-gait-pair-duration) step-end 2 both;
}

/* Store uses the same planted rig for its right approach and left return. */
.reaction-rig.is-object-storing .character-body-normal { opacity: 0; }
.reaction-rig.is-object-storing .planted-gait-body { opacity: 1; }
.reaction-rig.is-object-storing .planted-gait-controlled-atlas { opacity: 0; }
.reaction-rig.is-object-storing .planted-store-atlas-right {
  animation: planted-store-right-visibility 8.8s step-end 1 both;
}
.reaction-rig.is-object-storing .planted-store-atlas-right .planted-gait-full-atlas {
  animation: planted-full-atlas-two-v07 1.6s step-end 1 1s both;
}
.reaction-rig.is-object-storing .planted-store-atlas-left {
  animation: planted-store-left-visibility 8.8s step-end 1 both;
}
.reaction-rig.is-object-storing .planted-store-atlas-left .planted-gait-full-atlas {
  animation: planted-full-atlas-two-v07 0.95s step-end 1 6.3s both;
}

@keyframes planted-store-right-visibility {
  0%, 71.58% { opacity: 1; }
  71.59%, 100% { opacity: 0; }
}
@keyframes planted-store-left-visibility {
  0%, 71.58% { opacity: 0; }
  71.59%, 100% { opacity: 1; }
}

@keyframes planted-full-atlas-two {
  0.0000% { transform: translate3d(0, 0, 0); }
  5.2632% { transform: translate3d(-512px, 0, 0); }
  10.5263% { transform: translate3d(-1024px, 0, 0); }
  15.7895% { transform: translate3d(-1536px, 0, 0); }
  21.0526% { transform: translate3d(-2048px, 0, 0); }
  26.3158% { transform: translate3d(0, -512px, 0); }
  31.5789% { transform: translate3d(-512px, -512px, 0); }
  36.8421% { transform: translate3d(-1024px, -512px, 0); }
  42.1053% { transform: translate3d(-1536px, -512px, 0); }
  47.3684% { transform: translate3d(-2048px, -512px, 0); }
  52.6316% { transform: translate3d(0, -1024px, 0); }
  57.8947% { transform: translate3d(-512px, -1024px, 0); }
  63.1579% { transform: translate3d(-1024px, -1024px, 0); }
  68.4211% { transform: translate3d(-1536px, -1024px, 0); }
  73.6842% { transform: translate3d(-2048px, -1024px, 0); }
  78.9474% { transform: translate3d(0, -1536px, 0); }
  84.2105% { transform: translate3d(-512px, -1536px, 0); }
  89.4737% { transform: translate3d(-1024px, -1536px, 0); }
  94.7368% { transform: translate3d(-1536px, -1536px, 0); }
  100.0000% { transform: translate3d(-2048px, -1536px, 0); }
}
@keyframes planted-full-atlas-four {
  0.0000% { transform: translate3d(0, 0, 0); }
  2.5641% { transform: translate3d(-512px, 0, 0); }
  5.1282% { transform: translate3d(-1024px, 0, 0); }
  7.6923% { transform: translate3d(-1536px, 0, 0); }
  10.2564% { transform: translate3d(-2048px, 0, 0); }
  12.8205% { transform: translate3d(0, -512px, 0); }
  15.3846% { transform: translate3d(-512px, -512px, 0); }
  17.9487% { transform: translate3d(-1024px, -512px, 0); }
  20.5128% { transform: translate3d(-1536px, -512px, 0); }
  23.0769% { transform: translate3d(-2048px, -512px, 0); }
  25.6410% { transform: translate3d(0, -1024px, 0); }
  28.2051% { transform: translate3d(-512px, -1024px, 0); }
  30.7692% { transform: translate3d(-1024px, -1024px, 0); }
  33.3333% { transform: translate3d(-1536px, -1024px, 0); }
  35.8974% { transform: translate3d(-2048px, -1024px, 0); }
  38.4615% { transform: translate3d(0, -1536px, 0); }
  41.0256% { transform: translate3d(-512px, -1536px, 0); }
  43.5897% { transform: translate3d(-1024px, -1536px, 0); }
  46.1538% { transform: translate3d(-1536px, -1536px, 0); }
  48.7179% { transform: translate3d(-2048px, -1536px, 0); }
  51.2821% { transform: translate3d(0, -2048px, 0); }
  53.8462% { transform: translate3d(-512px, -2048px, 0); }
  56.4103% { transform: translate3d(-1024px, -2048px, 0); }
  58.9744% { transform: translate3d(-1536px, -2048px, 0); }
  61.5385% { transform: translate3d(-2048px, -2048px, 0); }
  64.1026% { transform: translate3d(0, -2560px, 0); }
  66.6667% { transform: translate3d(-512px, -2560px, 0); }
  69.2308% { transform: translate3d(-1024px, -2560px, 0); }
  71.7949% { transform: translate3d(-1536px, -2560px, 0); }
  74.3590% { transform: translate3d(-2048px, -2560px, 0); }
  76.9231% { transform: translate3d(0, -3072px, 0); }
  79.4872% { transform: translate3d(-512px, -3072px, 0); }
  82.0513% { transform: translate3d(-1024px, -3072px, 0); }
  84.6154% { transform: translate3d(-1536px, -3072px, 0); }
  87.1795% { transform: translate3d(-2048px, -3072px, 0); }
  89.7436% { transform: translate3d(0, -3584px, 0); }
  92.3077% { transform: translate3d(-512px, -3584px, 0); }
  94.8718% { transform: translate3d(-1024px, -3584px, 0); }
  97.4359% { transform: translate3d(-1536px, -3584px, 0); }
  100.0000% { transform: translate3d(-2048px, -3584px, 0); }
}

@keyframes controlled-actor-two-step {
  0%, 2% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0); }
  15% { transform: translate3d(var(--actor-move-eighth-x), var(--actor-move-eighth-y), 0); }
  25% { transform: translate3d(var(--actor-move-quarter-x), var(--actor-move-quarter-y), 0); }
  35% { transform: translate3d(var(--actor-move-three-eighths-x), var(--actor-move-three-eighths-y), 0); }
  48%, 52% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0); }
  65% { transform: translate3d(var(--actor-move-five-eighths-x), var(--actor-move-five-eighths-y), 0); }
  75% { transform: translate3d(var(--actor-move-three-quarters-x), var(--actor-move-three-quarters-y), 0); }
  85% { transform: translate3d(var(--actor-move-seven-eighths-x), var(--actor-move-seven-eighths-y), 0); }
  98%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0); }
}
@keyframes controlled-shadow-two-step {
  0%, 2% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0); }
  15% { transform: translate3d(var(--actor-move-eighth-x), var(--actor-move-eighth-y), 0); }
  25% { transform: translate3d(var(--actor-move-quarter-x), var(--actor-move-quarter-y), 0); }
  35% { transform: translate3d(var(--actor-move-three-eighths-x), var(--actor-move-three-eighths-y), 0); }
  48%, 52% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0); }
  65% { transform: translate3d(var(--actor-move-five-eighths-x), var(--actor-move-five-eighths-y), 0); }
  75% { transform: translate3d(var(--actor-move-three-quarters-x), var(--actor-move-three-quarters-y), 0); }
  85% { transform: translate3d(var(--actor-move-seven-eighths-x), var(--actor-move-seven-eighths-y), 0); }
  98%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0); }
}
@keyframes controlled-actor-four-step {
  0%, 1% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0); }
  12.5% { transform: translate3d(var(--actor-move-eighth-x), var(--actor-move-eighth-y), 0); }
  24%, 26% { transform: translate3d(var(--actor-move-quarter-x), var(--actor-move-quarter-y), 0); }
  37.5% { transform: translate3d(var(--actor-move-three-eighths-x), var(--actor-move-three-eighths-y), 0); }
  49%, 51% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0); }
  62.5% { transform: translate3d(var(--actor-move-five-eighths-x), var(--actor-move-five-eighths-y), 0); }
  74%, 76% { transform: translate3d(var(--actor-move-three-quarters-x), var(--actor-move-three-quarters-y), 0); }
  87.5% { transform: translate3d(var(--actor-move-seven-eighths-x), var(--actor-move-seven-eighths-y), 0); }
  99%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0); }
}
@keyframes controlled-shadow-four-step {
  0%, 1% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0); }
  12.5% { transform: translate3d(var(--actor-move-eighth-x), var(--actor-move-eighth-y), 0); }
  24%, 26% { transform: translate3d(var(--actor-move-quarter-x), var(--actor-move-quarter-y), 0); }
  37.5% { transform: translate3d(var(--actor-move-three-eighths-x), var(--actor-move-three-eighths-y), 0); }
  49%, 51% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0); }
  62.5% { transform: translate3d(var(--actor-move-five-eighths-x), var(--actor-move-five-eighths-y), 0); }
  74%, 76% { transform: translate3d(var(--actor-move-three-quarters-x), var(--actor-move-three-quarters-y), 0); }
  87.5% { transform: translate3d(var(--actor-move-seven-eighths-x), var(--actor-move-seven-eighths-y), 0); }
  99%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0); }
}
@keyframes planted-atlas-left-two {
  0.0000% { transform: translate3d(0px, 0px, 0); }
  5.2632% { transform: translate3d(-512px, 0px, 0); }
  10.5263% { transform: translate3d(-1024px, 0px, 0); }
  15.7895% { transform: translate3d(-1536px, 0px, 0); }
  21.0526% { transform: translate3d(-2048px, 0px, 0); }
  26.3158% { transform: translate3d(0px, -168px, 0); }
  31.5789% { transform: translate3d(-512px, -168px, 0); }
  36.8421% { transform: translate3d(-1024px, -168px, 0); }
  42.1053% { transform: translate3d(-1536px, -168px, 0); }
  47.3684% { transform: translate3d(-2048px, -168px, 0); }
  52.6316% { transform: translate3d(0px, -336px, 0); }
  57.8947% { transform: translate3d(-512px, -336px, 0); }
  63.1579% { transform: translate3d(-1024px, -336px, 0); }
  68.4211% { transform: translate3d(-1536px, -336px, 0); }
  73.6842% { transform: translate3d(-2048px, -336px, 0); }
  78.9474% { transform: translate3d(0px, -504px, 0); }
  84.2105% { transform: translate3d(-512px, -504px, 0); }
  89.4737% { transform: translate3d(-1024px, -504px, 0); }
  94.7368% { transform: translate3d(-1536px, -504px, 0); }
  100.0000% { transform: translate3d(-2048px, -504px, 0); }
}
@keyframes planted-atlas-left-four {
  0.0000% { transform: translate3d(0px, 0px, 0); }
  2.6316% { transform: translate3d(-512px, 0px, 0); }
  5.2632% { transform: translate3d(-1024px, 0px, 0); }
  7.8947% { transform: translate3d(-1536px, 0px, 0); }
  10.5263% { transform: translate3d(-2048px, 0px, 0); }
  13.1579% { transform: translate3d(0px, -168px, 0); }
  15.7895% { transform: translate3d(-512px, -168px, 0); }
  18.4211% { transform: translate3d(-1024px, -168px, 0); }
  21.0526% { transform: translate3d(-1536px, -168px, 0); }
  23.6842% { transform: translate3d(-2048px, -168px, 0); }
  26.3158% { transform: translate3d(0px, -336px, 0); }
  28.9474% { transform: translate3d(-512px, -336px, 0); }
  31.5789% { transform: translate3d(-1024px, -336px, 0); }
  34.2105% { transform: translate3d(-1536px, -336px, 0); }
  36.8421% { transform: translate3d(-2048px, -336px, 0); }
  39.4737% { transform: translate3d(0px, -504px, 0); }
  42.1053% { transform: translate3d(-512px, -504px, 0); }
  44.7368% { transform: translate3d(-1024px, -504px, 0); }
  47.3684% { transform: translate3d(-1536px, -504px, 0); }
  50.0000% { transform: translate3d(-2048px, -504px, 0); }
  50.0001% { transform: translate3d(0px, 0px, 0); }
  52.6316% { transform: translate3d(-512px, 0px, 0); }
  55.2632% { transform: translate3d(-1024px, 0px, 0); }
  57.8947% { transform: translate3d(-1536px, 0px, 0); }
  60.5263% { transform: translate3d(-2048px, 0px, 0); }
  63.1579% { transform: translate3d(0px, -168px, 0); }
  65.7895% { transform: translate3d(-512px, -168px, 0); }
  68.4211% { transform: translate3d(-1024px, -168px, 0); }
  71.0526% { transform: translate3d(-1536px, -168px, 0); }
  73.6842% { transform: translate3d(-2048px, -168px, 0); }
  76.3158% { transform: translate3d(0px, -336px, 0); }
  78.9474% { transform: translate3d(-512px, -336px, 0); }
  81.5789% { transform: translate3d(-1024px, -336px, 0); }
  84.2105% { transform: translate3d(-1536px, -336px, 0); }
  86.8421% { transform: translate3d(-2048px, -336px, 0); }
  89.4737% { transform: translate3d(0px, -504px, 0); }
  92.1053% { transform: translate3d(-512px, -504px, 0); }
  94.7368% { transform: translate3d(-1024px, -504px, 0); }
  97.3684% { transform: translate3d(-1536px, -504px, 0); }
  100.0000% { transform: translate3d(-2048px, -504px, 0); }
}
@keyframes planted-atlas-right-two {
  0.0000% { transform: translate3d(0px, -672px, 0); }
  5.2632% { transform: translate3d(-512px, -672px, 0); }
  10.5263% { transform: translate3d(-1024px, -672px, 0); }
  15.7895% { transform: translate3d(-1536px, -672px, 0); }
  21.0526% { transform: translate3d(-2048px, -672px, 0); }
  26.3158% { transform: translate3d(0px, -840px, 0); }
  31.5789% { transform: translate3d(-512px, -840px, 0); }
  36.8421% { transform: translate3d(-1024px, -840px, 0); }
  42.1053% { transform: translate3d(-1536px, -840px, 0); }
  47.3684% { transform: translate3d(-2048px, -840px, 0); }
  52.6316% { transform: translate3d(0px, -1008px, 0); }
  57.8947% { transform: translate3d(-512px, -1008px, 0); }
  63.1579% { transform: translate3d(-1024px, -1008px, 0); }
  68.4211% { transform: translate3d(-1536px, -1008px, 0); }
  73.6842% { transform: translate3d(-2048px, -1008px, 0); }
  78.9474% { transform: translate3d(0px, -1176px, 0); }
  84.2105% { transform: translate3d(-512px, -1176px, 0); }
  89.4737% { transform: translate3d(-1024px, -1176px, 0); }
  94.7368% { transform: translate3d(-1536px, -1176px, 0); }
  100.0000% { transform: translate3d(-2048px, -1176px, 0); }
}
@keyframes planted-atlas-right-four {
  0.0000% { transform: translate3d(0px, -672px, 0); }
  2.6316% { transform: translate3d(-512px, -672px, 0); }
  5.2632% { transform: translate3d(-1024px, -672px, 0); }
  7.8947% { transform: translate3d(-1536px, -672px, 0); }
  10.5263% { transform: translate3d(-2048px, -672px, 0); }
  13.1579% { transform: translate3d(0px, -840px, 0); }
  15.7895% { transform: translate3d(-512px, -840px, 0); }
  18.4211% { transform: translate3d(-1024px, -840px, 0); }
  21.0526% { transform: translate3d(-1536px, -840px, 0); }
  23.6842% { transform: translate3d(-2048px, -840px, 0); }
  26.3158% { transform: translate3d(0px, -1008px, 0); }
  28.9474% { transform: translate3d(-512px, -1008px, 0); }
  31.5789% { transform: translate3d(-1024px, -1008px, 0); }
  34.2105% { transform: translate3d(-1536px, -1008px, 0); }
  36.8421% { transform: translate3d(-2048px, -1008px, 0); }
  39.4737% { transform: translate3d(0px, -1176px, 0); }
  42.1053% { transform: translate3d(-512px, -1176px, 0); }
  44.7368% { transform: translate3d(-1024px, -1176px, 0); }
  47.3684% { transform: translate3d(-1536px, -1176px, 0); }
  50.0000% { transform: translate3d(-2048px, -1176px, 0); }
  50.0001% { transform: translate3d(0px, -672px, 0); }
  52.6316% { transform: translate3d(-512px, -672px, 0); }
  55.2632% { transform: translate3d(-1024px, -672px, 0); }
  57.8947% { transform: translate3d(-1536px, -672px, 0); }
  60.5263% { transform: translate3d(-2048px, -672px, 0); }
  63.1579% { transform: translate3d(0px, -840px, 0); }
  65.7895% { transform: translate3d(-512px, -840px, 0); }
  68.4211% { transform: translate3d(-1024px, -840px, 0); }
  71.0526% { transform: translate3d(-1536px, -840px, 0); }
  73.6842% { transform: translate3d(-2048px, -840px, 0); }
  76.3158% { transform: translate3d(0px, -1008px, 0); }
  78.9474% { transform: translate3d(-512px, -1008px, 0); }
  81.5789% { transform: translate3d(-1024px, -1008px, 0); }
  84.2105% { transform: translate3d(-1536px, -1008px, 0); }
  86.8421% { transform: translate3d(-2048px, -1008px, 0); }
  89.4737% { transform: translate3d(0px, -1176px, 0); }
  92.1053% { transform: translate3d(-512px, -1176px, 0); }
  94.7368% { transform: translate3d(-1024px, -1176px, 0); }
  97.3684% { transform: translate3d(-1536px, -1176px, 0); }
  100.0000% { transform: translate3d(-2048px, -1176px, 0); }
}
@keyframes planted-atlas-back-two {
  0.0000% { transform: translate3d(0px, -1344px, 0); }
  5.2632% { transform: translate3d(-512px, -1344px, 0); }
  10.5263% { transform: translate3d(-1024px, -1344px, 0); }
  15.7895% { transform: translate3d(-1536px, -1344px, 0); }
  21.0526% { transform: translate3d(-2048px, -1344px, 0); }
  26.3158% { transform: translate3d(0px, -1512px, 0); }
  31.5789% { transform: translate3d(-512px, -1512px, 0); }
  36.8421% { transform: translate3d(-1024px, -1512px, 0); }
  42.1053% { transform: translate3d(-1536px, -1512px, 0); }
  47.3684% { transform: translate3d(-2048px, -1512px, 0); }
  52.6316% { transform: translate3d(0px, -1680px, 0); }
  57.8947% { transform: translate3d(-512px, -1680px, 0); }
  63.1579% { transform: translate3d(-1024px, -1680px, 0); }
  68.4211% { transform: translate3d(-1536px, -1680px, 0); }
  73.6842% { transform: translate3d(-2048px, -1680px, 0); }
  78.9474% { transform: translate3d(0px, -1848px, 0); }
  84.2105% { transform: translate3d(-512px, -1848px, 0); }
  89.4737% { transform: translate3d(-1024px, -1848px, 0); }
  94.7368% { transform: translate3d(-1536px, -1848px, 0); }
  100.0000% { transform: translate3d(-2048px, -1848px, 0); }
}
@keyframes planted-atlas-back-four {
  0.0000% { transform: translate3d(0px, -1344px, 0); }
  2.6316% { transform: translate3d(-512px, -1344px, 0); }
  5.2632% { transform: translate3d(-1024px, -1344px, 0); }
  7.8947% { transform: translate3d(-1536px, -1344px, 0); }
  10.5263% { transform: translate3d(-2048px, -1344px, 0); }
  13.1579% { transform: translate3d(0px, -1512px, 0); }
  15.7895% { transform: translate3d(-512px, -1512px, 0); }
  18.4211% { transform: translate3d(-1024px, -1512px, 0); }
  21.0526% { transform: translate3d(-1536px, -1512px, 0); }
  23.6842% { transform: translate3d(-2048px, -1512px, 0); }
  26.3158% { transform: translate3d(0px, -1680px, 0); }
  28.9474% { transform: translate3d(-512px, -1680px, 0); }
  31.5789% { transform: translate3d(-1024px, -1680px, 0); }
  34.2105% { transform: translate3d(-1536px, -1680px, 0); }
  36.8421% { transform: translate3d(-2048px, -1680px, 0); }
  39.4737% { transform: translate3d(0px, -1848px, 0); }
  42.1053% { transform: translate3d(-512px, -1848px, 0); }
  44.7368% { transform: translate3d(-1024px, -1848px, 0); }
  47.3684% { transform: translate3d(-1536px, -1848px, 0); }
  50.0000% { transform: translate3d(-2048px, -1848px, 0); }
  50.0001% { transform: translate3d(0px, -1344px, 0); }
  52.6316% { transform: translate3d(-512px, -1344px, 0); }
  55.2632% { transform: translate3d(-1024px, -1344px, 0); }
  57.8947% { transform: translate3d(-1536px, -1344px, 0); }
  60.5263% { transform: translate3d(-2048px, -1344px, 0); }
  63.1579% { transform: translate3d(0px, -1512px, 0); }
  65.7895% { transform: translate3d(-512px, -1512px, 0); }
  68.4211% { transform: translate3d(-1024px, -1512px, 0); }
  71.0526% { transform: translate3d(-1536px, -1512px, 0); }
  73.6842% { transform: translate3d(-2048px, -1512px, 0); }
  76.3158% { transform: translate3d(0px, -1680px, 0); }
  78.9474% { transform: translate3d(-512px, -1680px, 0); }
  81.5789% { transform: translate3d(-1024px, -1680px, 0); }
  84.2105% { transform: translate3d(-1536px, -1680px, 0); }
  86.8421% { transform: translate3d(-2048px, -1680px, 0); }
  89.4737% { transform: translate3d(0px, -1848px, 0); }
  92.1053% { transform: translate3d(-512px, -1848px, 0); }
  94.7368% { transform: translate3d(-1024px, -1848px, 0); }
  97.3684% { transform: translate3d(-1536px, -1848px, 0); }
  100.0000% { transform: translate3d(-2048px, -1848px, 0); }
}
@keyframes planted-atlas-forward-two {
  0.0000% { transform: translate3d(0px, -2016px, 0); }
  5.2632% { transform: translate3d(-512px, -2016px, 0); }
  10.5263% { transform: translate3d(-1024px, -2016px, 0); }
  15.7895% { transform: translate3d(-1536px, -2016px, 0); }
  21.0526% { transform: translate3d(-2048px, -2016px, 0); }
  26.3158% { transform: translate3d(0px, -2184px, 0); }
  31.5789% { transform: translate3d(-512px, -2184px, 0); }
  36.8421% { transform: translate3d(-1024px, -2184px, 0); }
  42.1053% { transform: translate3d(-1536px, -2184px, 0); }
  47.3684% { transform: translate3d(-2048px, -2184px, 0); }
  52.6316% { transform: translate3d(0px, -2352px, 0); }
  57.8947% { transform: translate3d(-512px, -2352px, 0); }
  63.1579% { transform: translate3d(-1024px, -2352px, 0); }
  68.4211% { transform: translate3d(-1536px, -2352px, 0); }
  73.6842% { transform: translate3d(-2048px, -2352px, 0); }
  78.9474% { transform: translate3d(0px, -2520px, 0); }
  84.2105% { transform: translate3d(-512px, -2520px, 0); }
  89.4737% { transform: translate3d(-1024px, -2520px, 0); }
  94.7368% { transform: translate3d(-1536px, -2520px, 0); }
  100.0000% { transform: translate3d(-2048px, -2520px, 0); }
}

/* Shelf-only travel: the body and its depth advance during weight transfer,
   then hold briefly while each rear foot is visibly planted. */
.actor-world-rig.is-controlled-moving.movement-8-step.movement-dir-back {
  animation: controlled-actor-eight-step-planted var(--actor-move-duration) linear 1 forwards;
}

.shadow-world-rig.is-controlled-moving.movement-8-step.movement-dir-back {
  animation: controlled-shadow-eight-step-planted var(--actor-move-duration) linear 1 forwards;
}

.actor-world-rig.is-controlled-moving.movement-8-step.movement-dir-back .actor-depth-rig,
.shadow-world-rig.is-controlled-moving.movement-8-step.movement-dir-back .shadow-depth-rig {
  animation: controlled-depth-eight-step-planted var(--actor-move-duration) linear 1 forwards;
}

@keyframes controlled-actor-eight-step-planted {
  0%, 2.5% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0); }
  11.5%, 14% { transform: translate3d(var(--actor-move-eighth-x), var(--actor-move-eighth-y), 0); }
  23%, 27% { transform: translate3d(var(--actor-move-quarter-x), var(--actor-move-quarter-y), 0); }
  36.5%, 39% { transform: translate3d(var(--actor-move-three-eighths-x), var(--actor-move-three-eighths-y), 0); }
  48%, 52% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0); }
  61.5%, 64% { transform: translate3d(var(--actor-move-five-eighths-x), var(--actor-move-five-eighths-y), 0); }
  73%, 77% { transform: translate3d(var(--actor-move-three-quarters-x), var(--actor-move-three-quarters-y), 0); }
  86.5%, 89% { transform: translate3d(var(--actor-move-seven-eighths-x), var(--actor-move-seven-eighths-y), 0); }
  98%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0); }
}

@keyframes controlled-shadow-eight-step-planted {
  0%, 2.5% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0); }
  11.5%, 14% { transform: translate3d(var(--actor-move-eighth-x), var(--actor-move-eighth-y), 0); }
  23%, 27% { transform: translate3d(var(--actor-move-quarter-x), var(--actor-move-quarter-y), 0); }
  36.5%, 39% { transform: translate3d(var(--actor-move-three-eighths-x), var(--actor-move-three-eighths-y), 0); }
  48%, 52% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0); }
  61.5%, 64% { transform: translate3d(var(--actor-move-five-eighths-x), var(--actor-move-five-eighths-y), 0); }
  73%, 77% { transform: translate3d(var(--actor-move-three-quarters-x), var(--actor-move-three-quarters-y), 0); }
  86.5%, 89% { transform: translate3d(var(--actor-move-seven-eighths-x), var(--actor-move-seven-eighths-y), 0); }
  98%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0); }
}

@keyframes controlled-depth-eight-step-planted {
  0%, 2.5% { transform: scale(var(--actor-move-start-scale)); }
  11.5%, 14% { transform: scale(var(--actor-move-eighth-scale)); }
  23%, 27% { transform: scale(var(--actor-move-quarter-scale)); }
  36.5%, 39% { transform: scale(var(--actor-move-three-eighths-scale)); }
  48%, 52% { transform: scale(var(--actor-move-half-scale)); }
  61.5%, 64% { transform: scale(var(--actor-move-five-eighths-scale)); }
  73%, 77% { transform: scale(var(--actor-move-three-quarters-scale)); }
  86.5%, 89% { transform: scale(var(--actor-move-seven-eighths-scale)); }
  98%, 100% { transform: scale(var(--actor-move-end-scale)); }
}

/* Shelf travel is one continuous 10-step timeline. Three persistent atlas
   layers remove class toggles at the 4+4+2 boundaries. */
/* Keep the same atlas geometry through walking AND the final release.
   Dropping to the base 2200px height changes the sampled row at step 10. */
.actor-world-rig.movement-10-step.is-shelf-retreat .planted-gait-controlled-atlas {
  height: 3960px;
}

.actor-world-rig.is-controlled-moving.movement-10-step {
  animation: controlled-actor-ten-step-linear var(--actor-move-duration) linear 1 forwards;
}

.shadow-world-rig.is-controlled-moving.movement-10-step {
  animation: controlled-shadow-ten-step-linear var(--actor-move-duration) linear 1 forwards;
}

.actor-world-rig.is-controlled-moving.movement-10-step .reaction-rig {
  animation: controlled-weight-four-step var(--actor-gait-pair-duration) linear 2.5 forwards;
}

.actor-world-rig.is-controlled-moving.movement-10-step .planted-gait-controlled-atlas {
  height: 3960px;
  animation: planted-full-atlas-four-v07 var(--actor-gait-pair-duration) step-end 2.5 both;
}

.actor-world-rig.is-controlled-moving.movement-10-step .actor-depth-rig,
.shadow-world-rig.is-controlled-moving.movement-10-step .shadow-depth-rig {
  animation: controlled-depth-ten-step-linear var(--actor-move-duration) linear 1 forwards;
}

.actor-world-rig.is-controlled-moving.movement-10-step.is-shelf-retreat {
  animation-name: controlled-actor-ten-step-planted;
}

.shadow-world-rig.is-controlled-moving.movement-10-step.is-shelf-retreat {
  animation-name: controlled-shadow-ten-step-planted;
}

.actor-world-rig.is-controlled-moving.movement-10-step.is-shelf-retreat .reaction-rig {
  animation: controlled-weight-ten-step-shelf var(--actor-move-duration) linear 1 both;
}

.actor-world-rig.is-controlled-moving.movement-10-step.is-shelf-retreat .actor-depth-rig,
.shadow-world-rig.is-controlled-moving.movement-10-step.is-shelf-retreat .shadow-depth-rig {
  animation-name: controlled-depth-ten-step-planted;
}

.actor-world-rig.is-controlled-moving.movement-10-step .shelf-gait-segment-one {
  animation: planted-full-atlas-four-v07 3200ms step-end 1 0ms both,
    shelf-gait-segment-one-visible var(--actor-move-duration) step-end 1 both;
}

.actor-world-rig.is-controlled-moving.movement-10-step .shelf-gait-segment-two {
  animation: planted-full-atlas-four-v07 3200ms step-end 1 3520ms both,
    shelf-gait-segment-two-visible var(--actor-move-duration) step-end 1 both;
}

.actor-world-rig.is-controlled-moving.movement-10-step .shelf-gait-segment-three {
  animation: planted-full-atlas-four-v07 3200ms step-end 1 7040ms both,
    shelf-gait-segment-three-visible var(--actor-move-duration) step-end 1 both;
}

.actor-world-rig.is-controlled-moving.movement-10-step.is-shelf-retreat .reaction-pupil {
  animation: shelf-retreat-intermittent-gaze var(--actor-move-duration) ease-in-out 1 both;
}

.actor-world-rig.is-controlled-releasing.movement-10-step.is-shelf-retreat .character-body-normal {
  animation: shelf-arrival-normal-swap var(--actor-release-duration) step-end 1 both;
}

.actor-world-rig.is-controlled-releasing.movement-10-step.is-shelf-retreat .planted-gait-body {
  opacity: 1;
  animation: shelf-arrival-gait-swap var(--actor-release-duration) step-end 1 both;
}

.actor-world-rig.is-controlled-releasing.movement-10-step.is-shelf-retreat .shelf-gait-segment-one,
.actor-world-rig.is-controlled-releasing.movement-10-step.is-shelf-retreat .shelf-gait-segment-two {
  display: none;
}

.actor-world-rig.is-controlled-releasing.movement-10-step.is-shelf-retreat .shelf-gait-segment-three {
  opacity: 1;
  animation: shelf-final-atlas-freeze var(--actor-release-duration) step-end 1 both;
}

@keyframes shelf-gait-segment-one-visible {
  0%, 40.7406% { opacity: 1; visibility: visible; }
  40.7407%, 100% { opacity: 0; visibility: hidden; }
}

@keyframes shelf-gait-segment-two-visible {
  0%, 40.7406% { opacity: 0; visibility: hidden; }
  40.7407%, 81.4814% { opacity: 1; visibility: visible; }
  81.4815%, 100% { opacity: 0; visibility: hidden; }
}

@keyframes shelf-gait-segment-three-visible {
  0%, 81.4814% { opacity: 0; visibility: hidden; }
  81.4815%, 100% { opacity: 1; visibility: visible; }
}

@keyframes shelf-final-atlas-freeze {
  0%, 100% { transform: translate3d(-1260px, -1760px, 0); }
}

@keyframes shelf-arrival-normal-swap {
  0%, 99.99% { opacity: 0; }
  100% { opacity: 1; }
}

@keyframes shelf-arrival-gait-swap {
  0%, 99.99% { opacity: 1; }
  100% { opacity: 0; }
}

@keyframes shelf-retreat-intermittent-gaze {
  0%, 14%, 36%, 50%, 72%, 100% { transform: translate3d(0, 0, 0); }
  20%, 30%, 56%, 66% { transform: translate3d(5px, -4px, 0); }
}

@keyframes controlled-weight-ten-step-shelf {
  0%, 1.8519% { transform-origin: 278px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  5.1852% { transform-origin: 278px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(-1.45deg); }
  8.5185% { transform-origin: 278px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  10.3704% { transform-origin: 437px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  13.7037% { transform-origin: 437px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(1.45deg); }
  17.0370% { transform-origin: 437px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  20.0000% { transform-origin: 278px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  23.3333% { transform-origin: 278px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(-1.45deg); }
  26.6667% { transform-origin: 278px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  28.5185% { transform-origin: 437px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  31.8519% { transform-origin: 437px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(1.45deg); }
  35.1852%, 40.7407% { transform-origin: 437px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  42.5926% { transform-origin: 278px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  45.9259% { transform-origin: 278px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(-1.45deg); }
  49.2593% { transform-origin: 278px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  51.1111% { transform-origin: 437px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  54.4444% { transform-origin: 437px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(1.45deg); }
  57.7778% { transform-origin: 437px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  60.7407% { transform-origin: 278px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  64.0741% { transform-origin: 278px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(-1.45deg); }
  67.4074% { transform-origin: 278px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  69.2593% { transform-origin: 437px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  72.5926% { transform-origin: 437px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(1.45deg); }
  75.9259%, 81.4815% { transform-origin: 437px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  83.3333% { transform-origin: 278px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  86.6667% { transform-origin: 278px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(-1.45deg); }
  90.0000% { transform-origin: 278px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  91.8519% { transform-origin: 437px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  95.1852% { transform-origin: 437px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(1.45deg); }
  98.5185%, 100% { transform-origin: 437px 1006px; transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
}

@keyframes controlled-actor-ten-step-planted {
  0%, 1.8519% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0); }
  8.3333%, 10.1852% { transform: translate3d(var(--actor-move-tenth-x), var(--actor-move-tenth-y), 0); }
  17.5926%, 19.4444% { transform: translate3d(var(--actor-move-fifth-x), var(--actor-move-fifth-y), 0); }
  26.8519%, 28.7037% { transform: translate3d(var(--actor-move-three-tenths-x), var(--actor-move-three-tenths-y), 0); }
  36.1111%, 40.7407% { transform: translate3d(var(--actor-move-two-fifths-x), var(--actor-move-two-fifths-y), 0); }
  49.0741%, 50.9259% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0); }
  58.3333%, 60.1852% { transform: translate3d(var(--actor-move-three-fifths-x), var(--actor-move-three-fifths-y), 0); }
  67.5926%, 69.4444% { transform: translate3d(var(--actor-move-seven-tenths-x), var(--actor-move-seven-tenths-y), 0); }
  76.8519%, 81.4815% { transform: translate3d(var(--actor-move-four-fifths-x), var(--actor-move-four-fifths-y), 0); }
  89.8148%, 91.6667% { transform: translate3d(var(--actor-move-nine-tenths-x), var(--actor-move-nine-tenths-y), 0); }
  99.0741%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0); }
}

@keyframes controlled-shadow-ten-step-planted {
  0%, 1.8519% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0); }
  8.3333%, 10.1852% { transform: translate3d(var(--actor-move-tenth-x), var(--actor-move-tenth-y), 0); }
  17.5926%, 19.4444% { transform: translate3d(var(--actor-move-fifth-x), var(--actor-move-fifth-y), 0); }
  26.8519%, 28.7037% { transform: translate3d(var(--actor-move-three-tenths-x), var(--actor-move-three-tenths-y), 0); }
  36.1111%, 40.7407% { transform: translate3d(var(--actor-move-two-fifths-x), var(--actor-move-two-fifths-y), 0); }
  49.0741%, 50.9259% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0); }
  58.3333%, 60.1852% { transform: translate3d(var(--actor-move-three-fifths-x), var(--actor-move-three-fifths-y), 0); }
  67.5926%, 69.4444% { transform: translate3d(var(--actor-move-seven-tenths-x), var(--actor-move-seven-tenths-y), 0); }
  76.8519%, 81.4815% { transform: translate3d(var(--actor-move-four-fifths-x), var(--actor-move-four-fifths-y), 0); }
  89.8148%, 91.6667% { transform: translate3d(var(--actor-move-nine-tenths-x), var(--actor-move-nine-tenths-y), 0); }
  99.0741%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0); }
}

@keyframes controlled-depth-ten-step-planted {
  0%, 1.8519% { transform: scale(var(--actor-move-start-scale)); }
  8.3333%, 10.1852% { transform: scale(var(--actor-move-tenth-scale)); }
  17.5926%, 19.4444% { transform: scale(var(--actor-move-fifth-scale)); }
  26.8519%, 28.7037% { transform: scale(var(--actor-move-three-tenths-scale)); }
  36.1111%, 40.7407% { transform: scale(var(--actor-move-two-fifths-scale)); }
  49.0741%, 50.9259% { transform: scale(var(--actor-move-half-scale)); }
  58.3333%, 60.1852% { transform: scale(var(--actor-move-three-fifths-scale)); }
  67.5926%, 69.4444% { transform: scale(var(--actor-move-seven-tenths-scale)); }
  76.8519%, 81.4815% { transform: scale(var(--actor-move-four-fifths-scale)); }
  89.8148%, 91.6667% { transform: scale(var(--actor-move-nine-tenths-scale)); }
  99.0741%, 100% { transform: scale(var(--actor-move-end-scale)); }
}

@keyframes controlled-actor-ten-step-linear {
  0%, 2% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0); }
  9%, 11% { transform: translate3d(var(--actor-move-tenth-x), var(--actor-move-tenth-y), 0); }
  19%, 21% { transform: translate3d(var(--actor-move-fifth-x), var(--actor-move-fifth-y), 0); }
  29%, 31% { transform: translate3d(var(--actor-move-three-tenths-x), var(--actor-move-three-tenths-y), 0); }
  39%, 41% { transform: translate3d(var(--actor-move-two-fifths-x), var(--actor-move-two-fifths-y), 0); }
  49%, 51% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0); }
  59%, 61% { transform: translate3d(var(--actor-move-three-fifths-x), var(--actor-move-three-fifths-y), 0); }
  69%, 71% { transform: translate3d(var(--actor-move-seven-tenths-x), var(--actor-move-seven-tenths-y), 0); }
  79%, 81% { transform: translate3d(var(--actor-move-four-fifths-x), var(--actor-move-four-fifths-y), 0); }
  89%, 91% { transform: translate3d(var(--actor-move-nine-tenths-x), var(--actor-move-nine-tenths-y), 0); }
  99%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0); }
}

@keyframes controlled-shadow-ten-step-linear {
  0%, 2% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0); }
  9%, 11% { transform: translate3d(var(--actor-move-tenth-x), var(--actor-move-tenth-y), 0); }
  19%, 21% { transform: translate3d(var(--actor-move-fifth-x), var(--actor-move-fifth-y), 0); }
  29%, 31% { transform: translate3d(var(--actor-move-three-tenths-x), var(--actor-move-three-tenths-y), 0); }
  39%, 41% { transform: translate3d(var(--actor-move-two-fifths-x), var(--actor-move-two-fifths-y), 0); }
  49%, 51% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0); }
  59%, 61% { transform: translate3d(var(--actor-move-three-fifths-x), var(--actor-move-three-fifths-y), 0); }
  69%, 71% { transform: translate3d(var(--actor-move-seven-tenths-x), var(--actor-move-seven-tenths-y), 0); }
  79%, 81% { transform: translate3d(var(--actor-move-four-fifths-x), var(--actor-move-four-fifths-y), 0); }
  89%, 91% { transform: translate3d(var(--actor-move-nine-tenths-x), var(--actor-move-nine-tenths-y), 0); }
  99%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0); }
}

@keyframes controlled-depth-ten-step-linear {
  0%, 2% { transform: scale(var(--actor-move-start-scale)); }
  9%, 11% { transform: scale(var(--actor-move-tenth-scale)); }
  19%, 21% { transform: scale(var(--actor-move-fifth-scale)); }
  29%, 31% { transform: scale(var(--actor-move-three-tenths-scale)); }
  39%, 41% { transform: scale(var(--actor-move-two-fifths-scale)); }
  49%, 51% { transform: scale(var(--actor-move-half-scale)); }
  59%, 61% { transform: scale(var(--actor-move-three-fifths-scale)); }
  69%, 71% { transform: scale(var(--actor-move-seven-tenths-scale)); }
  79%, 81% { transform: scale(var(--actor-move-four-fifths-scale)); }
  89%, 91% { transform: scale(var(--actor-move-nine-tenths-scale)); }
  99%, 100% { transform: scale(var(--actor-move-end-scale)); }
}
@keyframes planted-atlas-forward-four {
  0.0000% { transform: translate3d(0px, -2016px, 0); }
  2.6316% { transform: translate3d(-512px, -2016px, 0); }
  5.2632% { transform: translate3d(-1024px, -2016px, 0); }
  7.8947% { transform: translate3d(-1536px, -2016px, 0); }
  10.5263% { transform: translate3d(-2048px, -2016px, 0); }
  13.1579% { transform: translate3d(0px, -2184px, 0); }
  15.7895% { transform: translate3d(-512px, -2184px, 0); }
  18.4211% { transform: translate3d(-1024px, -2184px, 0); }
  21.0526% { transform: translate3d(-1536px, -2184px, 0); }
  23.6842% { transform: translate3d(-2048px, -2184px, 0); }
  26.3158% { transform: translate3d(0px, -2352px, 0); }
  28.9474% { transform: translate3d(-512px, -2352px, 0); }
  31.5789% { transform: translate3d(-1024px, -2352px, 0); }
  34.2105% { transform: translate3d(-1536px, -2352px, 0); }
  36.8421% { transform: translate3d(-2048px, -2352px, 0); }
  39.4737% { transform: translate3d(0px, -2520px, 0); }
  42.1053% { transform: translate3d(-512px, -2520px, 0); }
  44.7368% { transform: translate3d(-1024px, -2520px, 0); }
  47.3684% { transform: translate3d(-1536px, -2520px, 0); }
  50.0000% { transform: translate3d(-2048px, -2520px, 0); }
  50.0001% { transform: translate3d(0px, -2016px, 0); }
  52.6316% { transform: translate3d(-512px, -2016px, 0); }
  55.2632% { transform: translate3d(-1024px, -2016px, 0); }
  57.8947% { transform: translate3d(-1536px, -2016px, 0); }
  60.5263% { transform: translate3d(-2048px, -2016px, 0); }
  63.1579% { transform: translate3d(0px, -2184px, 0); }
  65.7895% { transform: translate3d(-512px, -2184px, 0); }
  68.4211% { transform: translate3d(-1024px, -2184px, 0); }
  71.0526% { transform: translate3d(-1536px, -2184px, 0); }
  73.6842% { transform: translate3d(-2048px, -2184px, 0); }
  76.3158% { transform: translate3d(0px, -2352px, 0); }
  78.9474% { transform: translate3d(-512px, -2352px, 0); }
  81.5789% { transform: translate3d(-1024px, -2352px, 0); }
  84.2105% { transform: translate3d(-1536px, -2352px, 0); }
  86.8421% { transform: translate3d(-2048px, -2352px, 0); }
  89.4737% { transform: translate3d(0px, -2520px, 0); }
  92.1053% { transform: translate3d(-512px, -2520px, 0); }
  94.7368% { transform: translate3d(-1024px, -2520px, 0); }
  97.3684% { transform: translate3d(-1536px, -2520px, 0); }
  100.0000% { transform: translate3d(-2048px, -2520px, 0); }
}

/* R5 — Global Locomotion Grounding
   Root travel, soft weight transfer and both shadow layers share the same
   plant windows. This scope leaves every locked R1-R4 event untouched. */
.r5-controls {
  position: fixed;
  left: 12px;
  top: 12px;
  z-index: 80;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  border-radius: 8px;
  background: rgba(24, 24, 24, 0.72);
  color: #fff;
  font-size: 11px;
}

.room-viewport.is-r5-isolation .actor-world-rig.is-controlled-moving.movement-2-step {
  animation: r5-root-two-step var(--actor-move-duration) linear 1 forwards;
}

.room-viewport.is-r5-isolation .shadow-world-rig.is-controlled-moving.movement-2-step {
  animation: r5-shadow-root-two-step var(--actor-move-duration) linear 1 forwards;
}

.room-viewport.is-r5-isolation .actor-world-rig.is-controlled-moving.movement-4-step {
  animation: r5-root-four-step var(--actor-move-duration) linear 1 forwards;
}

.room-viewport.is-r5-isolation .shadow-world-rig.is-controlled-moving.movement-4-step {
  animation: r5-shadow-root-four-step var(--actor-move-duration) linear 1 forwards;
}

.room-viewport.is-r5-isolation .actor-world-rig.is-controlled-moving.movement-2-step .reaction-rig {
  animation: r5-weight-two-step var(--actor-move-duration) linear 1 forwards;
}

.room-viewport.is-r5-isolation .actor-world-rig.is-controlled-moving.movement-4-step .reaction-rig {
  animation: r5-weight-four-step var(--actor-move-duration) linear 1 forwards;
}

.room-viewport.is-r5-isolation .actor-world-rig.is-controlled-moving.movement-8-step .reaction-rig,
.room-viewport.is-r5-isolation .actor-world-rig.is-controlled-moving.movement-10-step.movement-dir-forward .reaction-rig {
  animation: r5-weight-four-step var(--actor-gait-pair-duration) linear infinite;
}

.room-viewport.is-r5-isolation .shadow-world-rig.is-controlled-moving .ground-shadow {
  animation: r5-ground-shadow-four var(--actor-gait-pair-duration) linear infinite;
  animation-play-state: running;
}

.room-viewport.is-r5-isolation .shadow-world-rig.is-controlled-moving.movement-2-step .ground-shadow {
  animation: r5-ground-shadow-two var(--actor-move-duration) linear 1 both;
}

.room-viewport.is-r5-isolation .shadow-world-rig.is-controlled-moving .contact-shadow {
  animation: r5-contact-shadow-four var(--actor-gait-pair-duration) linear infinite;
  animation-play-state: running;
}

.room-viewport.is-r5-isolation .shadow-world-rig.is-controlled-moving.movement-2-step .contact-shadow {
  animation: r5-contact-shadow-two var(--actor-move-duration) linear 1 both;
}

.room-viewport.is-r5-isolation .shadow-world-rig.is-controlled-moving.movement-10-step.is-shelf-retreat .ground-shadow {
  animation: r5-ground-shadow-ten-shelf var(--actor-move-duration) linear 1 both;
  animation-play-state: running;
}

.room-viewport.is-r5-isolation .shadow-world-rig.is-controlled-moving.movement-10-step.is-shelf-retreat .contact-shadow {
  animation: r5-contact-shadow-ten-shelf var(--actor-move-duration) linear 1 both;
  animation-play-state: running;
}

@keyframes r5-root-two-step {
  0%, 7% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0); }
  43%, 55% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0); }
  91%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0); }
}

@keyframes r5-shadow-root-two-step {
  0%, 7% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0); }
  43%, 55% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0); }
  91%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0); }
}

@keyframes r5-root-four-step {
  0%, 4% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0); }
  22%, 28% { transform: translate3d(var(--actor-move-quarter-x), var(--actor-move-quarter-y), 0); }
  46%, 54% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0); }
  72%, 78% { transform: translate3d(var(--actor-move-three-quarters-x), var(--actor-move-three-quarters-y), 0); }
  96%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0); }
}

@keyframes r5-shadow-root-four-step {
  0%, 4% { transform: translate3d(var(--actor-move-start-x), var(--actor-move-start-y), 0); }
  22%, 28% { transform: translate3d(var(--actor-move-quarter-x), var(--actor-move-quarter-y), 0); }
  46%, 54% { transform: translate3d(var(--actor-move-half-x), var(--actor-move-half-y), 0); }
  72%, 78% { transform: translate3d(var(--actor-move-three-quarters-x), var(--actor-move-three-quarters-y), 0); }
  96%, 100% { transform: translate3d(var(--actor-move-end-x), var(--actor-move-end-y), 0); }
}

@keyframes r5-weight-two-step {
  0%, 7%, 43%, 55%, 91%, 100% { transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  24% { transform: translate3d(0, calc(var(--actor-settle-distance) - 2px), 0) rotate(-0.85deg); }
  73% { transform: translate3d(0, calc(var(--actor-settle-distance) - 2px), 0) rotate(0.85deg); }
}

@keyframes r5-weight-four-step {
  0%, 4%, 22%, 28%, 46%, 54%, 72%, 78%, 96%, 100% { transform: translate3d(0, var(--actor-settle-distance), 0) rotate(0deg); }
  13%, 63% { transform: translate3d(0, calc(var(--actor-settle-distance) - 2px), 0) rotate(-0.8deg); }
  37%, 87% { transform: translate3d(0, calc(var(--actor-settle-distance) - 2px), 0) rotate(0.8deg); }
}

@keyframes r5-ground-shadow-two {
  0%, 7%, 43%, 55%, 91%, 100% { opacity: 0.96; transform: scaleX(1.1) scaleY(0.98); }
  24%, 73% { opacity: 0.93; transform: scaleX(1.07) scaleY(0.95); }
}

@keyframes r5-contact-shadow-two {
  0%, 7%, 43%, 55%, 91%, 100% { opacity: 0.91; transform: scaleX(1.02) scaleY(0.96); }
  24%, 73% { opacity: 0.86; transform: scaleX(0.98) scaleY(0.92); }
}

@keyframes r5-ground-shadow-four {
  0%, 4%, 22%, 28%, 46%, 54%, 72%, 78%, 96%, 100% { opacity: 0.96; transform: scaleX(1.1) scaleY(0.98); }
  13%, 37%, 63%, 87% { opacity: 0.93; transform: scaleX(1.07) scaleY(0.95); }
}

@keyframes r5-contact-shadow-four {
  0%, 4%, 22%, 28%, 46%, 54%, 72%, 78%, 96%, 100% { opacity: 0.91; transform: scaleX(1.02) scaleY(0.96); }
  13%, 37%, 63%, 87% { opacity: 0.86; transform: scaleX(0.98) scaleY(0.92); }
}

@keyframes r5-ground-shadow-ten-shelf {
  0%, 8.5%, 17%, 26.7%, 35.2%, 40.7%, 49.3%, 57.8%, 67.4%, 75.9%, 81.5%, 90%, 98.5%, 100% { opacity: 0.96; transform: scaleX(1.1) scaleY(0.98); }
  5.2%, 13.7%, 23.3%, 31.9%, 45.9%, 54.4%, 64.1%, 72.6%, 86.7%, 95.2% { opacity: 0.93; transform: scaleX(1.07) scaleY(0.95); }
}

@keyframes r5-contact-shadow-ten-shelf {
  0%, 8.5%, 17%, 26.7%, 35.2%, 40.7%, 49.3%, 57.8%, 67.4%, 75.9%, 81.5%, 90%, 98.5%, 100% { opacity: 0.91; transform: scaleX(1.02) scaleY(0.96); }
  5.2%, 13.7%, 23.3%, 31.9%, 45.9%, 54.4%, 64.1%, 72.6%, 86.7%, 95.2% { opacity: 0.86; transform: scaleX(0.98) scaleY(0.92); }
}

/* R6 — locked-event reintegration.
   These selectors expose only the already-PASSed renderer paths while the
   three-minute harness is active; no isolation control surface is mounted. */
.room-viewport.is-r6-harness .world-store-object,
.room-viewport.is-r6-harness .stored-cap-world {
  display: none !important;
}

.room-viewport.is-r6-harness .planted-gait-body {
  visibility: hidden;
}

.room-viewport.is-r6-harness .character-body-normal {
  visibility: visible;
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving.is-gait-takeover-ready .character-body-normal {
  visibility: visible;
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving.is-gait-takeover-ready .planted-gait-body {
  opacity: 1;
  visibility: visible;
}

/* Store owns the planted two-step atlas even though it is not a controlled
   movement. Keep that renderer paintable while the normal body is hidden. */
.room-viewport.is-r6-harness .reaction-rig.is-object-storing .character-body-normal {
  opacity: 0;
  visibility: hidden;
}

.room-viewport.is-r6-harness .reaction-rig.is-object-storing .planted-gait-body {
  opacity: 1;
  visibility: visible;
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-releasing .character-body-normal,
.room-viewport.is-r6-harness .idle-rig.autonomous-inspect-object .character-body-normal {
  opacity: 1;
  visibility: visible;
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-releasing .planted-gait-body,
.room-viewport.is-r6-harness .idle-rig.autonomous-inspect-object .planted-gait-body {
  opacity: 0;
  visibility: hidden;
}

/* Shelf retreat already owns a frozen final atlas frame and an exact 100%
   swap. Keep that renderer visible through release; the generic R6 release
   rule above must not hide it one frame early. */
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-releasing.is-gait-ready.movement-10-step.is-shelf-retreat .character-body-normal {
  visibility: visible;
  animation: shelf-arrival-normal-swap var(--actor-release-duration) step-end 1 both;
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-releasing.is-gait-ready.movement-10-step.is-shelf-retreat .planted-gait-body {
  opacity: 1;
  visibility: visible;
  animation: shelf-arrival-gait-swap var(--actor-release-duration) step-end 1 both;
}

.room-viewport.is-r6-harness.r4-phase-push-one .idle-rig,
.room-viewport.is-r6-harness.r4-phase-push-one .idle-rig .deform-rig,
.room-viewport.is-r6-harness.r4-phase-push-two .idle-rig,
.room-viewport.is-r6-harness.r4-phase-push-two .idle-rig .deform-rig {
  animation-play-state: paused;
}

.room-viewport.is-r6-harness .reaction-rig.is-r4-push-one {
  animation: r4-actor-push-one var(--autonomous-duration) linear 1 both;
  transform-origin: 375px 1007px;
}

.room-viewport.is-r6-harness .reaction-rig.is-r4-push-two {
  animation: r4-actor-push-two var(--autonomous-duration) linear 1 both;
  transform-origin: 375px 1007px;
}

.room-viewport.is-r6-harness .scene-affordance-motion.is-r4-push-one {
  animation: r4-box-push-one var(--autonomous-duration) linear 1 both;
}

.room-viewport.is-r6-harness .scene-affordance-motion.is-r4-push-two {
  animation: r4-box-push-two var(--autonomous-duration) linear 1 both;
}

.room-viewport.is-r6-harness .reaction-rig.is-r4-push-one .reaction-pupil,
.room-viewport.is-r6-harness .reaction-rig.is-r4-push-two .reaction-pupil {
  animation: r4-eye-track-box var(--autonomous-duration) cubic-bezier(0.2, 0.72, 0.22, 1) 1 both;
}

.room-viewport.is-r6-harness.r4-phase-first-contact-hold .reaction-pupil,
.room-viewport.is-r6-harness.r4-phase-second-contact-hold .reaction-pupil {
  animation: r4-eye-preview-box 480ms cubic-bezier(0.2, 0.72, 0.22, 1) 1 both;
}

.room-viewport.is-r6-harness .reaction-rig.is-r4-push-one .character-body-normal,
.room-viewport.is-r6-harness .reaction-rig.is-r4-push-two .character-body-normal,
.room-viewport.is-r6-harness .reaction-rig.is-r4-push-one .r1-attached-cap,
.room-viewport.is-r6-harness .reaction-rig.is-r4-push-two .r1-attached-cap {
  animation: r4-body-contact-yield var(--autonomous-duration) linear 1 both;
}

.room-viewport.is-r6-harness .reaction-rig.is-r4-push-one .r4-contact-dent,
.room-viewport.is-r6-harness .reaction-rig.is-r4-push-two .r4-contact-dent {
  display: block;
  animation: r4-body-contact-yield var(--autonomous-duration) linear 1 both,
             r4-contact-pressure-visible var(--autonomous-duration) linear 1 both;
}

.room-viewport.is-r6-harness .reaction-rig.is-r4-push-one .r4-contact-dent-rim,
.room-viewport.is-r6-harness .reaction-rig.is-r4-push-two .r4-contact-dent-rim {
  animation: r4-contact-pressure-track var(--autonomous-duration) linear 1 both;
}

.room-viewport.is-r6-harness .shadow-world-rig.is-r4-push-shadow .ground-shadow,
.room-viewport.is-r6-harness .shadow-world-rig.is-r4-push-shadow .contact-shadow {
  animation-play-state: paused;
}

.room-viewport.is-r6-harness.r4-phase-push-one .shadow-world-rig.is-r4-push-shadow .shadow-motion-rig {
  animation: r4-shadow-push-one var(--autonomous-duration) linear 1 both;
}

.room-viewport.is-r6-harness.r4-phase-push-two .shadow-world-rig.is-r4-push-shadow .shadow-motion-rig {
  animation: r4-shadow-push-two var(--autonomous-duration) linear 1 both;
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving.movement-2-step {
  animation: r5-root-two-step var(--actor-move-duration) linear 1 forwards;
}

.room-viewport.is-r6-harness .shadow-world-rig.is-controlled-moving.movement-2-step {
  animation: r5-shadow-root-two-step var(--actor-move-duration) linear 1 forwards;
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving.movement-4-step {
  animation: r5-root-four-step var(--actor-move-duration) linear 1 forwards;
}

.room-viewport.is-r6-harness .shadow-world-rig.is-controlled-moving.movement-4-step {
  animation: r5-shadow-root-four-step var(--actor-move-duration) linear 1 forwards;
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving.movement-2-step .reaction-rig {
  animation: r5-weight-two-step var(--actor-move-duration) linear 1 forwards;
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving.movement-4-step .reaction-rig {
  animation: r5-weight-four-step var(--actor-move-duration) linear 1 forwards;
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving.movement-8-step .reaction-rig,
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving.movement-10-step.movement-dir-forward .reaction-rig {
  animation: r5-weight-four-step var(--actor-gait-pair-duration) linear infinite;
}

.room-viewport.is-r6-harness .shadow-world-rig.is-controlled-moving .ground-shadow {
  animation: r5-ground-shadow-four var(--actor-gait-pair-duration) linear infinite;
  animation-play-state: running;
}

.room-viewport.is-r6-harness .shadow-world-rig.is-controlled-moving.movement-2-step .ground-shadow {
  animation: r5-ground-shadow-two var(--actor-move-duration) linear 1 both;
}

.room-viewport.is-r6-harness .shadow-world-rig.is-controlled-moving .contact-shadow {
  animation: r5-contact-shadow-four var(--actor-gait-pair-duration) linear infinite;
  animation-play-state: running;
}

.room-viewport.is-r6-harness .shadow-world-rig.is-controlled-moving.movement-2-step .contact-shadow {
  animation: r5-contact-shadow-two var(--actor-move-duration) linear 1 both;
}

.room-viewport.is-r6-harness .shadow-world-rig.is-controlled-moving.movement-10-step.is-shelf-retreat .ground-shadow {
  animation: r5-ground-shadow-ten-shelf var(--actor-move-duration) linear 1 both;
  animation-play-state: running;
}

.room-viewport.is-r6-harness .shadow-world-rig.is-controlled-moving.movement-10-step.is-shelf-retreat .contact-shadow {
  animation: r5-contact-shadow-ten-shelf var(--actor-move-duration) linear 1 both;
  animation-play-state: running;
}

/* The retained R1 cap shares the actor root but owns no second body. Freeze
   its Idle carrier during controlled locomotion so it cannot bob separately
   from the planted gait atlas. */
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-capturing .r1-cap-idle-stored {
  animation-play-state: paused;
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-holding .r1-cap-idle-stored {
  animation: none;
  transform: var(--actor-idle-snapshot-transform);
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-holding .r1-cap-idle-stored .r1-cap-deform-rig {
  animation: none;
  transform: var(--actor-deform-snapshot-transform);
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-settling .r1-cap-idle-stored {
  animation: r6-cap-ground-settle var(--actor-settle-duration) ease-out 1 forwards;
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-settling .r1-cap-idle-stored .r1-cap-deform-rig,
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-grounded .r1-cap-idle-stored .r1-cap-deform-rig,
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving .r1-cap-idle-stored .r1-cap-deform-rig,
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-releasing .r1-cap-idle-stored .r1-cap-deform-rig {
  animation: none;
  transform: scaleX(1) scaleY(1);
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-grounded .r1-cap-idle-stored,
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving .r1-cap-idle-stored,
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-releasing .r1-cap-idle-stored {
  animation: none;
  transform: translate3d(0, 13.7px, 0) rotate(0deg);
}

.room-viewport.is-r6-harness.r4-phase-push-one .r1-cap-idle-stored {
  animation: r4-actor-push-one var(--autonomous-duration) linear 1 both;
}

.room-viewport.is-r6-harness.r4-phase-push-two .r1-cap-idle-stored {
  animation: r4-actor-push-two var(--autonomous-duration) linear 1 both;
}

.room-viewport.is-r6-harness.r4-phase-push-one .r1-cap-idle-stored .r1-cap-deform-rig,
.room-viewport.is-r6-harness.r4-phase-push-two .r1-cap-idle-stored .r1-cap-deform-rig {
  animation: r4-body-contact-yield var(--autonomous-duration) linear 1 both;
}

@keyframes r6-cap-ground-settle {
  0% {
    transform: translate3d(0, var(--actor-idle-start-y), 0)
      rotate(var(--actor-idle-start-rotation));
  }
  100% { transform: translate3d(0, 13.7px, 0) rotate(0deg); }
}

/* v0.3.7 final precedence lock: R6's historical atlas visibility rules must
   not re-enable the full-body atlas above the canonical articulated renderer. */
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving .planted-gait-body {
  opacity: 0 !important;
  visibility: hidden !important;
  animation: none !important;
}

/* v0.3.9 walking continuity lock.
   The canonical renderer and original fused gait frame meet with a tiny
   world-space overlap near the lower quarter. Their source artwork has the same bounds
   (canonical content 420px at 165/587, atlas frame 420px at 165/587), so the
   cut is aligned while the feet remain physically fused to the body. */
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving .character-body-normal {
  opacity: 1 !important;
  visibility: visible !important;
  animation: none !important;
  -webkit-clip-path: inset(0 0 23.5% 0);
  clip-path: inset(0 0 23.5% 0);
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving .planted-gait-body {
  opacity: 1 !important;
  visibility: visible !important;
  animation: none !important;
  -webkit-clip-path: inset(76% 0 0 0);
  clip-path: inset(76% 0 0 0);
}

/* Foot Check's crop rig is event-only. It must never become the locomotion
   renderer because independently transformed foot crops can expose a seam. */
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving .foot-check-body-rig {
  opacity: 0 !important;
  visibility: hidden !important;
  animation: none !important;
}

/* Hold the atlas' exact final fused-foot frame while the canonical lower
   quarter is revealed. This removes both a blank takeover frame and an
   end-of-walk foot pop. */
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-releasing .character-body-normal {
  opacity: 1 !important;
  visibility: visible !important;
  animation: v039-canonical-lower-reveal var(--actor-release-duration) ease-out 1 both !important;
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-releasing .planted-gait-body {
  opacity: 1 !important;
  visibility: visible !important;
  -webkit-clip-path: inset(76% 0 0 0);
  clip-path: inset(76% 0 0 0);
  animation: v039-gait-lower-release var(--actor-release-duration) ease-out 1 both !important;
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-releasing.movement-2-step .planted-gait-controlled-atlas {
  animation: none !important;
  transform: translate3d(-1260px, -1760px, 0);
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-releasing.movement-4-step .planted-gait-controlled-atlas,
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-releasing.movement-8-step .planted-gait-controlled-atlas {
  animation: none !important;
  transform: translate3d(-2940px, -3520px, 0);
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-releasing.movement-10-step.movement-dir-forward .planted-gait-controlled-atlas {
  animation: none !important;
  transform: translate3d(-1260px, -1760px, 0);
}

@keyframes v039-canonical-lower-reveal {
  from { -webkit-clip-path: inset(0 0 23.5% 0); clip-path: inset(0 0 23.5% 0); }
  to { -webkit-clip-path: inset(0 0 0 0); clip-path: inset(0 0 0 0); }
}

@keyframes v039-gait-lower-release {
  from { opacity: 1; }
  to { opacity: 0; }
}

/* Foot Check settles the live Idle shadows to the exact frame used when Idle
   resumes. The original version let them continue cycling, then jumped to
   phase 35 at completion, which read as a sudden darkening. */
.shadow-world-rig.is-autonomous-foot-check-shadow .ground-shadow {
  animation: v039-foot-check-ground-shadow-settle 910ms ease-out 1 both;
}

.shadow-world-rig.is-autonomous-foot-check-shadow .contact-shadow {
  animation: v039-foot-check-contact-shadow-settle 910ms ease-out 1 both;
}

@keyframes v039-foot-check-ground-shadow-settle {
  0% { opacity: var(--actor-shadow-start-opacity); transform: var(--actor-shadow-start-transform); }
  100% { opacity: 0.96; transform: scaleX(1.1) scaleY(0.98); }
}

@keyframes v039-foot-check-contact-shadow-settle {
  0% { opacity: var(--actor-shadow-start-opacity); transform: var(--actor-shadow-start-transform); }
  100% { opacity: 0.91; transform: scaleX(1.02) scaleY(0.96); }
}

/* Failed Delivery gets a stable compositor handoff frame. The packet and the
   character stay at their exact event endpoints before the persistent floor
   packet and grounded Idle renderer take ownership in the same update. */
.idle-rig.autonomous-failed-delivery.autonomous-phase-recovering-from-failed-delivery,
.idle-rig.autonomous-failed-delivery.autonomous-phase-recovering-from-failed-delivery .deform-rig {
  animation: none;
}

.idle-rig.autonomous-failed-delivery.autonomous-phase-recovering-from-failed-delivery {
  transform: translate3d(0, 13.7px, 0) rotate(-0.5deg);
}

.idle-rig.autonomous-failed-delivery.autonomous-phase-recovering-from-failed-delivery .deform-rig {
  transform: scaleX(1) scaleY(1);
}

.reaction-rig.is-autonomous-failed-delivery-recovering {
  transform-origin: 375px 1042px;
  animation: v039-failed-delivery-grounded-recovery 320ms linear 1 both;
}

.failed-delivery-prop-rig.autonomous-phase-recovering-from-failed-delivery .failed-delivery-packet {
  animation: none;
  opacity: 1;
  transform: translate3d(548px, 1018px, 0) rotate(4deg) scale(1, 0.62);
}

@keyframes v039-failed-delivery-grounded-recovery {
  0%, 100% { transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1); }
}

/* v0.3.10 — WeChat-safe fused gait renderer.
   DevTools can drop an entire img when clip-path changes on the same frame
   as opacity. Fixed overflow windows avoid that compositor path entirely. */
.controlled-walk-upper-window {
  position: absolute;
  left: 119px;
  top: 530px;
  z-index: 3;
  width: 512px;
  height: 392px;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
}

.controlled-walk-upper-image {
  position: absolute;
  left: 0;
  top: 0;
  width: 512px;
  height: 512px;
  max-width: none;
}

.controlled-walk-lower-window {
  position: absolute;
  left: 165px;
  top: 920px;
  z-index: 3;
  width: 420px;
  height: 107px;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
}

.controlled-walk-lower-atlas {
  position: absolute;
  left: 0;
  top: -334px;
  width: 3780px;
  height: 2200px;
  max-width: none;
  will-change: transform;
}

/* The complete canonical body remains visible throughout capture, settle and
   ground hold. Only the walking phase replaces its lower quarter. */
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-capturing .character-body-normal,
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-holding .character-body-normal,
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-settling .character-body-normal,
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-grounded .character-body-normal,
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-releasing .character-body-normal {
  opacity: 1 !important;
  visibility: visible !important;
  animation: none !important;
  -webkit-clip-path: none !important;
  clip-path: none !important;
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving .character-body-normal {
  opacity: 0 !important;
  visibility: hidden !important;
  animation: none !important;
  -webkit-clip-path: none !important;
  clip-path: none !important;
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving .controlled-walk-upper-window,
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving .controlled-walk-lower-window {
  opacity: 1;
  visibility: visible;
}

/* The old full-frame container is decode-only during locomotion. */
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-moving .planted-gait-body,
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-releasing .planted-gait-body {
  opacity: 0 !important;
  visibility: hidden !important;
  animation: none !important;
  -webkit-clip-path: none !important;
  clip-path: none !important;
}

.room-viewport.is-r6-harness .actor-world-rig.is-controlled-releasing .controlled-walk-upper-window,
.room-viewport.is-r6-harness .actor-world-rig.is-controlled-releasing .controlled-walk-lower-window {
  opacity: 0;
  visibility: hidden;
}

.actor-world-rig.is-controlled-moving.movement-2-step .controlled-walk-lower-atlas {
  animation: planted-full-atlas-two-v07 var(--actor-gait-duration) step-end 1 var(--actor-gait-delay) both;
}

.actor-world-rig.is-controlled-moving.movement-4-step .controlled-walk-lower-atlas {
  height: 3960px;
  animation: planted-full-atlas-four-v07 var(--actor-move-duration) step-end 1 both;
}

.actor-world-rig.is-controlled-moving.movement-8-step .controlled-walk-lower-atlas {
  height: 3960px;
  /* The 79 painted atlas frames already contain eight alternating footfalls.
     Playing it twice caused the left foot to plant again after landing. */
  animation: planted-full-atlas-four-v07 var(--actor-move-duration) step-end 1 both;
}

/* v0.3.11 — Almost Leave / Return locomotion synchronization.
   The four-step source atlas must keep its native cadence twice across this
   eight-step route. The route itself advances during each swing and holds
   briefly at every planted foot, preventing the upper body from skating over
   the floor while the feet are supporting its weight. This is event-scoped so
   all previously approved locomotion remains unchanged. */
.actor-world-rig.is-controlled-moving.movement-8-step.is-almost-leave-route {
  animation: controlled-actor-eight-step-planted var(--actor-move-duration) linear 1 forwards;
}

.shadow-world-rig.is-controlled-moving.movement-8-step.is-almost-leave-route {
  animation: controlled-shadow-eight-step-planted var(--actor-move-duration) linear 1 forwards;
}

.actor-world-rig.is-controlled-moving.movement-8-step.is-almost-leave-route .actor-depth-rig,
.shadow-world-rig.is-controlled-moving.movement-8-step.is-almost-leave-route .shadow-depth-rig {
  animation: controlled-depth-eight-step-planted var(--actor-move-duration) linear 1 forwards;
}

.actor-world-rig.is-controlled-moving.movement-8-step.is-almost-leave-route .controlled-walk-lower-atlas {
  animation: none;
}

.controlled-walk-lower-atlas-seamless-second {
  opacity: 0;
  visibility: hidden;
}

.actor-world-rig.is-controlled-moving.movement-8-step.is-almost-leave-route .controlled-walk-lower-atlas-primary {
  z-index: 1;
  animation:
    planted-full-atlas-four-v07 var(--actor-gait-pair-duration) step-end 1 both,
    v0313-first-gait-surface var(--actor-move-duration) step-end 1 both;
}

/* Two independently mounted four-step surfaces avoid WeChat's iteration
   boundary replay. The second surface is prerun by one source frame before
   becoming visible, so frame 78 never jumps back to the duplicate landing
   frame 0. Together they form one continuous eight-step presentation. */
.actor-world-rig.is-controlled-moving.movement-8-step.is-almost-leave-route .controlled-walk-lower-atlas-seamless-second {
  z-index: 2;
  visibility: visible;
  animation:
    planted-full-atlas-four-v07 var(--actor-gait-pair-duration) step-end 1 calc(var(--actor-gait-pair-duration) - 40ms) both,
    v0312-second-gait-surface var(--actor-move-duration) step-end 1 both;
}

@keyframes v0312-second-gait-surface {
  0%, 49.99% { opacity: 0; }
  50%, 100% { opacity: 1; }
}

/* v0.3.13 — the two four-step surfaces are mutually exclusive. The primary
   surface is removed on the exact frame that the prerun secondary surface is
   revealed, so a lifted foot can never expose two painted copies. */
@keyframes v0313-first-gait-surface {
  0%, 49.99% { opacity: 1; visibility: visible; }
  50%, 100% { opacity: 0; visibility: hidden; }
}

/* v0.3.14 — Object Stuck remains prop-led, but the grounded body now answers
   each effort with a very small reaction. Every Y value is zero or positive,
   so this cannot reintroduce the earlier airborne shake. */
.reaction-rig.is-autonomous-object-stuck {
  animation: v0314-object-stuck-grounded-reaction var(--autonomous-duration) linear 1 both;
  transform-origin: 375px 1042px;
}

@keyframes v0314-object-stuck-grounded-reaction {
  0%, 23% { transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1); }
  29% { transform: translate3d(-2px, 1px, 0) rotate(-0.18deg) scale(1.006, 0.994); }
  35% { transform: translate3d(1px, 0.5px, 0) rotate(0.15deg) scale(0.996, 1.004); }
  40%, 44% { transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1); }
  48% { transform: translate3d(2px, 1px, 0) rotate(0.22deg) scale(1.008, 0.992); }
  54% { transform: translate3d(-2px, 1px, 0) rotate(-0.2deg) scale(0.995, 1.005); }
  59%, 62% { transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1); }
  66% { transform: translate3d(-3px, 2px, 0) rotate(-0.28deg) scale(1.01, 0.99); }
  70% { transform: translate3d(2px, 1px, 0) rotate(0.25deg) scale(0.993, 1.007); }
  74% { transform: translate3d(-1px, 0.5px, 0) rotate(-0.1deg) scale(1, 1); }
  78%, 100% { transform: translate3d(0, 0, 0) rotate(0deg) scale(1, 1); }
}

.actor-world-rig.is-controlled-moving.movement-10-step.movement-dir-forward .controlled-walk-lower-atlas {
  height: 3960px;
  animation: planted-full-atlas-four-v07 var(--actor-gait-pair-duration) step-end 2.5 both;
}

.actor-world-rig.is-controlled-moving.movement-10-step.is-shelf-retreat .controlled-walk-lower-atlas {
  height: 3960px;
}

.actor-world-rig.is-controlled-moving.movement-10-step.is-shelf-retreat .controlled-walk-shelf-segment-one {
  animation: planted-full-atlas-four-v07 3200ms step-end 1 0ms both,
    shelf-gait-segment-one-visible var(--actor-move-duration) step-end 1 both;
}

.actor-world-rig.is-controlled-moving.movement-10-step.is-shelf-retreat .controlled-walk-shelf-segment-two {
  animation: planted-full-atlas-four-v07 3200ms step-end 1 3520ms both,
    shelf-gait-segment-two-visible var(--actor-move-duration) step-end 1 both;
}

.actor-world-rig.is-controlled-moving.movement-10-step.is-shelf-retreat .controlled-walk-shelf-segment-three {
  animation: planted-full-atlas-four-v07 3200ms step-end 1 7040ms both,
    shelf-gait-segment-three-visible var(--actor-move-duration) step-end 1 both;
}
