/* Independent moss movement, with its attachment kept above the frame. */
.abyss-root{top:calc(var(--abyss-stop) - 18svh);left:-7%;width:38%;z-index:4;opacity:.95}
.far-root{top:calc(var(--abyss-stop) - 5svh);width:31%;right:-10%;z-index:3;opacity:.85}
.far-root>img{transform-origin:83% 0;animation:moss-sway 8.7s ease-in-out infinite alternate}
.abyss-root>img{animation:near-moss-sway 11s ease-in-out infinite alternate}
#atmosphere-back{position:absolute;top:0;left:0;width:100%;height:100svh;z-index:1;pointer-events:none}
.gem-lights{position:absolute;inset:0;pointer-events:none;overflow:visible}
.mural-lights,.lake-effects,.moss-wind{position:absolute;top:var(--crop-top);left:50%;width:var(--painting-width);height:var(--painting-height);transform:translateX(-50%);pointer-events:none;z-index:2}
.moss-wind{z-index:1}.painted-vines{transform-origin:680px 218px;animation:vine-wind 9.5s ease-in-out infinite alternate}
.gem-sparkle{position:absolute;width:var(--glint-size);height:var(--glint-size);translate:-50% -50%;background:radial-gradient(circle,#fffdf7 0 9%,#fae4ff99 15%,transparent 52%);opacity:0;animation:gem-twinkle var(--glint-time) ease-in-out infinite;animation-delay:var(--glint-delay);filter:drop-shadow(0 0 5px #ffd2fa);mix-blend-mode:screen}
.gem-sparkle:before,.gem-sparkle:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent,#fff8f1,transparent);clip-path:polygon(46% 0,54% 0,56% 43%,100% 48%,100% 52%,56% 57%,54% 100%,46% 100%,44% 57%,0 52%,0 48%,44% 43%)}
.gem-sparkle:after{rotate:45deg;scale:.48;opacity:.65}
.gem-aura{position:absolute;translate:-50% -50%;border-radius:50%;pointer-events:none;background:radial-gradient(ellipse,#ffe3fa40,#df6dda1f 26%,#b681ed0c 48%,transparent 70%);mix-blend-mode:screen;animation:gem-breathe var(--aura-time) ease-in-out infinite alternate;animation-delay:var(--aura-delay)}
.lake-effects{z-index:1}.water-ribbon{animation:lake-glint var(--water-time) ease-in-out infinite;animation-delay:var(--water-delay);transform-box:fill-box;transform-origin:center}
.water-aura{animation:gem-breathe 7s ease-in-out infinite alternate}
.pool-shimmer{display:none}
@keyframes moss-sway{from{rotate:-1.4deg;transform:skewX(-.3deg)}to{rotate:1.5deg;transform:skewX(.75deg)}}
@keyframes near-moss-sway{from{rotate:-.8deg}to{rotate:1.1deg}}
@keyframes vine-wind{from{transform:skewX(-.45deg)}to{transform:skewX(.7deg)}}
@keyframes gem-twinkle{0%,30%,70%,100%{opacity:.04;scale:.4}45%{opacity:1;scale:1.25}53%{opacity:.2;scale:.7}60%{opacity:.8;scale:1.05}}
@keyframes gem-breathe{from{opacity:.42;scale:.92}to{opacity:.95;scale:1.12}}
@keyframes lake-glint{0%,100%{opacity:.08;translate:calc(var(--water-shift)*-1) -1px;scale:.65 1}50%{opacity:.9;translate:var(--water-shift) 2px;scale:1.5 1}}
@media(max-width:700px){.abyss-root{width:82%;left:-28%;top:calc(var(--abyss-stop) - 16svh)}.far-root{width:72%;right:-28%;top:calc(var(--abyss-stop) - 8svh)}.gem-sparkle{filter:none}}
@media(prefers-reduced-motion:reduce){.gem-sparkle{opacity:.25}.gem-aura{opacity:.5}.water-ribbon{display:none}.depth-object,.descent-painting{transform:none}}
body.mural-mode #atmosphere-back{display:none}

/* A little more breeze in the opening, without pointer tracking. */
@keyframes island-float{from{transform:translateY(-8.75px) rotate(-.5deg)}to{transform:translateY(11.25px) rotate(.5deg)}}
@keyframes cloud-float{from{transform:translate(-5px,-10px)}to{transform:translate(8.75px,12.5px)}}
/* Surface effects stay in the same source coordinate space as the painting. */
.canyon-flow{position:absolute;top:var(--crop-top);left:50%;width:var(--painting-width);height:var(--painting-height);transform:translateX(-50%);pointer-events:none;z-index:1}
.descent-water{display:none}
.fall-spray{transform-box:fill-box;transform-origin:center;animation:spray-billow var(--spray-time) ease-in-out infinite alternate;animation-delay:var(--spray-delay)}
@keyframes spray-billow{from{opacity:.22;translate:-4px 2px;scale:.9 .8}to{opacity:.6;translate:7px -7px;scale:1.2 1.1}}
.crystal-art{width:100%;display:block;overflow:visible}
.gem-pendant{transform-origin:var(--pivot);animation:pendant-wind var(--sway-time) ease-in-out infinite alternate;animation-delay:var(--sway-delay)}
@keyframes pendant-wind{from{rotate:-2.5deg}to{rotate:3deg}}
.facet-sweep{animation:facet-pass 8.3s ease-in-out infinite;mix-blend-mode:screen;opacity:0}
.crystal-far .facet-sweep{animation-delay:-4s}
@keyframes facet-pass{0%,12%{transform:translateX(-400px);opacity:0}26%{opacity:.6}58%{opacity:.38}72%,100%{transform:translateX(1250px);opacity:0}}
.reflection-column{mix-blend-mode:screen;animation:reflection-breathe var(--reflection-time) ease-in-out infinite alternate;animation-delay:var(--reflection-delay);transform-box:fill-box;transform-origin:center bottom}
@keyframes reflection-breathe{from{opacity:.28;scale:.85 1}to{opacity:.72;scale:1.18 1}}
@media(prefers-reduced-motion:reduce){.canyon-flow{display:none}.facet-sweep{display:none}.reflection-column{opacity:.3}}

.reflection-ribbons{filter:drop-shadow(0 0 .35px #f5c7ff)}
