Three critical fixes: (1) Summernote editors were initializing on page load causing toolbars to leak below footer (page was 56K px tall). Fixed by deferring .summernote() init to modal shown.bs.modal event. Page height now 11K. (2) $.parseJSON(response) crashed with undefined is not valid JSON when clicking Edit module — response was already parsed object. Replaced all 14 $.parseJSON calls with safe (typeof===string)?JSON.parse():response pattern. (3) Removed global .img-fluid { max-width:30% } override in custom.css that was crushing all images to 30% width across the entire platform. Card consistency validated: all 126 cards at 320px height, image wraps at 168px, icons at 120px — zero variance.