/* KIX living decorations. Motion is entirely cosmetic; positioning stays on the outer object. */
.ks-sprite .ks-art{position:absolute;left:0;right:0;bottom:0;overflow:hidden;transform-origin:50% 95%}
.ks-sprite .ks-art img{position:absolute;max-width:none;user-select:none;pointer-events:none}
.ks-effect-window{position:absolute;pointer-events:none;overflow:hidden;isolation:isolate;line-height:0}
.ks-effect-window span{position:absolute;display:block;box-sizing:border-box}
.ks-animated{--fx:#81eaff;--fx-soft:#81eaff66;isolation:isolate}
.ks-animated .ks-effect-window{z-index:2}
.ks-animated [data-motion]{animation-play-state:paused}
.ks-animated.ks-in-view [data-motion]{animation-play-state:running}
.ks-motion-paused [data-motion],.ks-document-hidden [data-motion],.room.edit-mode [data-motion]{animation-play-state:paused!important}
.ks-motion-button{font:600 11px system-ui;white-space:nowrap;padding:8px 11px}
.ks-motion-button[aria-pressed=true]{border-color:#8adbcf;color:#a6eee3}
.ks-animated-label{position:absolute;bottom:10px;left:10px;border:1px solid #709fba;background:#112a3de8;color:#b8f3ff;font:700 10px system-ui;padding:6px 8px;border-radius:20px}
.ks-animated[data-effect=rock] .ks-art{animation:ks-rock 4.8s ease-in-out infinite}
.ks-animated:is([data-effect=float],[data-effect=candles],[data-effect=book]) .ks-art{animation:ks-float 5.5s ease-in-out infinite}
.ks-animated[data-effect=chimes] .ks-art{transform-origin:50% 8%;animation:ks-chime 5s ease-in-out infinite}
@keyframes ks-rock{0%,100%{transform:rotate(-2deg) scale(.94)}50%{transform:rotate(2deg) scale(.94)}}
@keyframes ks-float{0%,100%{transform:translateY(1%) scale(.93)}50%{transform:translateY(-4%) scale(.93)}}
@keyframes ks-chime{0%,100%{transform:rotate(-2deg) scale(.94)}50%{transform:rotate(3deg) scale(.94)}}
.ks-pendulum{left:46%;top:0;width:8%;height:84%;background:linear-gradient(90deg,#74603e,#ead5a0,#7c643b);transform-origin:50% 0;animation:ks-pendulum 2.4s ease-in-out infinite}
.ks-pendulum:after{content:'';position:absolute;bottom:-10%;left:-130%;width:360%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 30% 30%,#fff2c9,#9c733b 70%);box-shadow:0 0 4px #0008}
@keyframes ks-pendulum{0%,100%{transform:rotate(-12deg)}50%{transform:rotate(12deg)}}
.ks-flame{bottom:2%;width:29%;height:84%;border-radius:65% 25% 60% 40%;background:radial-gradient(ellipse at 50% 85%,#fff6bc 0 12%,#ffba47 30%,#ed6425b0 58%,transparent 74%);filter:drop-shadow(0 0 5px #ff9c50);transform-origin:center bottom;animation:ks-flame 1.7s ease-in-out infinite alternate;opacity:.88}
.ks-flame:nth-child(1){left:16%;height:75%;animation-delay:-.7s}.ks-flame:nth-child(2){left:38%;height:96%;animation-delay:-1.3s}.ks-flame:nth-child(3){left:60%;height:66%;animation-delay:-.2s}
.ks-animated[data-effect=spectralfire] .ks-flame{background:radial-gradient(ellipse at 50% 85%,#e2ffff 0 12%,#69d8ff 30%,#6971f7aa 58%,transparent 74%);filter:drop-shadow(0 0 5px #66bcff)}
@keyframes ks-flame{from{transform:scale(.85,.78) skewX(-5deg);opacity:.64}to{transform:scale(1.05,1) skewX(5deg);opacity:.95}}
.ks-spark{width:3%;aspect-ratio:1;border-radius:50%;background:#fff5a8;box-shadow:0 0 7px 2px #d2ec7c88;animation:ks-spark 7s ease-in-out infinite}
.ks-spark:nth-child(1){left:20%;top:30%;animation-delay:-1s}.ks-spark:nth-child(2){left:65%;top:65%;animation-delay:-4s}.ks-spark:nth-child(3){left:40%;top:75%;animation-delay:-2s}.ks-spark:nth-child(4){left:75%;top:25%;animation-delay:-6s}.ks-spark:nth-child(5){left:35%;top:45%;animation-delay:-3s}
@keyframes ks-spark{0%,100%{transform:translate(0,0);opacity:.3}30%{transform:translate(180%,-170%);opacity:1}70%{transform:translate(-120%,-290%);opacity:.55}}
.ks-aura{inset:8%;border-radius:50%;background:radial-gradient(ellipse,var(--fx-soft),transparent 67%);animation:ks-aura 5.5s ease-in-out infinite}
@keyframes ks-aura{0%,100%{opacity:.28;transform:scale(.85)}50%{opacity:.78;transform:scale(1.08)}}
.ks-vortex{inset:7% 15%;border-radius:50%;background:repeating-conic-gradient(from 0deg,transparent 0 28deg,#64d5ff44 44deg,transparent 60deg),radial-gradient(ellipse,#100c2a 20%,#7f81e977 55%,transparent 71%);animation:ks-vortex 18s linear infinite;mix-blend-mode:screen}
.ks-portal-ring{inset:3% 12%;border:2px dashed #b3a0f6aa;border-radius:50%;box-shadow:inset 0 0 10px #9471ed55,0 0 10px #9471ed55;animation:ks-vortex 24s linear infinite reverse}
.ks-animated[data-effect=mirror] .ks-effect-window{clip-path:ellipse(43% 48% at 50% 50%)}
.ks-animated[data-effect=mirror] .ks-vortex{inset:-12% -65%}
.ks-animated[data-effect=mirror] .ks-portal-ring{inset:3% 8%;animation:ks-aura 6s ease-in-out infinite}
@keyframes ks-vortex{to{transform:rotate(360deg)}}
.ks-eyes{inset:40% 28%;display:flex!important;gap:45%;animation:ks-eyes 9s ease-in-out infinite}
.ks-eyes:before,.ks-eyes:after{content:'';width:15%;height:18%;border-radius:50%;background:#d6f7ff;box-shadow:0 0 6px #84bce6;flex:none}
@keyframes ks-eyes{0%,30%,100%{opacity:.1}55%,70%{opacity:.8}58%{opacity:.2}}
.ks-holo-beam{left:24%;right:24%;top:5%;bottom:1%;clip-path:polygon(15% 0,85% 0,100% 100%,0 100%);background:linear-gradient(0deg,#53dfff44,transparent 80%);animation:ks-aura 7s ease-in-out infinite}
.ks-planet{left:26%;top:7%;width:48%;aspect-ratio:1;border-radius:50%;background-color:#2864a4;background-image:repeating-linear-gradient(135deg,transparent 0 12%,#9ddfcb88 17% 22%,transparent 29% 37%,#5dcfa688 42% 47%,transparent 54%),radial-gradient(circle at 30% 25%,#7de3f9,transparent 64%);background-size:240% 140%,100% 100%;box-shadow:inset -12px -6px 14px #071733cf,inset 2px 2px 8px #b3faffaa,0 0 12px #53dfffa6;animation:ks-planet 22s linear infinite}
@keyframes ks-planet{from{background-position:0 0,0 0}to{background-position:240% 0,0 0}}
.ks-orbit{left:10%;top:23%;width:80%;height:33%;border:1px solid #8deaffaa;border-radius:50%;transform:rotate(-18deg);animation:ks-orbit 12s linear infinite}
.ks-orbit:after{content:'';position:absolute;left:5%;top:7%;width:6%;aspect-ratio:1;border-radius:50%;background:#fff8c6;box-shadow:0 0 5px #b6f2ff}
@keyframes ks-orbit{to{transform:rotate(342deg)}}
.ks-water{inset:0;background:linear-gradient(115deg,transparent 20%,#78edff22 45%,transparent 62%);background-size:220% 100%;animation:ks-water 9s ease-in-out infinite}
@keyframes ks-water{0%,100%{background-position:0 0}50%{background-position:100% 0}}
.ks-fish{left:0;width:22%;height:23%;animation:ks-swim 12s linear infinite;color:#edb4ff;filter:drop-shadow(0 0 2px #bbeeff)}
.ks-fish:nth-of-type(2){top:22%;animation-delay:-4s;color:#ffd49a;animation-duration:16s}.ks-fish:nth-of-type(3){top:54%;animation-delay:-8s;animation-duration:14s;color:#81fff3}.ks-fish:nth-of-type(4){top:36%;animation-delay:-2s;animation-duration:19s}
.ks-fish svg{width:100%;height:100%;overflow:visible}
@keyframes ks-swim{0%{transform:translateX(-110%) scaleX(1)}45%{transform:translateX(450%) scaleX(1)}50%{transform:translateX(450%) scaleX(-1)}95%{transform:translateX(-110%) scaleX(-1)}100%{transform:translateX(-110%) scaleX(1)}}
.ks-bubble{left:25%;bottom:-10%;width:3%;aspect-ratio:1;border:1px solid #c0f6ff99;border-radius:50%;animation:ks-bubble 6s linear infinite}.ks-bubble:last-child{left:70%;animation-delay:-3s}
@keyframes ks-bubble{to{transform:translateY(-1600%);opacity:0}}
.ks-energy{inset:0;background:repeating-linear-gradient(0deg,transparent 0 18%,#8cf4ff99 22%,transparent 29%);background-size:100% 170%;border-radius:25%;mix-blend-mode:screen;animation:ks-energy 4s linear infinite}
@keyframes ks-energy{to{background-position:0 170%}}
.ks-indicator{top:35%;width:12%;height:14%;background:#b6fff0;box-shadow:0 0 5px #64eafa;animation:ks-indicator 5s steps(2,end) infinite}.ks-indicator:nth-child(1){left:15%;animation-delay:-1s}.ks-indicator:nth-child(2){left:43%;animation-delay:-3s}.ks-indicator:nth-child(3){left:71%;animation-delay:-2s}
@keyframes ks-indicator{0%,100%{opacity:.25}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){.ks-animated [data-motion]{animation:none!important}.ks-motion-button{display:none!important}}

/* Coastal, cabin, neon and reef details. All motion uses the existing pause controls. */
.ks-warm-glow{inset:0;background:radial-gradient(ellipse,#fff4c18a, #ffc67733 40%,transparent 70%);mix-blend-mode:screen;animation:ks-warm-glow 4.7s ease-in-out infinite}
@keyframes ks-warm-glow{0%,100%{opacity:.25;transform:scale(.82)}43%{opacity:.8;transform:scale(1)}67%{opacity:.48;transform:scale(.94)}}
.ks-animated[data-effect=breeze] .ks-art{transform-origin:50% 100%;animation:ks-breeze 7s ease-in-out infinite}
@keyframes ks-breeze{0%,100%{transform:rotate(-.7deg) scale(.97)}50%{transform:rotate(.7deg) scale(.97)}}
.ks-animated[data-effect=neon] .ks-art{animation:ks-neon-pulse 6s ease-in-out infinite}
@keyframes ks-neon-pulse{0%,100%{filter:brightness(.96)}50%{filter:brightness(1.16) drop-shadow(0 0 2px #6befff40)}}
.ks-steam{bottom:-5%;left:24%;width:12%;height:48%;border-radius:50%;background:linear-gradient(0deg,transparent,#fff8,transparent);filter:blur(2px);animation:ks-steam-rise 4.6s ease-out infinite;opacity:0}
.ks-steam:nth-child(2){left:46%;animation-delay:-1.5s}.ks-steam:nth-child(3){left:62%;animation-delay:-3s}
@keyframes ks-steam-rise{0%{transform:translate(0,30%) scale(.6);opacity:0}25%{opacity:.55}100%{transform:translate(65%,-180%) scale(1.7);opacity:0}}
.ks-rising-bubble{bottom:-15%;left:16%;width:13%;aspect-ratio:1;border:1px solid #deffffbb;border-radius:50%;box-shadow:inset 1px 1px 2px #fff6;animation:ks-column-bubble 6s linear infinite;opacity:0}
.ks-rising-bubble:nth-child(2){left:39%;width:9%;animation-delay:-2s}.ks-rising-bubble:nth-child(3){left:67%;width:11%;animation-delay:-4s}.ks-rising-bubble:nth-child(4){left:27%;width:7%;animation-delay:-3s}.ks-rising-bubble:nth-child(5){left:56%;width:8%;animation-delay:-1s}
@keyframes ks-column-bubble{0%{bottom:-15%;opacity:0;transform:translateX(0)}15%{opacity:.75}85%{opacity:.5}100%{bottom:105%;opacity:0;transform:translateX(30%)}}
.ks-screen-scan{inset:-100% 0 0;background:linear-gradient(0deg,transparent 40%,#c0ffff55 49%,transparent 58%);animation:ks-screen-scan 5s linear infinite;mix-blend-mode:screen}
@keyframes ks-screen-scan{to{transform:translateY(80%)}}
.ks-equalizer-bar{bottom:8%;width:7%;height:65%;background:linear-gradient(0deg,#35cfff,#e98cff);transform-origin:50% 100%;animation:ks-level 1.9s ease-in-out infinite alternate;opacity:.8}
.ks-equalizer-bar:nth-child(1){left:5%;animation-delay:-.3s}.ks-equalizer-bar:nth-child(2){left:18%;animation-delay:-1.2s}.ks-equalizer-bar:nth-child(3){left:31%;animation-delay:-.7s}.ks-equalizer-bar:nth-child(4){left:44%;animation-delay:-1.6s}.ks-equalizer-bar:nth-child(5){left:57%;animation-delay:-.9s}.ks-equalizer-bar:nth-child(6){left:70%;animation-delay:-1.8s}.ks-equalizer-bar:nth-child(7){left:83%;animation-delay:-.5s}
@keyframes ks-level{from{transform:scaleY(.2)}to{transform:scaleY(1)}}
