/* Scenery observes pointer events on the window; it never covers controls. */
/* Keep the same inset as .bg (-40px). Switching to inset:0 on mount caused a ~0.3 CLS jump on PC. */
.bg[data-living] { pointer-events:none; transition:none; contain:layout paint; }
.bg[data-living] .bg-layer { transform:none!important; transition:none; will-change:auto; }
.bg[data-living] .live-object .sway,
.bg[data-living] .live-object .drift,
.bg[data-living] .live-object .fly,
.bg[data-living] .live-object .wander,
.bg[data-living] .live-object .bob { animation:none; }
.bg[data-living] .live-motion { transform-box:view-box; transform-origin:0 0; }
.live-ripple { fill:none;stroke:#ecffff;stroke-width:2.5;pointer-events:none; }
.live-spray-grow { transform-origin:0 0; }
/* Transparent space around the review buttons remains tappable sea. */
#v-map>.docks{pointer-events:none}
#v-map>.docks button,#v-map>.docks a{pointer-events:auto}
body[data-view=map] .isle .land { perspective:none; }
body[data-view=map] .isle:hover .land svg,
body[data-view=map] .isle:focus-visible .land svg { transform:rotate(calc(var(--ry,0deg) * .12)) translateY(-3px); }
@media (prefers-reduced-motion:reduce) {
  .bg[data-living] * { animation:none!important;transition:none!important; }
  body[data-view=map] .isle,body[data-view=map] .isle * { animation:none!important;transition:none!important; }
  body[data-view=map] .isle .land svg { transform:none!important; }
}

/* Fixed SVG origins prevent rotating details from changing their own reference box. */
.bg[data-living] .live-rays { transform-box:view-box;transform-origin:0 0;animation:spin 90s linear infinite; }
.bg[data-living] .live-object [fill="url(#vol3d)"] { display:none; }
.bg[data-living] .live-object .wave { transform-box:view-box;transform-origin:0 -120px; }
@media(prefers-reduced-motion:reduce){.bg[data-living] .live-rays{animation:none!important}}
/* A wing never crosses scale zero: the old flap briefly collapsed birds to a line. */
.bg[data-living] [data-live=bird] .flap { transform-box:view-box; transform-origin:28px 0; animation:livingWing 1.8s ease-in-out infinite alternate; }
@keyframes livingWing { from { transform:rotate(-4deg) scaleY(.82); } to { transform:rotate(4deg) scaleY(1); } }
@media(prefers-reduced-motion:reduce){.bg[data-living] [data-live=bird] .flap{animation:none!important}}
.bg[data-living] .live-whale-tail{transform-origin:55px 12px;animation:livingTail 2.4s ease-in-out infinite}
.bg[data-living] .live-whale-fin{transform-origin:1px 12px;animation:livingFin 3.1s ease-in-out infinite}
@keyframes livingTail{0%,100%{transform:rotate(-6deg)}50%{transform:rotate(8deg)}}
@keyframes livingFin{50%{transform:rotate(-13deg)}}
@media(prefers-reduced-motion:reduce){.bg[data-living] .live-whale-tail,.bg[data-living] .live-whale-fin{animation:none!important}}
.bg.living-paused *{animation-play-state:paused!important}
