/* 0.25 / Upright grass and shared gusts, with long quiet intervals. */
.city-ecology{pointer-events:none;fill:none;stroke-linecap:round;stroke-linejoin:round}
.ecology-cluster{stroke:#b3ba876e;stroke-width:.82}
.ecology-tuft:nth-child(3n+1){stroke:#929c715c}
.ecology-cluster-breeze,.ecology-flower-breeze,.ecology-shrub-breeze,.vector-scene .tree-canopy{transform-box:fill-box;transform-origin:50% 100%;animation:ecology-gust 27s ease-in-out infinite;animation-delay:0s;--ecology-gust:-4deg}
.ecology-flower-breeze{--ecology-gust:-3deg}
.ecology-shrub-breeze{--ecology-gust:-1.6deg}
.vector-scene .tree-canopy{--ecology-gust:1.8deg;animation-name:ecology-tree-gust}
.ecology-stem{stroke:#acb887a1;stroke-width:.75}
.ecology-petals{fill:#e1b978a3;stroke:#e9c68c8c;stroke-width:.45}
.ecology-pollen{fill:#f4d6a6;stroke:none}
.ecology-shrub-ground{stroke:#a8b07e2b;stroke-width:.7}
.ecology-shrub-leaves{fill:#7b8e4217;stroke:#aeb88973;stroke-width:.85}
.ecology-shrub-ribs{stroke:#b1ba8252;stroke-width:.7}
.ecology-bee-flight{animation:ecology-bee-loop 18s ease-in-out infinite}
.ecology-bee.second .ecology-bee-flight{animation-name:ecology-bee-loop-second;animation-duration:21s;animation-delay:-8s}
.ecology-bee-body{fill:#dab37a;stroke:#e9c994b3;stroke-width:.4}
.ecology-bee-stripe{stroke:#4c472af0;stroke-width:.85}
.ecology-bee-head{fill:#b7ad7f;stroke:none}
.ecology-bee-wings{stroke:#e7dec38c;stroke-width:.65;transform-origin:0 0;animation:ecology-bee-wings .38s ease-in-out infinite}
.ecology-bee.second .ecology-bee-wings{animation-delay:-.16s}
.vector-scene[data-dim=false] .ecology-cluster{stroke:#bec58a8c}
.vector-scene[data-dim=false] .ecology-tuft:nth-child(3n+1){stroke:#a3af7380}
.vector-scene[data-dim=false] .ecology-shrub-leaves{fill:#8b9c4724;stroke:#b7c1828c}
@keyframes ecology-gust{0%,17%,56%,100%{transform:skewX(var(--ecology-pointer-bend,0deg))}27%{transform:skewX(calc(var(--ecology-gust) + var(--ecology-pointer-bend,0deg)))}36%{transform:skewX(calc(var(--ecology-gust)*.3 + var(--ecology-pointer-bend,0deg)))}44%{transform:skewX(calc(var(--ecology-gust)*.7 + var(--ecology-pointer-bend,0deg)))}}
@keyframes ecology-tree-gust{0%,17%,56%,100%{transform:rotate(0)}27%{transform:rotate(var(--ecology-gust))}36%{transform:rotate(calc(var(--ecology-gust)*.3))}44%{transform:rotate(calc(var(--ecology-gust)*.7))}}
@keyframes ecology-bee-loop{0%,100%{transform:translate(-10px,1px) rotate(-9deg)}22%{transform:translate(2px,-6px) rotate(6deg)}45%{transform:translate(17px,-1px) rotate(12deg)}67%{transform:translate(9px,7px) rotate(-7deg)}83%{transform:translate(-3px,4px) rotate(-11deg)}}
@keyframes ecology-bee-loop-second{0%,100%{transform:translate(8px,3px) rotate(7deg)}24%{transform:translate(-7px,0) rotate(-10deg)}47%{transform:translate(-12px,-7px) rotate(-3deg)}73%{transform:translate(11px,-4px) rotate(9deg)}}
@keyframes ecology-bee-wings{0%,100%{transform:scaleY(.62)}50%{transform:scaleY(1)}}
.vector-scene[data-motion=off] .city-ecology *,html[data-page-hidden=true] .city-ecology *,.vector-scene[data-motion=off] .tree-canopy,html[data-page-hidden=true] .tree-canopy{animation-play-state:paused!important}
html[data-interface-motion=off] .city-ecology *,html[data-interface-motion=off] .tree-canopy{animation:none!important}
@media(prefers-reduced-motion:reduce){.city-ecology *,.vector-scene .tree-canopy{animation:none!important}}
