/* Load after map.css. Existing sprite sheet and map geometry remain authoritative. */
.map-prop.restoration-prop{transform-origin:50% 75%}
.map-prop.restoration-prop.is-dormant{opacity:.42;filter:grayscale(.88) saturate(.28);transform:translate(-50%,-35%) scale(calc(var(--prop-scale,1)*.65))}
.map-prop.restoration-prop.is-restored{opacity:1;filter:drop-shadow(0 5px 2px #74604712)}

/* Build 43: a restoration plays on the map, not as a sticker in the result card.
   The prop wiggles, squashes, stretches back into color and lands; outlined petals and stars fly out in the game's art language. */
.map-prop.restoration-prop.waking-now{z-index:2;animation:garden-wake 1.1s cubic-bezier(.3,.7,.35,1) forwards}
@keyframes garden-wake{
 0%{opacity:.42;filter:grayscale(.88) saturate(.28);transform:translate(-50%,-35%) scale(calc(var(--prop-scale,1)*.65)) rotate(0)}
 9%{transform:translate(-50%,-35%) scale(calc(var(--prop-scale,1)*.65)) rotate(-8deg)}
 18%{transform:translate(-50%,-35%) scale(calc(var(--prop-scale,1)*.65)) rotate(7deg)}
 27%{opacity:.6;filter:grayscale(.88) saturate(.28);transform:translate(-50%,-31%) scale(calc(var(--prop-scale,1)*.72),calc(var(--prop-scale,1)*.5)) rotate(0)}
 34%{opacity:1;filter:grayscale(0) saturate(1.15) brightness(1.08)}
 48%{transform:translate(-50%,-62%) scale(calc(var(--prop-scale,1)*.98),calc(var(--prop-scale,1)*1.26))}
 62%{transform:translate(-50%,-50%) scale(calc(var(--prop-scale,1)*1.2),calc(var(--prop-scale,1)*.86))}
 77%{transform:translate(-50%,-52%) scale(calc(var(--prop-scale,1)*.95),calc(var(--prop-scale,1)*1.06))}
 100%{opacity:1;filter:drop-shadow(0 5px 2px #74604712);transform:translate(-50%,-50%) scale(var(--prop-scale,1))}
}
.garden-burst{position:absolute;width:0;height:0;z-index:3;pointer-events:none}
.garden-burst i{position:absolute;left:-15px;top:-15px;width:30px;height:30px;opacity:0;animation:garden-fly 1s cubic-bezier(.15,.75,.3,1) var(--delay,0ms) forwards}
.garden-burst svg{display:block;width:100%;height:100%;overflow:visible}
@keyframes garden-fly{
 0%{opacity:0;transform:translate(0,0) scale(.25) rotate(0)}
 12%{opacity:1}
 62%{opacity:1;transform:translate(calc(var(--dx)*.9),calc(var(--dy)*.9 - 8px)) scale(var(--s,1)) rotate(calc(var(--r)*.7))}
 100%{opacity:0;transform:translate(var(--dx),calc(var(--dy) + 18px)) scale(calc(var(--s,1)*.7)) rotate(var(--r))}
}
.garden-ring{position:absolute;left:0;top:0;width:128px;height:54px;margin:-27px 0 0 -64px;border-radius:50%;border:3.5px solid #fff;box-shadow:0 0 0 2.5px var(--accent,#e97094),inset 0 0 0 2.5px var(--accent,#e97094);opacity:0;z-index:1;pointer-events:none;animation:garden-ring .85s cubic-bezier(.2,.8,.3,1) forwards}
@keyframes garden-ring{0%{opacity:.95;transform:scale(.2)}100%{opacity:0;transform:scale(1.55)}}
.garden-caption{position:absolute;z-index:4;padding:7px 15px 8px;border-radius:999px;background:#fffdf7;border:2.5px solid var(--accent,#e97094);box-shadow:0 4px 0 color-mix(in srgb,var(--accent,#e97094) 40%,transparent);color:var(--ink,#705b5e);font:400 16px 'Jua','Fredoka','Nunito',sans-serif;white-space:nowrap;pointer-events:none;transform:translate(-50%,-100%);animation:garden-caption .5s cubic-bezier(.2,1.5,.4,1) both}
@keyframes garden-caption{from{opacity:0;transform:translate(-50%,-55%) scale(.55)}to{opacity:1;transform:translate(-50%,-100%) scale(1)}}
.garden-shield{position:fixed;inset:0;z-index:40;padding:0;border:0;background:transparent;cursor:pointer}
/* Fewer effects (chosen in settings only): the prop simply fades back into color. */
.reduced .map-prop.restoration-prop.waking-now{animation:garden-fade .6s ease forwards}
@keyframes garden-fade{from{opacity:.42;filter:grayscale(.88) saturate(.28);transform:translate(-50%,-35%) scale(calc(var(--prop-scale,1)*.65))}to{opacity:1;filter:drop-shadow(0 5px 2px #74604712);transform:translate(-50%,-50%) scale(var(--prop-scale,1))}}
.reduced .garden-caption{animation:none}
