/* Expand539: independent cartoon props and source-registered local picture layers. */
.x539-motion-on{background:#23754d!important;color:#fff!important;border-color:#2b9360!important}
#x539-fx{position:fixed;inset:0;z-index:80;pointer-events:none;overflow:hidden;display:grid;place-items:center;isolation:isolate}
.x539-backdrop{position:absolute;inset:0;background:rgba(9,24,34,.56);animation:x539-stage 6.5s ease both}
.x539-stage{position:relative;width:min(90vw,78vh,560px);aspect-ratio:1;container-type:inline-size;isolation:isolate;animation:x539-stage 6.5s ease both}
.x539-object{position:absolute;transform-origin:50% 80%;animation-duration:5.8s;animation-delay:var(--x539-delay,0s);animation-fill-mode:both;animation-timing-function:ease-in-out}
.x539-object>img{display:block;width:100%!important;height:100%!important;max-width:none!important;object-fit:contain;animation:none!important;transform:none!important;filter:drop-shadow(0 .8cqw 1cqw #10233245)}
.x539-atlas{position:absolute;inset:0;background-repeat:no-repeat;background-size:calc(var(--x539-cells,3)*100%) 100%;background-position:0 0}
.x539-atlas-action{animation:x539-atlas-action 5.8s steps(1,end) both}
@keyframes x539-stage{0%{opacity:0}7%,88%{opacity:1}100%{opacity:0}}
@keyframes x539-atlas-action{0%,25%{background-position:0 0}26%,59%{background-position:50% 0}60%,100%{background-position:100% 0}}
@keyframes x539-atlas-walk{0%,100%{background-position:0 0}33.333%{background-position:50% 0}66.667%{background-position:100% 0}}
/* The changing atlas frames perform each action. Their registration stays fixed
   so objects do not slide or warp while hands, clay, ropes or hinges change. */
.x539-idol-placement,.x539-king-prayer,.x539-altar-stone,.x539-scroll-unfurl,.x539-prophet-message,.x539-almond-bloom,.x539-bread-handoff,.x539-clay-reshape,.x539-pen-write,.x539-yoke-break,.x539-garden-grow,.x539-weight-balance,.x539-rope-lift,.x539-shackle-open,.x539-covenant-scroll{animation-name:x539-stationary}
@keyframes x539-stationary{from,to{transform:none}}
.x539-royal-walk{animation-name:x539-walk-across}.x539-royal-walk .x539-atlas{animation:x539-atlas-walk .8s steps(1,end) infinite}
@keyframes x539-walk-across{0%{transform:translateX(-28cqw)}100%{transform:translateX(28cqw)}}
.x539-caution-messenger{animation-name:x539-messenger-arrives}.x539-caution-messenger .x539-atlas{animation:x539-walk-and-warn 5.8s steps(1,end) both}
@keyframes x539-messenger-arrives{0%{transform:translateX(-36cqw);opacity:0}12%{opacity:1}55%,100%{transform:translateX(0);opacity:1}}
@keyframes x539-walk-and-warn{0%,12%,28%,44%{background-position:0 0}13%,27%,29%,43%{background-position:50% 0}55%,100%{background-position:100% 0}}
/* Local animation geometry is measured on the exact selected narrative bytes.
   People, walls, lamps and all other underlying source pixels remain fixed. */
.x539-picture{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:2;container-type:inline-size}
.x539-picture-piece{position:absolute;display:block;animation-play-state:paused!important}
.x539-picture-piece>img{display:block;width:100%!important;height:100%!important;max-width:none!important;object-fit:contain;animation:none!important;transform:none!important}
.x539-local-flame{translate:-50% -100%;transform-origin:var(--x539-pivot-x,50%) var(--x539-pivot-y,100%);animation:x539-local-flame var(--x539-duration,1.1s) ease-in-out var(--x539-delay) infinite alternate}
.x539-local-leaf{animation:x539-local-leaf var(--x539-duration,7s) linear var(--x539-delay) infinite}
.x539-local-water{background:repeating-linear-gradient(105deg,transparent 0 14%,#d6f2ff75 15% 18%,transparent 19% 30%);background-size:200% 200%;mix-blend-mode:screen;opacity:.55;animation:x539-local-water var(--x539-duration,3s) linear var(--x539-delay) infinite}
.x539-picture-running>.x539-picture-piece{animation-play-state:running!important}
@keyframes x539-local-flame{from{transform:rotate(-5deg) scale(.93,1);opacity:.58}to{transform:rotate(5deg) scale(1.05,.92);opacity:1}}
@keyframes x539-local-leaf{0%{transform:translate(0,-1cqw) rotate(0);opacity:0}12%,72%{opacity:.9}100%{transform:translate(var(--x539-drift-x),var(--x539-drift-y)) rotate(185deg);opacity:0}}
@keyframes x539-local-water{from{background-position:0 0}to{background-position:100% 100%}}
@media(prefers-reduced-motion:reduce){#x539-fx,.x539-picture{display:none!important}.x539-object,.x539-atlas{animation:none!important}}
@media print{#x539-fx,.x539-picture{display:none!important}}

.x539-raster-crop{display:block;width:100%;height:100%;background-repeat:no-repeat}
/* Altar repair is a repeated gentle working action, unlike irreversible
   opening/breaking/growing actions which finish on their completed frame. */
.x539-altar-stone .x539-atlas{animation:x539-mallet-tap 1.2s steps(1,end) infinite}
@keyframes x539-mallet-tap{0%,32%{background-position:0 0}33%,65%{background-position:50% 0}66%,100%{background-position:100% 0}}
.x539-food-carrier{animation-name:x539-food-arrives}.x539-food-carrier .x539-atlas{animation:x539-walk-and-offer 5.8s steps(1,end) both}
@keyframes x539-food-arrives{0%{transform:translateX(-24cqw);opacity:0}10%{opacity:1}55%,100%{transform:translateX(0);opacity:1}}
@keyframes x539-walk-and-offer{0%,14%,30%,46%{background-position:0 0}15%,29%,31%,45%{background-position:50% 0}55%,100%{background-position:100% 0}}
.x539-consultation-messenger{animation-name:x539-consultation-arrives}
@keyframes x539-consultation-arrives{0%{transform:translateX(-18cqw);opacity:0}10%{opacity:1}35%,100%{transform:translateX(0);opacity:1}}

/* New source-rendered rebuilding actions, fixed registration across three frames. */
.x539-return-caravan,.x539-foundation-build,.x539-timber-place,.x539-temple-raise,.x539-scroll-open,.x539-music-celebrate{animation-name:x539-stationary}
.x539-picture-atlas{display:block;width:100%;height:100%;background-repeat:no-repeat;background-size:300% 100%;animation:x539-local-atlas var(--x539-duration,2.4s) steps(1,end) var(--x539-delay,0s) infinite;animation-play-state:inherit!important}
@keyframes x539-local-atlas{0%,32%{background-position:0 0}33%,65%{background-position:50% 0}66%,100%{background-position:100% 0}}
.x539-local-cloth{transform-origin:var(--x539-pivot-x,50%) var(--x539-pivot-y,0%);animation:x539-local-cloth var(--x539-duration,2s) ease-in-out var(--x539-delay,0s) infinite alternate}
@keyframes x539-local-cloth{from{transform:skewX(-2deg) scaleY(.99)}to{transform:skewX(2deg) scaleY(1.01)}}

/* Ring the rendered handbell with changing clapper positions; the whole effect still clears at6.5s. */
.x539-music-celebrate .x539-atlas{animation:x539-bell-ring 1.15s steps(1,end) infinite}
@keyframes x539-bell-ring{0%,100%{background-position:0 0}25%,75%{background-position:50% 0}50%{background-position:100% 0}}

.x539-cymbal-clash,.x539-stone-place{animation-name:x539-stationary}
.x539-cymbal-clash .x539-atlas{animation:x539-cymbal-clash 1.4s steps(1,end) infinite}
@keyframes x539-cymbal-clash{0%,30%{background-position:0 0}31%,48%{background-position:50% 0}49%,100%{background-position:100% 0}}
.x539-return-caravan{animation-name:x539-cart-return}
.x539-return-caravan .x539-atlas{animation:x539-atlas-walk .85s steps(1,end) infinite}
@keyframes x539-cart-return{0%{transform:translateX(-24cqw)}100%{transform:translateX(24cqw)}}
/* Cloth edges stay registered; a visible moving fabric highlight shows wind. */
.x539-local-cloth{animation-name:none;transform:none}
.x539-local-cloth .x539-raster-crop{position:relative;animation-play-state:inherit!important}
.x539-local-cloth .x539-raster-crop::after{content:"";position:absolute;inset:0;pointer-events:none;mix-blend-mode:soft-light;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.75) 46%,rgba(0,0,0,.6) 55%,transparent 66%) no-repeat;background-size:240% 100%;animation:x539-cloth-ripple 1.8s linear infinite;animation-play-state:inherit!important}
@keyframes x539-cloth-ripple{from{background-position:150% 0}to{background-position:-150% 0}}
/* Authored three-frame actions may use this neutral fixed registration. */
.x539-generic-action{animation-name:x539-stationary}
/* Authored incense smoke: bounded exact-source crop, no movement of faces or bodies. */
.x539-local-smoke{transform-origin:50% 100%;animation:x539-local-smoke var(--x539-duration,2.8s) ease-out var(--x539-delay,0s) infinite}
@keyframes x539-local-smoke{0%{transform:translateY(.6cqw) scale(.96);opacity:.25}30%{opacity:.8}100%{transform:translateY(-2.4cqw) scale(1.07);opacity:.1}}
