@keyframes harvestFloat{0%{transform:translate(-50%) translateY(0);opacity:1}to{transform:translate(-50%) translateY(-30px);opacity:0}}@keyframes nebuNeonSpin{0%{opacity:0}to{opacity:1}}@keyframes nebuFadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes nebuSlideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes hexShake{0%,to{transform:translate(0)}25%{transform:translate(-3px) rotate(-1deg)}75%{transform:translate(3px) rotate(1deg)}}.hex-shake{animation:hexShake .3s ease-in-out}@keyframes hexLidOpen{0%{transform:translateY(0);opacity:1}to{transform:translateY(-40px);opacity:0}}.hex-lid-open{animation:hexLidOpen .5s ease-out forwards}@keyframes hexEmerge{0%{transform:translateY(20px) scale(.8);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.hex-emerge{animation:hexEmerge .6s cubic-bezier(.34,1.56,.64,1) forwards;opacity:0}@keyframes hexHarvest{0%{transform:scale(1);opacity:1}to{transform:scale(0) translateY(-20px);opacity:0}}.hex-harvest{animation:hexHarvest .4s ease-in forwards}@keyframes hexSparkle{0%{opacity:0;transform:scale(0)}50%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0) translateY(-15px)}}.hex-sparkle{animation:hexSparkle .8s ease-out forwards}@keyframes hexBuildingDrop{0%{transform:translateY(-30px) scale(.9);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.hex-building-enter{animation:hexBuildingDrop .6s cubic-bezier(.22,1,.36,1)}.obs-beacon{width:0;height:0}.obs-beacon .obs-beacon-core,.obs-beacon .obs-beacon-ring{position:absolute;left:0;top:0;border-radius:50%;box-sizing:border-box}.obs-beacon .obs-beacon-core{width:9px;height:9px;margin-left:-4.5px;margin-top:-4.5px;background:var(--obs-beacon-color, #4488aa);box-shadow:0 0 7px var(--obs-beacon-color, #4488aa),0 0 12px var(--obs-beacon-color, #4488aa);animation:obsBeaconCore 1.6s ease-in-out infinite}.obs-beacon .obs-beacon-ring{width:14px;height:14px;margin-left:-7px;margin-top:-7px;border:2px solid var(--obs-beacon-color, #4488aa);animation:obsBeaconPing 1.8s ease-out infinite}.obs-beacon .obs-beacon-ring-delayed{animation-delay:.9s}@keyframes obsBeaconCore{0%,to{transform:scale(.85);opacity:.85}50%{transform:scale(1.2);opacity:1}}@keyframes obsBeaconPing{0%{transform:scale(.5);opacity:.9}to{transform:scale(2.6);opacity:0}}
