/* Illustration only. Animation is opt-in for each playing ambience. */
.room-art{display:block;width:100%;height:auto;overflow:visible;isolation:isolate}
.room-art .flame{transform-box:fill-box;transform-origin:50% 100%}
.room-art .room-leaves{transform-box:fill-box;transform-origin:50% 95%}
.room-art .room-bird-one,.room-art .room-bird-two{transform-box:fill-box;transform-origin:50% 100%}
.room-art .room-music-motion{transform-box:fill-box;transform-origin:center}
.room-scene[data-fire="true"] .flame-one{animation:refugio-flame-one 3.2s ease-in-out infinite}
.room-scene[data-fire="true"] .flame-two{animation:refugio-flame-two 2.6s ease-in-out infinite}
.room-scene[data-fire="true"] .flame-three{animation:refugio-flame-one 3.8s ease-in-out -.8s infinite}
.room-scene[data-rain="true"] .rain-low{animation:refugio-rain 2.8s linear infinite}
.room-scene[data-rain="true"] .rain-mid{animation:refugio-rain 2.2s linear -.7s infinite}
.room-scene[data-rain="true"] .rain-high{animation:refugio-rain 1.7s linear -.4s infinite}
.room-scene[data-breeze="true"] .room-leaves{animation:refugio-leaves 11s ease-in-out infinite}
.room-scene[data-birds="true"] .room-bird-one{animation:refugio-bird 31s ease-in-out infinite}
.room-scene[data-birds="true"] .room-bird-two{animation:refugio-bird 39s ease-in-out -14s infinite}
.room-scene[data-music="true"] .room-music-motion{animation:refugio-music 6s ease-in-out infinite}
.room-art .room-lightning{pointer-events:none}
@keyframes refugio-flame-one{0%,100%{transform:scale(.98,.95) rotate(-1deg)}50%{transform:scale(1.02,1.04) rotate(1deg)}}
@keyframes refugio-flame-two{0%,100%{transform:scale(1,.96) translateX(-1px)}50%{transform:scale(.96,1.03) translateX(1px)}}
@keyframes refugio-rain{0%{transform:translate(5px,-18px)}100%{transform:translate(-6px,22px)}}
@keyframes refugio-leaves{0%,100%{transform:rotate(calc(var(--breeze,0) * -.6deg))}50%{transform:rotate(calc(var(--breeze,0) * .9deg)) translateX(calc(var(--breeze,0) * 1.5px))}}
@keyframes refugio-bird{0%,82%,87%,100%{transform:translateY(0) rotate(0)}84%{transform:translateY(-3px) rotate(-4deg)}85%{transform:translateY(-1px) rotate(3deg)}}
@keyframes refugio-music{0%,100%{transform:scale(.98);stroke-opacity:.5}50%{transform:scale(1.025);stroke-opacity:.85}}
.room-scene.is-suspended .room-art *,.room-scene[data-motion="reduced"] .room-art *{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.room-scene .room-art *{animation:none!important}}

.room-art .room-fire,.room-art .room-fire-glow,.room-art .room-rain,.room-art .room-birds,.room-art .room-jukebox-light{transition:opacity 1.3s ease}
.room-art [fill],.room-art stop{transition:fill 6s ease,stop-color 6s ease}
.room-art .room-fire{transform-box:fill-box;transform-origin:50% 100%;transform:scaleY(calc(.82 + var(--fire,0) * .18));transition:opacity 1.3s ease,transform 1.3s ease}

/* The portrait variant is a full room, with continuous walls and flooring. */
.room-art[data-room-layout="portrait"]{border-radius:0;max-height:none}

/* Keep a low but perceptible visual floor only while real, nonzero audio plays.
   Muted, paused and stopped layers retain their zero presentation opacity. */
.room-scene[data-fire="true"] .room-fire{opacity:calc(.38 + var(--fire,0) * .62)}
.room-scene[data-fire="true"] .room-fire-glow{opacity:calc(.10 + var(--fire,0) * .90)}
.room-scene[data-rain="true"] .room-rain{opacity:calc(.30 + var(--rain,0) * .70)}
.room-scene[data-rain="true"] .rain-low{opacity:.62}
.room-scene[data-rain="true"] .rain-mid{opacity:calc(.18 + var(--rain,0) * .45)}
/* Breathing is slower and smaller than the weather movement; no audio dependency. */
.room-art .room-cat-breath{transform-box:fill-box;transform-origin:50% 95%;animation:refugio-cat-breath 6.5s ease-in-out infinite}
@keyframes refugio-cat-breath{0%,100%{transform:scaleY(1)}48%{transform:scaleY(1.012)}}
