/* Atmospheric artwork sits above the landscape shade, behind the hero and UI. */
.sanctuary [data-atmosphere] .sanctuary-atmosphere{transform:none;mask-image:linear-gradient(90deg,#0007,#000 43%,#000);contain:paint;pointer-events:none}
.sanctuary #sanctuary-scene .sanctuary-fall{position:absolute;top:-40px;width:var(--fall-size);height:var(--fall-size);color:var(--fall-color);opacity:0;animation:sanctuary-ornament-fall var(--fall-duration) linear infinite;animation-delay:var(--fall-delay);pointer-events:none}
.sanctuary #sanctuary-scene .sanctuary-fall-sway{display:block;width:100%;height:100%;animation:sanctuary-ornament-sway 4.8s ease-in-out infinite alternate;animation-delay:var(--fall-delay)}
.sanctuary #sanctuary-scene .sanctuary-fall-glyph{display:block;width:100%;height:100%;filter:drop-shadow(0 0 5px currentColor);animation:sanctuary-ornament-turn 9s ease-in-out infinite alternate;animation-delay:var(--fall-delay)}
.sanctuary-fall svg{width:100%;height:100%;overflow:visible}
.sanctuary [data-atmosphere^="skin-"] .sanctuary-fall svg{filter:hue-rotate(var(--fall-hue,0deg))}
.sanctuary #sanctuary-scene .sanctuary-fall.is-near .sanctuary-fall-glyph{filter:drop-shadow(0 0 9px currentColor)}
.sanctuary-fall.has-trail .sanctuary-fall-glyph::before{content:'';position:absolute;bottom:60%;left:50%;width:1px;height:45px;background:linear-gradient(transparent,currentColor);opacity:.35;transform:rotate(18deg);transform-origin:bottom}
.sanctuary #sanctuary-scene[data-atmosphere="rain"] .sanctuary-fall-glyph{animation:none;filter:drop-shadow(0 0 3px currentColor)}
.sanctuary [data-atmosphere="rain"] .sanctuary-fall{--fall-drift:-65px!important}
.sanctuary #sanctuary-scene[data-atmosphere="petals"] .sanctuary-fall-glyph{filter:drop-shadow(0 0 3px #ffb6d966)}
.sanctuary #sanctuary-scene .is-pokoltuz-ember .sanctuary-fall-glyph{filter:drop-shadow(0 0 3px #ff571c) drop-shadow(0 0 6px #ff9d3b66)}
.sanctuary #sanctuary-scene .is-pokoltuz-ember svg{filter:none;animation:sanctuary-ember-flicker 1.9s ease-in-out infinite alternate;animation-delay:var(--fall-delay)}
.sanctuary .is-pokoltuz-ember.has-trail .sanctuary-fall-glyph::before{height:calc(var(--fall-size)*1.8);opacity:.4;background:linear-gradient(transparent,#ff571c88,currentColor)}
@keyframes sanctuary-ember-flicker{0%,100%{opacity:.45}30%{opacity:.9}55%{opacity:.6}80%{opacity:1}}
@keyframes sanctuary-ornament-fall{0%{transform:translate3d(0,-20px,0);opacity:0}8%,78%{opacity:var(--fall-alpha)}100%{transform:translate3d(var(--fall-drift),calc(112dvh + 40px),0);opacity:0}}
@keyframes sanctuary-ornament-sway{from{transform:translateX(calc(-1 * var(--fall-sway)))}to{transform:translateX(var(--fall-sway))}}
@keyframes sanctuary-ornament-turn{from{transform:rotate(var(--fall-angle)) scale(.85)}to{transform:rotate(calc(var(--fall-angle) + var(--fall-turn))) scale(1.1)}}
.sanctuary-motion-paused .sanctuary-atmosphere *{animation-play-state:paused!important}
@media(max-width:900px){.sanctuary .sanctuary-fall:nth-child(n+25){display:none}.sanctuary [data-atmosphere] .sanctuary-atmosphere{mask-image:linear-gradient(#000 0%,#000 30%,#0005 60%,transparent 90%)}}
@media(prefers-reduced-motion:reduce){.sanctuary .sanctuary-atmosphere{display:none}.sanctuary .sanctuary-atmosphere *{animation:none!important}}
