286572777b
Stat crown fix — root cause and solution: The heroWidth measurement used a useRef + useEffect([], ...) pattern that created a ResizeObserver once on mount. When switching rooms, BlobbiRoomHero unmounts and remounts inside the new room component, creating a new DOM element. But the ResizeObserver was still watching the old detached element, so heroWidth went stale (often falling to the default 375px or reading 0 from the detached node). Fix: replaced useRef + useEffect with a callback ref (heroCallbackRef) that disconnects the old ResizeObserver and creates a new one every time the ref is assigned to a new element. This ensures heroWidth is always measured from the currently-mounted hero container. Additionally, the arc spread and radius values were too extreme on desktop (120/190/230 degrees, 300px radius) which made the stats fly far apart. Now using balanced moderate values: - Mobile: 80/110/140 degrees - Desktop: 90/130/160 degrees - Radius: smooth 110px → 200px interpolation based on container width This produces a stable, moderate crown that looks the same on initial render and after room switches, with desktop having slightly more breathing room than mobile without being exaggerated. Closet hidden: Removed 'closet' from DEFAULT_ROOM_ORDER with a comment explaining how to re-enable it. The BlobbiClosetRoom component, its type in BlobbiRoomId, its ROOM_META entry, and its ROOM_COMPONENTS mapping all remain intact — only the navigation sequence excludes it.