{"id":9118,"date":"2025-08-01T23:46:19","date_gmt":"2025-08-02T03:46:19","guid":{"rendered":"https:\/\/sing2sky.com\/?page_id=9118"},"modified":"2025-08-29T03:34:03","modified_gmt":"2025-08-29T07:34:03","slug":"triangular-climbing-frame","status":"publish","type":"page","link":"https:\/\/sing2sky.com\/pt\/products\/infant-toddler-collection\/triangular-climbing-frame\/","title":{"rendered":"Triangular Climbing Frame"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"9118\" class=\"elementor elementor-9118\" wpc-filter-elementor-widget=\"1\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-444ff6e e-flex e-con-boxed e-con e-parent\" data-id=\"444ff6e\" 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-89d16c4 elementor-widget elementor-widget-html\" data-id=\"89d16c4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- SEO Optimized Product Page -->\r\n<div class=\"elementor-widget-container\">\r\n    <!-- Structured Data -->\r\n    <script type=\"application\/ld+json\">\r\n    {\r\n        \"@context\": \"https:\/\/schema.org\/\",\r\n        \"@type\": \"Product\",\r\n        \"name\": \"Triangular Climbing Frame\",\r\n        \"image\": [\r\n            \"https:\/\/sing2sky.com\/wp-content\/uploads\/2025\/08\/Triangular-Climbing-Frame-1.avif\"\r\n        ],\r\n        \"description\": \"This innovative triangular climbing frame is designed for infant and toddler physical development. Made from premium multi-layer basswood and beech wood with dimensions of 43\u00d743\u00d743cm and weighing 5.85KG, it provides a safe and engaging platform for climbing, crawling, and exploring activities.\",\r\n        \"sku\": \"XTGTY013\",\r\n        \"mpn\": \"XTGTY013\",\r\n        \"brand\": {\r\n            \"@type\": \"Brand\",\r\n            \"name\": \"Sing2Sky\"\r\n        },\r\n        \"manufacturer\": {\r\n            \"@type\": \"Organization\",\r\n            \"name\": \"Sing2Sky\"\r\n        },\r\n        \"material\": \"Multi-layer Basswood, Beech Wood\",\r\n        \"category\": \"Infant & Toddler Collection\",\r\n        \"audience\": {\r\n            \"@type\": \"Audience\",\r\n            \"audienceType\": \"Infants and Toddlers\"\r\n        },\r\n        \"offers\": {\r\n            \"@type\": \"Offer\",\r\n            \"availability\": \"https:\/\/schema.org\/InStock\",\r\n            \"priceCurrency\": \"USD\",\r\n            \"itemCondition\": \"https:\/\/schema.org\/NewCondition\",\r\n            \"seller\": {\r\n                \"@type\": \"Organization\",\r\n                \"name\": \"Sing2Sky\"\r\n            }\r\n        },\r\n        \"aggregateRating\": {\r\n            \"@type\": \"AggregateRating\",\r\n            \"ratingValue\": \"4.9\",\r\n            \"reviewCount\": \"82\"\r\n        }\r\n    }\r\n    <\/script>\r\n\r\n    <!-- FAQ Structured Data -->\r\n    <script type=\"application\/ld+json\">\r\n    {\r\n        \"@context\": \"https:\/\/schema.org\",\r\n        \"@type\": \"FAQPage\",\r\n        \"mainEntity\": [{\r\n            \"@type\": \"Question\",\r\n            \"name\": \"What age group is suitable for the Triangular Climbing Frame?\",\r\n            \"acceptedAnswer\": {\r\n                \"@type\": \"Answer\",\r\n                \"text\": \"This triangular climbing frame is designed for infants and toddlers with adult supervision. Perfect for developing gross motor skills, balance, coordination, and spatial awareness through safe climbing and exploration activities.\"\r\n            }\r\n        }, {\r\n            \"@type\": \"Question\", \r\n            \"name\": \"What materials are used in the construction?\",\r\n            \"acceptedAnswer\": {\r\n                \"@type\": \"Answer\",\r\n                \"text\": \"Made from premium multi-layer basswood and beech wood with smooth, safe edges and rounded corners. All materials meet comprehensive safety testing standards for infant and toddler climbing equipment.\"\r\n            }\r\n        }, {\r\n            \"@type\": \"Question\",\r\n            \"name\": \"What are the dimensions and weight specifications?\",\r\n            \"acceptedAnswer\": {\r\n                \"@type\": \"Answer\",\r\n                \"text\": \"The triangular climbing frame measures 43\u00d743\u00d743cm (triangular shape) and weighs 5.85KG, providing excellent stability and a secure platform for various climbing and exploration activities.\"\r\n            }\r\n        }]\r\n    }\r\n    <\/script>\r\n\r\n    <style>\r\n        \/* Base Styles - Simplified Version *\/\r\n        .product-container {\r\n            max-width: 1400px;\r\n            margin: 0 auto;\r\n            padding: 0 20px;\r\n            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\r\n            line-height: 1.6;\r\n            color: #333;\r\n            background: transparent;\r\n        }\r\n\r\n        .product-container *, \r\n        .product-container *::before, \r\n        .product-container *::after {\r\n            box-sizing: border-box;\r\n        }\r\n\r\n        \/* CSS Variables *\/\r\n        .product-container {\r\n            --primary: #333;\r\n            --secondary: #555;\r\n            --light-bg: #f8f8f8;\r\n            --border: #ccc;\r\n            --shadow: 0 8px 24px rgba(0,0,0,0.15);\r\n            --transition: all 0.3s ease;\r\n            --radius: 8px;\r\n        }\r\n\r\n        \/* Breadcrumb Navigation *\/\r\n        .breadcrumb {\r\n            padding: 10px 0 20px 0;\r\n            font-size: 14px;\r\n            color: #666;\r\n        }\r\n\r\n        .breadcrumb ol {\r\n            list-style: none;\r\n            margin: 0;\r\n            padding: 0;\r\n            display: flex;\r\n            flex-wrap: wrap;\r\n        }\r\n\r\n        .breadcrumb li {\r\n            display: flex;\r\n            align-items: center;\r\n        }\r\n\r\n        .breadcrumb li:not(:last-child)::after {\r\n            content: \"\u203a\";\r\n            margin: 0 8px;\r\n            color: #999;\r\n        }\r\n\r\n        .breadcrumb a {\r\n            color: #666;\r\n            text-decoration: none;\r\n            transition: var(--transition);\r\n        }\r\n\r\n        .breadcrumb a:hover {\r\n            color: var(--primary);\r\n            text-decoration: underline;\r\n        }\r\n\r\n        .breadcrumb li:last-child {\r\n            color: var(--primary);\r\n            font-weight: 500;\r\n        }\r\n\r\n        \/* Hide sections on mobile and tablet *\/\r\n        .hidden-mobile-tablet {\r\n            display: block;\r\n        }\r\n\r\n        \/* Product Main Section *\/\r\n        .product-section {\r\n            padding: 40px 0;\r\n        }\r\n\r\n        .product-main {\r\n            display: flex;\r\n            gap: 40px;\r\n            align-items: flex-start;\r\n        }\r\n\r\n        \/* Image Gallery *\/\r\n        .image-gallery {\r\n            flex: 1;\r\n            max-width: 700px;\r\n            padding: 0 80px;\r\n        }\r\n\r\n        .main-image-container {\r\n            position: relative;\r\n            margin-bottom: 15px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n        }\r\n\r\n        .main-image-wrapper {\r\n            position: relative;\r\n            width: 550px;\r\n            height: 550px;\r\n            max-width: 550px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            border-radius: 12px;\r\n            overflow: hidden;\r\n            background: #fff;\r\n        }\r\n\r\n        .main-image {\r\n            width: 100%;\r\n            height: 100%;\r\n            object-fit: contain;\r\n            border-radius: 12px;\r\n            display: block;\r\n            transition: var(--transition);\r\n        }\r\n\r\n        .nav-btn {\r\n            position: absolute;\r\n            background: rgba(255,255,255,0.95);\r\n            border: 1px solid var(--border);\r\n            border-radius: 50%;\r\n            width: 50px;\r\n            height: 50px;\r\n            cursor: pointer;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            transition: var(--transition);\r\n            color: #666;\r\n            font-size: 20px;\r\n            box-shadow: 0 2px 8px rgba(0,0,0,0.1);\r\n            z-index: 10;\r\n            outline: none;\r\n            font-family: Arial, sans-serif;\r\n        }\r\n\r\n        .nav-btn:hover {\r\n            background: white;\r\n            color: var(--primary);\r\n            border-color: #ccc;\r\n            box-shadow: 0 4px 12px rgba(0,0,0,0.15);\r\n        }\r\n\r\n        .nav-btn--prev {\r\n            left: -70px;\r\n            top: 50%;\r\n            transform: translateY(-50%);\r\n        }\r\n\r\n        .nav-btn--next {\r\n            right: -70px;\r\n            top: 50%;\r\n            transform: translateY(-50%);\r\n        }\r\n\r\n        .thumbnails {\r\n            display: flex;\r\n            gap: 8px;\r\n            overflow-x: auto;\r\n            padding: 5px 0;\r\n            scroll-behavior: smooth;\r\n            justify-content: flex-start;\r\n            width: 100%;\r\n            max-width: 550px;\r\n            min-height: 90px;\r\n            position: relative;\r\n        }\r\n\r\n        .thumbnails::-webkit-scrollbar {\r\n            height: 4px;\r\n        }\r\n\r\n        .thumbnails::-webkit-scrollbar-track {\r\n            background: #f1f1f1;\r\n            border-radius: 2px;\r\n        }\r\n\r\n        .thumbnails::-webkit-scrollbar-thumb {\r\n            background: #ccc;\r\n            border-radius: 2px;\r\n        }\r\n\r\n        .thumbnail-nav-btn {\r\n            position: absolute;\r\n            top: 50%;\r\n            transform: translateY(-50%);\r\n            background: rgba(255,255,255,0.95);\r\n            border: 1px solid var(--border);\r\n            border-radius: 50%;\r\n            width: 30px;\r\n            height: 30px;\r\n            cursor: pointer;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            transition: var(--transition);\r\n            color: #666;\r\n            font-size: 14px;\r\n            z-index: 10;\r\n            box-shadow: 0 2px 8px rgba(0,0,0,0.1);\r\n            outline: none;\r\n            font-family: Arial, sans-serif;\r\n            opacity: 0;\r\n            pointer-events: none;\r\n        }\r\n\r\n        .thumbnails:hover .thumbnail-nav-btn {\r\n            opacity: 1;\r\n            pointer-events: auto;\r\n        }\r\n\r\n        .thumbnail-nav-btn:hover {\r\n            background: white;\r\n            color: var(--primary);\r\n            border-color: #ccc;\r\n            box-shadow: 0 4px 12px rgba(0,0,0,0.15);\r\n        }\r\n\r\n        .thumbnail-nav-btn--prev {\r\n            left: -35px;\r\n        }\r\n\r\n        .thumbnail-nav-btn--next {\r\n            right: -35px;\r\n        }\r\n\r\n        \/* Fixed thumbnail styles with !important to force application *\/\r\n        .thumbnail,\r\n        .product-container .thumbnail,\r\n        .elementor-widget-container .thumbnail,\r\n        .product-container .thumbnails .thumbnail,\r\n        .elementor-widget-container .thumbnails .thumbnail,\r\n        .product-container img.thumbnail {\r\n            width: 80px !important;\r\n            height: 80px !important;\r\n            border: 1px solid #ddd !important;\r\n            border-radius: 6px !important;\r\n            cursor: pointer !important;\r\n            object-fit: contain !important;\r\n            background: white !important;\r\n            transition: var(--transition) !important;\r\n            flex-shrink: 0 !important;\r\n            min-width: 80px !important;\r\n            max-width: 80px !important;\r\n            outline: none !important;\r\n            display: block !important;\r\n            margin: 0 !important;\r\n            padding: 0 !important;\r\n            overflow: hidden !important;\r\n            box-sizing: border-box !important;\r\n            vertical-align: top !important;\r\n        }\r\n\r\n        .thumbnail:hover,\r\n        .product-container .thumbnail:hover,\r\n        .elementor-widget-container .thumbnail:hover,\r\n        .product-container .thumbnails .thumbnail:hover,\r\n        .elementor-widget-container .thumbnails .thumbnail:hover,\r\n        .product-container img.thumbnail:hover {\r\n            border-color: #666 !important;\r\n            transform: translateY(-2px) !important;\r\n            box-shadow: 0 2px 8px rgba(0,0,0,0.15) !important;\r\n            border-radius: 6px !important;\r\n        }\r\n\r\n        .thumbnail--active,\r\n        .product-container .thumbnail--active,\r\n        .elementor-widget-container .thumbnail--active,\r\n        .product-container .thumbnails .thumbnail--active,\r\n        .elementor-widget-container .thumbnails .thumbnail--active,\r\n        .product-container img.thumbnail--active {\r\n            border-color: #333 !important;\r\n            transform: translateY(-2px) !important;\r\n            box-shadow: 0 2px 8px rgba(0,0,0,0.15) !important;\r\n            border-radius: 6px !important;\r\n        }\r\n\r\n        \/* Product Info *\/\r\n        .product-info {\r\n            flex: 1;\r\n            max-width: 600px;\r\n        }\r\n\r\n        .product-header {\r\n            margin-bottom: 20px;\r\n        }\r\n\r\n        .product-number {\r\n            color: #666;\r\n            font-size: 14px;\r\n            margin-bottom: 5px;\r\n            font-weight: 500;\r\n        }\r\n\r\n        .product-title {\r\n            font-size: 28px;\r\n            font-weight: bold;\r\n            margin-bottom: 20px;\r\n            line-height: 1.3;\r\n            padding-bottom: 20px;\r\n            border-bottom: 1px solid var(--border);\r\n            color: var(--primary);\r\n        }\r\n\r\n        .product-description {\r\n            font-size: 16px;\r\n            line-height: 1.6;\r\n            color: var(--secondary);\r\n            margin-bottom: 30px;\r\n            padding-bottom: 30px;\r\n            border-bottom: 1px solid var(--border);\r\n        }\r\n\r\n        \/* Accordion Styles *\/\r\n        .accordion {\r\n            margin-bottom: 30px;\r\n            padding-bottom: 30px;\r\n            border-bottom: 1px solid var(--border);\r\n        }\r\n\r\n        .accordion-item {\r\n            border-bottom: 1px solid var(--border);\r\n            padding-bottom: 20px;\r\n            margin-bottom: 20px;\r\n        }\r\n\r\n        .accordion-item:last-child {\r\n            border-bottom: none;\r\n            margin-bottom: 0;\r\n            padding-bottom: 0;\r\n        }\r\n\r\n        .accordion-header {\r\n            padding: 15px 20px 15px 0;\r\n            background: transparent;\r\n            cursor: pointer;\r\n            display: flex;\r\n            justify-content: space-between;\r\n            align-items: center;\r\n            font-weight: bold;\r\n            border: none;\r\n            font-size: 18px;\r\n            color: var(--primary);\r\n            width: 100%;\r\n            text-align: left;\r\n            outline: none;\r\n            font-family: inherit;\r\n            transition: var(--transition);\r\n        }\r\n\r\n        .accordion-header:hover {\r\n            color: var(--secondary);\r\n        }\r\n\r\n        .accordion-icon {\r\n            width: 16px;\r\n            height: 16px;\r\n            position: relative;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            transition: transform 0.3s ease;\r\n        }\r\n\r\n        .accordion-icon::before,\r\n        .accordion-icon::after {\r\n            content: '';\r\n            position: absolute;\r\n            background: #999;\r\n            border-radius: 0.5px;\r\n            transition: var(--transition);\r\n        }\r\n\r\n        .accordion-icon::before {\r\n            width: 12px;\r\n            height: 2px;\r\n        }\r\n\r\n        .accordion-icon::after {\r\n            width: 2px;\r\n            height: 12px;\r\n        }\r\n\r\n        .accordion-item--active .accordion-icon::after {\r\n            transform: rotate(90deg);\r\n            opacity: 0;\r\n        }\r\n\r\n        .accordion-content {\r\n            padding: 0 0 15px 0;\r\n            background: transparent;\r\n            display: none;\r\n            color: var(--secondary);\r\n            line-height: 1.6;\r\n        }\r\n\r\n        .accordion-item--active .accordion-content {\r\n            display: block;\r\n        }\r\n\r\n        .accordion-content p {\r\n            margin-bottom: 12px;\r\n            color: var(--secondary);\r\n            display: flex;\r\n            align-items: flex-start;\r\n            line-height: 1.7;\r\n        }\r\n\r\n        .accordion-content p:last-child {\r\n            margin-bottom: 8px;\r\n        }\r\n\r\n        .accordion-content p strong {\r\n            color: var(--primary);\r\n            font-weight: 600;\r\n            min-width: 140px;\r\n            flex-shrink: 0;\r\n            margin-right: 12px;\r\n            display: inline-block;\r\n        }\r\n\r\n        .btn {\r\n            background: var(--primary);\r\n            color: white;\r\n            padding: 15px 35px;\r\n            text-decoration: none;\r\n            border-radius: 4px;\r\n            font-weight: bold;\r\n            transition: var(--transition);\r\n            display: inline-block;\r\n            font-size: 16px;\r\n            border: none;\r\n            cursor: pointer;\r\n            outline: none;\r\n            font-family: inherit;\r\n        }\r\n\r\n        .btn:hover {\r\n            background: var(--secondary);\r\n            color: white;\r\n            text-decoration: none;\r\n        }\r\n\r\n        .btn-container {\r\n            text-align: center;\r\n            margin-top: 30px;\r\n        }\r\n\r\n        \/* FAQ Section *\/\r\n        .faq-section {\r\n            margin-top: 40px;\r\n            padding-top: 40px;\r\n            border-top: 1px solid var(--border);\r\n        }\r\n\r\n        .faq-title {\r\n            font-size: 24px;\r\n            font-weight: bold;\r\n            margin-bottom: 30px;\r\n            color: var(--primary);\r\n            text-align: center;\r\n        }\r\n\r\n        \/* Related Products *\/\r\n        .related-products {\r\n            width: 100vw;\r\n            background: var(--light-bg);\r\n            padding: 60px 0 80px 0;\r\n            margin-top: 40px;\r\n            clear: both;\r\n            overflow: hidden;\r\n            margin-left: calc(-50vw + 50%);\r\n            margin-right: calc(-50vw + 50%);\r\n            position: relative;\r\n        }\r\n\r\n        .related-container {\r\n            max-width: 1200px;\r\n            margin: 0 auto;\r\n            padding: 0 20px;\r\n        }\r\n\r\n        .section-title {\r\n            font-size: 32px;\r\n            text-align: center;\r\n            margin-bottom: 60px;\r\n            font-weight: bold;\r\n            color: var(--primary);\r\n        }\r\n\r\n        .products-carousel {\r\n            position: relative;\r\n            margin: 0 auto;\r\n            padding: 0 70px;\r\n            max-width: 1200px;\r\n        }\r\n\r\n        .products-container {\r\n            overflow: hidden;\r\n            position: relative;\r\n            width: 100%;\r\n        }\r\n\r\n        .products-slider {\r\n            display: flex;\r\n            transition: transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);\r\n            will-change: transform;\r\n            align-items: flex-start;\r\n        }\r\n\r\n        .product-slide {\r\n            flex-shrink: 0;\r\n            box-sizing: border-box;\r\n        }\r\n\r\n        .product-card {\r\n            display: flex;\r\n            flex-direction: column;\r\n            background: white;\r\n            text-decoration: none;\r\n            color: inherit;\r\n            border-radius: 8px;\r\n            overflow: hidden;\r\n            box-shadow: 0 2px 8px rgba(0,0,0,0.1);\r\n            transition: all 0.3s ease;\r\n            height: 450px;\r\n            width: 100%;\r\n            border: none;\r\n            outline: none;\r\n        }\r\n\r\n        .product-card:hover {\r\n            transform: translateY(-5px);\r\n            box-shadow: var(--shadow);\r\n            text-decoration: none;\r\n            color: inherit;\r\n        }\r\n\r\n        .product-image-container {\r\n            width: 100%;\r\n            height: 0;\r\n            padding-bottom: 100%;\r\n            position: relative;\r\n            background: white;\r\n            overflow: hidden;\r\n            border-radius: 8px 8px 0 0;\r\n            flex-shrink: 0;\r\n        }\r\n\r\n        .product-image {\r\n            position: absolute;\r\n            top: 0;\r\n            left: 0;\r\n            width: 100%;\r\n            height: 100%;\r\n            object-fit: cover;\r\n            object-position: center center;\r\n            transition: all 0.3s ease;\r\n            display: block;\r\n            border: none;\r\n            border-radius: 0;\r\n            max-width: 100%;\r\n            margin: 0;\r\n            padding: 0;\r\n        }\r\n\r\n        .product-card-title {\r\n            font-size: 15px;\r\n            font-weight: 600;\r\n            margin: 12px 12px 6px;\r\n            color: #333;\r\n            line-height: 1.4;\r\n            flex-grow: 1;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            text-align: center;\r\n            min-height: 36px;\r\n        }\r\n\r\n        .product-card-number {\r\n            margin: 0 12px 10px;\r\n            color: #666;\r\n            font-size: 13px;\r\n            text-align: center;\r\n        }\r\n\r\n        .product-card-btn {\r\n            display: inline-block;\r\n            padding: 8px 16px;\r\n            background: transparent;\r\n            color: #333;\r\n            font-weight: 500;\r\n            font-size: 12px;\r\n            border: 1px solid #ddd;\r\n            border-radius: 4px;\r\n            text-decoration: none;\r\n            transition: all 0.3s ease;\r\n            text-transform: uppercase;\r\n            letter-spacing: 0.5px;\r\n            margin: 0 12px 12px;\r\n            text-align: center;\r\n            cursor: pointer;\r\n            font-family: inherit;\r\n        }\r\n\r\n        .product-card:hover .product-card-btn {\r\n            background: #333;\r\n            color: white;\r\n            border-color: #333;\r\n        }\r\n\r\n        .carousel-nav-btn {\r\n            position: absolute;\r\n            top: 50%;\r\n            transform: translateY(-50%);\r\n            background: rgba(255,255,255,0.95);\r\n            border: 1px solid var(--border);\r\n            border-radius: 50%;\r\n            width: 50px;\r\n            height: 50px;\r\n            cursor: pointer;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            transition: var(--transition);\r\n            color: #666;\r\n            font-size: 20px;\r\n            z-index: 10;\r\n            box-shadow: 0 2px 8px rgba(0,0,0,0.1);\r\n            outline: none;\r\n            font-family: Arial, sans-serif;\r\n        }\r\n\r\n        .carousel-nav-btn:hover {\r\n            background: white;\r\n            color: var(--primary);\r\n            border-color: #ccc;\r\n            box-shadow: 0 4px 12px rgba(0,0,0,0.15);\r\n        }\r\n\r\n        .carousel-nav-btn--prev {\r\n            left: 10px;\r\n        }\r\n\r\n        .carousel-nav-btn--next {\r\n            right: 10px;\r\n        }\r\n\r\n        .pagination-dots {\r\n            display: flex;\r\n            justify-content: center;\r\n            gap: 12px;\r\n            margin-top: 40px;\r\n            margin-bottom: 20px;\r\n        }\r\n\r\n        .pagination-dot {\r\n            width: 10px;\r\n            height: 10px;\r\n            border-radius: 50%;\r\n            background: #ddd;\r\n            cursor: pointer;\r\n            transition: var(--transition);\r\n            border: none;\r\n            outline: none;\r\n        }\r\n\r\n        .pagination-dot:hover {\r\n            background: #bbb;\r\n        }\r\n\r\n        .pagination-dot--active {\r\n            background: var(--primary);\r\n            transform: scale(1.2);\r\n        }\r\n\r\n        \/* Image Error Placeholder *\/\r\n        .image-placeholder {\r\n            width: 100%;\r\n            height: 100%;\r\n            display: flex;\r\n            flex-direction: column;\r\n            align-items: center;\r\n            justify-content: center;\r\n            background: #f8f8f8;\r\n            color: #999;\r\n            font-size: 14px;\r\n            text-align: center;\r\n            padding: 20px;\r\n        }\r\n\r\n        \/* Responsive Margin Control *\/\r\n        .product-container {\r\n            margin-top: 0;\r\n        }\r\n\r\n        @media (min-width: 1200px) {\r\n            .product-container {\r\n                margin-top: -15px;\r\n            }\r\n        }\r\n\r\n        @media (min-width: 992px) and (max-width: 1199px) {\r\n            .product-container {\r\n                margin-top: -15px;\r\n            }\r\n        }\r\n\r\n        @media (min-width: 768px) and (max-width: 991px) {\r\n            .product-container {\r\n                margin-top: -60px;\r\n            }\r\n        }\r\n\r\n        @media (max-width: 767px) {\r\n            .product-container {\r\n                margin-top: -90px;\r\n            }\r\n        }\r\n\r\n        \/* Tablet Responsive *\/\r\n        @media (max-width: 1024px) and (min-width: 769px) {\r\n            \/* Hide specified sections *\/\r\n            .hidden-mobile-tablet {\r\n                display: none !important;\r\n                height: 0 !important;\r\n                overflow: hidden !important;\r\n                margin: 0 !important;\r\n                padding: 0 !important;\r\n            }\r\n\r\n            .product-container { \r\n                padding: 0 20px; \r\n            }\r\n            \r\n            .product-main {\r\n                flex-direction: column;\r\n                gap: 40px;\r\n                align-items: center;\r\n            }\r\n\r\n            .image-gallery,\r\n            .product-info {\r\n                max-width: 100%;\r\n                width: 100%;\r\n            }\r\n\r\n            .product-info { \r\n                text-align: center; \r\n            }\r\n\r\n            .image-gallery {\r\n                width: 100%;\r\n                display: flex;\r\n                flex-direction: column;\r\n                align-items: center;\r\n                padding: 0 50px;\r\n            }\r\n\r\n            .main-image-container {\r\n                max-width: 600px;\r\n                width: 100%;\r\n            }\r\n\r\n            .main-image-wrapper {\r\n                width: 100%;\r\n                height: 600px;\r\n                max-width: 600px;\r\n            }\r\n\r\n            .thumbnails {\r\n                max-width: 600px;\r\n                width: 100%;\r\n            }\r\n\r\n            \/* Tablet responsive adjustments *\/\r\n            .thumbnail-nav-btn--prev {\r\n                left: -30px;\r\n            }\r\n\r\n            .thumbnail-nav-btn--next {\r\n                right: -30px;\r\n            }\r\n\r\n            .thumbnail-nav-btn {\r\n                width: 28px;\r\n                height: 28px;\r\n                font-size: 13px;\r\n            }\r\n\r\n            .nav-btn {\r\n                width: 45px;\r\n                height: 45px;\r\n                font-size: 18px;\r\n            }\r\n\r\n            .nav-btn--prev { left: -65px; }\r\n            .nav-btn--next { right: -65px; }\r\n\r\n            \/* Tablet thumbnail style fixes *\/\r\n            .thumbnail,\r\n            .product-container .thumbnail,\r\n            .elementor-widget-container .thumbnail,\r\n            .product-container .thumbnails .thumbnail,\r\n            .elementor-widget-container .thumbnails .thumbnail,\r\n            .product-container img.thumbnail {\r\n                width: 75px !important;\r\n                height: 75px !important;\r\n                min-width: 75px !important;\r\n                max-width: 75px !important;\r\n                border: 1px solid #ddd !important;\r\n                border-radius: 6px !important;\r\n                overflow: hidden !important;\r\n            }\r\n\r\n            .related-products {\r\n                width: 100vw;\r\n                margin-left: calc(-50vw + 50%);\r\n                margin-right: calc(-50vw + 50%);\r\n                padding: 50px 0 70px 0;\r\n                min-height: 600px;\r\n            }\r\n\r\n            .section-title {\r\n                font-size: 28px;\r\n                margin-bottom: 40px;\r\n            }\r\n\r\n            .products-carousel {\r\n                min-height: 500px;\r\n            }\r\n\r\n            .products-container {\r\n                min-height: 500px;\r\n            }\r\n\r\n            .product-card {\r\n                height: 480px;\r\n                margin: 0 auto;\r\n            }\r\n\r\n            .product-image-container {\r\n                padding-bottom: 85%;\r\n            }\r\n\r\n            .product-card-title {\r\n                font-size: 16px;\r\n                margin: 15px 15px 10px;\r\n                min-height: 48px;\r\n                line-height: 1.4;\r\n            }\r\n\r\n            .product-card-number {\r\n                font-size: 14px;\r\n                margin: 0 15px 12px;\r\n            }\r\n\r\n            .product-card-btn {\r\n                font-size: 13px;\r\n                padding: 10px 20px;\r\n                margin: 0 15px 15px;\r\n                font-weight: 600;\r\n            }\r\n\r\n            .pagination-dots {\r\n                margin-top: 35px;\r\n                margin-bottom: 25px;\r\n            }\r\n\r\n            \/* Tablet accordion content optimization *\/\r\n            .accordion-content {\r\n                padding: 0 0 20px 0;\r\n                font-size: 15px;\r\n                line-height: 1.8;\r\n            }\r\n\r\n            .accordion-content p {\r\n                margin-bottom: 16px;\r\n                display: flex;\r\n                align-items: flex-start;\r\n                text-align: left;\r\n            }\r\n\r\n            .accordion-content p strong {\r\n                min-width: 160px;\r\n                margin-right: 16px;\r\n                font-size: 15px;\r\n                color: var(--primary);\r\n                font-weight: 600;\r\n                flex-shrink: 0;\r\n            }\r\n\r\n            .accordion-content .feature-item {\r\n                padding-left: 176px;\r\n                margin-bottom: 12px;\r\n                line-height: 1.6;\r\n                display: block;\r\n                position: relative;\r\n            }\r\n\r\n            .accordion-content .feature-item::before {\r\n                content: \"\u2022\";\r\n                color: var(--primary);\r\n                font-weight: bold;\r\n                position: absolute;\r\n                left: 160px;\r\n                top: 0;\r\n            }\r\n\r\n            .accordion-header {\r\n                font-size: 18px;\r\n                padding: 18px 20px 18px 0;\r\n            }\r\n        }\r\n\r\n        \/* Mobile Responsive *\/\r\n        @media (max-width: 768px) {\r\n            \/* Hide specified sections *\/\r\n            .hidden-mobile-tablet {\r\n                display: none !important;\r\n                height: 0 !important;\r\n                overflow: hidden !important;\r\n                margin: 0 !important;\r\n                padding: 0 !important;\r\n            }\r\n\r\n            .product-container { \r\n                padding: 0 15px; \r\n                max-width: 100%;\r\n            }\r\n\r\n            .product-section {\r\n                padding: 25px 0;\r\n            }\r\n\r\n            .product-main {\r\n                flex-direction: column;\r\n                gap: 30px;\r\n                padding: 0;\r\n                align-items: stretch;\r\n            }\r\n\r\n            .image-gallery {\r\n                width: 100vw;\r\n                margin-left: calc(-50vw + 50%);\r\n                padding: 0;\r\n                display: flex;\r\n                flex-direction: column;\r\n                align-items: center;\r\n            }\r\n\r\n            .product-info {\r\n                max-width: 100%;\r\n                padding: 0 15px;\r\n            }\r\n\r\n            .main-image-container {\r\n                position: relative;\r\n                width: 100vw;\r\n                height: 100vw;\r\n                max-height: 100vw;\r\n                margin: 0;\r\n                display: flex;\r\n                justify-content: center;\r\n                align-items: center;\r\n                background: white;\r\n                overflow: hidden;\r\n            }\r\n\r\n            .main-image-wrapper {\r\n                width: 100%;\r\n                height: 100%;\r\n                border-radius: 0;\r\n            }\r\n\r\n            .main-image {\r\n                border-radius: 0;\r\n            }\r\n\r\n            .thumbnails {\r\n                width: 100vw;\r\n                margin: 10px 0 0 0;\r\n                padding: 0 12px;\r\n                min-height: 65px;\r\n            }\r\n\r\n            \/* Mobile thumbnail style fixes *\/\r\n            .thumbnail,\r\n            .product-container .thumbnail,\r\n            .elementor-widget-container .thumbnail,\r\n            .product-container .thumbnails .thumbnail,\r\n            .elementor-widget-container .thumbnails .thumbnail,\r\n            .product-container img.thumbnail {\r\n                width: 55px !important;\r\n                height: 55px !important;\r\n                min-width: 55px !important;\r\n                max-width: 55px !important;\r\n                border-radius: 4px !important;\r\n                border: 1px solid #ddd !important;\r\n                overflow: hidden !important;\r\n            }\r\n\r\n            .nav-btn--prev, \r\n            .nav-btn--next { \r\n                display: none; \r\n            }\r\n\r\n            \/* Mobile responsive adjustments for thumbnails *\/\r\n            .thumbnails {\r\n                width: 100vw;\r\n                margin: 10px 0 0 0;\r\n                padding: 0 12px;\r\n                min-height: 65px;\r\n                position: relative;\r\n            }\r\n\r\n            .thumbnail-nav-btn--prev {\r\n                left: 5px;\r\n            }\r\n\r\n            .thumbnail-nav-btn--next {\r\n                right: 5px;\r\n            }\r\n\r\n            .thumbnail-nav-btn {\r\n                width: 25px;\r\n                height: 25px;\r\n                font-size: 12px;\r\n                opacity: 0.8;\r\n                pointer-events: auto;\r\n                display: none; \/* Hide thumbnail navigation buttons on mobile *\/\r\n            }\r\n\r\n            .product-title {\r\n                font-size: 22px;\r\n                margin-bottom: 16px;\r\n                line-height: 1.2;\r\n            }\r\n\r\n            .product-description {\r\n                font-size: 14px;\r\n                margin-bottom: 20px;\r\n                line-height: 1.4;\r\n            }\r\n\r\n            .accordion-header {\r\n                font-size: 15px;\r\n                padding: 10px 12px 10px 0;\r\n            }\r\n\r\n            .accordion-content {\r\n                padding: 0 0 10px 0;\r\n                font-size: 13px;\r\n            }\r\n\r\n            .btn {\r\n                padding: 11px 22px;\r\n                font-size: 13px;\r\n                width: 100%;\r\n                text-align: center;\r\n                box-sizing: border-box;\r\n            }\r\n\r\n            .faq-title {\r\n                font-size: 20px;\r\n                margin-bottom: 25px;\r\n            }\r\n\r\n            \/* Mobile related products *\/\r\n            .product-container .related-products {\r\n                width: 100vw;\r\n                margin-left: calc(-50vw + 50%);\r\n                padding: 35px 0 50px 0;\r\n                background: var(--light-bg);\r\n                display: block;\r\n                visibility: visible;\r\n                min-height: 580px;\r\n                overflow: hidden;\r\n            }\r\n\r\n            .product-container .related-products .related-container {\r\n                max-width: 100%;\r\n                padding: 0;\r\n                width: 100%;\r\n            }\r\n\r\n            .product-container .related-products .section-title {\r\n                font-size: 22px;\r\n                margin-bottom: 25px;\r\n                padding: 0 20px;\r\n                color: var(--primary);\r\n                display: block;\r\n                text-align: center;\r\n            }\r\n\r\n            .product-container .related-products .products-carousel { \r\n                padding: 0;\r\n                overflow: hidden;\r\n                width: 100%;\r\n                position: relative;\r\n                display: block;\r\n                min-height: 450px;\r\n                margin: 0;\r\n            }\r\n\r\n            .product-container .related-products .products-container {\r\n                width: 100%;\r\n                overflow: hidden;\r\n                position: relative;\r\n                display: block;\r\n                height: 450px;\r\n                margin: 0;\r\n            }\r\n\r\n            .product-container .related-products .products-slider {\r\n                display: flex;\r\n                width: 500%;\r\n                transition: transform 0.4s cubic-bezier(0.23, 1, 0.32, 1);\r\n                will-change: transform;\r\n                height: 100%;\r\n                align-items: center;\r\n            }\r\n\r\n            .product-container .related-products .product-slide {\r\n                flex: 0 0 20%;\r\n                width: 20%;\r\n                display: flex;\r\n                align-items: center;\r\n                justify-content: center;\r\n                height: 100%;\r\n                padding: 0;\r\n                margin: 0;\r\n                box-sizing: border-box;\r\n            }\r\n\r\n            .product-container .related-products .product-card {\r\n                width: 85%;\r\n                max-width: 300px;\r\n                margin: 0 auto;\r\n                height: 95%;\r\n                display: flex;\r\n                flex-direction: column;\r\n                justify-content: space-between;\r\n                box-sizing: border-box;\r\n                border-radius: 12px;\r\n                overflow: hidden;\r\n                background: white;\r\n                box-shadow: 0 4px 16px rgba(0,0,0,0.1);\r\n                transition: all 0.3s ease;\r\n            }\r\n\r\n            .product-container .related-products .product-card:hover {\r\n                transform: translateY(-3px);\r\n                box-shadow: 0 8px 24px rgba(0,0,0,0.15);\r\n            }\r\n\r\n            .product-container .related-products .product-image-container {\r\n                height: 0;\r\n                padding-bottom: 75%;\r\n                position: relative;\r\n                width: 100%;\r\n                flex-shrink: 0;\r\n                border-radius: 12px 12px 0 0;\r\n                overflow: hidden;\r\n            }\r\n\r\n            .product-container .related-products .product-image {\r\n                position: absolute;\r\n                top: 0;\r\n                left: 0;\r\n                width: 100%;\r\n                height: 100%;\r\n                object-fit: cover;\r\n                object-position: center;\r\n            }\r\n\r\n            .product-container .related-products .product-card-title {\r\n                font-size: 14px;\r\n                margin: 14px 12px 10px;\r\n                min-height: 42px;\r\n                display: flex;\r\n                text-align: center;\r\n                line-height: 1.3;\r\n                font-weight: 600;\r\n                color: #333;\r\n                align-items: center;\r\n                justify-content: center;\r\n                padding: 0 8px;\r\n                flex-grow: 1;\r\n                max-height: 56px;\r\n                overflow: hidden;\r\n            }\r\n\r\n            .product-container .related-products .product-card-number {\r\n                font-size: 12px;\r\n                margin: 0 12px 14px;\r\n                text-align: center;\r\n                color: #666;\r\n                flex-shrink: 0;\r\n                line-height: 1.2;\r\n            }\r\n\r\n            .product-container .related-products .product-card-btn {\r\n                font-size: 12px;\r\n                padding: 12px 16px;\r\n                margin: 0 12px 14px;\r\n                text-align: center;\r\n                background: transparent;\r\n                color: #333;\r\n                border: 1px solid #ddd;\r\n                border-radius: 6px;\r\n                text-decoration: none;\r\n                text-transform: uppercase;\r\n                letter-spacing: 0.5px;\r\n                transition: all 0.3s ease;\r\n                flex-shrink: 0;\r\n                font-weight: 500;\r\n                line-height: 1;\r\n                cursor: pointer;\r\n            }\r\n\r\n            .product-container .related-products .product-card:hover .product-card-btn {\r\n                background: #333;\r\n                color: white;\r\n                border-color: #333;\r\n            }\r\n\r\n            .product-container .related-products .pagination-dots {\r\n                display: flex;\r\n                justify-content: center;\r\n                margin-top: 25px;\r\n                margin-bottom: 15px;\r\n                gap: 8px;\r\n            }\r\n\r\n            .product-container .related-products .pagination-dot {\r\n                width: 10px;\r\n                height: 10px;\r\n                display: block;\r\n                background: #ccc;\r\n                border-radius: 50%;\r\n                cursor: pointer;\r\n                transition: all 0.3s ease;\r\n                border: none;\r\n                outline: none;\r\n            }\r\n\r\n            .product-container .related-products .pagination-dot--active {\r\n                background: var(--primary);\r\n                transform: scale(1.2);\r\n            }\r\n\r\n            .product-container .related-products .carousel-nav-btn { \r\n                display: none; \r\n            }\r\n        }\r\n\r\n        \/* Small screen optimization *\/\r\n        @media (max-width: 480px) {\r\n            .product-container .related-products {\r\n                min-height: 530px;\r\n                padding: 30px 0 45px 0;\r\n            }\r\n\r\n            .product-container .related-products .products-carousel {\r\n                min-height: 410px;\r\n            }\r\n\r\n            .product-container .related-products .products-container {\r\n                height: 410px;\r\n            }\r\n\r\n            .product-container .related-products .product-card {\r\n                width: 88%;\r\n                max-width: 280px;\r\n                height: 95%;\r\n            }\r\n\r\n            .product-container .related-products .product-image-container {\r\n                padding-bottom: 78%;\r\n            }\r\n\r\n            .product-container .related-products .product-card-title {\r\n                font-size: 13px;\r\n                margin: 12px 10px 8px;\r\n                min-height: 38px;\r\n                max-height: 50px;\r\n                padding: 0 6px;\r\n            }\r\n\r\n            .product-container .related-products .product-card-number {\r\n                font-size: 11px;\r\n                margin: 0 10px 12px;\r\n            }\r\n\r\n            .product-container .related-products .product-card-btn {\r\n                font-size: 11px;\r\n                padding: 10px 14px;\r\n                margin: 0 10px 12px;\r\n            }\r\n        }\r\n\r\n        \/* Extra small screen optimization *\/\r\n        @media (max-width: 375px) {\r\n            .product-container .related-products {\r\n                min-height: 500px;\r\n                padding: 25px 0 40px 0;\r\n            }\r\n\r\n            .product-container .related-products .products-carousel {\r\n                min-height: 380px;\r\n            }\r\n\r\n            .product-container .related-products .products-container {\r\n                height: 380px;\r\n            }\r\n\r\n            .product-container .related-products .product-card {\r\n                width: 90%;\r\n                max-width: 260px;\r\n                height: 95%;\r\n            }\r\n\r\n            .product-container .related-products .product-image-container {\r\n                padding-bottom: 80%;\r\n            }\r\n\r\n            .product-container .related-products .product-card-title {\r\n                font-size: 12px;\r\n                margin: 10px 8px 6px;\r\n                min-height: 36px;\r\n                max-height: 48px;\r\n                padding: 0 4px;\r\n            }\r\n\r\n            .product-container .related-products .product-card-number {\r\n                font-size: 10px;\r\n                margin: 0 8px 10px;\r\n            }\r\n\r\n            .product-container .related-products .product-card-btn {\r\n                font-size: 10px;\r\n                padding: 8px 12px;\r\n                margin: 0 8px 10px;\r\n            }\r\n        }\r\n    <\/style>\r\n\r\n    <!-- Main Product Container -->\r\n    <div class=\"product-container\" itemscope itemtype=\"https:\/\/schema.org\/Product\">\r\n        <!-- Breadcrumb Navigation -->\r\n        <nav class=\"breadcrumb hidden-mobile-tablet\" aria-label=\"Breadcrumb\">\r\n            <ol itemscope itemtype=\"https:\/\/schema.org\/BreadcrumbList\">\r\n                <li itemprop=\"itemListElement\" itemscope itemtype=\"https:\/\/schema.org\/ListItem\">\r\n                    <a itemprop=\"item\" href=\"https:\/\/sing2sky.com\/\"><span itemprop=\"name\">Home<\/span><\/a>\r\n                    <meta itemprop=\"position\" content=\"1\" \/>\r\n                <\/li>\r\n                <li itemprop=\"itemListElement\" itemscope itemtype=\"https:\/\/schema.org\/ListItem\">\r\n                    <a itemprop=\"item\" href=\"https:\/\/sing2sky.com\/products\/\"><span itemprop=\"name\">Products<\/span><\/a>\r\n                    <meta itemprop=\"position\" content=\"2\" \/>\r\n                <\/li>\r\n                <li itemprop=\"itemListElement\" itemscope itemtype=\"https:\/\/schema.org\/ListItem\">\r\n                    <a itemprop=\"item\" href=\"https:\/\/sing2sky.com\/products\/infant-toddler-collection\/\"><span itemprop=\"name\">Infant & Toddler Collection<\/span><\/a>\r\n                    <meta itemprop=\"position\" content=\"3\" \/>\r\n                <\/li>\r\n                <li itemprop=\"itemListElement\" itemscope itemtype=\"https:\/\/schema.org\/ListItem\">\r\n                    <span itemprop=\"name\">Triangular Climbing Frame<\/span>\r\n                    <meta itemprop=\"position\" content=\"4\" \/>\r\n                <\/li>\r\n            <\/ol>\r\n        <\/nav>\r\n\r\n        <div class=\"product-section\">\r\n            <div class=\"product-main\">\r\n                <!-- Product Image Gallery -->\r\n                <div class=\"image-gallery\">\r\n                    <div class=\"main-image-container\">\r\n                        <button class=\"nav-btn nav-btn--prev\" onclick=\"ProductGallery.previousImage()\" aria-label=\"Previous image\" style=\"display: none;\">\u2039<\/button>\r\n                        <div class=\"main-image-wrapper\">\r\n                            <img decoding=\"async\" id=\"mainImage\" src=\"https:\/\/sing2sky.com\/wp-content\/uploads\/2025\/08\/Triangular-Climbing-Frame-1.avif\" alt=\"Triangular Climbing Frame - Multi-layer basswood and beech wood construction for infant and toddler climbing development\" class=\"main-image\" itemprop=\"image\" loading=\"eager\" title=\"\">\r\n                        <\/div>\r\n                        <button class=\"nav-btn nav-btn--next\" onclick=\"ProductGallery.nextImage()\" aria-label=\"Next image\" style=\"display: none;\">\u203a<\/button>\r\n                    <\/div>\r\n                    <div class=\"thumbnails\" id=\"thumbnailsContainer\" role=\"tablist\" aria-label=\"Product images\">\r\n                        <button class=\"thumbnail-nav-btn thumbnail-nav-btn--prev\" onclick=\"ProductGallery.scrollThumbnailsPrev()\" aria-label=\"Previous thumbnails\" style=\"display: none;\">\u2039<\/button>\r\n                        <img decoding=\"async\" src=\"https:\/\/sing2sky.com\/wp-content\/uploads\/2025\/08\/Triangular-Climbing-Frame-1.avif\" class=\"thumbnail thumbnail--active\" onclick=\"ProductGallery.setMainImage(0)\" alt=\"Triangular Climbing Frame - Complete overview\" role=\"tab\" tabindex=\"0\" loading=\"lazy\" title=\"\">\r\n                        <button class=\"thumbnail-nav-btn thumbnail-nav-btn--next\" onclick=\"ProductGallery.scrollThumbnailsNext()\" aria-label=\"Next thumbnails\" style=\"display: none;\">\u203a<\/button>\r\n                    <\/div>\r\n                <\/div>\r\n                \r\n                <!-- Product Information -->\r\n                <div class=\"product-info\">\r\n                    <header class=\"product-header\">\r\n                        <p class=\"product-number\" itemprop=\"sku\">Item No: XTGTY013<\/p>\r\n                        <h1 class=\"product-title\" itemprop=\"name\">Triangular Climbing Frame<\/h1>\r\n                    <\/header>\r\n                    \r\n                    <div class=\"product-description\" itemprop=\"description\">\r\n                        This innovative triangular climbing frame is designed for infant and toddler physical development. Made from premium multi-layer basswood and beech wood with dimensions of 43\u00d743\u00d743cm and weighing 5.85KG, it provides a safe and engaging platform for climbing, crawling, and exploring activities.\r\n                    <\/div>\r\n\r\n                    <!-- Product Details Accordion -->\r\n                    <div class=\"accordion\">\r\n                        <div class=\"accordion-item\">\r\n                            <button class=\"accordion-header\" onclick=\"Accordion.toggle(this)\" aria-expanded=\"false\">\r\n                                <span>Materials & Construction Specifications<\/span>\r\n                                <div class=\"accordion-icon\"><\/div>\r\n                            <\/button>\r\n                            <div class=\"accordion-content\">\r\n                                <p><strong>Primary Materials:<\/strong> <span itemprop=\"material\">Multi-layer Basswood, Beech Wood<\/span><\/p>\r\n                                <p><strong>Dimensions:<\/strong> 43\u00d743\u00d743cm (Triangular design)<\/p>\r\n                                <p><strong>Weight:<\/strong> 5.85KG<\/p>\r\n                                <p><strong>Safety Features:<\/strong> Smooth edges, rounded corners, non-toxic finish<\/p>\r\n                                <p><strong>Design Type:<\/strong> Triangular frame for enhanced stability and climbing variety<\/p>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"accordion-item\">\r\n                            <button class=\"accordion-header\" onclick=\"Accordion.toggle(this)\" aria-expanded=\"false\">\r\n                                <span>Key Features & Developmental Benefits<\/span>\r\n                                <div class=\"accordion-icon\"><\/div>\r\n                            <\/button>\r\n                            <div class=\"accordion-content\">\r\n                                <p><strong>Design Type:<\/strong> Innovative triangular climbing frame<\/p>\r\n                                <p><strong>Target Age Group:<\/strong> Infants and toddlers with adult supervision<\/p>\r\n                                <p><strong>Developmental Benefits:<\/strong> Gross motor skills, balance, coordination, spatial awareness<\/p>\r\n                                <p><strong>Multi-Functionality:<\/strong> Climbing platform, crawling tunnel, hideaway space<\/p>\r\n                                <p><strong>Physical Development:<\/strong> Enhances muscle strength and coordination<\/p>\r\n                                <p><strong>Cognitive Benefits:<\/strong> Promotes problem-solving and spatial understanding<\/p>\r\n                                <p><strong>Social Play:<\/strong> Encourages interactive and imaginative play<\/p>\r\n                                <p><strong>Stability:<\/strong> Triangular design ensures maximum stability during use<\/p>\r\n                                <p><strong>Versatility:<\/strong> Can be used individually or combined with other equipment<\/p>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <div class=\"btn-container\">\r\n                        <a class=\"btn\" href=\"https:\/\/sing2sky.com\/contact\/\" rel=\"nofollow\">Request Quote<\/a>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <!-- FAQ Section -->\r\n            <div class=\"faq-section\">\r\n                <h2 class=\"faq-title\">Frequently Asked Questions About Triangular Climbing Frame<\/h2>\r\n                <div class=\"accordion\">\r\n                    <div class=\"accordion-item\">\r\n                        <button class=\"accordion-header\" onclick=\"Accordion.toggle(this)\" aria-expanded=\"false\">\r\n                            <span>What age group is suitable for the Triangular Climbing Frame?<\/span>\r\n                            <div class=\"accordion-icon\"><\/div>\r\n                        <\/button>\r\n                        <div class=\"accordion-content\">\r\n                            <p>This triangular climbing frame is designed for infants and toddlers with adult supervision. Perfect for developing gross motor skills, balance, coordination, and spatial awareness through safe climbing and exploration activities.<\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"accordion-item\">\r\n                        <button class=\"accordion-header\" onclick=\"Accordion.toggle(this)\" aria-expanded=\"false\">\r\n                            <span>What materials are used in the construction?<\/span>\r\n                            <div class=\"accordion-icon\"><\/div>\r\n                        <\/button>\r\n                        <div class=\"accordion-content\">\r\n                            <p>Made from premium multi-layer basswood and beech wood with smooth, safe edges and rounded corners. All materials meet comprehensive safety testing standards for infant and toddler climbing equipment.<\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"accordion-item\">\r\n                        <button class=\"accordion-header\" onclick=\"Accordion.toggle(this)\" aria-expanded=\"false\">\r\n                            <span>What are the dimensions and weight specifications?<\/span>\r\n                            <div class=\"accordion-icon\"><\/div>\r\n                        <\/button>\r\n                        <div class=\"accordion-content\">\r\n                            <p>The triangular climbing frame measures 43\u00d743\u00d743cm (triangular shape) and weighs 5.85KG, providing excellent stability and a secure platform for various climbing and exploration activities.<\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- Related Products Section -->\r\n        <section class=\"related-products\" aria-labelledby=\"related-products-heading\">\r\n            <div class=\"related-container\">\r\n                <h2 id=\"related-products-heading\" class=\"section-title\">Related Products<\/h2>\r\n                <div class=\"products-carousel\" role=\"region\" aria-label=\"Related products carousel\">\r\n                    <button class=\"carousel-nav-btn carousel-nav-btn--prev\" onclick=\"ProductCarousel.previous()\" aria-label=\"Previous products\">\u2039<\/button>\r\n                    <div class=\"products-container\" id=\"productsContainer\">\r\n                        <div class=\"products-slider\" id=\"productsSlider\">\r\n                            <!-- Related products will be generated by JavaScript -->\r\n                        <\/div>\r\n                    <\/div>\r\n                    <button class=\"carousel-nav-btn carousel-nav-btn--next\" onclick=\"ProductCarousel.next()\" aria-label=\"Next products\">\u203a<\/button>\r\n                    <div class=\"pagination-dots\" id=\"paginationDots\" role=\"tablist\" aria-label=\"Product pages\">\r\n                        <!-- Pagination dots will be generated by JavaScript -->\r\n                    <\/div>\r\n                <\/div>\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        \/\/ Configuration\r\n        const CONFIG = {\r\n            images: [\r\n                'https:\/\/sing2sky.com\/wp-content\/uploads\/2025\/08\/Triangular-Climbing-Frame-1.avif'\r\n            ],\r\n            relatedProducts: [\r\n                {\r\n                    title: \"Versatile Folding Rack\",\r\n                    no: \"XTGTY001\",\r\n                    image: \"https:\/\/sing2sky.com\/wp-content\/uploads\/2025\/08\/Versatile-Folding-Rack-1.avif\",\r\n                    url: \"https:\/\/sing2sky.com\/products\/infant-toddler-collection\/versatile-folding-rack\/\"\r\n                },\r\n                {\r\n                    title: \"Multi-Sport Ladder\",\r\n                    no: \"XTGTY002\",\r\n                    image: \"https:\/\/sing2sky.com\/wp-content\/uploads\/2025\/08\/Multi-Sport-Ladder-1.avif\",\r\n                    url: \"https:\/\/sing2sky.com\/products\/infant-toddler-collection\/multi-sport-ladder\/\"\r\n                },\r\n                {\r\n                    title: \"Triangle Climbing Frame\",\r\n                    no: \"XTGTY005\",\r\n                    image: \"https:\/\/sing2sky.com\/wp-content\/uploads\/2025\/08\/Triangle-Climbing-Frame-1.avif\",\r\n                    url: \"https:\/\/sing2sky.com\/products\/infant-toddler-collection\/triangle-climbing-frame\/\"\r\n                },\r\n                {\r\n                    title: \"Hollow Climbing Box\",\r\n                    no: \"XTGTY009\",\r\n                    image: \"https:\/\/sing2sky.com\/wp-content\/uploads\/2025\/08\/Hollow-Climbing-Box-1.avif\",\r\n                    url: \"https:\/\/sing2sky.com\/products\/infant-toddler-collection\/hollow-climbing-box\/\"\r\n                },\r\n                {\r\n                    title: \"Round Pole Climbing Box\",\r\n                    no: \"XTGTY010\",\r\n                    image: \"https:\/\/sing2sky.com\/wp-content\/uploads\/2025\/08\/Round-Pole-Climbing-Box-1.avif\",\r\n                    url: \"https:\/\/sing2sky.com\/products\/infant-toddler-collection\/round-pole-climbing-box\/\"\r\n                }\r\n            ]\r\n        };\r\n\r\n        \/\/ Position Memory Manager\r\n        const PositionMemory = (() => {\r\n            const isStorageAvailable = () => {\r\n                try {\r\n                    const test = '__test__';\r\n                    localStorage.setItem(test, test);\r\n                    localStorage.removeItem(test);\r\n                    return true;\r\n                } catch (e) {\r\n                    return false;\r\n                }\r\n            };\r\n\r\n            return {\r\n                savePosition: () => {},\r\n                getPosition: () => null,\r\n                clearPosition: () => {},\r\n                getCurrentPageUrl: () => window.location.href.split('#')[0].split('?')[0]\r\n            };\r\n        })();\r\n\r\n        \/\/ Product Image Gallery\r\n        window.ProductGallery = (() => {\r\n            let currentImageIndex = 0;\r\n            const images = CONFIG.images;\r\n\r\n            const setMainImage = (index) => {\r\n                if (index < 0 || index >= images.length) return;\r\n                \r\n                currentImageIndex = index;\r\n                const mainImage = document.getElementById('mainImage');\r\n                if (mainImage && images[index]) {\r\n                    mainImage.src = images[index];\r\n                    mainImage.alt = `Triangular Climbing Frame view ${index + 1}`;\r\n                    updateThumbnails();\r\n                    updateAccessibility();\r\n                    scrollToActiveThumbnail();\r\n                    \r\n                    \/\/ Show\/hide navigation buttons based on image count\r\n                    const prevBtn = document.querySelector('.nav-btn--prev');\r\n                    const nextBtn = document.querySelector('.nav-btn--next');\r\n                    if (prevBtn && nextBtn) {\r\n                        if (images.length > 1) {\r\n                            prevBtn.style.display = 'flex';\r\n                            nextBtn.style.display = 'flex';\r\n                        } else {\r\n                            prevBtn.style.display = 'none';\r\n                            nextBtn.style.display = 'none';\r\n                        }\r\n                    }\r\n                }\r\n            };\r\n\r\n            const updateThumbnails = () => {\r\n                const thumbnails = document.querySelectorAll('.thumbnail');\r\n                thumbnails.forEach((thumb, i) => {\r\n                    const isActive = i === currentImageIndex;\r\n                    thumb.classList.toggle('thumbnail--active', isActive);\r\n                    thumb.setAttribute('tabindex', isActive ? '0' : '-1');\r\n                    thumb.setAttribute('aria-selected', isActive ? 'true' : 'false');\r\n                    \r\n                    \/\/ Force reapply rounded corner styles\r\n                    thumb.style.borderRadius = window.innerWidth <= 768 ? '4px' : '6px';\r\n                    thumb.style.overflow = 'hidden';\r\n                    thumb.style.border = '1px solid ' + (isActive ? '#333' : '#ddd');\r\n                });\r\n            };\r\n\r\n            const scrollToActiveThumbnail = () => {\r\n                const thumbnailsContainer = document.getElementById('thumbnailsContainer');\r\n                const activeThumbnail = document.querySelector('.thumbnail--active');\r\n                \r\n                if (!thumbnailsContainer || !activeThumbnail) return;\r\n                \r\n                const containerRect = thumbnailsContainer.getBoundingClientRect();\r\n                const thumbnailRect = activeThumbnail.getBoundingClientRect();\r\n                \r\n                const isVisible = (\r\n                    thumbnailRect.left >= containerRect.left &&\r\n                    thumbnailRect.right <= containerRect.right\r\n                );\r\n                \r\n                if (!isVisible) {\r\n                    const thumbnailOffsetLeft = activeThumbnail.offsetLeft;\r\n                    const containerWidth = thumbnailsContainer.clientWidth;\r\n                    const thumbnailWidth = activeThumbnail.offsetWidth;\r\n                    \r\n                    const scrollLeft = thumbnailOffsetLeft - (containerWidth \/ 2) + (thumbnailWidth \/ 2);\r\n                    \r\n                    thumbnailsContainer.scrollTo({\r\n                        left: Math.max(0, scrollLeft),\r\n                        behavior: 'smooth'\r\n                    });\r\n                }\r\n            };\r\n\r\n            const scrollThumbnailsPrev = () => {\r\n                const thumbnailsContainer = document.getElementById('thumbnailsContainer');\r\n                if (!thumbnailsContainer) return;\r\n                \r\n                const scrollAmount = window.innerWidth <= 768 ? 120 : 200;\r\n                thumbnailsContainer.scrollBy({\r\n                    left: -scrollAmount,\r\n                    behavior: 'smooth'\r\n                });\r\n            };\r\n\r\n            const scrollThumbnailsNext = () => {\r\n                const thumbnailsContainer = document.getElementById('thumbnailsContainer');\r\n                if (!thumbnailsContainer) return;\r\n                \r\n                const scrollAmount = window.innerWidth <= 768 ? 120 : 200;\r\n                thumbnailsContainer.scrollBy({\r\n                    left: scrollAmount,\r\n                    behavior: 'smooth'\r\n                });\r\n            };\r\n\r\n            const updateAccessibility = () => {\r\n                const mainImage = document.getElementById('mainImage');\r\n                if (mainImage) {\r\n                    mainImage.setAttribute('aria-describedby', `thumbnail-${currentImageIndex}`);\r\n                }\r\n            };\r\n\r\n            const previousImage = () => {\r\n                const newIndex = currentImageIndex > 0 ? currentImageIndex - 1 : images.length - 1;\r\n                setMainImage(newIndex);\r\n            };\r\n\r\n            const nextImage = () => {\r\n                const newIndex = currentImageIndex < images.length - 1 ? currentImageIndex + 1 : 0;\r\n                setMainImage(newIndex);\r\n            };\r\n\r\n            const initTouchSupport = () => {\r\n                const mainImage = document.getElementById('mainImage');\r\n                const thumbnailsContainer = document.getElementById('thumbnailsContainer');\r\n                \r\n                \/\/ Main image touch support\r\n                if (mainImage) {\r\n                    let startX = 0;\r\n                    let endX = 0;\r\n\r\n                    mainImage.addEventListener('touchstart', (e) => {\r\n                        startX = e.touches[0].clientX;\r\n                    }, { passive: true });\r\n\r\n                    mainImage.addEventListener('touchend', (e) => {\r\n                        endX = e.changedTouches[0].clientX;\r\n                        const threshold = 50;\r\n                        const diff = startX - endX;\r\n                        \r\n                        if (Math.abs(diff) > threshold) {\r\n                            if (diff > 0) {\r\n                                nextImage();\r\n                            } else {\r\n                                previousImage();\r\n                            }\r\n                        }\r\n                    }, { passive: true });\r\n                }\r\n\r\n                \/\/ Thumbnails touch support\r\n                if (thumbnailsContainer) {\r\n                    let thumbnailStartX = 0;\r\n                    let thumbnailStartY = 0;\r\n                    let thumbnailEndX = 0;\r\n                    let thumbnailEndY = 0;\r\n                    let isThumbnailSwiping = false;\r\n\r\n                    thumbnailsContainer.addEventListener('touchstart', (e) => {\r\n                        thumbnailStartX = e.touches[0].clientX;\r\n                        thumbnailStartY = e.touches[0].clientY;\r\n                        isThumbnailSwiping = false;\r\n                    }, { passive: true });\r\n\r\n                    thumbnailsContainer.addEventListener('touchmove', (e) => {\r\n                        if (!isThumbnailSwiping) {\r\n                            const deltaX = Math.abs(e.touches[0].clientX - thumbnailStartX);\r\n                            const deltaY = Math.abs(e.touches[0].clientY - thumbnailStartY);\r\n                            \r\n                            if (deltaX > deltaY && deltaX > 10) {\r\n                                isThumbnailSwiping = true;\r\n                                e.preventDefault();\r\n                            }\r\n                        }\r\n                    }, { passive: false });\r\n\r\n                    thumbnailsContainer.addEventListener('touchend', (e) => {\r\n                        if (isThumbnailSwiping) {\r\n                            thumbnailEndX = e.changedTouches[0].clientX;\r\n                            const threshold = 30;\r\n                            const diff = thumbnailStartX - thumbnailEndX;\r\n                            \r\n                            if (Math.abs(diff) > threshold) {\r\n                                if (diff > 0) {\r\n                                    scrollThumbnailsNext();\r\n                                } else {\r\n                                    scrollThumbnailsPrev();\r\n                                }\r\n                            }\r\n                        }\r\n                        isThumbnailSwiping = false;\r\n                    }, { passive: true });\r\n                }\r\n            };\r\n\r\n            const fixThumbnailStyles = () => {\r\n                const thumbnails = document.querySelectorAll('.thumbnail');\r\n                thumbnails.forEach((thumb, index) => {\r\n                    const isActive = index === currentImageIndex;\r\n                    const isMobile = window.innerWidth <= 768;\r\n                    const isTablet = window.innerWidth <= 1024 && window.innerWidth > 768;\r\n                    \r\n                    let size = '80px';\r\n                    let borderRadius = '6px';\r\n                    \r\n                    if (isMobile) {\r\n                        size = '55px';\r\n                        borderRadius = '4px';\r\n                    } else if (isTablet) {\r\n                        size = '75px';\r\n                        borderRadius = '6px';\r\n                    }\r\n                    \r\n                    thumb.style.width = size;\r\n                    thumb.style.height = size;\r\n                    thumb.style.minWidth = size;\r\n                    thumb.style.maxWidth = size;\r\n                    thumb.style.borderRadius = borderRadius;\r\n                    thumb.style.border = `1px solid ${isActive ? '#333' : '#ddd'}`;\r\n                    thumb.style.overflow = 'hidden';\r\n                    thumb.style.objectFit = 'contain';\r\n                    thumb.style.background = 'white';\r\n                    thumb.style.flexShrink = '0';\r\n                    thumb.style.display = 'block';\r\n                    thumb.style.margin = '0';\r\n                    thumb.style.padding = '0';\r\n                    thumb.style.boxSizing = 'border-box';\r\n                    thumb.style.verticalAlign = 'top';\r\n                });\r\n            };\r\n\r\n            return {\r\n                setMainImage,\r\n                previousImage,\r\n                nextImage,\r\n                scrollThumbnailsPrev,\r\n                scrollThumbnailsNext,\r\n                initTouchSupport,\r\n                fixThumbnailStyles\r\n            };\r\n        })();\r\n\r\n        \/\/ Accordion Module\r\n        window.Accordion = (() => {\r\n            const toggle = (button) => {\r\n                const item = button.closest('.accordion-item');\r\n                const content = item.querySelector('.accordion-content');\r\n                const isActive = item.classList.contains('accordion-item--active');\r\n                \r\n                document.querySelectorAll('.accordion-item').forEach(accItem => {\r\n                    accItem.classList.remove('accordion-item--active');\r\n                    const accContent = accItem.querySelector('.accordion-content');\r\n                    const accButton = accItem.querySelector('.accordion-header');\r\n                    if (accContent) accContent.style.display = 'none';\r\n                    if (accButton) accButton.setAttribute('aria-expanded', 'false');\r\n                });\r\n                \r\n                if (!isActive) {\r\n                    item.classList.add('accordion-item--active');\r\n                    content.style.display = 'block';\r\n                    button.setAttribute('aria-expanded', 'true');\r\n                }\r\n            };\r\n\r\n            return { toggle };\r\n        })();\r\n\r\n        \/\/ Product Carousel Module\r\n        window.ProductCarousel = (() => {\r\n            let currentSlide = 0;\r\n            let productsPerView = 3;\r\n            const totalProducts = CONFIG.relatedProducts.length;\r\n            let isTransitioning = false;\r\n            let totalSlides = 0;\r\n            let isMobile = false;\r\n            let autoResetTimeout = null;\r\n            let hasRestoredPosition = false;\r\n\r\n            const getProductsPerView = () => {\r\n                const width = window.innerWidth;\r\n                isMobile = width <= 768;\r\n                if (width <= 768) return 1;\r\n                if (width <= 1024) return 2;\r\n                return 3;\r\n            };\r\n\r\n            const createProductSlide = (product, index) => {\r\n                return `\r\n                    <article class=\"product-slide\" itemscope itemtype=\"https:\/\/schema.org\/Product\">\r\n                        <a href=\"${product.url}\" class=\"product-card\" itemprop=\"url\">\r\n                            <div class=\"product-image-container\">\r\n                                <img decoding=\"async\" src=\"${product.image}\" \r\n                                     alt=\"${product.title} - Infant and toddler development equipment\" \r\n                                     class=\"product-image\"\r\n                                     loading=\"lazy\"\r\n                                     itemprop=\"image\"\r\n                                     onerror=\"handleProductImageError(this, '${product.title}', '${product.no}')\">\r\n                            <\/div>\r\n                            <h3 class=\"product-card-title\" itemprop=\"name\">${product.title}<\/h3>\r\n                            <p class=\"product-card-number\" itemprop=\"sku\">Item No: ${product.no}<\/p>\r\n                            <span class=\"product-card-btn\" onclick=\"ProductCarousel.handleLearnMoreClick(event, ${index}, '${product.url}')\" role=\"button\" tabindex=\"0\">Learn More<\/span>\r\n                        <\/a>\r\n                    <\/article>\r\n                `;\r\n            };\r\n\r\n            const handleLearnMoreClick = (event, productIndex, url) => {\r\n                event.preventDefault();\r\n                event.stopPropagation();\r\n                \r\n                setTimeout(() => {\r\n                    window.location.href = url;\r\n                }, 100);\r\n            };\r\n\r\n            const initRelatedProducts = () => {\r\n                const slider = document.getElementById('productsSlider');\r\n                const dotsContainer = document.getElementById('paginationDots');\r\n                \r\n                if (!slider || !dotsContainer) {\r\n                    console.error('Required elements not found');\r\n                    return;\r\n                }\r\n                \r\n                const relatedSection = document.querySelector('.related-products');\r\n                if (relatedSection) {\r\n                    relatedSection.style.display = 'block';\r\n                    relatedSection.style.visibility = 'visible';\r\n                }\r\n                \r\n                productsPerView = getProductsPerView();\r\n                \r\n                let productsHTML = '';\r\n                \r\n                if (isMobile) {\r\n                    CONFIG.relatedProducts.forEach((product, index) => {\r\n                        productsHTML += createProductSlide(product, index);\r\n                    });\r\n                    totalSlides = totalProducts;\r\n                    currentSlide = 0;\r\n                } else {\r\n                    const groupCount = 15;\r\n                    for (let group = 0; group < groupCount; group++) {\r\n                        CONFIG.relatedProducts.forEach((product, index) => {\r\n                            productsHTML += createProductSlide(product, index);\r\n                        });\r\n                    }\r\n                    totalSlides = totalProducts * groupCount;\r\n                    currentSlide = totalProducts * Math.floor(groupCount \/ 2);\r\n                }\r\n                \r\n                slider.innerHTML = productsHTML;\r\n                \r\n                setProductSlideWidths();\r\n                updatePaginationDots();\r\n                updateProductsSlider(true);\r\n            };\r\n\r\n            const updatePaginationDots = () => {\r\n                const dotsContainer = document.getElementById('paginationDots');\r\n                if (!dotsContainer) return;\r\n\r\n                let dotsHTML = '';\r\n                for (let i = 0; i < totalProducts; i++) {\r\n                    const activeIndex = isMobile ? currentSlide : (currentSlide % totalProducts);\r\n                    const isActive = i === activeIndex;\r\n                    dotsHTML += `<button class=\"pagination-dot ${isActive ? 'pagination-dot--active' : ''}\" \r\n                                         onclick=\"ProductCarousel.goToSlide(${i})\"\r\n                                         aria-label=\"Go to product ${i + 1}\"\r\n                                         role=\"tab\"\r\n                                         aria-selected=\"${isActive ? 'true' : 'false'}\"><\/button>`;\r\n                }\r\n                dotsContainer.innerHTML = dotsHTML;\r\n            };\r\n\r\n            const setProductSlideWidths = () => {\r\n                const container = document.getElementById('productsContainer');\r\n                const slider = document.getElementById('productsSlider');\r\n                const slides = document.querySelectorAll('.product-slide');\r\n                if (!container || !slider || slides.length === 0) return;\r\n                \r\n                productsPerView = getProductsPerView();\r\n                \r\n                if (isMobile) {\r\n                    slider.style.display = 'flex';\r\n                    slider.style.width = '500%';\r\n                    \r\n                    slides.forEach((slide, index) => {\r\n                        const slideWidth = 100 \/ 5;\r\n                        slide.style.flex = `0 0 ${slideWidth}%`;\r\n                        slide.style.width = slideWidth + '%';\r\n                        slide.style.boxSizing = 'border-box';\r\n                        slide.style.padding = '0';\r\n                    });\r\n                } else {\r\n                    const sliderWidthMultiplier = totalSlides \/ productsPerView;\r\n                    slider.style.display = 'flex';\r\n                    slider.style.width = (sliderWidthMultiplier * 100) + '%';\r\n                    \r\n                    slides.forEach((slide, index) => {\r\n                        const slideWidth = 100 \/ totalSlides;\r\n                        slide.style.flex = `0 0 ${slideWidth}%`;\r\n                        slide.style.width = slideWidth + '%';\r\n                        slide.style.boxSizing = 'border-box';\r\n                        slide.style.padding = productsPerView === 1 ? '0 15px' : '0 15px';\r\n                    });\r\n                }\r\n            };\r\n\r\n            const updateProductsSlider = (instant = false) => {\r\n                if (isTransitioning && !instant) return;\r\n                \r\n                const slider = document.getElementById('productsSlider');\r\n                if (!slider) return;\r\n                \r\n                if (autoResetTimeout) {\r\n                    clearTimeout(autoResetTimeout);\r\n                    autoResetTimeout = null;\r\n                }\r\n                \r\n                if (!instant) {\r\n                    isTransitioning = true;\r\n                    const transitionDuration = isMobile ? '0.4s' : '0.3s';\r\n                    const easingFunction = isMobile ? 'cubic-bezier(0.23, 1, 0.32, 1)' : 'cubic-bezier(0.25, 0.46, 0.45, 0.94)';\r\n                    slider.style.transition = `transform ${transitionDuration} ${easingFunction}`;\r\n                } else {\r\n                    slider.style.transition = 'none';\r\n                }\r\n                \r\n                let movePercentage;\r\n                if (isMobile) {\r\n                    movePercentage = currentSlide * 20;\r\n                } else {\r\n                    movePercentage = (currentSlide * 100) \/ totalSlides;\r\n                }\r\n                \r\n                slider.style.transform = `translateX(-${movePercentage}%)`;\r\n                updatePaginationDots();\r\n\r\n                if (!instant) {\r\n                    const waitTime = isMobile ? 420 : 320;\r\n                    setTimeout(() => {\r\n                        isTransitioning = false;\r\n                        if (!isMobile) {\r\n                            scheduleAutoReset();\r\n                        }\r\n                    }, waitTime);\r\n                } else {\r\n                    isTransitioning = false;\r\n                }\r\n            };\r\n\r\n            const scheduleAutoReset = () => {\r\n                if (isMobile) return;\r\n                \r\n                if (autoResetTimeout) {\r\n                    clearTimeout(autoResetTimeout);\r\n                }\r\n                \r\n                autoResetTimeout = setTimeout(() => {\r\n                    if (!isTransitioning) {\r\n                        performSilentReset();\r\n                    }\r\n                }, 50);\r\n            };\r\n\r\n            const performSilentReset = () => {\r\n                if (isTransitioning || isMobile) return;\r\n                \r\n                const slider = document.getElementById('productsSlider');\r\n                if (!slider) return;\r\n                \r\n                let needsReset = false;\r\n                let newPosition = currentSlide;\r\n                \r\n                const safeZoneStart = totalProducts * 5;\r\n                const safeZoneEnd = totalProducts * 10;\r\n                \r\n                if (currentSlide < safeZoneStart) {\r\n                    newPosition = currentSlide + totalProducts * 5;\r\n                    needsReset = true;\r\n                } else if (currentSlide >= safeZoneEnd) {\r\n                    newPosition = currentSlide - totalProducts * 5;\r\n                    needsReset = true;\r\n                }\r\n                \r\n                if (needsReset) {\r\n                    requestAnimationFrame(() => {\r\n                        requestAnimationFrame(() => {\r\n                            requestAnimationFrame(() => {\r\n                                currentSlide = newPosition;\r\n                                slider.style.transition = 'none';\r\n                                \r\n                                const movePercentage = (currentSlide * 100) \/ totalSlides;\r\n                                slider.style.transform = `translateX(-${movePercentage}%)`;\r\n                                \r\n                                slider.offsetHeight;\r\n                                \r\n                                requestAnimationFrame(() => {\r\n                                    requestAnimationFrame(() => {\r\n                                        const transitionDuration = '0.3s';\r\n                                        const easingFunction = 'cubic-bezier(0.25, 0.46, 0.45, 0.94)';\r\n                                        slider.style.transition = `transform ${transitionDuration} ${easingFunction}`;\r\n                                    });\r\n                                });\r\n                            });\r\n                        });\r\n                    });\r\n                }\r\n            };\r\n\r\n            const next = () => {\r\n                if (isTransitioning) return;\r\n                \r\n                if (isMobile) {\r\n                    currentSlide = (currentSlide + 1) % totalProducts;\r\n                } else {\r\n                    currentSlide++;\r\n                }\r\n                updateProductsSlider();\r\n            };\r\n\r\n            const previous = () => {\r\n                if (isTransitioning) return;\r\n                \r\n                if (isMobile) {\r\n                    currentSlide = currentSlide > 0 ? currentSlide - 1 : totalProducts - 1;\r\n                } else {\r\n                    currentSlide--;\r\n                }\r\n                updateProductsSlider();\r\n            };\r\n\r\n            const goToSlide = (index) => {\r\n                if (isTransitioning) return;\r\n                \r\n                if (isMobile) {\r\n                    currentSlide = index;\r\n                } else {\r\n                    const centerGroup = Math.floor((totalSlides \/ totalProducts) \/ 2);\r\n                    currentSlide = centerGroup * totalProducts + index;\r\n                }\r\n                updateProductsSlider();\r\n            };\r\n\r\n            const initTouchSupport = () => {\r\n                const container = document.getElementById('productsContainer');\r\n                if (!container) return;\r\n\r\n                let touchStartX = 0;\r\n                let touchStartY = 0;\r\n                let touchEndX = 0;\r\n                let touchEndY = 0;\r\n                let startTime = 0;\r\n                let lastMoveTime = 0;\r\n                let lastMoveX = 0;\r\n                let velocity = 0;\r\n                let isHorizontalSwipe = false;\r\n                let isVerticalSwipe = false;\r\n                let hasStartedSwipe = false;\r\n                let swipeDirectionDetermined = false;\r\n\r\n                const handleTouchStart = (e) => {\r\n                    if (isTransitioning) return;\r\n                    \r\n                    touchStartX = e.touches[0].clientX;\r\n                    touchStartY = e.touches[0].clientY;\r\n                    lastMoveX = touchStartX;\r\n                    startTime = Date.now();\r\n                    lastMoveTime = startTime;\r\n                    velocity = 0;\r\n                    isHorizontalSwipe = false;\r\n                    isVerticalSwipe = false;\r\n                    hasStartedSwipe = false;\r\n                    swipeDirectionDetermined = false;\r\n                };\r\n\r\n                const handleTouchMove = (e) => {\r\n                    if (isTransitioning) return;\r\n                    \r\n                    const currentX = e.touches[0].clientX;\r\n                    const currentY = e.touches[0].clientY;\r\n                    const currentTime = Date.now();\r\n                    const deltaX = Math.abs(currentX - touchStartX);\r\n                    const deltaY = Math.abs(currentY - touchStartY);\r\n                    \r\n                    if (currentTime > lastMoveTime) {\r\n                        velocity = Math.abs(currentX - lastMoveX) \/ (currentTime - lastMoveTime);\r\n                        lastMoveX = currentX;\r\n                        lastMoveTime = currentTime;\r\n                    }\r\n                    \r\n                    if (!swipeDirectionDetermined && (deltaX > 10 || deltaY > 10)) {\r\n                        if (deltaX > deltaY && deltaX > 15) {\r\n                            isHorizontalSwipe = true;\r\n                            isVerticalSwipe = false;\r\n                            hasStartedSwipe = true;\r\n                            swipeDirectionDetermined = true;\r\n                        } else if (deltaY > deltaX && deltaY > 15) {\r\n                            isVerticalSwipe = true;\r\n                            isHorizontalSwipe = false;\r\n                            hasStartedSwipe = true;\r\n                            swipeDirectionDetermined = true;\r\n                        }\r\n                    }\r\n                    \r\n                    if (isHorizontalSwipe && !isVerticalSwipe) {\r\n                        e.preventDefault();\r\n                    }\r\n                    \r\n                    if (isVerticalSwipe && !isHorizontalSwipe) {\r\n                        return;\r\n                    }\r\n                };\r\n\r\n                const handleTouchEnd = (e) => {\r\n                    if (isTransitioning || !hasStartedSwipe) return;\r\n                    \r\n                    touchEndX = e.changedTouches[0].clientX;\r\n                    touchEndY = e.changedTouches[0].clientY;\r\n                    \r\n                    if (!isHorizontalSwipe || isVerticalSwipe) {\r\n                        resetTouchState();\r\n                        return;\r\n                    }\r\n                    \r\n                    const deltaX = touchStartX - touchEndX;\r\n                    const deltaY = Math.abs(touchStartY - touchEndY);\r\n                    const swipeTime = Date.now() - startTime;\r\n                    const distance = Math.abs(deltaX);\r\n                    \r\n                    if (deltaY > distance * 0.5) {\r\n                        resetTouchState();\r\n                        return;\r\n                    }\r\n                    \r\n                    const isQuickSwipe = swipeTime < 300 && velocity > 0.2;\r\n                    const isLongSwipe = distance > 80;\r\n                    const shouldTrigger = (distance > 40 && (isQuickSwipe || isLongSwipe)) || (distance > 60);\r\n                    \r\n                    if (shouldTrigger) {\r\n                        setTimeout(() => {\r\n                            if (!isTransitioning) {\r\n                                if (deltaX > 0) {\r\n                                    next();\r\n                                } else {\r\n                                    previous();\r\n                                }\r\n                            }\r\n                        }, 10);\r\n                    }\r\n                    \r\n                    resetTouchState();\r\n                };\r\n\r\n                const handleTouchCancel = () => {\r\n                    resetTouchState();\r\n                };\r\n\r\n                const resetTouchState = () => {\r\n                    isHorizontalSwipe = false;\r\n                    isVerticalSwipe = false;\r\n                    hasStartedSwipe = false;\r\n                    swipeDirectionDetermined = false;\r\n                    velocity = 0;\r\n                };\r\n\r\n                container.addEventListener('touchstart', handleTouchStart, { passive: true });\r\n                container.addEventListener('touchmove', handleTouchMove, { passive: false });\r\n                container.addEventListener('touchend', handleTouchEnd, { passive: true });\r\n                container.addEventListener('touchcancel', handleTouchCancel, { passive: true });\r\n            };\r\n\r\n            return {\r\n                initRelatedProducts,\r\n                setProductSlideWidths,\r\n                updateProductsSlider,\r\n                updatePaginationDots,\r\n                previous,\r\n                next,\r\n                goToSlide,\r\n                initTouchSupport,\r\n                handleLearnMoreClick\r\n            };\r\n        })();\r\n\r\n        \/\/ Image error handling\r\n        window.handleProductImageError = (img, title, productNo) => {\r\n            const placeholder = document.createElement('div');\r\n            placeholder.className = 'image-placeholder';\r\n            placeholder.innerHTML = `\r\n                <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" style=\"width: 48px; height: 48px;\" aria-hidden=\"true\">\r\n                    <path d=\"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z\"\/>\r\n                <\/svg>\r\n                <div>Product Image<\/div>\r\n                <div style=\"font-size: 12px; opacity: 0.7;\">${productNo}<\/div>\r\n            `;\r\n            \r\n            try {\r\n                img.parentNode.replaceChild(placeholder, img);\r\n            } catch (e) {\r\n                console.error('Error replacing image:', e);\r\n            }\r\n        };\r\n\r\n        \/\/ Keyboard navigation\r\n        const initKeyboardNavigation = () => {\r\n            document.addEventListener('keydown', (e) => {\r\n                if (e.target.tagName === 'INPUT' || e.target.tagName === 'TEXTAREA') return;\r\n\r\n                switch (e.key) {\r\n                    case 'ArrowLeft':\r\n                        if (e.ctrlKey) {\r\n                            ProductCarousel.previous();\r\n                        } else {\r\n                            ProductGallery.previousImage();\r\n                        }\r\n                        e.preventDefault();\r\n                        break;\r\n                    case 'ArrowRight':\r\n                        if (e.ctrlKey) {\r\n                            ProductCarousel.next();\r\n                        } else {\r\n                            ProductGallery.nextImage();\r\n                        }\r\n                        e.preventDefault();\r\n                        break;\r\n                }\r\n            });\r\n        };\r\n\r\n        \/\/ Initialize\r\n        const initProductPage = () => {\r\n            const mainImage = document.getElementById('mainImage');\r\n            const slider = document.getElementById('productsSlider');\r\n            const relatedSection = document.querySelector('.related-products');\r\n            \r\n            if (!mainImage || !slider || !relatedSection) {\r\n                console.warn('Required elements not found');\r\n                return;\r\n            }\r\n\r\n            relatedSection.style.display = 'block';\r\n            relatedSection.style.visibility = 'visible';\r\n            \r\n            \/\/ Initialize gallery with single image\r\n            ProductGallery.setMainImage(0);\r\n            ProductGallery.initTouchSupport();\r\n            ProductCarousel.initRelatedProducts();\r\n            ProductCarousel.initTouchSupport();\r\n            initKeyboardNavigation();\r\n            \r\n            setTimeout(() => {\r\n                ProductGallery.fixThumbnailStyles();\r\n            }, 100);\r\n            \r\n            document.querySelectorAll('.main-image, .thumbnail, .product-image').forEach(img => {\r\n                img.addEventListener('dragstart', (e) => {\r\n                    e.preventDefault();\r\n                });\r\n            });\r\n        };\r\n\r\n        \/\/ Responsive handling\r\n        let resizeTimeout;\r\n        const handleResize = () => {\r\n            clearTimeout(resizeTimeout);\r\n            resizeTimeout = setTimeout(() => {\r\n                ProductCarousel.initRelatedProducts();\r\n                ProductGallery.fixThumbnailStyles();\r\n            }, 150);\r\n        };\r\n\r\n        \/\/ Initialize after DOM loaded\r\n        if (document.readyState === 'loading') {\r\n            document.addEventListener('DOMContentLoaded', initProductPage);\r\n        } else {\r\n            setTimeout(initProductPage, 100);\r\n        }\r\n\r\n        window.addEventListener('resize', handleResize);\r\n\r\n        \/\/ Cleanup function\r\n        window.cleanupProductPage = () => {\r\n            window.removeEventListener('resize', handleResize);\r\n        };\r\n\r\n    })();\r\n    <\/script>\r\n<\/div>\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>Home Products Infant &#038; Toddler Collection Triangular Climbing Frame \u2039 \u203a \u2039 \u203a Item No: XTGTY013 Triangular Climbing Frame This innovative triangular climbing frame is designed for infant and toddler physical development. Made from premium multi-layer basswood and beech wood with dimensions of 43\u00d743\u00d743cm and weighing 5.85KG, it provides a safe and engaging platform for [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":8700,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-9118","page","type-page","status-publish","hentry"],"blocksy_meta":[],"acf":[],"_links":{"self":[{"href":"https:\/\/sing2sky.com\/pt\/wp-json\/wp\/v2\/pages\/9118","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sing2sky.com\/pt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sing2sky.com\/pt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sing2sky.com\/pt\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sing2sky.com\/pt\/wp-json\/wp\/v2\/comments?post=9118"}],"version-history":[{"count":0,"href":"https:\/\/sing2sky.com\/pt\/wp-json\/wp\/v2\/pages\/9118\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/sing2sky.com\/pt\/wp-json\/wp\/v2\/pages\/8700"}],"wp:attachment":[{"href":"https:\/\/sing2sky.com\/pt\/wp-json\/wp\/v2\/media?parent=9118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}