{"id":37958,"date":"2026-08-17T09:38:11","date_gmt":"2026-08-17T09:38:11","guid":{"rendered":"https:\/\/jassportsdistribution.co.uk\/?page_id=37958"},"modified":"2026-10-07T15:03:15","modified_gmt":"2026-10-07T15:03:15","slug":"paddle-rackets","status":"publish","type":"page","link":"https:\/\/jassportsdistribution.co.uk\/index.php\/paddle-rackets\/","title":{"rendered":"Paddle Rackets"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"37958\" class=\"elementor elementor-37958\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a9182bd elementor-hidden-mobile elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"a9182bd\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-604e974\" data-id=\"604e974\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8aabdfd elementor-widget elementor-widget-html\" data-id=\"8aabdfd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"tennis-section-title\" aria-hidden=\"true\">Padel <br>&nbsp;&nbsp;&nbsp;Rackets<\/div>\n<style>\n.tennis-section-title{font-family:Poppins,Arial,sans-serif;font-style:italic;font-weight:800;font-size:clamp(50px,10vw,100px);line-height:1.0;letter-spacing:-4px;color:#fff;-webkit-text-stroke:1px #B3DA2D;white-space:nowrap;text-align:left;pointer-events:none}@media(max-width:767px){.tennis-section-title{font-size:54px;letter-spacing:-3px; vertical-align:middle;\n    \n}}\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6ebb934 elementor-hidden-desktop elementor-hidden-tablet elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6ebb934\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-58198c8\" data-id=\"58198c8\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1151ab4 elementor-widget elementor-widget-html\" data-id=\"1151ab4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"tennis-section-title\" aria-hidden=\"true\">Paddle <br>&nbsp;&nbsp;&nbsp;Rackets<\/div>\n<style>\n    .tennis-section {\n  position: relative !important;\n}\n\n@media (max-width: 767px) {\n  .tennis-section-title {\n    position: absolute !important;\n    top: -150px !important;\n    left: 18px !important;\n    right: auto !important;\n    bottom: auto !important;\ncolor:#fff;\n    margin: 0 !important;\n    transform: none !important;\n    vertical-align: initial !important;\n\n    font-size: 34px !important;\n    line-height: 0.9 !important;\n    letter-spacing: -2px !important;\n    text-align: left !important;\n    z-index: 10;\n  }\n\n  .tennis-section-title span {\n    margin-left: 12px;\n  }\n}\n    \n<\/style>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t<div class=\"elementor-element elementor-element-9a7c317 e-flex e-con-boxed e-con e-parent\" data-id=\"9a7c317\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-7039548 jass-products-grid e-flex e-con-boxed e-con e-child\" data-id=\"7039548\" 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-97aaf67 elementor-widget elementor-widget-html\" data-id=\"97aaf67\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n    \/* =========================================================\r\n   JASS SPORTS - GENERIC MULTI PRODUCT GALLERY\r\n   ========================================================= *\/\r\n\r\n    #jass-product-gallery {\r\n        width: 100%;\r\n        max-width: 1600px;\r\n        margin: 0 auto;\r\n        padding: 35px 40px;\r\n        box-sizing: border-box;\r\n\r\n        display: grid;\r\n        grid-template-columns: repeat(2, minmax(0, 1fr));\r\n        gap: 35px;\r\n\r\n        font-family: Arial, sans-serif;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   PRODUCT CARD\r\n   ========================================================= *\/\r\n\r\n    #jass-product-gallery .tp-product-card {\r\n        width: 100%;\r\n        min-width: 0;\r\n        background: #fff;\r\n        padding: 30px;\r\n        box-sizing: border-box;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   GALLERY\r\n   ========================================================= *\/\r\n\r\n    .tp-gallery {\r\n        width: 100%;\r\n        display: flex;\r\n        flex-direction: column;\r\n        gap: 18px;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   MAIN IMAGE\r\n   ========================================================= *\/\r\n\r\n    .tp-main-image-box {\r\n        position: relative;\r\n        width: 100%;\r\n        aspect-ratio: 750 \/ 750;\r\n\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n\r\n        background: #fff;\r\n        border: 1px solid #e4e4e4;\r\n        border-radius: 8px;\r\n\r\n        overflow: hidden;\r\n        cursor: zoom-in;\r\n        box-sizing: border-box;\r\n    }\r\n\r\n    .tp-main-image {\r\n        width: 100% !important;\r\n        height: 100% !important;\r\n\r\n        display: block;\r\n\r\n        object-fit: contain !important;\r\n        object-position: center center;\r\n\r\n        transition: opacity .15s ease;\r\n\r\n        \/*\r\n       IMPORTANT:\r\n       Prevent Elementor from replacing our\r\n       full-size image with srcset thumbnails.\r\n    *\/\r\n        image-rendering: auto;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   ZOOM BUTTON\r\n   ========================================================= *\/\r\n\r\n    .tp-zoom-button {\r\n        position: absolute;\r\n        right: 14px;\r\n        bottom: 14px;\r\n\r\n        width: 42px;\r\n        height: 42px;\r\n\r\n        border: 0;\r\n        border-radius: 50%;\r\n\r\n        background: rgba(255, 255, 255, .95);\r\n        color: #111;\r\n\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n\r\n        font-size: 18px;\r\n        cursor: pointer;\r\n\r\n        box-shadow: 0 3px 12px rgba(0, 0, 0, .18);\r\n\r\n        z-index: 5;\r\n\r\n        transition: .2s ease;\r\n    }\r\n\r\n    .tp-zoom-button:hover {\r\n        transform: scale(1.08);\r\n        background: #111;\r\n        color: #fff;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   THUMBNAIL AREA\r\n   ========================================================= *\/\r\n\r\n    .tp-thumbnail-area {\r\n        width: 100%;\r\n\r\n        display: flex;\r\n        align-items: center;\r\n\r\n        gap: 10px;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   THUMBNAIL ARROWS\r\n   ========================================================= *\/\r\n\r\n    .tp-thumb-arrow {\r\n        flex: 0 0 38px;\r\n\r\n        width: 38px;\r\n        height: 38px;\r\n\r\n        border-radius: 50px;\r\n        border: 1px solid #ddd;\r\n\r\n        background: #fff;\r\n        color: #111;\r\n\r\n        cursor: pointer;\r\n\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: center;\r\n\r\n        font-size: 20px;\r\n        line-height: 1;\r\n\r\n        transition: .2s ease;\r\n    }\r\n\r\n    .tp-thumb-arrow:hover {\r\n        background: #111;\r\n        color: #fff;\r\n        border-color: #111;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   THUMBNAIL STRIP\r\n   ========================================================= *\/\r\n\r\n    .tp-thumbnails {\r\n        flex: 1;\r\n\r\n        display: flex;\r\n        gap: 12px;\r\n\r\n        justify-content: center;\r\n\r\n        overflow: hidden;\r\n\r\n        min-width: 0;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   THUMBNAIL\r\n   ========================================================= *\/\r\n\r\n    .tp-thumbnail {\r\n        flex: 0 0 78px;\r\n\r\n        width: 78px;\r\n        height: 78px;\r\n\r\n        border: 2px solid transparent;\r\n\r\n        background: #fff;\r\n\r\n        padding: 3px;\r\n\r\n        cursor: pointer;\r\n\r\n        box-sizing: border-box;\r\n\r\n        transition:\r\n            border-color .15s ease,\r\n            transform .15s ease,\r\n            opacity .15s ease;\r\n\r\n        overflow: hidden;\r\n    }\r\n\r\n    .tp-thumbnail img {\r\n        width: 100%;\r\n        height: 100%;\r\n\r\n        display: block;\r\n\r\n        object-fit: contain !important;\r\n        object-position: center;\r\n\r\n        \/*\r\n       Do not let browser lazily delay\r\n       thumbnail loading.\r\n    *\/\r\n        loading: eager;\r\n    }\r\n\r\n    .tp-thumbnail:hover {\r\n        transform: translateY(-2px);\r\n        border-color: #999;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   ACTIVE THUMBNAIL\r\n   ========================================================= *\/\r\n\r\n    .tp-thumbnail.active {\r\n        border-color: #111 !important;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   PRODUCT INFO\r\n   ========================================================= *\/\r\n\r\n    .tp-product-info {\r\n        padding-top: 4px;\r\n    }\r\n\r\n    .tp-product-title {\r\n        margin: 0 10px;\r\n\r\n        text-align: center;\r\n\r\n        font-family: \"kanitregular\", Sans-serif;\r\n\r\n        font-size: 40px;\r\n        font-weight: 800;\r\n\r\n        text-transform: uppercase;\r\n\r\n        line-height: 35px;\r\n        letter-spacing: 2px;\r\n\r\n        color: #15191B;\r\n    }\r\n\r\n    .tp-product-subtitle {\r\n        margin: 0 10px;\r\n        text-align: center;\r\n        font-family: \"kanitregular\", Sans-serif;\r\n        font-size: 22px;\r\n        font-weight: 600;\r\n        text-transform: uppercase;\r\n        line-height: 35px;\r\n        letter-spacing: 2px;\r\n        color: #15191B;\r\n    }\r\n\r\n    .tp-product-description {\r\n        margin: 15px 15px;\r\n\r\n        padding: 0 10px 0 20px;\r\n\r\n        font-family: \"kanitregular\", Sans-serif;\r\n\r\n        font-size: 16px;\r\n        line-height: 25px;\r\n        letter-spacing: 1px;\r\n        height: 13em;\r\n        color: #15191B;\r\n\r\n        text-align: justify;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   ENQUIRY BUTTON\r\n   ========================================================= *\/\r\n\r\n    .tp-enquiry-button {\r\n        display: inline-flex;\r\n\r\n        align-items: center;\r\n        justify-content: center;\r\n\r\n        margin-top: 20px;\r\n\r\n        padding: 13px 25px;\r\n\r\n        background: #B3DA2D;\r\n        color: #15191B !important;\r\n\r\n        text-decoration: none !important;\r\n\r\n        font-size: 14px;\r\n        font-weight: 800;\r\n\r\n        text-transform: uppercase;\r\n        letter-spacing: .3px;\r\n\r\n        border: 1px solid #111;\r\n\r\n        transition: .25s ease;\r\n    }\r\n\r\n    .tp-enquiry-button:hover {\r\n        background: #fff;\r\n        color: #111 !important;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   LIGHTBOX\r\n   ========================================================= *\/\r\n\r\n    #tp-lightbox {\r\n        position: fixed;\r\n\r\n        inset: 0;\r\n\r\n        width: 100vw;\r\n        height: 100vh;\r\n\r\n        background: rgba(0, 0, 0, .94);\r\n\r\n        display: none;\r\n\r\n        align-items: center;\r\n        justify-content: center;\r\n\r\n        z-index: 999999;\r\n\r\n        padding: 30px;\r\n\r\n        box-sizing: border-box;\r\n    }\r\n\r\n    #tp-lightbox.active {\r\n        display: flex;\r\n    }\r\n\r\n    .tp-lightbox-inner {\r\n        position: relative;\r\n\r\n        width: min(1200px, 96vw);\r\n        height: min(900px, 92vh);\r\n\r\n        display: flex;\r\n        flex-direction: column;\r\n\r\n        align-items: center;\r\n        justify-content: center;\r\n\r\n        box-sizing: border-box;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   LIGHTBOX CLOSE\r\n   ========================================================= *\/\r\n\r\n    .tp-lb-close {\r\n        position: absolute;\r\n\r\n        top: -10px;\r\n        right: -5px;\r\n\r\n        width: 46px;\r\n        height: 46px;\r\n\r\n        border: 0;\r\n        border-radius: 50%;\r\n\r\n        background: #fff;\r\n        color: #111;\r\n\r\n        font-size: 27px;\r\n        line-height: 1;\r\n\r\n        cursor: pointer;\r\n\r\n        z-index: 20;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   LIGHTBOX IMAGE AREA\r\n   ========================================================= *\/\r\n\r\n    .tp-lb-image-area {\r\n        position: relative;\r\n\r\n        width: 100%;\r\n        height: calc(100% - 75px);\r\n\r\n        display: flex;\r\n\r\n        align-items: center;\r\n        justify-content: center;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   LIGHTBOX IMAGE\r\n   ========================================================= *\/\r\n\r\n    #tp-lightbox-image {\r\n        max-width: 88%;\r\n        max-height: 100%;\r\n\r\n        width: auto;\r\n        height: auto;\r\n\r\n        display: block;\r\n\r\n        object-fit: contain;\r\n\r\n        user-select: none;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   LIGHTBOX ARROWS\r\n   ========================================================= *\/\r\n\r\n    .tp-lb-arrow {\r\n        position: absolute;\r\n\r\n        top: 50%;\r\n\r\n        transform: translateY(-50%);\r\n\r\n        width: 52px;\r\n        height: 52px;\r\n\r\n        border: 0;\r\n        border-radius: 50%;\r\n\r\n        background: rgba(255, 255, 255, .95);\r\n        color: #111;\r\n\r\n        font-size: 30px;\r\n\r\n        display: flex;\r\n\r\n        align-items: center;\r\n        justify-content: center;\r\n\r\n        cursor: pointer;\r\n\r\n        z-index: 10;\r\n\r\n        transition: .2s ease;\r\n    }\r\n\r\n    .tp-lb-arrow:hover {\r\n        background: #111;\r\n        color: #fff;\r\n    }\r\n\r\n    .tp-lb-prev {\r\n        left: 10px;\r\n    }\r\n\r\n    .tp-lb-next {\r\n        right: 10px;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   LIGHTBOX TITLE\r\n   ========================================================= *\/\r\n\r\n    #tp-lightbox-title {\r\n        color: #fff;\r\n\r\n        font-size: 17px;\r\n        font-weight: 600;\r\n\r\n        margin-top: 12px;\r\n\r\n        text-align: center;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   LIGHTBOX DOTS\r\n   ========================================================= *\/\r\n\r\n    #tp-lightbox-dots {\r\n        display: flex;\r\n\r\n        align-items: center;\r\n        justify-content: center;\r\n\r\n        gap: 8px;\r\n\r\n        margin-top: 12px;\r\n    }\r\n\r\n    .tp-lb-dot {\r\n        width: 9px;\r\n        height: 9px;\r\n\r\n        padding: 0;\r\n\r\n        border: 0;\r\n        border-radius: 50%;\r\n\r\n        background: rgba(255, 255, 255, .45);\r\n\r\n        cursor: pointer;\r\n    }\r\n\r\n    .tp-lb-dot.active {\r\n        background: #fff;\r\n        transform: scale(1.25);\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   TABLET\r\n   ========================================================= *\/\r\n\r\n    @media (max-width: 900px) {\r\n\r\n        #jass-product-gallery {\r\n            max-width: 100%;\r\n            padding: 30px 25px;\r\n\r\n            grid-template-columns: 1fr;\r\n\r\n            gap: 55px;\r\n        }\r\n\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   MOBILE\r\n   ========================================================= *\/\r\n\r\n    @media (max-width: 600px) {\r\n\r\n        #jass-product-gallery {\r\n            width: 100%;\r\n            max-width: 100%;\r\n\r\n            padding: 20px 15px;\r\n\r\n            grid-template-columns: 1fr;\r\n\r\n            gap: 45px;\r\n        }\r\n\r\n        .tp-product-title {\r\n            font-size: 21px;\r\n            line-height: 26px;\r\n        }\r\n\r\n        .tp-product-description {\r\n            font-size: 14px;\r\n            line-height: 22px;\r\n        }\r\n\r\n        .tp-thumbnail {\r\n            flex-basis: 65px;\r\n\r\n            width: 65px;\r\n            height: 65px;\r\n        }\r\n\r\n        .tp-thumb-arrow {\r\n            flex-basis: 32px;\r\n\r\n            width: 32px;\r\n            height: 42px;\r\n        }\r\n\r\n        #tp-lightbox {\r\n            padding: 15px;\r\n        }\r\n\r\n        .tp-lightbox-inner {\r\n            width: 100%;\r\n            height: 90vh;\r\n        }\r\n\r\n        #tp-lightbox-image {\r\n            max-width: 92%;\r\n            max-height: 85%;\r\n        }\r\n\r\n        .tp-lb-arrow {\r\n            width: 42px;\r\n            height: 42px;\r\n\r\n            font-size: 24px;\r\n        }\r\n\r\n        .tp-lb-prev {\r\n            left: 0;\r\n        }\r\n\r\n        .tp-lb-next {\r\n            right: 0;\r\n        }\r\n\r\n        .tp-lb-close {\r\n            top: 0;\r\n            right: 0;\r\n        }\r\n\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   TOUCH DEVICES\r\n   ========================================================= *\/\r\n\r\n    @media (hover: none) {\r\n\r\n        .tp-thumbnail:hover {\r\n            transform: none;\r\n        }\r\n\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   PREVENT ELEMENTOR IMAGE LINKS FROM INTERFERING\r\n   ========================================================= *\/\r\n\r\n    .tp-thumbnail a {\r\n        display: block;\r\n        width: 100%;\r\n        height: 100%;\r\n    }\r\n\r\n    .tp-thumbnail a,\r\n    .tp-thumbnail a:hover {\r\n        text-decoration: none !important;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   IMAGE LOADING\r\n   ========================================================= *\/\r\n\r\n    .tp-main-image,\r\n    .tp-thumbnail img {\r\n        -webkit-user-drag: none;\r\n    }\r\n\r\n\r\n    \/* =========================================================\r\n   HIDE SCROLLBAR\r\n   ========================================================= *\/\r\n\r\n    .tp-thumbnails::-webkit-scrollbar {\r\n        display: none;\r\n    }\r\n\r\n    .tp-thumbnails {\r\n        scrollbar-width: none;\r\n    }\r\n<\/style>\r\n\r\n\r\n<!-- =========================================================\r\n     MAIN PRODUCT CONTAINER\r\n\r\n     IMPORTANT:\r\n     Use ONE jass-product-gallery container.\r\n\r\n     Add as many .tp-product-card elements as required.\r\n     ========================================================= -->\r\n\r\n<div id=\"jass-product-gallery\">\r\n\r\n\r\n    <!-- =====================================================\r\n         PRODUCT 1\r\n         3K Paddle\r\n         ===================================================== -->\r\n\r\n    <div class=\"tp-product-card\">\r\n\r\n        <div class=\"tp-gallery\">\r\n\r\n\r\n            <!-- MAIN IMAGE -->\r\n\r\n            <div class=\"tp-main-image-box\" data-action=\"lightbox\">\r\n\r\n                <img class=\"tp-main-image\" data-main-image\r\n                    src=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-1.jpg\"\r\n                    data-original=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-1.jpg\"\r\n                    alt=\"\" loading=\"eager\" decoding=\"async\">\r\n\r\n            <\/div>\r\n\r\n\r\n            <!-- THUMBNAILS -->\r\n\r\n            <div class=\"tp-thumbnail-area\">\r\n\r\n                <button type=\"button\" class=\"tp-thumb-arrow tp-prev\" data-direction=\"-1\"\r\n                    aria-label=\"Previous image\">\u2039<\/button>\r\n\r\n\r\n                <div class=\"tp-thumbnails\">\r\n\r\n\r\n                    <button type=\"button\" class=\"tp-thumbnail active\" data-index=\"0\"\r\n                        data-original=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-1.jpg\">\r\n\r\n                        <img decoding=\"async\" src=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-1.jpg\"\r\n                            alt=\"\" loading=\"eager\">\r\n\r\n                    <\/button>\r\n\r\n\r\n                    <button type=\"button\" class=\"tp-thumbnail\" data-index=\"1\"\r\n                        data-original=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-5.jpg\">\r\n\r\n                        <img decoding=\"async\" src=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-5.jpg\"\r\n                            alt=\"\" loading=\"eager\">\r\n\r\n                    <\/button>\r\n\r\n\r\n                    <button type=\"button\" class=\"tp-thumbnail\" data-index=\"2\"\r\n                        data-original=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-7.jpg\">\r\n\r\n                        <img decoding=\"async\" src=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-7.jpg\"\r\n                            alt=\"\" loading=\"eager\">\r\n                    <\/button>\r\n                <\/div>\r\n\r\n\r\n                <button type=\"button\" class=\"tp-thumb-arrow tp-next\" data-direction=\"1\"\r\n                    aria-label=\"Next image\">\u203a<\/button>\r\n\r\n            <\/div>\r\n\r\n\r\n            <!-- PRODUCT INFORMATION -->\r\n\r\n            <div class=\"tp-product-info\">\r\n\r\n                <h2 class=\"tp-product-title\">\r\n                    3K Carbon\r\n                <\/h2>\r\n                <h4 class=\"tp-product-subtitle\">Precision. Feel. Control.<\/h4>\r\n                <div class=\"tp-product-description\">\r\n\r\n                    <p style=\"padding: 0px;\">\r\n                        Our 3K Carbon racket is designed for players who value exceptional feel and precise shot-making.\r\n                    <\/p>\r\n                    <p style=\"padding: 0px;\">\r\n                        The 3K carbon construction provides a responsive connection between player and racket, giving\r\n                        you the confidence to place your shots exactly where you want them.<\/p>\r\n                    <p style=\"padding: 0px;\">Whether you're controlling the tempo from the back of the court or\r\n                        constructing the perfect point, the 3K Carbon delivers a refined combination of touch, control\r\n                        and responsiveness.\r\n                    <\/p>\r\n\r\n                <\/div>\r\n\r\n            <\/div>\r\n\r\n\r\n            <a class=\"tp-enquiry-button\" target=\"_blank\" rel=\"noopener\"\r\n                href=\"https:\/\/wa.me\/447595323331?text=Hello%2C%20I%20am%20interested%20in%203K%20Padel%20racket\">\r\n                ENQUIRE ABOUT THIS PADEL RACKET\r\n            <\/a>\r\n\r\n\r\n        <\/div>\r\n\r\n    <\/div>\r\n\r\n    <!-- =====================================================\r\n         PRODUCT 2\r\n        12K Paddle\r\n         ===================================================== -->\r\n\r\n    <div class=\"tp-product-card\">\r\n\r\n        <div class=\"tp-gallery\">\r\n\r\n\r\n            <!-- MAIN IMAGE -->\r\n\r\n            <div class=\"tp-main-image-box\" data-action=\"lightbox\">\r\n\r\n                <img class=\"tp-main-image\" data-main-image\r\n                    src=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-2.jpg\"\r\n                    data-original=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-2.jpg\"\r\n                    alt=\"\" loading=\"eager\" decoding=\"async\">\r\n\r\n            <\/div>\r\n\r\n\r\n            <!-- THUMBNAILS -->\r\n\r\n            <div class=\"tp-thumbnail-area\">\r\n\r\n                <button type=\"button\" class=\"tp-thumb-arrow tp-prev\" data-direction=\"-1\"\r\n                    aria-label=\"Previous image\">\u2039<\/button>\r\n\r\n\r\n                <div class=\"tp-thumbnails\">\r\n\r\n\r\n                    <button type=\"button\" class=\"tp-thumbnail active\" data-index=\"0\"\r\n                        data-original=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-2.jpg\">\r\n\r\n                        <img decoding=\"async\" src=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-2.jpg\"\r\n                            alt=\"\" loading=\"eager\">\r\n\r\n                    <\/button>\r\n\r\n\r\n                    <button type=\"button\" class=\"tp-thumbnail\" data-index=\"1\"\r\n                        data-original=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-4.jpg\">\r\n\r\n                        <img decoding=\"async\" src=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-4.jpg\"\r\n                            alt=\"\" loading=\"eager\">\r\n\r\n                    <\/button>\r\n\r\n\r\n                    <button type=\"button\" class=\"tp-thumbnail\" data-index=\"2\"\r\n                        data-original=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-7.jpg\">\r\n\r\n                        <img decoding=\"async\" src=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-7.jpg\"\r\n                            alt=\"\" loading=\"eager\">\r\n\r\n                    <\/button>\r\n                <\/div>\r\n\r\n\r\n                <button type=\"button\" class=\"tp-thumb-arrow tp-next\" data-direction=\"1\"\r\n                    aria-label=\"Next image\">\u203a<\/button>\r\n\r\n            <\/div>\r\n\r\n\r\n            <!-- PRODUCT INFORMATION -->\r\n\r\n            <div class=\"tp-product-info\">\r\n\r\n                <h2 class=\"tp-product-title\">\r\n                    12K Carbon\r\n                <\/h2>\r\n                <h2 class=\"tp-product-subtitle\">Power. Precision. Performance.<\/h4>\r\n                    <div class=\"tp-product-description\">\r\n\r\n                        <p style=\"padding: 0px;\">\r\n                            Stepping up in carbon technology, our <b>12K Carbon<\/b> racket is engineered for players\r\n                            looking\r\n                            to combine control with increased power and stability.\r\n                        <\/p>\r\n                        <p style=\"padding: 0px;\">\r\n                            The 12K carbon construction provides a more substantial performance platform, helping\r\n                            players\r\n                            generate confident, aggressive shots while maintaining the control required to dictate\r\n                            rallies.\r\n                        <\/p>\r\n                        <p style=\"padding: 0px;\">It's a racket designed for the player who wants to <b>attack with\r\n                                confidence without sacrificing precision.<\/b>\r\n                        <\/p>\r\n\r\n                    <\/div>\r\n\r\n            <\/div>\r\n\r\n\r\n            <a class=\"tp-enquiry-button\" target=\"_blank\" rel=\"noopener\"\r\n                href=\"https:\/\/wa.me\/447595323331?text=Hello%2C%20I%20am%20interested%20in%2012k%20Padel%20Racket\">\r\n                ENQUIRE ABOUT THIS PADEL RACKET\r\n            <\/a>\r\n\r\n\r\n        <\/div>\r\n\r\n    <\/div>\r\n\r\n    <!-- =====================================================\r\n         PRODUCT 3\r\n        18k padel rackets\r\n         ===================================================== -->\r\n\r\n    <div class=\"tp-product-card\">\r\n\r\n        <div class=\"tp-gallery\">\r\n\r\n\r\n            <div class=\"tp-main-image-box\" data-action=\"lightbox\">\r\n\r\n                <img class=\"tp-main-image\" data-main-image\r\n                    src=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-3.jpg\"\r\n                    data-original=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-3.jpg\"\r\n                    alt=\"\" loading=\"eager\" decoding=\"async\">\r\n\r\n            <\/div>\r\n\r\n\r\n            <div class=\"tp-thumbnail-area\">\r\n\r\n                <button type=\"button\" class=\"tp-thumb-arrow tp-prev\" data-direction=\"-1\"\r\n                    aria-label=\"Previous image\">\u2039<\/button>\r\n\r\n\r\n                <div class=\"tp-thumbnails\">\r\n\r\n\r\n                    <button type=\"button\" class=\"tp-thumbnail active\" data-index=\"0\"\r\n                        data-original=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-3.jpg\">\r\n\r\n                        <img decoding=\"async\" src=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-3.jpg\"\r\n                            alt=\"\" loading=\"eager\">\r\n\r\n                    <\/button>\r\n\r\n\r\n                    <button type=\"button\" class=\"tp-thumbnail\" data-index=\"1\"\r\n                        data-original=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-6.jpg\">\r\n\r\n                        <img decoding=\"async\" src=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-6.jpg\"\r\n                            alt=\"\" loading=\"eager\">\r\n\r\n                    <\/button>\r\n\r\n\r\n                    <button type=\"button\" class=\"tp-thumbnail\" data-index=\"2\"\r\n                        data-original=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-7.jpg\">\r\n\r\n                        <img decoding=\"async\" src=\"https:\/\/jassportsdistribution.co.uk\/wp-content\/uploads\/2026\/09\/Padel-rackets_750-x-750_-7.jpg\"\r\n                            alt=\"\" loading=\"eager\">\r\n\r\n                    <\/button>\r\n\r\n\r\n\r\n\r\n                <\/div>\r\n\r\n\r\n                <button type=\"button\" class=\"tp-thumb-arrow tp-next\" data-direction=\"1\"\r\n                    aria-label=\"Next image\">\u203a<\/button>\r\n\r\n            <\/div>\r\n\r\n\r\n            <div class=\"tp-product-info\">\r\n\r\n                <h2 class=\"tp-product-title\">\r\n                    18K Carbon <\/h2>\r\n                <h2 class=\"tp-product-subtitle\">\r\n                    Ultimate Performance. Uncompromising Quality.\r\n                    <\/h4>\r\n\r\n                    <div class=\"tp-product-description\">\r\n\r\n                        <p style=\"padding: 0px;\">\r\n                            At the top of the JAS PADEL carbon range sits our <b>18K Carbon<\/b> racket.\r\n                        <\/p>\r\n                        <p style=\"padding: 0px;\">\r\n                            Designed for players who expect the very best from their equipment, the 18K represents the\r\n                            pinnacle of our carbon range \u2014 combining premium materials, refined construction and\r\n                            performance-focused design.<\/p>\r\n                        <p style=\"padding: 0px;\">Every aspect is about creating a racket that feels as exceptional in\r\n                            your\r\n                            hands as it looks on court.<\/b>\r\n                        <p style=\"padding: 0px;\">The result is a premium playing experience for serious players who\r\n                            demand\r\n                            <b>performance without compromise.<\/b>\r\n                        <\/p>\r\n                        <\/p>\r\n\r\n                    <\/div>\r\n\r\n            <\/div>\r\n\r\n\r\n            <a class=\"tp-enquiry-button\" target=\"_blank\" rel=\"noopener\"\r\n                href=\"https:\/\/wa.me\/447595323331?text=Hello%2C%20I%20am%20interested%20in%2018K%20Padel%20Racket\">\r\n                ENQUIRE ABOUT THIS Padel Racket\r\n            <\/a>\r\n\r\n\r\n        <\/div>\r\n\r\n    <\/div>\r\n\r\n\r\n\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<!-- =========================================================\r\n     LIGHTBOX\r\n     ========================================================= -->\r\n\r\n<div id=\"tp-lightbox\" aria-hidden=\"true\">\r\n\r\n    <div class=\"tp-lightbox-inner\">\r\n\r\n        <button type=\"button\" class=\"tp-lb-close\" aria-label=\"Close\">\u00d7<\/button>\r\n\r\n\r\n        <div class=\"tp-lb-image-area\">\r\n\r\n            <button type=\"button\" class=\"tp-lb-arrow tp-lb-prev\" aria-label=\"Previous image\">\u2039<\/button>\r\n\r\n\r\n            <img decoding=\"async\" id=\"tp-lightbox-image\" src=\"\" alt=\"\">\r\n\r\n\r\n            <button type=\"button\" class=\"tp-lb-arrow tp-lb-next\" aria-label=\"Next image\">\u203a<\/button>\r\n\r\n        <\/div>\r\n\r\n\r\n        <div id=\"tp-lightbox-title\"><\/div>\r\n\r\n        <div id=\"tp-lightbox-dots\"><\/div>\r\n\r\n    <\/div>\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<script>\r\n\r\n    (function () {\r\n\r\n        \"use strict\";\r\n\r\n\r\n        \/* =====================================================\r\n           GENERIC GALLERY\r\n    \r\n           IMPORTANT:\r\n    \r\n           There is NO product database here.\r\n    \r\n           Every .tp-product-card is automatically detected.\r\n    \r\n           Each card manages only its own images.\r\n           ===================================================== *\/\r\n\r\n\r\n        const root = document.getElementById(\"jass-product-gallery\");\r\n\r\n        if (!root) {\r\n            return;\r\n        }\r\n\r\n\r\n        let lightbox = document.getElementById(\"tp-lightbox\");\r\n\r\n        let lightboxImage =\r\n            document.getElementById(\"tp-lightbox-image\");\r\n\r\n        let lightboxTitle =\r\n            document.getElementById(\"tp-lightbox-title\");\r\n\r\n        let lightboxDots =\r\n            document.getElementById(\"tp-lightbox-dots\");\r\n\r\n        let currentCard = null;\r\n\r\n        let currentIndex = 0;\r\n\r\n\r\n        \/* =====================================================\r\n           GET ORIGINAL URL\r\n    \r\n           Priority:\r\n    \r\n           1. data-original on thumbnail\r\n           2. data-original on image\r\n           3. normal image src\r\n    \r\n           The explicit data-original URL is always preferred.\r\n           ===================================================== *\/\r\n\r\n        function getOriginalUrl(element) {\r\n\r\n            if (!element) {\r\n                return \"\";\r\n            }\r\n\r\n\r\n            \/* Direct data-original *\/\r\n\r\n            let url =\r\n                element.getAttribute(\"data-original\");\r\n\r\n            if (url) {\r\n                return url.trim();\r\n            }\r\n\r\n\r\n            \/* Image inside element *\/\r\n\r\n            const image =\r\n                element.querySelector(\"img\");\r\n\r\n            if (image) {\r\n\r\n                url =\r\n                    image.getAttribute(\"data-original\");\r\n\r\n                if (url) {\r\n                    return url.trim();\r\n                }\r\n\r\n            }\r\n\r\n\r\n            \/* Normal image src *\/\r\n\r\n            if (image && image.currentSrc) {\r\n                return image.currentSrc;\r\n            }\r\n\r\n            if (image && image.src) {\r\n                return image.src;\r\n            }\r\n\r\n\r\n            return \"\";\r\n        }\r\n\r\n\r\n        \/* =====================================================\r\n           GET THUMBNAILS FOR ONE PRODUCT\r\n           ===================================================== *\/\r\n\r\n        function getThumbnails(card) {\r\n\r\n            return Array.from(\r\n                card.querySelectorAll(\".tp-thumbnail\")\r\n            );\r\n\r\n        }\r\n\r\n\r\n        \/* =====================================================\r\n           SET ACTIVE THUMBNAIL\r\n           ===================================================== *\/\r\n\r\n        function setActiveThumbnail(card, index) {\r\n\r\n            const thumbnails =\r\n                getThumbnails(card);\r\n\r\n\r\n            thumbnails.forEach(function (thumb, i) {\r\n\r\n                if (i === index) {\r\n\r\n                    thumb.classList.add(\"active\");\r\n\r\n                } else {\r\n\r\n                    thumb.classList.remove(\"active\");\r\n\r\n                }\r\n\r\n            });\r\n\r\n        }\r\n\r\n\r\n        \/* =====================================================\r\n           LOAD MAIN IMAGE\r\n    \r\n           No API.\r\n           No WordPress lookup.\r\n           No Elementor thumbnail conversion.\r\n           ===================================================== *\/\r\n\r\n        function setMainImage(card, index) {\r\n\r\n            const thumbnails =\r\n                getThumbnails(card);\r\n\r\n            const mainImage =\r\n                card.querySelector(\"[data-main-image]\");\r\n\r\n\r\n            if (!mainImage || !thumbnails.length) {\r\n                return;\r\n            }\r\n\r\n\r\n            \/* Keep index inside range *\/\r\n\r\n            if (index < 0) {\r\n                index = thumbnails.length - 1;\r\n            }\r\n\r\n            if (index >= thumbnails.length) {\r\n                index = 0;\r\n            }\r\n\r\n\r\n            const thumbnail =\r\n                thumbnails[index];\r\n\r\n\r\n            const originalUrl =\r\n                getOriginalUrl(thumbnail);\r\n\r\n\r\n            if (!originalUrl) {\r\n\r\n                console.warn(\r\n                    \"Jass Gallery: No data-original URL found.\",\r\n                    thumbnail\r\n                );\r\n\r\n                return;\r\n            }\r\n\r\n\r\n            card.dataset.currentIndex = index;\r\n\r\n\r\n            setActiveThumbnail(\r\n                card,\r\n                index\r\n            );\r\n\r\n\r\n            \/*\r\n             * Remove Elementor responsive attributes.\r\n             *\r\n             * This is important because Elementor may otherwise\r\n             * replace our full-size URL with a generated thumbnail.\r\n             *\/\r\n\r\n            mainImage.removeAttribute(\"srcset\");\r\n            mainImage.removeAttribute(\"sizes\");\r\n\r\n            mainImage.setAttribute(\r\n                \"loading\",\r\n                \"eager\"\r\n            );\r\n\r\n\r\n            \/*\r\n             * Load image first.\r\n             *\r\n             * This prevents the main image from flashing\r\n             * between different thumbnail sizes.\r\n             *\/\r\n\r\n            const preload =\r\n                new Image();\r\n\r\n\r\n            preload.onload = function () {\r\n\r\n                mainImage.style.opacity = \"0.35\";\r\n\r\n\r\n                requestAnimationFrame(function () {\r\n\r\n                    mainImage.src =\r\n                        originalUrl;\r\n\r\n\r\n                    mainImage.removeAttribute(\"srcset\");\r\n                    mainImage.removeAttribute(\"sizes\");\r\n\r\n\r\n                    requestAnimationFrame(function () {\r\n\r\n                        mainImage.style.opacity = \"1\";\r\n\r\n                    });\r\n\r\n                });\r\n\r\n            };\r\n\r\n\r\n            preload.onerror = function () {\r\n\r\n                \/*\r\n                 * Still use the URL if browser preload fails.\r\n                 *\/\r\n\r\n                mainImage.src =\r\n                    originalUrl;\r\n\r\n                mainImage.removeAttribute(\"srcset\");\r\n                mainImage.removeAttribute(\"sizes\");\r\n\r\n                mainImage.style.opacity = \"1\";\r\n\r\n            };\r\n\r\n\r\n            preload.src =\r\n                originalUrl;\r\n\r\n        }\r\n\r\n\r\n        \/* =====================================================\r\n           PRELOAD PRODUCT IMAGES\r\n    \r\n           Only the images belonging to the product card\r\n           are preloaded.\r\n    \r\n           This means adding many products does not create\r\n           one giant global image list.\r\n           ===================================================== *\/\r\n\r\n        function preloadProductImages(card) {\r\n\r\n            const thumbnails =\r\n                getThumbnails(card);\r\n\r\n\r\n            thumbnails.forEach(function (thumb, index) {\r\n\r\n                const url =\r\n                    getOriginalUrl(thumb);\r\n\r\n\r\n                if (!url) {\r\n                    return;\r\n                }\r\n\r\n\r\n                \/*\r\n                 * First 3 images are loaded immediately.\r\n                 * Remaining images are allowed to load normally.\r\n                 *\/\r\n\r\n                if (index < 3) {\r\n\r\n                    const image =\r\n                        new Image();\r\n\r\n                    image.src = url;\r\n\r\n                }\r\n\r\n            });\r\n\r\n        }\r\n\r\n\r\n        \/* =====================================================\r\n           THUMBNAIL HORIZONTAL SCROLL\r\n    \r\n           The arrows scroll thumbnails without changing\r\n           the product itself.\r\n           ===================================================== *\/\r\n\r\n        \/* =====================================================\r\n       THUMBNAIL PREVIOUS \/ NEXT NAVIGATION\r\n       ===================================================== *\/\r\n\r\n        function scrollThumbnails(card, direction) {\r\n\r\n            const thumbnails = getThumbnails(card);\r\n\r\n            if (!thumbnails.length) {\r\n                return;\r\n            }\r\n\r\n            \/* Get current image *\/\r\n            let currentIndex = parseInt(\r\n                card.dataset.currentIndex || \"0\",\r\n                10\r\n            );\r\n\r\n            if (isNaN(currentIndex)) {\r\n                currentIndex = 0;\r\n            }\r\n\r\n            \/* Move to previous \/ next image *\/\r\n            currentIndex += direction;\r\n\r\n            \/* Loop from last \u2192 first *\/\r\n            if (currentIndex < 0) {\r\n                currentIndex = thumbnails.length - 1;\r\n            }\r\n\r\n            \/* Loop from first \u2192 last *\/\r\n            if (currentIndex >= thumbnails.length) {\r\n                currentIndex = 0;\r\n            }\r\n\r\n            \/* Change the main image *\/\r\n            setMainImage(\r\n                card,\r\n                currentIndex\r\n            );\r\n\r\n            \/* Bring active thumbnail into view *\/\r\n            const activeThumb =\r\n                thumbnails[currentIndex];\r\n\r\n            if (activeThumb) {\r\n\r\n                activeThumb.scrollIntoView({\r\n                    behavior: \"smooth\",\r\n                    block: \"nearest\",\r\n                    inline: \"center\"\r\n                });\r\n\r\n            }\r\n\r\n        }\r\n\r\n\r\n        \/* =====================================================\r\n           GET PRODUCT TITLE\r\n           ===================================================== *\/\r\n\r\n        function getProductTitle(card) {\r\n\r\n            const title =\r\n                card.querySelector(\".tp-product-title\");\r\n\r\n\r\n            if (!title) {\r\n                return \"\";\r\n            }\r\n\r\n\r\n            return title.textContent.trim();\r\n\r\n        }\r\n\r\n\r\n        \/* =====================================================\r\n           OPEN LIGHTBOX\r\n           ===================================================== *\/\r\n\r\n        function openLightbox(card, index) {\r\n\r\n            if (!lightbox) {\r\n                return;\r\n            }\r\n\r\n\r\n            currentCard =\r\n                card;\r\n\r\n\r\n            const thumbnails =\r\n                getThumbnails(card);\r\n\r\n\r\n            if (!thumbnails.length) {\r\n                return;\r\n            }\r\n\r\n\r\n            if (index < 0) {\r\n                index = 0;\r\n            }\r\n\r\n\r\n            if (index >= thumbnails.length) {\r\n                index =\r\n                    thumbnails.length - 1;\r\n            }\r\n\r\n\r\n            currentIndex =\r\n                index;\r\n\r\n\r\n            lightbox.classList.add(\"active\");\r\n\r\n            lightbox.setAttribute(\r\n                \"aria-hidden\",\r\n                \"false\"\r\n            );\r\n\r\n\r\n            document.body.style.overflow =\r\n                \"hidden\";\r\n\r\n\r\n            updateLightbox();\r\n\r\n        }\r\n\r\n\r\n        \/* =====================================================\r\n           UPDATE LIGHTBOX\r\n           ===================================================== *\/\r\n\r\n        function updateLightbox() {\r\n\r\n            if (!currentCard) {\r\n                return;\r\n            }\r\n\r\n\r\n            const thumbnails =\r\n                getThumbnails(currentCard);\r\n\r\n\r\n            if (!thumbnails.length) {\r\n                return;\r\n            }\r\n\r\n\r\n            if (currentIndex < 0) {\r\n                currentIndex =\r\n                    thumbnails.length - 1;\r\n            }\r\n\r\n\r\n            if (currentIndex >= thumbnails.length) {\r\n                currentIndex = 0;\r\n            }\r\n\r\n\r\n            const thumb =\r\n                thumbnails[currentIndex];\r\n\r\n\r\n            const url =\r\n                getOriginalUrl(thumb);\r\n\r\n\r\n            if (!url) {\r\n                return;\r\n            }\r\n\r\n\r\n            \/*\r\n             * Update main image too.\r\n             *\r\n             * This keeps lightbox and main gallery synchronized.\r\n             *\/\r\n\r\n            setMainImage(\r\n                currentCard,\r\n                currentIndex\r\n            );\r\n\r\n\r\n            \/*\r\n             * LIGHTBOX ALWAYS USES ORIGINAL URL.\r\n             *\/\r\n\r\n            lightboxImage.src =\r\n                url;\r\n\r\n\r\n            lightboxImage.removeAttribute(\r\n                \"srcset\"\r\n            );\r\n\r\n\r\n            lightboxImage.removeAttribute(\r\n                \"sizes\"\r\n            );\r\n\r\n\r\n            lightboxImage.alt =\r\n                getProductTitle(currentCard);\r\n\r\n\r\n            if (lightboxTitle) {\r\n\r\n                lightboxTitle.textContent =\r\n                    getProductTitle(currentCard) +\r\n                    \"  \u2022  \" +\r\n                    (currentIndex + 1) +\r\n                    \" \/ \" +\r\n                    thumbnails.length;\r\n\r\n            }\r\n\r\n\r\n            updateDots(\r\n                thumbnails.length\r\n            );\r\n\r\n        }\r\n\r\n\r\n        \/* =====================================================\r\n           LIGHTBOX DOTS\r\n           ===================================================== *\/\r\n\r\n        function updateDots(total) {\r\n\r\n            if (!lightboxDots) {\r\n                return;\r\n            }\r\n\r\n\r\n            lightboxDots.innerHTML =\r\n                \"\";\r\n\r\n\r\n            for (\r\n                let i = 0;\r\n                i < total;\r\n                i++\r\n            ) {\r\n\r\n                const dot =\r\n                    document.createElement(\"button\");\r\n\r\n\r\n                dot.type =\r\n                    \"button\";\r\n\r\n\r\n                dot.className =\r\n                    \"tp-lb-dot\";\r\n\r\n\r\n                if (i === currentIndex) {\r\n\r\n                    dot.classList.add(\r\n                        \"active\"\r\n                    );\r\n\r\n                }\r\n\r\n\r\n                dot.setAttribute(\r\n                    \"aria-label\",\r\n                    \"View image \" +\r\n                    (i + 1)\r\n                );\r\n\r\n\r\n                dot.addEventListener(\r\n                    \"click\",\r\n                    function (event) {\r\n\r\n                        event.preventDefault();\r\n\r\n                        event.stopPropagation();\r\n\r\n\r\n                        currentIndex =\r\n                            i;\r\n\r\n\r\n                        updateLightbox();\r\n\r\n                    }\r\n                );\r\n\r\n\r\n                lightboxDots.appendChild(\r\n                    dot\r\n                );\r\n\r\n            }\r\n\r\n        }\r\n\r\n\r\n        \/* =====================================================\r\n           LIGHTBOX NEXT \/ PREVIOUS\r\n           ===================================================== *\/\r\n\r\n        function lightboxChange(direction) {\r\n\r\n            if (!currentCard) {\r\n                return;\r\n            }\r\n\r\n\r\n            const thumbnails =\r\n                getThumbnails(currentCard);\r\n\r\n\r\n            if (!thumbnails.length) {\r\n                return;\r\n            }\r\n\r\n\r\n            currentIndex +=\r\n                direction;\r\n\r\n\r\n            if (currentIndex < 0) {\r\n\r\n                currentIndex =\r\n                    thumbnails.length - 1;\r\n\r\n            }\r\n\r\n\r\n            if (\r\n                currentIndex >=\r\n                thumbnails.length\r\n            ) {\r\n\r\n                currentIndex = 0;\r\n\r\n            }\r\n\r\n\r\n            updateLightbox();\r\n\r\n        }\r\n\r\n\r\n        \/* =====================================================\r\n           CLOSE LIGHTBOX\r\n           ===================================================== *\/\r\n\r\n        function closeLightbox() {\r\n\r\n            if (!lightbox) {\r\n                return;\r\n            }\r\n\r\n\r\n            lightbox.classList.remove(\r\n                \"active\"\r\n            );\r\n\r\n\r\n            lightbox.setAttribute(\r\n                \"aria-hidden\",\r\n                \"true\"\r\n            );\r\n\r\n\r\n            document.body.style.overflow =\r\n                \"\";\r\n\r\n\r\n            currentCard =\r\n                null;\r\n\r\n        }\r\n\r\n\r\n        \/* =====================================================\r\n           INITIALISE EACH PRODUCT\r\n    \r\n           This is the important part.\r\n    \r\n           Every .tp-product-card automatically works.\r\n    \r\n           There is no product list here.\r\n           ===================================================== *\/\r\n\r\n        function initialiseProducts() {\r\n\r\n            const cards =\r\n                root.querySelectorAll(\r\n                    \".tp-product-card\"\r\n                );\r\n\r\n\r\n            cards.forEach(function (card) {\r\n\r\n\r\n                \/*\r\n                 * Prevent duplicate initialisation\r\n                 * if Elementor rebuilds the widget.\r\n                 *\/\r\n\r\n                if (\r\n                    card.dataset.galleryReady ===\r\n                    \"true\"\r\n                ) {\r\n\r\n                    return;\r\n\r\n                }\r\n\r\n\r\n                card.dataset.galleryReady =\r\n                    \"true\";\r\n\r\n\r\n                const thumbnails =\r\n                    getThumbnails(card);\r\n\r\n\r\n                const mainImage =\r\n                    card.querySelector(\r\n                        \"[data-main-image]\"\r\n                    );\r\n\r\n\r\n                if (\r\n                    !mainImage ||\r\n                    !thumbnails.length\r\n                ) {\r\n\r\n                    return;\r\n\r\n                }\r\n\r\n\r\n                \/* =============================================\r\n                   MAIN IMAGE\r\n    \r\n                   Use data-original if supplied.\r\n                   ============================================= *\/\r\n\r\n                const mainOriginal =\r\n                    mainImage.getAttribute(\r\n                        \"data-original\"\r\n                    );\r\n\r\n\r\n                if (mainOriginal) {\r\n\r\n                    mainImage.src =\r\n                        mainOriginal;\r\n\r\n                    mainImage.removeAttribute(\r\n                        \"srcset\"\r\n                    );\r\n\r\n                    mainImage.removeAttribute(\r\n                        \"sizes\"\r\n                    );\r\n\r\n                }\r\n\r\n\r\n                \/* =============================================\r\n                   THUMBNAILS\r\n                   ============================================= *\/\r\n\r\n                thumbnails.forEach(\r\n                    function (thumb, index) {\r\n\r\n\r\n                        const image =\r\n                            thumb.querySelector(\r\n                                \"img\"\r\n                            );\r\n\r\n\r\n                        if (image) {\r\n\r\n                            image.setAttribute(\r\n                                \"loading\",\r\n                                \"eager\"\r\n                            );\r\n\r\n                            image.setAttribute(\r\n                                \"decoding\",\r\n                                \"async\"\r\n                            );\r\n\r\n                        }\r\n\r\n\r\n                        \/* -------------------------------------\r\n                           HOVER\r\n                           ------------------------------------- *\/\r\n\r\n                        thumb.addEventListener(\r\n                            \"mouseenter\",\r\n                            function () {\r\n\r\n                                setMainImage(\r\n                                    card,\r\n                                    index\r\n                                );\r\n\r\n                            }\r\n                        );\r\n\r\n\r\n                        \/* -------------------------------------\r\n                           CLICK\r\n    \r\n                           Useful on mobile where hover\r\n                           doesn't exist.\r\n                           ------------------------------------- *\/\r\n\r\n                        thumb.addEventListener(\r\n                            \"click\",\r\n                            function (event) {\r\n\r\n                                event.preventDefault();\r\n                                event.stopPropagation();\r\n\r\n\r\n                                setMainImage(\r\n                                    card,\r\n                                    index\r\n                                );\r\n\r\n                            }\r\n                        );\r\n\r\n\r\n                        \/* -------------------------------------\r\n                           KEYBOARD ACCESSIBILITY\r\n                           ------------------------------------- *\/\r\n\r\n                        thumb.addEventListener(\r\n                            \"focus\",\r\n                            function () {\r\n\r\n                                setMainImage(\r\n                                    card,\r\n                                    index\r\n                                );\r\n\r\n                            }\r\n                        );\r\n\r\n\r\n                    }\r\n                );\r\n\r\n\r\n                \/* =============================================\r\n                   THUMBNAIL ARROWS\r\n                   ============================================= *\/\r\n\r\n                const arrows =\r\n                    card.querySelectorAll(\r\n                        \".tp-thumb-arrow\"\r\n                    );\r\n\r\n\r\n                arrows.forEach(\r\n                    function (button) {\r\n\r\n                        button.addEventListener(\r\n                            \"click\",\r\n                            function (event) {\r\n\r\n                                event.preventDefault();\r\n                                event.stopPropagation();\r\n\r\n\r\n                                const direction =\r\n                                    parseInt(\r\n                                        button.getAttribute(\r\n                                            \"data-direction\"\r\n                                        ),\r\n                                        10\r\n                                    );\r\n\r\n\r\n                                scrollThumbnails(\r\n                                    card,\r\n                                    direction\r\n                                );\r\n\r\n                            }\r\n                        );\r\n\r\n                    }\r\n                );\r\n\r\n\r\n                \/* =============================================\r\n                   MAIN IMAGE \u2192 LIGHTBOX\r\n                   ============================================= *\/\r\n\r\n                const mainBox =\r\n                    card.querySelector(\r\n                        '[data-action=\"lightbox\"]'\r\n                    );\r\n\r\n\r\n                if (mainBox) {\r\n\r\n                    mainBox.addEventListener(\r\n                        \"click\",\r\n                        function (event) {\r\n\r\n                            event.preventDefault();\r\n                            event.stopPropagation();\r\n\r\n\r\n                            let index =\r\n                                parseInt(\r\n                                    card.dataset.currentIndex ||\r\n                                    \"0\",\r\n                                    10\r\n                                );\r\n\r\n\r\n                            if (\r\n                                isNaN(index) ||\r\n                                index < 0\r\n                            ) {\r\n\r\n                                index = 0;\r\n\r\n                            }\r\n\r\n\r\n                            openLightbox(\r\n                                card,\r\n                                index\r\n                            );\r\n\r\n                        }\r\n                    );\r\n\r\n                }\r\n\r\n\r\n                \/* =============================================\r\n                   INITIAL STATE\r\n                   ============================================= *\/\r\n\r\n                card.dataset.currentIndex =\r\n                    \"0\";\r\n\r\n\r\n                setActiveThumbnail(\r\n                    card,\r\n                    0\r\n                );\r\n\r\n\r\n                \/*\r\n                 * Preload only this product's first\r\n                 * few original images.\r\n                 *\/\r\n\r\n                preloadProductImages(\r\n                    card\r\n                );\r\n\r\n\r\n            });\r\n\r\n        }\r\n\r\n\r\n        \/* =====================================================\r\n           LIGHTBOX BUTTONS\r\n           ===================================================== *\/\r\n\r\n        function initialiseLightbox() {\r\n\r\n            if (!lightbox) {\r\n                return;\r\n            }\r\n\r\n\r\n            const closeButton =\r\n                lightbox.querySelector(\r\n                    \".tp-lb-close\"\r\n                );\r\n\r\n\r\n            const prevButton =\r\n                lightbox.querySelector(\r\n                    \".tp-lb-prev\"\r\n                );\r\n\r\n\r\n            const nextButton =\r\n                lightbox.querySelector(\r\n                    \".tp-lb-next\"\r\n                );\r\n\r\n\r\n            if (closeButton) {\r\n\r\n                closeButton.addEventListener(\r\n                    \"click\",\r\n                    function (event) {\r\n\r\n                        event.preventDefault();\r\n                        event.stopPropagation();\r\n\r\n                        closeLightbox();\r\n\r\n                    }\r\n                );\r\n\r\n            }\r\n\r\n\r\n            if (prevButton) {\r\n\r\n                prevButton.addEventListener(\r\n                    \"click\",\r\n                    function (event) {\r\n\r\n                        event.preventDefault();\r\n                        event.stopPropagation();\r\n\r\n                        lightboxChange(-1);\r\n\r\n                    }\r\n                );\r\n\r\n            }\r\n\r\n\r\n            if (nextButton) {\r\n\r\n                nextButton.addEventListener(\r\n                    \"click\",\r\n                    function (event) {\r\n\r\n                        event.preventDefault();\r\n                        event.stopPropagation();\r\n\r\n                        lightboxChange(1);\r\n\r\n                    }\r\n                );\r\n\r\n            }\r\n\r\n\r\n            \/* ---------------------------------------------\r\n               CLICK BACKGROUND TO CLOSE\r\n               --------------------------------------------- *\/\r\n\r\n            lightbox.addEventListener(\r\n                \"click\",\r\n                function (event) {\r\n\r\n                    if (\r\n                        event.target ===\r\n                        lightbox\r\n                    ) {\r\n\r\n                        closeLightbox();\r\n\r\n                    }\r\n\r\n                }\r\n            );\r\n\r\n        }\r\n\r\n\r\n        \/* =====================================================\r\n           KEYBOARD CONTROLS\r\n           ===================================================== *\/\r\n\r\n        document.addEventListener(\r\n            \"keydown\",\r\n            function (event) {\r\n\r\n                if (\r\n                    !lightbox ||\r\n                    !lightbox.classList.contains(\r\n                        \"active\"\r\n                    )\r\n                ) {\r\n\r\n                    return;\r\n\r\n                }\r\n\r\n\r\n                if (\r\n                    event.key ===\r\n                    \"Escape\"\r\n                ) {\r\n\r\n                    closeLightbox();\r\n\r\n                    return;\r\n\r\n                }\r\n\r\n\r\n                if (\r\n                    event.key ===\r\n                    \"ArrowLeft\"\r\n                ) {\r\n\r\n                    event.preventDefault();\r\n\r\n                    lightboxChange(-1);\r\n\r\n                    return;\r\n\r\n                }\r\n\r\n\r\n                if (\r\n                    event.key ===\r\n                    \"ArrowRight\"\r\n                ) {\r\n\r\n                    event.preventDefault();\r\n\r\n                    lightboxChange(1);\r\n\r\n                }\r\n\r\n            }\r\n        );\r\n\r\n\r\n        \/* =====================================================\r\n           START\r\n           ===================================================== *\/\r\n\r\n        function startGallery() {\r\n\r\n            initialiseProducts();\r\n\r\n            initialiseLightbox();\r\n\r\n        }\r\n\r\n\r\n        if (\r\n            document.readyState ===\r\n            \"loading\"\r\n        ) {\r\n\r\n            document.addEventListener(\r\n                \"DOMContentLoaded\",\r\n                startGallery\r\n            );\r\n\r\n        } else {\r\n\r\n            startGallery();\r\n\r\n        }\r\n\r\n\r\n        \/*\r\n         * Elementor can rebuild widgets after\r\n         * the initial page load.\r\n         *\/\r\n\r\n        setTimeout(\r\n            initialiseProducts,\r\n            500\r\n        );\r\n\r\n\r\n        setTimeout(\r\n            initialiseProducts,\r\n            1500\r\n        );\r\n\r\n\r\n    })();\r\n\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Padel &nbsp;&nbsp;&nbsp;Rackets Paddle &nbsp;&nbsp;&nbsp;Rackets \u2039 \u203a 3K Carbon Precision. Feel. Control. Our 3K Carbon racket is designed for players who value exceptional feel and precise shot-making. The 3K carbon construction provides a responsive connection between player and racket, giving you the confidence to place your shots exactly where you want them. Whether you&#8217;re controlling the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/homepage.php","meta":{"footnotes":""},"class_list":["post-37958","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/jassportsdistribution.co.uk\/index.php\/wp-json\/wp\/v2\/pages\/37958","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassportsdistribution.co.uk\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/jassportsdistribution.co.uk\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/jassportsdistribution.co.uk\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassportsdistribution.co.uk\/index.php\/wp-json\/wp\/v2\/comments?post=37958"}],"version-history":[{"count":74,"href":"https:\/\/jassportsdistribution.co.uk\/index.php\/wp-json\/wp\/v2\/pages\/37958\/revisions"}],"predecessor-version":[{"id":39792,"href":"https:\/\/jassportsdistribution.co.uk\/index.php\/wp-json\/wp\/v2\/pages\/37958\/revisions\/39792"}],"wp:attachment":[{"href":"https:\/\/jassportsdistribution.co.uk\/index.php\/wp-json\/wp\/v2\/media?parent=37958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}