<ul>
        <li><strong>custom_js.php</strong> — Fixed <code>$_GET["add_to_cart"]</code> missing isset() guard (PHP Notice on every page load)</li>
        <li><strong>custom_js.php</strong> — Fixed 10x <code>"undifined"</code> → <code>"undefined"</code> typeof check typos (JS typeof checks never matched)</li>
        <li><strong>custom_js.php</strong> — Fixed <code>async: false</code> → <code>async: true</code> in getRFQMenu() (deprecated, browser-blocking)</li>
        <li><strong>service_intro.php</strong> — Fixed <code>extract($service)</code> called before null check; moved into else branch to prevent extract(null) deprecation error</li>
        <li><strong>services.php</strong> — Added <code>onerror</code> fallback on service image tags (prevents broken img display)</li>
        <li><strong>service_detail.php</strong> — Added <code>onerror</code> fallback on service detail image tag</li>
        <li><strong>ServiceModel.php</strong> — Fixed <code>getServicesMember()</code>: INNER JOIN → LEFT JOIN (services with uncategorized items were hidden)</li>
        <li><strong>ServiceModel.php</strong> — Fixed <code>getServicesMemberTotal()</code>: INNER JOIN → LEFT JOIN (load-more count was wrong)</li>
        <li><strong>ServiceModel.php</strong> — Fixed <code>getServiceDetail()</code>: INNER JOIN → LEFT JOIN (detail view failed for uncategorized services)</li>
        <li><strong>services.php</strong> [SPEED] — Eliminated N+1 DB calls: <code>paymentType()</code> per-row DB call replaced with pre-cached array (6-row lookup table)</li>
        <li><strong>service_detail.php</strong> [SPEED] — Same paymentType() pre-cache applied to detail view</li>
        <li>Backups created: custom_js-bk-v3.php, service_intro-bk-v3.php, services-bk-v3.php, service_detail-bk-v3.php, ServiceModel-bk-v3.php</li>
    </ul>