/* Shared painted light, layered sky and articulated animal motion. */
.scene{--art-light:brightness(1.02) saturate(1.02)}
.scene[data-sky=night]{--art-light:brightness(.98) saturate(1.08)}
.scene .boat,.scene .boat-front,.scene .pilot img,.scene .treasure-map,.scene .particle-butterfly,.scene .particle-jellyfish,.scene .particle-bird{filter:var(--art-light)}
.sky-day{background:radial-gradient(ellipse at 72% 6%,#be80ff88,transparent 45%),linear-gradient(160deg,#3949f4,#786bfa 24%,#83cfff 53%,#b5edff 77%,#5bcbea)}
.sky-night{background:radial-gradient(ellipse at 75% 12%,#a369f966,transparent 45%),linear-gradient(155deg,#17155d,#423cba 24%,#7389f1 48%,#8fbaff 77%,#3189d9)}
.sky-nebula{position:absolute;inset:0 0 47%;z-index:0;pointer-events:none;background:radial-gradient(ellipse at 12% 18%,#64bfff99,transparent 21%),radial-gradient(ellipse at 62% 8%,#eda9ff55,transparent 28%),radial-gradient(ellipse at 86% 45%,#c4caff66,transparent 22%),url('assets/stardust.svg') center top/100% 100%;mix-blend-mode:screen;animation:nebulaDrift 33s ease-in-out infinite alternate}
.sky-dust{position:absolute;inset:0 0 49%;z-index:1;background:url('assets/stardust.svg') center/100% 100%;pointer-events:none;opacity:.8;animation:dustBreathe 11s ease-in-out infinite alternate}
.sky-beacons{position:absolute;inset:0;z-index:4;pointer-events:none}.sky-beacons i{position:absolute;top:2.5%;width:1.2%;aspect-ratio:1;border-radius:50%;background:#fff8d8;box-shadow:0 0 10px 2px #ffefad,0 0 28px 6px #9faaff;animation:beaconGlow 5s ease-in-out infinite alternate}.sky-beacons i:nth-child(1){left:17%;animation-delay:-1s}.sky-beacons i:nth-child(2){left:49%;top:1.7%;animation-delay:-3s}.sky-beacons i:nth-child(3){left:79%;animation-delay:-4s}.sky-beacons i:before,.sky-beacons i:after{content:'';position:absolute;background:linear-gradient(transparent,#fffbe8,transparent);width:15%;height:470%;left:43%;top:-185%}.sky-beacons i:after{transform:rotate(90deg)}
.scene .rig-whale .whale-core{position:absolute;inset:0}
.scene .whale-core>img{position:absolute;inset:0;width:100%;height:100%;mask-image:url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20100%20100%22%20preserveAspectRatio%3D%22none%22%3E%3Cpath%20fill%3D%22white%22%20fill-rule%3D%22evenodd%22%20d%3D%22M0%200H100V100H0Z%20M0%200H36L39%2022%2028%2035%200%2037Z%20M59%2040L73%2048%2065%2057%2052%2052%2041%2062%2029%2067%2027%2056%2040%2044Z%20M75%2065L83%2073%2073%2084%2059%2098%2047%2095%2049%2082%2065%2073Z%22%2F%3E%3C%2Fsvg%3E%0A');mask-size:100% 100%;mask-mode:alpha}
.scene .rig-whale .whale-tail{animation:kunTail 4.8s var(--phase) ease-in-out infinite}
.scene .rig-whale .whale-fin-near{animation:kunFinNear 5.4s var(--phase) ease-in-out infinite}
.scene .rig-whale .whale-fin-far{animation:kunFinFar 5.4s var(--phase) ease-in-out infinite}
.scene .rig-jellyfish .jelly-bell{animation:jellyJetBell var(--pulse,3.8s) var(--phase) linear infinite}
.scene .rig-jellyfish .jelly-tentacles{animation:jellyJetTendrils var(--pulse,3.8s) var(--phase) linear infinite}
@keyframes jellyJetBell{0%{transform:scale(.91,1.07)}28%{transform:scale(1,1)}68%{transform:scale(1.10,.94)}76%{transform:scale(.84,1.13)}85%{transform:scale(.89,1.09)}100%{transform:scale(.91,1.07)}}
@keyframes jellyJetTendrils{0%{transform:skewX(-3deg) scaleY(.99)}50%{transform:skewX(5deg) scaleY(.95)}68%{transform:skewX(6deg) scaleY(.94)}80%{transform:skewX(-7deg) scaleY(1.10)}100%{transform:skewX(-3deg) scaleY(.99)}}
@keyframes kunTail{0%,100%{transform:translateY(-2%) rotate(-13deg) scaleY(.94)}50%{transform:translateY(2%) rotate(15deg) scaleY(1.05)}}
@keyframes kunFinNear{0%,100%{transform:rotate(-12deg) scaleY(.88)}55%{transform:rotate(15deg) scaleY(1.04)}}
@keyframes kunFinFar{0%,100%{transform:rotate(10deg) scaleY(1.02)}55%{transform:rotate(-17deg) scaleY(.80)}}
@keyframes nebulaDrift{from{transform:translate(-1%,0) scale(1.03);opacity:.6}to{transform:translate(1%,2%) scale(1.08);opacity:1}}
@keyframes dustBreathe{from{opacity:.45}to{opacity:.95}}
@keyframes beaconGlow{from{opacity:.62;transform:scale(.8)}to{opacity:1;transform:scale(1.12)}}

