/* Brief cosmetic visitors. The quiet/reduced-motion fallback contains no NPC. */
.room-decorative-event{position:absolute;inset:0;pointer-events:none;user-select:none}
.room-event-aperture{position:absolute;overflow:hidden;contain:paint;isolation:isolate;pointer-events:none}
.room-event-clip-defs{position:absolute;width:0;height:0;pointer-events:none}
.room-event-actor{position:absolute;pointer-events:none}
.room-event-actor{transform-origin:50% 70%;will-change:transform,left,top}
.room-event-cleaner-body{position:absolute;inset:0;overflow:hidden}
.room-event-cleaner-body .room-event-sprite{width:200%;height:100%;max-width:none;object-fit:fill}
.room-event-cleaner-arm{position:absolute;left:47%;top:14.4%;width:75%;height:75%;overflow:hidden;transform-origin:37.5% 42.4%}
.room-event-cleaner-arm-art{position:absolute;left:-100%;top:0;width:200%;height:100%;max-width:none;object-fit:fill}
.room-event-cleaner-rope{position:absolute;top:0;width:max(1px,.1%);background:linear-gradient(90deg,#c5baa0,#554d43);transform:translateX(-50%);pointer-events:none}
.room-event-post-body{clip-path:polygon(0 0,100% 0,100% 40.3%,79% 40.3%,79% 52.3%,100% 52.3%,100% 72%,0 72%)}
.room-event-post-leg{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none;transform-origin:50% 73%;clip-path:polygon(20% 71%,53% 71%,53% 100%,20% 100%)}
.room-event-post-leg[data-side="1"]{clip-path:polygon(53% 71%,80% 71%,80% 100%,53% 100%)}
.room-event-envelope{position:absolute;overflow:hidden;pointer-events:none;transform-origin:50% 80%;will-change:transform,left,top}
.room-event-envelope-art{position:absolute;left:-395%;top:-335.833333%;width:500%;height:833.333333%;max-width:none;object-fit:fill;pointer-events:none}
.room-event-sprite{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none}
.room-event-sprite[hidden]{display:none!important}
.room-event-photo{position:absolute;left:58%;top:28%;width:10%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fff9 0,#e6fbff66 30%,transparent 70%);opacity:0;animation:room-event-photo var(--event-duration) ease-in-out both}
@keyframes room-event-photo{0%,41%,57%,100%{opacity:0;transform:scale(.4)}47%,50%{opacity:.8;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.room-decorative-event,.room-event-envelope{display:none!important}}
/* Manual synthetic QA playback does not opt noninteractive member art into motion. */
.room-overview[data-interactive=false][data-events-preview=true][data-visibility=visible] .room-decorative-event *{animation-play-state:running!important}
