{"id":4169,"date":"2025-06-14T15:21:45","date_gmt":"2025-06-14T07:21:45","guid":{"rendered":"https:\/\/sing2sky.com\/?page_id=4169"},"modified":"2026-07-16T05:42:53","modified_gmt":"2026-07-16T09:42:53","slug":"bolted-mechanics-pro-system","status":"publish","type":"page","link":"https:\/\/sing2sky.com\/fr\/products\/bolted-mechanics-pro-system\/","title":{"rendered":"Bolted Mechanics PRO System"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"4169\" class=\"elementor elementor-4169\" wpc-filter-elementor-widget=\"1\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-08fad89 e-flex e-con-boxed e-con e-parent\" data-id=\"08fad89\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-94ee666 elementor-widget elementor-widget-html\" data-id=\"94ee666\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n        \/* Bolted Mechanics PRO System Styles *\/\r\n        .bolted-mechanics-pro-container * {\r\n            margin: 0;\r\n            padding: 0;\r\n            box-sizing: border-box;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container {\r\n            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\r\n            background-color: #f5f5f5;\r\n            color: #333;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .product-main {\r\n            background-color: #f9f9f9;\r\n            min-height: 100vh;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .category-header {\r\n            background: white;\r\n            border-bottom: 1px solid #e0e0e0;\r\n            padding: 30px 0;\r\n            text-align: center;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .category-header h1 {\r\n            font-size: 2.5rem;\r\n            font-weight: 700;\r\n            color: #333;\r\n            margin-bottom: 10px;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .category-header p {\r\n            font-size: 1.1rem;\r\n            color: #666;\r\n            max-width: 800px;\r\n            margin: 0 auto;\r\n            padding: 0 20px;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .wrap {\r\n            max-width: 1200px;\r\n            margin: 0 auto;\r\n            padding: 20px;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .list-results {\r\n            display: flex;\r\n            justify-content: space-between;\r\n            align-items: center;\r\n            margin-bottom: 20px;\r\n            flex-wrap: nowrap;\r\n            gap: 15px;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .total {\r\n            font-size: 16px;\r\n            color: #333;\r\n            font-weight: 500;\r\n            flex: 1;\r\n            min-width: 0;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .pagin {\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 8px;\r\n            flex-shrink: 0;\r\n            white-space: nowrap;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .pagin .t {\r\n            font-size: 14px;\r\n            color: #666;\r\n            margin: 0;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .pagin select {\r\n            padding: 6px 10px;\r\n            border: 1px solid #ddd;\r\n            border-radius: 4px;\r\n            background: white;\r\n            font-size: 14px;\r\n            min-width: 50px;\r\n            height: 32px;\r\n            line-height: 1;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .base-list {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\r\n            gap: 20px;\r\n            list-style: none;\r\n            margin-bottom: 40px;\r\n            justify-items: center;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .product-item {\r\n            background: white;\r\n            border-radius: 4px;\r\n            overflow: hidden;\r\n            text-decoration: none;\r\n            color: inherit;\r\n            border: 1px solid #e0e0e0;\r\n            transition: all 0.2s ease;\r\n            display: flex;\r\n            flex-direction: column;\r\n            width: 100%;\r\n            max-width: 350px;\r\n            height: 520px;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .product-item:hover {\r\n            border-color: #ccc;\r\n            text-decoration: none;\r\n            color: inherit;\r\n            transform: translateY(-2px);\r\n            box-shadow: 0 4px 12px rgba(0,0,0,0.1);\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .product-item .tit {\r\n            font-size: 16px;\r\n            font-weight: 600;\r\n            color: #333;\r\n            padding: 15px 15px 5px;\r\n            text-align: center;\r\n            min-height: 60px;\r\n            line-height: 1.3;\r\n            overflow: hidden;\r\n            text-overflow: ellipsis;\r\n            display: -webkit-box;\r\n            -webkit-line-clamp: 2;\r\n            -webkit-box-orient: vertical;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .product-item .no {\r\n            font-size: 14px;\r\n            color: #666;\r\n            padding: 0 15px 10px;\r\n            text-align: center;\r\n            min-height: 30px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .cimgbox {\r\n            width: 100%;\r\n            flex: 1;\r\n            overflow: hidden;\r\n            background: #f8f8f8;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            position: relative;\r\n            border-radius: 8px;\r\n            margin: 10px;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .cimgbox img {\r\n            width: 100%;\r\n            height: 100%;\r\n            object-fit: contain;\r\n            object-position: center;\r\n            transition: transform 0.3s ease;\r\n            display: block;\r\n            padding: 10px;\r\n            background: white;\r\n            border-radius: 4px;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .product-item:hover .cimgbox img {\r\n            transform: scale(1.02);\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .lmore {\r\n            display: inline-block;\r\n            margin: 0;\r\n            padding: 10px 20px;\r\n            background: transparent;\r\n            color: #333;\r\n            font-weight: 500;\r\n            font-size: 14px;\r\n            border: 1px solid #ddd;\r\n            border-radius: 4px;\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n            text-decoration: none;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .product-footer {\r\n            padding: 15px;\r\n            text-align: center;\r\n            min-height: 60px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            margin-top: auto;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .product-item:hover .lmore {\r\n            background: #333;\r\n            color: white;\r\n            border-color: #333;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .pagination {\r\n            display: flex;\r\n            justify-content: center;\r\n            align-items: center;\r\n            gap: 5px;\r\n            list-style: none;\r\n            margin-top: 20px;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .pagination li {\r\n            margin: 0 2px;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .pagination a, \r\n        .bolted-mechanics-pro-container .pagination span {\r\n            display: block;\r\n            padding: 8px 12px;\r\n            text-decoration: none;\r\n            color: #333;\r\n            border: 1px solid #ddd;\r\n            border-radius: 4px;\r\n            transition: all 0.3s ease;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .pagination .active span {\r\n            background: #333;\r\n            color: white;\r\n            border-color: #333;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .pagination .disabled span {\r\n            color: #ccc;\r\n            cursor: not-allowed;\r\n        }\r\n\r\n        .bolted-mechanics-pro-container .pagination a:hover {\r\n            background: #f0f0f0;\r\n            text-decoration: none;\r\n        }\r\n\r\n        \/* Responsive Design *\/\r\n        @media (max-width: 768px) {\r\n            .bolted-mechanics-pro-container .category-header h1 {\r\n                font-size: 2rem;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .category-header p {\r\n                font-size: 1rem;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .list-results {\r\n                flex-direction: row;\r\n                align-items: center;\r\n                justify-content: space-between;\r\n                flex-wrap: nowrap;\r\n                gap: 10px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .total {\r\n                flex: 1;\r\n                min-width: 0;\r\n                font-size: 14px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .pagin {\r\n                flex-shrink: 0;\r\n                gap: 6px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .pagin .t {\r\n                font-size: 13px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .pagin select {\r\n                padding: 5px 8px;\r\n                font-size: 13px;\r\n                height: 28px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .base-list {\r\n                grid-template-columns: 1fr;\r\n                gap: 15px;\r\n                justify-items: center;\r\n                padding: 0 10px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .product-item {\r\n                width: 100%;\r\n                max-width: 100%;\r\n                margin: 0 auto;\r\n                height: 480px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .cimgbox {\r\n                flex: 1;\r\n                margin: 8px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .cimgbox img {\r\n                padding: 8px;\r\n            }\r\n        }\r\n\r\n        @media (max-width: 480px) {\r\n            .bolted-mechanics-pro-container .wrap {\r\n                padding: 15px 10px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .list-results {\r\n                gap: 8px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .total {\r\n                font-size: 13px;\r\n                flex: 1;\r\n                min-width: 0;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .pagin {\r\n                flex-shrink: 0;\r\n                gap: 5px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .pagin .t {\r\n                font-size: 12px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .pagin select {\r\n                padding: 4px 6px;\r\n                font-size: 12px;\r\n                height: 24px;\r\n                min-width: 45px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .base-list {\r\n                padding: 0;\r\n                grid-template-columns: 1fr;\r\n                justify-items: center;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .product-item {\r\n                width: 100%;\r\n                max-width: 100%;\r\n                height: 460px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .cimgbox {\r\n                flex: 1;\r\n                margin: 5px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .cimgbox img {\r\n                padding: 5px;\r\n            }\r\n        }\r\n\r\n        @media (max-width: 360px) {\r\n            .bolted-mechanics-pro-container .category-header {\r\n                padding: 20px 0;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .category-header h1 {\r\n                font-size: 1.8rem;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .wrap {\r\n                padding: 10px 5px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .list-results {\r\n                gap: 5px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .total {\r\n                font-size: 12px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .pagin .t {\r\n                font-size: 11px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .pagin select {\r\n                padding: 3px 5px;\r\n                font-size: 11px;\r\n                height: 22px;\r\n                min-width: 40px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .cimgbox {\r\n                flex: 1;\r\n                margin: 5px;\r\n            }\r\n\r\n            .bolted-mechanics-pro-container .cimgbox img {\r\n                padding: 5px;\r\n            }\r\n        }\r\n<\/style>\r\n\r\n<!-- Schema.org structured data -->\r\n<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"CollectionPage\",\r\n  \"name\": \"Mechanical Construction Sets\",\r\n  \"description\": \"Advanced mechanical construction systems featuring precision-engineered components, gears, and connectors. Perfect for STEM education, engineering concepts, and complex structural building projects.\",\r\n  \"url\": \"https:\/\/sing2sky.com\/bolted-mechanics-pro-system\/\",\r\n  \"mainEntity\": {\r\n    \"@type\": \"ItemList\",\r\n    \"numberOfItems\": 6,\r\n    \"itemListElement\": []\r\n  }\r\n}\r\n<\/script>\r\n\r\n<div class=\"bolted-mechanics-pro-container\">\r\n    <section itemscope itemtype=\"https:\/\/schema.org\/CollectionPage\" class=\"product-main\">\r\n        <header class=\"category-header\">\r\n            <h1 itemprop=\"name\">Mechanical Construction Sets<\/h1>\r\n            <p itemprop=\"description\">Advanced mechanical construction systems featuring precision-engineered components, gears, and connectors. Perfect for STEM education, engineering concepts, and complex structural building projects.<\/p>\r\n        <\/header>\r\n\r\n        <div class=\"wrap\">\r\n            <div class=\"list-results\">\r\n                <p class=\"total\" role=\"status\" aria-live=\"polite\">Loading products...<\/p>\r\n                <form class=\"pagin\">\r\n                    <label for=\"pageSize\" class=\"t\">Show<\/label>\r\n                    <select name=\"num\" id=\"pageSize\" aria-label=\"Products per page\">\r\n                        <option value=\"6\" selected>6<\/option>\r\n                        <option value=\"12\">12<\/option>\r\n                        <option value=\"24\">24<\/option>\r\n                        <option value=\"48\">48<\/option>\r\n                    <\/select>\r\n                <\/form>\r\n            <\/div>\r\n\r\n            <main>\r\n                <ul class=\"base-list\" id=\"productList\" itemscope itemtype=\"https:\/\/schema.org\/ItemList\">\r\n                    <!-- Product list will be dynamically generated by JavaScript -->\r\n                <\/ul>\r\n            <\/main>\r\n\r\n            <nav aria-label=\"Product pagination\" class=\"bottom\">\r\n                <ul class=\"pagination\" id=\"pagination\">\r\n                    <!-- Pagination will be dynamically generated by JavaScript -->\r\n                <\/ul>\r\n            <\/nav>\r\n        <\/div>\r\n    <\/section>\r\n<\/div>\r\n\r\n<script>\r\n(function() {\r\n    'use strict';\r\n    \r\n    \/\/ Avoid global variable conflicts, use immediately invoked function\r\n    let productData = [];\r\n    let currentPage = 1;\r\n    let pageSize = 6;\r\n    let filteredProducts = [];\r\n    \r\n    \/\/ Initialize product data\r\n    function initializeProducts() {\r\n        try {\r\n            productData = [\r\n                { \r\n                    id: 5001, \r\n                    title: \"590pcs Advanced Gears & Connectors Kit\", \r\n                    no: \"XTG2020-4\", \r\n                    image: \"https:\/\/sing2sky.com\/wp-content\/uploads\/2025\/06\/590pcs-Advanced-Gears-Connectors-Kit-1.webp\", \r\n                    category: \"Bolted Mechanics PRO System\",\r\n                    pageUrl: \"https:\/\/sing2sky.com\/590pcs-advanced-gears-connectors-kit\/\",\r\n                    description: \"Professional 590-piece advanced gear and connector kit featuring precision-engineered mechanical components, rotating gears, and industrial-grade connectors for sophisticated STEM engineering education. Complex gear ratios, torque transmission systems, and mechanical advantage principles promote advanced physics understanding, mechanical engineering concepts, and real-world machine design through hands-on construction experiences. Perfect for high school engineering programs, technical education, and advanced maker spaces emphasizing mechanical systems and engineering design.\"\r\n                },\r\n                { \r\n                    id: 5002, \r\n                    title: \"900pcs Jumbo Hardwood Bolt-Building Set\", \r\n                    no: \"XTG2020B-1\", \r\n                    image: \"https:\/\/sing2sky.com\/wp-content\/uploads\/2025\/06\/900pcs-Jumbo-Hardwood-Bolt-Building-Set-1.webp\", \r\n                    category: \"Bolted Mechanics PRO System\",\r\n                    pageUrl: \"https:\/\/sing2sky.com\/900pcs-jumbo-hardwood-bolt-building-set\/\",\r\n                    description: \"Massive 900-piece jumbo hardwood bolt-building system featuring oversized wooden components with precision-drilled bolt holes for large-scale mechanical construction projects and collaborative engineering challenges. Premium hardwood construction ensures exceptional durability while authentic bolt connections introduce fastener technology, structural engineering principles, and real-world construction methods. Ideal for technical education programs, engineering camps, and institutional settings requiring substantial, professional-grade mechanical building systems.\"\r\n                },\r\n                { \r\n                    id: 5003, \r\n                    title: \"900pcs Charred Wood Jumbo Engineering Set\", \r\n                    no: \"XTG2020B-2\", \r\n                    image: \"https:\/\/sing2sky.com\/wp-content\/uploads\/2025\/06\/900pcs-Charred-Wood-Jumbo-Engineering-Set-1.webp\", \r\n                    category: \"Bolted Mechanics PRO System\",\r\n                    pageUrl: \"https:\/\/sing2sky.com\/900pcs-charred-wood-jumbo-engineering-set\/\",\r\n                    description: \"Comprehensive 900-piece charred wood jumbo engineering collection combining traditional wood preservation techniques with advanced mechanical fastening systems for weather-resistant outdoor engineering education. Carbonization treatment provides superior durability while precision bolt connections enable complex structural projects, mechanical assemblies, and collaborative construction challenges. Perfect for outdoor STEM programs, technical schools, and engineering education facilities requiring durable, weather-resistant mechanical building materials.\"\r\n                },\r\n                { \r\n                    id: 5004, \r\n                    title: \"474pcs Jumbo Hardwood Bolt-Building Set\", \r\n                    no: \"XTG2020B-4\", \r\n                    image: \"https:\/\/sing2sky.com\/wp-content\/uploads\/2025\/06\/474pcs-Jumbo-Hardwood-Bolt-Building-Set-1.webp\", \r\n                    category: \"Bolted Mechanics PRO System\",\r\n                    pageUrl: \"https:\/\/sing2sky.com\/474pcs-jumbo-hardwood-bolt-building-set\/\",\r\n                    description: \"Mid-scale 474-piece jumbo hardwood bolt-building collection featuring large-format wooden components with industrial-strength bolt connections for intermediate mechanical engineering projects and classroom construction activities. Substantial component size promotes collaborative building while authentic fastening systems introduce mechanical joining methods, structural stability principles, and engineering problem-solving skills. Ideal for middle school engineering programs, technical education curricula, and hands-on STEM learning environments.\"\r\n                },\r\n                { \r\n                    id: 5005, \r\n                    title: \"636pcs Mid-Size Construction Connectors Classroom Pack\", \r\n                    no: \"XTG2020C\", \r\n                    image: \"https:\/\/sing2sky.com\/wp-content\/uploads\/2025\/06\/636pcs-Mid-Size-Construction-Connectors-Classroom-Pack-1.webp\", \r\n                    category: \"Bolted Mechanics PRO System\",\r\n                    pageUrl: \"https:\/\/sing2sky.com\/636pcs-mid-size-construction-connectors-classroom-pack\/\",\r\n                    description: \"Educational 636-piece mid-size construction connector classroom pack designed for comprehensive mechanical engineering instruction, featuring diverse connector types, fastening systems, and structural components for multiple simultaneous learning stations. Classroom-optimized design supports group learning, collaborative projects, and systematic instruction in mechanical principles, fastener technology, and structural engineering concepts. Perfect for educational institutions, STEM programs, and technical training facilities requiring complete classroom mechanical construction solutions.\"\r\n                },\r\n                { \r\n                    id: 5006, \r\n                    title: \"335pcs Heavy-Duty Plywood Bolt Board System\", \r\n                    no: \"XTG2020D\", \r\n                    image: \"https:\/\/sing2sky.com\/wp-content\/uploads\/2025\/06\/335pcs-Heavy-Duty-Plywood-Bolt-Board-System-1.webp\", \r\n                    category: \"Bolted Mechanics PRO System\",\r\n                    pageUrl: \"https:\/\/sing2sky.com\/335pcs-heavy-duty-plywood-bolt-board-system\/\",\r\n                    description: \"Industrial-grade 335-piece heavy-duty plywood bolt board system featuring precision-engineered plywood panels with standardized bolt hole patterns for professional-level mechanical construction and engineering prototyping. Heavy-duty construction supports substantial structural loads while standardized connection points enable precise mechanical assemblies, prototype development, and advanced engineering projects. Ideal for technical colleges, engineering programs, and professional training facilities requiring industrial-strength mechanical building platforms.\"\r\n                }\r\n            ];\r\n            \r\n            \/\/ Update structured data\r\n            updateStructuredData();\r\n            \r\n            console.log('Product data loaded successfully:', productData.length, 'products');\r\n            return true;\r\n        } catch (error) {\r\n            console.error('Product data loading failed:', error);\r\n            return false;\r\n        }\r\n    }\r\n\r\n    function updateStructuredData() {\r\n        try {\r\n            const script = document.querySelector('script[type=\"application\/ld+json\"]');\r\n            if (script) {\r\n                const structuredData = JSON.parse(script.textContent);\r\n                structuredData.mainEntity.numberOfItems = productData.length;\r\n                structuredData.mainEntity.itemListElement = productData.map((product, index) => ({\r\n                    \"@type\": \"Product\",\r\n                    \"position\": index + 1,\r\n                    \"name\": product.title,\r\n                    \"description\": product.description,\r\n                    \"sku\": product.no,\r\n                    \"image\": product.image,\r\n                    \"url\": product.pageUrl,\r\n                    \"category\": product.category\r\n                }));\r\n                script.textContent = JSON.stringify(structuredData);\r\n            }\r\n        } catch (error) {\r\n            console.error('Update structured data failed:', error);\r\n        }\r\n    }\r\n\r\n    \/\/ Page initialization\r\n    function initializePage() {\r\n        console.log('Starting initialization...');\r\n        \r\n        \/\/ First initialize product data\r\n        if (!initializeProducts()) {\r\n            const totalElement = document.querySelector('.bolted-mechanics-pro-container .total');\r\n            if (totalElement) {\r\n                totalElement.textContent = 'Product data loading failed';\r\n            }\r\n            return;\r\n        }\r\n        \r\n        \/\/ Set initial products to all products\r\n        filteredProducts = [...productData];\r\n        \r\n        \/\/ Initialize pagination and product display\r\n        try {\r\n            updateProductCount();\r\n            renderProducts();\r\n            updatePagination();\r\n            console.log('Initialization completed');\r\n        } catch (error) {\r\n            console.error('Initialization failed:', error);\r\n            const totalElement = document.querySelector('.bolted-mechanics-pro-container .total');\r\n            if (totalElement) {\r\n                totalElement.textContent = 'Initialization failed';\r\n            }\r\n            return;\r\n        }\r\n        \r\n        \/\/ Page size selection\r\n        const pageSizeSelect = document.getElementById('pageSize');\r\n        if (pageSizeSelect) {\r\n            pageSizeSelect.addEventListener('change', function() {\r\n                pageSize = parseInt(this.value);\r\n                currentPage = 1;\r\n                renderProducts();\r\n                updatePagination();\r\n            });\r\n        }\r\n    }\r\n\r\n    function renderProducts() {\r\n        try {\r\n            const baseList = document.querySelector('.bolted-mechanics-pro-container .base-list');\r\n            if (!baseList) return;\r\n            \r\n            const startIndex = (currentPage - 1) * pageSize;\r\n            const endIndex = startIndex + pageSize;\r\n            const currentProducts = filteredProducts.slice(startIndex, endIndex);\r\n            \r\n            let html = '';\r\n            currentProducts.forEach((product, index) => {\r\n                html += `\r\n                    <li itemscope itemtype=\"https:\/\/schema.org\/Product\">\r\n                        <a href=\"${product.pageUrl}\" class=\"product-item\" itemprop=\"url\">\r\n                            <h3 class=\"tit\" itemprop=\"name\">${product.title}<\/h3>\r\n                            <p class=\"no\" itemprop=\"sku\">${product.no}<\/p>\r\n                            <div class=\"cimgbox\">\r\n                                <img decoding=\"async\" src=\"${product.image}\" \r\n                                     alt=\"${product.title} - ${product.description}\" \r\n                                     itemprop=\"image\"\r\n                                     loading=\"lazy\"\r\n                                     width=\"300\"\r\n                                     height=\"300\">\r\n                            <\/div>\r\n                            <div class=\"product-footer\">\r\n                                <span class=\"lmore\" role=\"button\" tabindex=\"0\">Learn more<\/span>\r\n                            <\/div>\r\n                            <meta itemprop=\"description\" content=\"${product.description}\">\r\n                            <meta itemprop=\"category\" content=\"${product.category}\">\r\n                        <\/a>\r\n                    <\/li>\r\n                `;\r\n            });\r\n            \r\n            baseList.innerHTML = html;\r\n            \r\n            \/\/ Add keyboard navigation support\r\n            addKeyboardNavigation();\r\n            \r\n        } catch (error) {\r\n            console.error('Render products failed:', error);\r\n        }\r\n    }\r\n\r\n    function addKeyboardNavigation() {\r\n        const learnMoreButtons = document.querySelectorAll('.bolted-mechanics-pro-container .lmore[tabindex=\"0\"]');\r\n        learnMoreButtons.forEach(button => {\r\n            button.addEventListener('keydown', function(event) {\r\n                if (event.key === 'Enter' || event.key === ' ') {\r\n                    event.preventDefault();\r\n                    const productLink = this.closest('.product-item');\r\n                    if (productLink) {\r\n                        productLink.click();\r\n                    }\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    function updatePagination() {\r\n        try {\r\n            const totalPages = Math.ceil(filteredProducts.length \/ pageSize);\r\n            const pagination = document.querySelector('.bolted-mechanics-pro-container .pagination');\r\n            if (!pagination) return;\r\n            \r\n            let html = '';\r\n            \r\n            \/\/ If only one page or no products, don't show pagination\r\n            if (totalPages <= 1) {\r\n                pagination.innerHTML = '';\r\n                return;\r\n            }\r\n            \r\n            \/\/ Previous page\r\n            if (currentPage === 1) {\r\n                html += '<li class=\"disabled\"><span aria-label=\"Previous page\">\u00ab<\/span><\/li>';\r\n            } else {\r\n                html += `<li><a href=\"#\" onclick=\"window.boltedMechanicsPro.changePage(${currentPage - 1})\" aria-label=\"Go to previous page\">\u00ab<\/a><\/li>`;\r\n            }\r\n            \r\n            \/\/ Page numbers - smart pagination display\r\n            const maxVisiblePages = 7;\r\n            let startPage, endPage;\r\n            \r\n            if (totalPages <= maxVisiblePages) {\r\n                startPage = 1;\r\n                endPage = totalPages;\r\n            } else {\r\n                if (currentPage <= 4) {\r\n                    startPage = 1;\r\n                    endPage = maxVisiblePages;\r\n                } else if (currentPage >= totalPages - 3) {\r\n                    startPage = totalPages - maxVisiblePages + 1;\r\n                    endPage = totalPages;\r\n                } else {\r\n                    startPage = currentPage - 3;\r\n                    endPage = currentPage + 3;\r\n                }\r\n            }\r\n            \r\n            \/\/ If not starting from page 1, add page 1 and ellipsis\r\n            if (startPage > 1) {\r\n                html += `<li><a href=\"#\" onclick=\"window.boltedMechanicsPro.changePage(1)\" aria-label=\"Go to page 1\">1<\/a><\/li>`;\r\n                if (startPage > 2) {\r\n                    html += '<li class=\"disabled\"><span aria-hidden=\"true\">...<\/span><\/li>';\r\n                }\r\n            }\r\n            \r\n            \/\/ Display page numbers\r\n            for (let i = startPage; i <= endPage; i++) {\r\n                if (i === currentPage) {\r\n                    html += `<li class=\"active\"><span aria-current=\"page\" aria-label=\"Current page ${i}\">${i}<\/span><\/li>`;\r\n                } else {\r\n                    html += `<li><a href=\"#\" onclick=\"window.boltedMechanicsPro.changePage(${i})\" aria-label=\"Go to page ${i}\">${i}<\/a><\/li>`;\r\n                }\r\n            }\r\n            \r\n            \/\/ If not ending at last page, add ellipsis and last page\r\n            if (endPage < totalPages) {\r\n                if (endPage < totalPages - 1) {\r\n                    html += '<li class=\"disabled\"><span aria-hidden=\"true\">...<\/span><\/li>';\r\n                }\r\n                html += `<li><a href=\"#\" onclick=\"window.boltedMechanicsPro.changePage(${totalPages})\" aria-label=\"Go to page ${totalPages}\">${totalPages}<\/a><\/li>`;\r\n            }\r\n            \r\n            \/\/ Next page\r\n            if (currentPage === totalPages) {\r\n                html += '<li class=\"disabled\"><span aria-label=\"Next page\">\u00bb<\/span><\/li>';\r\n            } else {\r\n                html += `<li><a href=\"#\" onclick=\"window.boltedMechanicsPro.changePage(${currentPage + 1})\" aria-label=\"Go to next page\">\u00bb<\/a><\/li>`;\r\n            }\r\n            \r\n            pagination.innerHTML = html;\r\n        } catch (error) {\r\n            console.error('Update pagination failed:', error);\r\n        }\r\n    }\r\n\r\n    function updateProductCount() {\r\n        try {\r\n            const totalElement = document.querySelector('.bolted-mechanics-pro-container .total');\r\n            if (totalElement && filteredProducts) {\r\n                totalElement.textContent = `${filteredProducts.length} products found`;\r\n            }\r\n        } catch (error) {\r\n            console.error('Update product count failed:', error);\r\n        }\r\n    }\r\n\r\n    function changePage(page) {\r\n        try {\r\n            currentPage = page;\r\n            renderProducts();\r\n            updatePagination();\r\n            \r\n            \/\/ Scroll to top\r\n            const categoryHeader = document.querySelector('.bolted-mechanics-pro-container .category-header');\r\n            if (categoryHeader) {\r\n                categoryHeader.scrollIntoView({ \r\n                    behavior: 'smooth' \r\n                });\r\n            }\r\n        } catch (error) {\r\n            console.error('Change page failed:', error);\r\n        }\r\n    }\r\n\r\n    \/\/ Expose changePage function globally for pagination button calls\r\n    window.boltedMechanicsPro = {\r\n        changePage: changePage\r\n    };\r\n\r\n    \/\/ Initialize when DOM is loaded\r\n    if (document.readyState === 'loading') {\r\n        document.addEventListener('DOMContentLoaded', initializePage);\r\n    } else {\r\n        \/\/ DOM is already loaded\r\n        initializePage();\r\n    }\r\n\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Mechanical Construction Sets Advanced mechanical construction systems featuring precision-engineered components, gears, and connectors. Perfect for STEM education, engineering concepts, and complex structural building projects. Loading products&#8230; Show 6122448<\/p>","protected":false},"author":2,"featured_media":0,"parent":220,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-4169","page","type-page","status-publish","hentry"],"blocksy_meta":[],"acf":[],"_links":{"self":[{"href":"https:\/\/sing2sky.com\/fr\/wp-json\/wp\/v2\/pages\/4169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sing2sky.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sing2sky.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sing2sky.com\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sing2sky.com\/fr\/wp-json\/wp\/v2\/comments?post=4169"}],"version-history":[{"count":0,"href":"https:\/\/sing2sky.com\/fr\/wp-json\/wp\/v2\/pages\/4169\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/sing2sky.com\/fr\/wp-json\/wp\/v2\/pages\/220"}],"wp:attachment":[{"href":"https:\/\/sing2sky.com\/fr\/wp-json\/wp\/v2\/media?parent=4169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}