.stage[data-scene=roof] .scene-object{right:10%;top:8%;width:140px;height:auto;padding:0;gap:4px;overflow:visible}
.bronze-chime{display:block;position:relative;width:98px;height:250px;transform-origin:50% 2%;filter:grayscale(.65) sepia(.12) hue-rotate(255deg) saturate(.65) brightness(.96) drop-shadow(2px 4px 3px #382b3b20);pointer-events:none}
.bronze-chime img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:fill;pointer-events:none;user-select:none}
.chime-crown{clip-path:inset(0 0 51% 0)}.chime-pendant,.chime-tassel{position:absolute;inset:0;display:block;pointer-events:none}.chime-pendant{transform-origin:50% 49%}.chime-plaque{clip-path:inset(49% 0 23% 0)}.chime-tassel{transform-origin:50% 77%}.chime-fringe{clip-path:inset(77% 0 0 0)}
.stage[data-scene=roof] .scene-object .object-label{margin:0;padding:0;font-size:13px;letter-spacing:.08em}
.stage:not([data-scene=roof]) .bronze-chime{display:none}
.ringing .bronze-chime{animation:bronze-sway 2.8s ease-in-out both}.ringing .chime-pendant{animation:plaque-sway 2.8s ease-in-out .06s both}.ringing .chime-tassel{animation:tassel-sway 2.8s ease-in-out .12s both}
.stage.paused .bronze-chime,.stage.paused .chime-pendant,.stage.paused .chime-tassel{animation-play-state:paused}
@keyframes bronze-sway{0%,100%{transform:rotate(0)}15%{transform:rotate(4deg)}35%{transform:rotate(-3deg)}55%{transform:rotate(2deg)}75%{transform:rotate(-1deg)}}
@keyframes plaque-sway{0%,100%{transform:rotate(0)}18%{transform:rotate(-5deg)}39%{transform:rotate(4deg)}60%{transform:rotate(-2deg)}80%{transform:rotate(1deg)}}
@keyframes tassel-sway{0%,100%{transform:rotate(0)}20%{transform:rotate(7deg)}42%{transform:rotate(-5deg)}63%{transform:rotate(3deg)}82%{transform:rotate(-1deg)}}
@media(max-height:720px){.bronze-chime{height:220px;width:86px}.stage[data-scene=roof] .scene-object{width:122px;top:6%}}
@media(prefers-reduced-motion:reduce){.ringing .bronze-chime,.ringing .chime-pendant,.ringing .chime-tassel{animation:none}}
