/* 0.28 / Tree silhouettes on the ground and four quiet departures from the grove. */
.tree-cast-shadows,.grove-birds{pointer-events:none;opacity:0}
.tree-cast-shadows{fill:#030803;stroke:none}
.tree-shadow-trunk{fill:none;stroke:#030803;stroke-width:1.4;stroke-linecap:round}
.outer-tree-shadow{opacity:.65}
.vector-scene[data-solar=true] .tree-cast-shadows{opacity:calc(var(--solar-light,1) * .24)}
.grove-birds{fill:none;stroke:#d8c49a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round}
.vector-scene[data-solar=true] .grove-birds{opacity:calc(var(--solar-light,1) * .72)}
.grove-bird-flight{opacity:0;animation:grove-takeoff var(--flight-duration) linear infinite both;animation-delay:var(--flight-delay);animation-play-state:paused}
.grove-bird-wings{transform-box:fill-box;transform-origin:50% 100%;animation:grove-wingbeat .95s ease-in-out infinite;animation-delay:var(--wing-delay);animation-play-state:paused}
.vector-scene[data-solar=true] :is(.grove-bird-flight,.grove-bird-wings){animation-play-state:running}
@keyframes grove-takeoff{
 0%{opacity:0;transform:translate(0,0) scale(.85)}
 2%{opacity:.75;transform:translate(calc(var(--flight-x) * .06),calc(var(--flight-y) * .12)) scale(.85)}
 8%{opacity:.85;transform:translate(calc(var(--flight-x) * .30),calc(var(--flight-y) * .43)) scale(.81)}
 16%{opacity:.65;transform:translate(calc(var(--flight-x) * .68),calc(var(--flight-y) * .77)) scale(.74)}
 25%,100%{opacity:0;transform:translate(var(--flight-x),var(--flight-y)) scale(.65)}
}
@keyframes grove-wingbeat{0%,100%{transform:scaleY(.65)}48%{transform:scaleY(1)}}
.vector-scene[data-motion=off] .grove-birds,html[data-interface-motion=off] .grove-birds,html[data-page-hidden=true] .grove-birds{visibility:hidden}
.vector-scene[data-motion=off] .grove-birds *,html[data-interface-motion=off] .grove-birds *,html[data-page-hidden=true] .grove-birds *{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.grove-birds{display:none}.grove-birds *{animation:none!important}}
