/* V10 action-led compositing. All motion receives the game's paused clock. */
.stage10-root{position:absolute;inset:0;z-index:7;overflow:hidden;pointer-events:none;contain:layout paint;visibility:hidden}
.stage10-canvas,.stage10-input-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none!important}
.stage10-input-canvas{z-index:10;visibility:hidden;contain:layout paint}
.stage10-root.is-active,.stage10-input-canvas.is-active{visibility:visible}
.on-title .stage10-root,.on-title .stage10-input-canvas,.saluting .stage10-root,.saluting .stage10-input-canvas{visibility:hidden}
/* One physical light per action. Keep buttons and the original action surface. */
.stage10-enabled .si-lamp .si-light,.stage10-enabled .ci-sweep .ci-lamp-mask{display:none}
.stage10-enabled.stage10-lamp-lit .si-lamp .si-contact-light{opacity:0}
/* The old memory timing/labels still own narrative delivery; the new canvas owns
   only its image reveal. Do not stack two independent transition effects. */
.stage10-memory-mask .mfx-root{z-index:12}
.stage10-memory-mask .mfx-root[data-kind="enter"] .mfx-canvas,
.stage10-memory-mask .mfx-root[data-kind="exit"] .mfx-canvas{opacity:0}
/* Replace the generic gate debris only in the two explicitly mapped gate scenes. */
.stage10-enabled.stage10-gate-scene .gate-dust{display:none}
.stage10-enabled.stage10-gate-scene #scene-frame{translate:var(--stage10-shake-x,0px) var(--stage10-shake-y,0px)}
.stage10-enabled.stage10-identity-echo .si-contact-light{opacity:0}
.stage10-enabled .stage10-root.is-paused,.stage10-enabled.paused .stage10-input-canvas{will-change:auto}
@media(prefers-reduced-motion:reduce){
  .stage10-root,.stage10-input-canvas{scroll-behavior:auto}
}
