Restored shop view grid card layout (was broken due to missing UBOLD4 CSS classes product-list-box/gal-detail/price-tag/product-action/detail/rating). Recreated all card CSS in v7 style with dark mode overrides. Fixed portfolioContainer missing flex-wrap for col-* grid to work. Fixed inc/ajax.php BASEPATH_ undefined (replaced with spl_autoload_register). Tested 15 AJAX endpoints: getAllModules, getModuleById(2x), getModuleType, getModuleCategories, getModulePortals, filterByStatus(2x), filterByCategory, filterByPortal, getCategory, deleteCategory, saveModule, loadRevisions, getRevision — all PASS. Tested modal interactions: Edit Module modal opens with data loaded correctly (name, RID, paths, Summernote editor, category, portals). All 3 tabs verified in light+dark mode with viewport screenshots.