.city-tree-actor,#tree-visual{isolation:isolate}
.city-tree-actor>.city-tree-shadow,#tree-visual>.tree-shadow{z-index:0}
.city-tree-actor>.city-tree-body,#tree-visual>.tree-body{z-index:2}
html body .city-tree-actor.city-actor>button.city-target{z-index:3}
.city-tree-coin-layer{position:absolute;z-index:1;pointer-events:none;image-rendering:pixelated}
.city-tree-coin-origin{position:absolute;pointer-events:none}
:is(.city-tree-actor,.city-tree-coin-origin)>.city-tree-coin,#tree-visual>.tree-coin{position:absolute;inset:auto;left:50%;top:35%;width:48px;height:48px;z-index:1;pointer-events:none;image-rendering:pixelated;translate:calc(-50% + var(--coin-offset,0px)) -50%;animation:tree-coin-pop 1100ms ease-out forwards}
/* Arrival, one small bounce, then a fixed position through the entire fade. */
@keyframes tree-coin-pop{0%{transform:translateY(15px) scale(.65);opacity:1}20%{transform:translateY(calc(var(--coin-rise) - 8px)) scale(1.16);opacity:1}30%,74%{transform:translateY(var(--coin-rise)) scale(1);opacity:1}100%{transform:translateY(var(--coin-rise)) scale(1);opacity:0}}
@keyframes tree-coin-fade{0%,74%{transform:translateY(var(--coin-rise)) scale(1);opacity:1}100%{transform:translateY(var(--coin-rise)) scale(1);opacity:0}}
:is(.city-tree-actor,.city-tree-coin-origin)>.city-tree-coin[data-reduced=true],#tree-visual>.tree-coin[data-reduced=true]{animation-name:tree-coin-fade}
@media(prefers-reduced-motion:reduce){:is(.city-tree-actor,.city-tree-coin-origin)>.city-tree-coin,#tree-visual>.tree-coin{animation-name:tree-coin-fade}}
