// v4.3
// - Changed: single-block expand no longer uses scroll anchoring
// - Expanding a block now keeps the header in place; code appears below (no viewport shift)
// - Lets user read expanded code from the beginning instead of being scrolled to the bottom
// v4.4
// - Fixed: single-block expand now actively scrolls header to top of viewport
// - Ensures user always sees expanded code from the beginning (overrides browser scroll anchoring)
// v4.5
// - Refined: single-block expand only scrolls if header is in bottom 1/3 of viewport or off-screen
// - If header is already visible in upper 2/3, no scroll adjustment occurs
//
// v4.6
// - Fixed: single-block collapse no longer "snaps" the header down to the old footer position in some scroll states
// - Changed: when collapsing a block while its header is visible, the header is used as the scroll anchor (keeps it stable)
// - Fixed: auto-collapse on newly added blocks no longer triggers single-block scroll behavior
//
// v4.6
// - Fixed: single-block expand now first stabilizes the header position (cancels browser/scroll-area anchoring)
// - Refined: only scrolls header to top if it ends up off-screen or in the bottom ~15% of the viewport
//
// v4.7
// - Cleanup: removed unused `data` parameter from internal log function
// - Cleanup: removed unused boolean return values from createToolbarButton()
// - Cleanup: consolidated duplicate CSS rules and keyframe definitions