// Confetti overlay — short burst on goal completion / achievement unlock.
(() => {
function ConfettiHost() {
  const [on, setOn] = React.useState(false);

  React.useEffect(() => {
    const handler = () => {
      setOn(false);
      // next tick to retrigger animation
      requestAnimationFrame(() => requestAnimationFrame(() => setOn(true)));
      window.setTimeout(() => setOn(false), 2600);
    };
    window.addEventListener("vida:celebrate", handler);
    return () => window.removeEventListener("vida:celebrate", handler);
  }, []);

  return <div className={"confetti-host " + (on ? "on" : "")} aria-hidden="true"/>;
}
window.ConfettiHost = ConfettiHost;

window.celebrate = () => {
  window.dispatchEvent(new CustomEvent("vida:celebrate"));
};
})();
