{"id":20506,"date":"2026-10-05T21:52:42","date_gmt":"2026-10-05T21:52:42","guid":{"rendered":"https:\/\/dev.smartplug.com\/staging\/?page_id=20506"},"modified":"2026-10-05T21:56:05","modified_gmt":"2026-10-05T21:56:05","slug":"smartplug-harmonized-cord-w-smartplug-boat-side-connector-w-blunt-end-commercial","status":"publish","type":"page","link":"https:\/\/dev.smartplug.com\/staging\/smartplug-harmonized-cord-w-smartplug-boat-side-connector-w-blunt-end-commercial\/","title":{"rendered":"SmartPlug Harmonized Cord w\/ SmartPlug Boat Side Connector w\/ Blunt End &#8211; Commercial"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"20506\" class=\"elementor elementor-20506\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3bca2de e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"3bca2de\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-a6fee19 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"a6fee19\" 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-0037da4 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"0037da4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7fe139b elementor-widget elementor-widget-heading\" data-id=\"7fe139b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">SmartPlug Harmonized Cord w\/ Boat Side Connector w\/ Blunt End<\/h2>\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<div class=\"elementor-element elementor-element-88192ed e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"88192ed\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-4723124 e-grid e-con-full wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"4723124\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-75c0c77 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"75c0c77\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c0f1f6b sp-hotspot-image elementor-widget elementor-widget-html\" data-id=\"c0f1f6b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- SMARTPLUG HARMONIZED CORDSET GALLERY -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Bebas+Neue&family=Montserrat:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\n\n<div id=\"sp-harmonized-gallery\">\n    <div class=\"sp-main-view\">\n\n        <!-- =====================================================\n        FEATURES DATA\n        ===================================================== -->\n        <div class=\"sp-gallery-slide active\"\n            data-slide=\"0\"\n            data-title=\"KEY FEATURES\"\n            data-subtitle=\"Click the numbered points to explore the harmonized cord.\"\n            data-part-number=\"C32253\"\n        >\n            <div class=\"sp-product-image-wrap sp-main-product sp-hotspot-image\" style=\"\n                --image-x-desktop:0px;\n                --image-y-desktop:0px;\n                --image-scale-desktop:1.25;\n                --image-x-mobile:0px;\n                --image-y-mobile:0px;\n                --image-scale-mobile:1;\n            \">\n                <div class=\"sp-main-image-clip\">\n                    <img decoding=\"async\" src=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/06\/SmartPlug-Harmonized-Cord-w-SmartPlug-Boat-Side-Connector-w-Blunt-Ends.png\"\n                         alt=\"32 Amp 25 Meter Harmonized Cord with SmartPlug Female Boat Side Connector with Blunt End\">\n\n                    <!-- HOTSPOT 1 -->\n                    <div class=\"sp-hotspot\" tabindex=\"0\" style=\"\n                        --top:28%;\n                        --left:18%;\n                        --hotspot-x:0px;\n                        --hotspot-y:0px;\n                        --hotspot-scale-desktop:1;\n                        --hotspot-scale-mobile:.8;\n                        --tooltip-x-desktop:0px;\n                        --tooltip-y-desktop:0px;\n                        --tooltip-scale-desktop:1;\n                        --tooltip-x-mobile:50px;\n                        --tooltip-y-mobile:0px;\n                        --tooltip-scale-mobile:1;\n                        --dot-color:#DF6B30;\n                        --number-color:#ffffff;\n                        --tooltip-bg:#DF6B30;\n                        --tooltip-width:220px;\n                        --dot-size:34px;\n                        --number-size:14px;\n                    \">\n                        <div class=\"sp-dot\"><span class=\"sp-number\">1<\/span><\/div>\n                        <div class=\"sp-tooltip\">\n                            <strong>Heavy-Duty Harmonized Cable<\/strong><br>\n                            Flexible, durable cable designed for long-term marine power applications.\n                        <\/div>\n                    <\/div>\n\n                    <!-- HOTSPOT 2 -->\n                    <div class=\"sp-hotspot\" tabindex=\"0\" style=\"\n                        --top:18%;\n                        --left:68%;\n                        --hotspot-x:0px;\n                        --hotspot-y:0px;\n                        --hotspot-scale-desktop:1;\n                        --hotspot-scale-mobile:.8;\n                        --tooltip-x-desktop:0px;\n                        --tooltip-y-desktop:0px;\n                        --tooltip-scale-desktop:1;\n                        --tooltip-x-mobile:0px;\n                        --tooltip-y-mobile:0px;\n                        --tooltip-scale-mobile:1;\n                        --dot-color:#DF6B30;\n                        --number-color:#ffffff;\n                        --tooltip-bg:#DF6B30;\n                        --tooltip-width:240px;\n                        --dot-size:34px;\n                        --number-size:14px;\n                    \">\n                        <div class=\"sp-dot\"><span class=\"sp-number\">2<\/span><\/div>\n                        <div class=\"sp-tooltip\">\n                            <strong>Hassle-Free Connection<\/strong><br>\n                            Eliminates the frustration of twisting and aligning traditional shore power plugs.\n                        <\/div>\n                    <\/div>\n\n                    <!-- HOTSPOT 3 -->\n                    <div class=\"sp-hotspot\" tabindex=\"0\" style=\"\n                        --top:38%;\n                        --left:85%;\n                        --hotspot-x:0px;\n                        --hotspot-y:0px;\n                        --hotspot-scale-desktop:1;\n                        --hotspot-scale-mobile:.8;\n                        --tooltip-x-desktop:0px;\n                        --tooltip-y-desktop:0px;\n                        --tooltip-scale-desktop:1;\n                        --tooltip-x-mobile:-30px;\n                        --tooltip-y-mobile:0px;\n                        --tooltip-scale-mobile:1;\n                        --dot-color:#DF6B30;\n                        --number-color:#ffffff;\n                        --tooltip-bg:#DF6B30;\n                        --tooltip-width:240px;\n                        --dot-size:34px;\n                        --number-size:14px;\n                    \">\n                        <div class=\"sp-dot\"><span class=\"sp-number\">3<\/span><\/div>\n                        <div class=\"sp-tooltip\">\n                            <strong>Stable Electrical Contact<\/strong><br>\n                            Secure connector engagement helps maintain reliable power delivery under load.\n                        <\/div>\n                    <\/div>\n\n                    <!-- HOTSPOT 4 -->\n                    <div class=\"sp-hotspot\" tabindex=\"0\" style=\"\n                        --top:85%;\n                        --left:68%;\n                        --hotspot-x:0px;\n                        --hotspot-y:0px;\n                        --hotspot-scale-desktop:1;\n                        --hotspot-scale-mobile:.8;\n                        --tooltip-x-desktop:0px;\n                        --tooltip-y-desktop:0px;\n                        --tooltip-scale-desktop:1;\n                        --tooltip-x-mobile:0px;\n                        --tooltip-y-mobile:0px;\n                        --tooltip-scale-mobile:1;\n                        --dot-color:#DF6B30;\n                        --number-color:#ffffff;\n                        --tooltip-bg:#DF6B30;\n                        --tooltip-width:240px;\n                        --dot-size:34px;\n                        --number-size:14px;\n                    \">\n                        <div class=\"sp-dot\"><span class=\"sp-number\">4<\/span><\/div>\n                        <div class=\"sp-tooltip\">\n                            <strong>Premium Copper Conductors<\/strong><br>\n                            High-quality copper wiring helps deliver reliable and efficient power.\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"sp-slide-info\">\n                <div class=\"sp-slide-title\">KEY FEATURES<\/div>\n                <div class=\"sp-slide-subtitle\">Click the numbered points to explore the harmonized cord.<\/div>\n            <\/div>\n        <\/div>\n\n        <!-- =====================================================\n        16 AMP VARIATION\n        12.5m DATA\n        25m DATA\n        ===================================================== -->\n        <div class=\"sp-gallery-slide sp-variant-slide\"\n            data-slide=\"1\"\n            data-variant=\"16-amp\"\n            data-current-view=\"12.5m\"\n\n            data-12.5m=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/09\/16-AMP-12.5-METER-HARMONIZED-CORD-W_-SMARTPLUG-FEMALE-BOAT-SIDE-CONNECTOR-W_-BLUNT-END.png\"\n            data-25m=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/09\/16-AMP-25-METER-HARMONIZED-CORD-W_-SMARTPLUG-FEMALE-BOAT-SIDE-CONNECTOR-W_-BLUNT-END.png\"\n            data-12.5m-title=\"16 Amp Harmonized Cordset\"\n            data-12.5m-subtitle=\"12.5 meters\"\n            data-12.5m-part-number=\"C16123\"\n            data-25m-title=\"16 AMP HARMONIZED CORDSET\"\n            data-25m-subtitle=\"25 meters\"\n            data-25m-part-number=\"C16253\"\n            data-title=\"16 AMP HARMONIZED CORDSET\"\n            data-subtitle=\"12.5 meters\"\n            data-part-number=\"C16123\"\n        >\n            <div class=\"sp-variant-layout\">\n\n                <div class=\"sp-mobile-variant-title\">\n                    <div class=\"sp-slide-title\">16AMP HARMONIZED CORDSET<\/div>\n                    <div class=\"sp-slide-subtitle\">12.5 meters<\/div>\n                <\/div>\n\n                <div class=\"sp-variant-image-wrap\">\n                    <img decoding=\"async\" class=\"sp-variant-image\"\n                         src=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/09\/16-AMP-12.5-METER-HARMONIZED-CORD-W_-SMARTPLUG-FEMALE-BOAT-SIDE-CONNECTOR-W_-BLUNT-END.png\"\n                         alt=\"16 Amp 12.5 Meter Harmonized Cord\"\n                         style=\"\n                            --image-x-desktop:0px;\n                            --image-y-desktop:0px;\n                            --image-scale-desktop:1;\n                            --image-x-mobile:0px;\n                            --image-y-mobile:0px;\n                            --image-scale-mobile:1;\n                         \">\n                <\/div>\n\n                <div class=\"sp-slide-info sp-side-info\">\n                    <div class=\"sp-slide-title\">16 AMP HARMONIZED CORDSET<\/div>\n                    <div class=\"sp-slide-subtitle\">12.5 meters<\/div>\n\n                    <div class=\"sp-amp-label\">SELECT LENGTH<\/div>\n\n                    <div class=\"sp-amp-toggle\"\n                         role=\"group\"\n                         aria-label=\"16 Amp cord length\">\n                        <button type=\"button\"\n                                class=\"sp-amp-btn active\"\n                                data-view=\"12.5m\">12.5m<\/button>\n                        <button type=\"button\"\n                                class=\"sp-amp-btn\"\n                                data-view=\"25m\">25m<\/button>\n                    <\/div>\n\n                    <div class=\"sp-current-amp\" aria-live=\"polite\">\n                        Showing <strong>12.5m<\/strong>\n                    <\/div>\n\n                    <div class=\"sp-part-number\">\n                        PART NUMBER:\n                        <strong class=\"sp-part-number-value\"><\/strong>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- =====================================================\n        32 AMP VARIATION\n        15m DATA\n        25m DATA\n        ===================================================== -->\n        <div class=\"sp-gallery-slide sp-variant-slide\"\n            data-slide=\"2\"\n            data-variant=\"32-amp\"\n            data-current-view=\"15m\"\n\n            data-15m=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/09\/32-AMP-25-METER-HARMONIZED-CORD-W_-SMARTPLUG-FEMALE-BOAT-SIDE-CONNECTOR-W_-BLUNT-END.png\"\n            data-25m=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/09\/32-AMP-25-METER-HARMONIZED-CORD-W_-SMARTPLUG-FEMALE-BOAT-SIDE-CONNECTOR-W_-BLUNT-END.png\"\n            data-15m-title=\"32 AMP HARMONIZED CORDSET\"\n            data-15m-subtitle=\"15 meters\"\n            data-15m-part-number=\"C32153\"\n            data-25m-title=\"32 AMP HARMONIZED CORDSET\"\n            data-25m-subtitle=\"25 meters\"\n            data-25m-part-number=\"C32253\"\n            data-title=\"15 AMP HARMONIZED CORDSET\"\n            data-subtitle=\"15 meters\"\n            data-part-number=\"C32153\"\n        >\n            <div class=\"sp-variant-layout\">\n\n                <div class=\"sp-mobile-variant-title\">\n                    <div class=\"sp-slide-title\">32 AMP HARMONIZED CORDSET<\/div>\n                    <div class=\"sp-slide-subtitle\">15 meters<\/div>\n                <\/div>\n\n                <div class=\"sp-variant-image-wrap\">\n                    <img decoding=\"async\" class=\"sp-variant-image\"\n                         src=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/09\/32-AMP-15-METER-HARMONIZED-CORD-W_-SMARTPLUG-FEMALE-BOAT-SIDE-CONNECTOR-W_-BLUNT-END.png\"\n                         alt=\"32 Amp 15 Meter Harmonized Cord\"\n                         style=\"\n                            --image-x-desktop:0px;\n                            --image-y-desktop:0px;\n                            --image-scale-desktop:1;\n                            --image-x-mobile:0px;\n                            --image-y-mobile:0px;\n                            --image-scale-mobile:1;\n                         \">\n                <\/div>\n\n                <div class=\"sp-slide-info sp-side-info\">\n                    <div class=\"sp-slide-title\">32 AMP HARMONIZED CORDSET<\/div>\n                    <div class=\"sp-slide-subtitle\">15 meters<\/div>\n\n                    <div class=\"sp-amp-label\">SELECT LENGTH<\/div>\n\n                    <div class=\"sp-amp-toggle\"\n                         role=\"group\"\n                         aria-label=\"32 Amp cord length\">\n                        <button type=\"button\"\n                                class=\"sp-amp-btn active\"\n                                data-view=\"15m\">15m<\/button>\n                        <button type=\"button\"\n                                class=\"sp-amp-btn\"\n                                data-view=\"25m\">25m<\/button>\n                    <\/div>\n\n                    <div class=\"sp-current-amp\" aria-live=\"polite\">\n                        Showing <strong>15m<\/strong>\n                    <\/div>\n\n                    <div class=\"sp-part-number\">\n                        PART NUMBER:\n                        <strong class=\"sp-part-number-value\"><\/strong>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n    <\/div>\n\n    <!-- =========================================================\n    THUMBNAILS\n    ========================================================= -->\n    <div class=\"sp-product-selector\">\n\n        <button type=\"button\"\n                class=\"sp-thumb-nav sp-thumb-prev\"\n                aria-label=\"Previous product image\">\n            &#10094;\n        <\/button>\n\n        <div class=\"sp-thumbnails\">\n\n            <button type=\"button\"\n                    class=\"sp-thumb sp-feature-thumb active\"\n                    data-target=\"0\"\n                    aria-label=\"View Harmonized Cordset features\">\n                <span class=\"sp-thumb-image\">\n                    <img decoding=\"async\" src=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/09\/32-AMP-25-METER-HARMONIZED-CORD-W_-SMARTPLUG-FEMALE-BOAT-SIDE-CONNECTOR-W_-BLUNT-END.png\"\n                         alt=\"Harmonized Cordset Features\">\n                <\/span>\n                <span class=\"sp-thumb-label\">Features<\/span>\n            <\/button>\n\n            <button type=\"button\"\n                     class=\"sp-thumb\"\n                     data-target=\"1\"\n                     aria-label=\"View 16 Amp Harmonized Cord\">\n                <span class=\"sp-thumb-image\">\n                    <img decoding=\"async\" src=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/09\/16-AMP-12.5-METER-HARMONIZED-CORD-W_-SMARTPLUG-FEMALE-BOAT-SIDE-CONNECTOR-W_-BLUNT-END.png\"\n                         alt=\"16 Amp Harmonized Cord\">\n                <\/span>\n                <span class=\"sp-thumb-label\">16 Amp<\/span>\n            <\/button>\n\n            <button type=\"button\"\n                     class=\"sp-thumb\"\n                     data-target=\"2\"\n                     aria-label=\"View 32 Amp Harmonized Cord\">\n                <span class=\"sp-thumb-image\">\n                    <img decoding=\"async\" src=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/09\/32-AMP-25-METER-HARMONIZED-CORD-W_-SMARTPLUG-FEMALE-BOAT-SIDE-CONNECTOR-W_-BLUNT-END.png\"\n                         alt=\"32 Amp Harmonized Cord\">\n                <\/span>\n                <span class=\"sp-thumb-label\">32 Amp<\/span>\n            <\/button>\n\n        <\/div>\n\n        <button type=\"button\"\n                class=\"sp-thumb-nav sp-thumb-next\"\n                aria-label=\"Next product image\">\n            &#10095;\n        <\/button>\n\n    <\/div>\n\n    <div class=\"sp-gallery-pagination\"\n         aria-label=\"Product gallery pagination\">\n\n        <button type=\"button\"\n                class=\"sp-page-dot active\"\n                data-page=\"0\"\n                aria-label=\"Go to features\">\n        <\/button>\n\n        <button type=\"button\"\n                class=\"sp-page-dot\"\n                data-page=\"1\"\n                aria-label=\"Go to 32 Amp\">\n        <\/button>\n\n        <button type=\"button\"\n                class=\"sp-page-dot\"\n                data-page=\"2\"\n                aria-label=\"Go to 16 Amp\">\n        <\/button>\n\n    <\/div>\n<\/div>\n\n<style>\n\n\/* =========================================================\nSMARTPLUG DUAL CORDSET GALLERY\nAmazon-inspired product selector\n========================================================= *\/\n\n#sp-harmonized-gallery {\n    --sp-orange: #DF6B30;\n    --sp-dark: #1c1c1c;\n    --sp-muted: #666;\n    --sp-border: #dedede;\n    --sp-soft: #f7f7f7;\n\n    width: 100%;\n    height: 560px;\n    margin: 0 auto;\n    font-family: \"Montserrat\", sans-serif;\n    box-sizing: border-box;\n    overflow: visible;\n}\n\n#sp-harmonized-gallery *,\n#sp-harmonized-gallery *::before,\n#sp-harmonized-gallery *::after {\n    box-sizing: border-box;\n}\n\n\/* =========================================================\nMAIN VIEW\n========================================================= *\/\n\n#sp-harmonized-gallery .sp-main-view {\n    position: relative;\n    width: 100%;\n    height: 430px;\n    overflow: visible;\n}\n\n#sp-harmonized-gallery .sp-gallery-slide {\n    display: none;\n    width: 100%;\n    height: 100%;\n    position: relative;\n    overflow: visible;\n    flex-direction: column;\n    align-items: center;\n    justify-content: flex-start;\n}\n\n#sp-harmonized-gallery .sp-gallery-slide.active {\n    display: flex;\n}\n\n\/* =========================================================\nFEATURE IMAGE\n========================================================= *\/\n\n#sp-harmonized-gallery .sp-main-product {\n    position: relative;\n    width: 100%;\n    height: 400px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\n\n#sp-harmonized-gallery .sp-main-image-clip {\n    position: absolute;\n    inset: 0;\n    overflow: visible !important;\n    pointer-events: none;\n    z-index: 1;\n}\n\n#sp-harmonized-gallery .sp-main-image-clip > img {\n    width: 100%;\n    height: 100%;\n    max-width: none;\n    object-fit: contain;\n    display: block;\n    transform:\n        translate(var(--image-x-desktop), var(--image-y-desktop))\n        scale(var(--image-scale-desktop));\n    transform-origin: center center;\n    transition: transform .18s ease;\n}\n\n#sp-harmonized-gallery .sp-main-image-clip .sp-hotspot {\n    pointer-events: auto;\n}\n\n\/* =========================================================\nVARIANT IMAGE\n========================================================= *\/\n\n#sp-harmonized-gallery .sp-variant-layout {\n    width: 100%;\n    height: 100%;\n    display: grid;\n    grid-template-columns: minmax(0, 1fr) minmax(180px, .65fr);\n    align-items: center;\n    gap: 12px;\n}\n\n#sp-harmonized-gallery .sp-variant-image-wrap {\n    width: 100%;\n    height: 400px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    position: relative;\n    min-width: 0;\n}\n\n#sp-harmonized-gallery .sp-variant-image-wrap img {\n    width: 100%;\n    height: 100%;\n    object-fit: contain;\n    display: block;\n    transform:\n        translate(var(--image-x-desktop), var(--image-y-desktop))\n        scale(var(--image-scale-desktop));\n    transform-origin: center center;\n    transition: opacity .16s ease, transform .18s ease;\n}\n\n\/* =========================================================\nPRODUCT INFORMATION\n========================================================= *\/\n\n#sp-harmonized-gallery .sp-slide-info {\n    width: 100%;\n    max-width: 400px;\n    margin-top: -2px;\n    padding: 0 12px;\n    text-align: center;\n    transition: none;\n}\n\n#sp-harmonized-gallery .sp-side-info {\n    max-width: none;\n    margin: 0;\n    padding: 2px;\n    text-align: left;\n}\n\n#sp-harmonized-gallery .sp-side-info .sp-slide-title {\n    font-size: 30px;\n    font-family: \"Bebas Neue\", sans-serif;\n    font-weight: 600;\n    letter-spacing: 1.5px;\n}\n\n#sp-harmonized-gallery .sp-amp-label {\n    margin-top: 17px;\n    color: #777;\n    font-size: 11px;\n    font-weight: 700;\n    letter-spacing: .5px;\n}\n\n#sp-harmonized-gallery .sp-amp-toggle {\n    display: flex;\n    width: 100%;\n    max-width: 300px;\n    margin-top: 6px;\n    border: 1px solid #d8d8d8;\n    border-radius: 6px;\n    overflow: hidden;\n    background: #fff;\n}\n\n#sp-harmonized-gallery .sp-amp-btn {\n    flex: 1 1 50%;\n    min-height: 30px;\n    padding: 7px 10px;\n    border: 0;\n    background: #fff;\n    color: #333;\n    font-family: \"Montserrat\", sans-serif;\n    font-size: 12px;\n    font-weight: 700;\n    cursor: pointer;\n    appearance: none;\n    -webkit-appearance: none;\n    transition: background .18s ease, color .18s ease;\n}\n\n#sp-harmonized-gallery .sp-amp-btn:last-child {\n    border-right: 0;\n}\n\n#sp-harmonized-gallery .sp-amp-btn.active {\n    background: var(--sp-orange);\n    color: #fff;\n}\n\n#sp-harmonized-gallery .sp-amp-btn:disabled {\n    background: #f2f2f2;\n    color: #aaa;\n    cursor: not-allowed;\n}\n\n#sp-harmonized-gallery .sp-current-amp {\n    margin-top: 8px;\n    color: #555;\n    font-size: 12px;\n}\n\n#sp-harmonized-gallery .sp-side-info .sp-part-number {\n    margin-top: 10px;\n}\n\n#sp-harmonized-gallery .sp-mobile-variant-title {\n    display: none;\n}\n\n\n#sp-harmonized-gallery .sp-slide-title {\n    margin-top: 3px;\n    color: var(--sp-dark);\n    font-family: \"Bebas Neue\", sans-serif;\n    font-size: 25px;\n    line-height: 1;\n    letter-spacing: .4px;\n}\n\n#sp-harmonized-gallery .sp-slide-subtitle {\n    margin-top: 3px;\n    margin-bottom: 3px;\n    color: var(--sp-muted);\n    font-size: 12px;\n    font-weight: 500;\n    line-height: 1.35;\n}\n\n#sp-harmonized-gallery .sp-variant-image.is-empty {\n    visibility: hidden;\n}\n\n#sp-harmonized-gallery .sp-part-number {\n    display: inline-block;\n    margin-top: 7px;\n    color: #555;\n    font-size: 12px;\n    font-weight: 600;\n    letter-spacing: .5px;\n}\n\n#sp-harmonized-gallery .sp-part-number strong {\n    color: var(--sp-dark);\n}\n\n\/* =========================================================\nHOTSPOTS\n========================================================= *\/\n\n#sp-harmonized-gallery .sp-hotspot {\n    position: absolute;\n    z-index: 1;\n    top: var(--sp-hotspot-top-px, var(--top));\n    left: var(--sp-hotspot-left-px, var(--left));\n    transform:\n        translate(-50%, -50%)\n        scale(var(--hotspot-scale-desktop));\n    transform-origin: center center;\n    outline: none;\n    transition: top .18s ease, left .18s ease, transform .18s ease;\n}\n\n#sp-harmonized-gallery .sp-dot {\n    width: var(--dot-size, 32px);\n    height: var(--dot-size, 32px);\n    border-radius: 50%;\n    background: var(--dot-color);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    cursor: pointer;\n    box-shadow: 0 2px 8px rgba(0,0,0,.18);\n}\n\n#sp-harmonized-gallery .sp-number {\n    color: var(--number-color);\n    font-size: var(--number-size, 13px);\n    font-weight: 700;\n    line-height: 1;\n}\n\n#sp-harmonized-gallery .sp-tooltip {\n    position: absolute;\n    z-index: 81;\n    bottom: calc(100% + 7px - var(--tooltip-y-desktop));\n    left: calc(50% + var(--tooltip-x-desktop));\n    transform:\n        translateX(-50%)\n        scale(var(--tooltip-scale-desktop));\n    transform-origin: center bottom;\n    width: var(--tooltip-width, 230px);\n    padding: 10px;\n    border-radius: 7px;\n    background: var(--tooltip-bg);\n    color: #fff;\n    font-size: 10px;\n    line-height: 1.45;\n    text-align: left;\n    opacity: 0;\n    visibility: hidden;\n    transition:\n        opacity .18s ease,\n        visibility .18s ease,\n        left .18s ease,\n        bottom .18s ease,\n        transform .18s ease;\n    pointer-events: none;\n    box-shadow: 0 4px 14px rgba(0,0,0,.14);\n}\n\n#sp-harmonized-gallery .sp-hotspot:hover .sp-tooltip,\n#sp-harmonized-gallery .sp-hotspot:focus-visible .sp-tooltip,\n#sp-harmonized-gallery .sp-hotspot.is-open .sp-tooltip {\n    opacity: 1;\n    visibility: visible;\n}\n\n\/* =========================================================\nAMAZON-STYLE PRODUCT SELECTOR\n========================================================= *\/\n\n#sp-harmonized-gallery .sp-product-selector {\n    width: 100%;\n    display: flex;\n    align-items: stretch;\n    gap: 6px;\n    margin-top: 4px;\n}\n\n#sp-harmonized-gallery .sp-thumbnails {\n    flex: 1 1 auto;\n    min-width: 0;\n    display: flex;\n    align-items: stretch;\n    justify-content: center;\n    gap: 7px;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scroll-behavior: smooth;\n    scrollbar-width: none;\n    padding: 2px 0;\n}\n\n#sp-harmonized-gallery .sp-thumbnails::-webkit-scrollbar {\n    display: none;\n}\n\n#sp-harmonized-gallery .sp-thumb {\n    flex: 0 0 72px;\n    width: 72px;\n    min-height: 94px;\n    padding: 5px 5px 6px;\n    border: 1px solid var(--sp-border);\n    border-radius: 7px;\n    background: #fff;\n    cursor: pointer;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: flex-start;\n    gap: 3px;\n    appearance: none;\n    -webkit-appearance: none;\n    transition: border-color .18s ease, box-shadow .18s ease, transform .15s ease;\n}\n\n#sp-harmonized-gallery .sp-thumb:hover {\n    border-color: var(--sp-orange);\n    transform: translateY(-1px);\n}\n\n#sp-harmonized-gallery .sp-thumb.active {\n    border: 2px solid var(--sp-orange);\n    box-shadow: 0 2px 8px rgba(223,107,48,.13);\n}\n\n#sp-harmonized-gallery .sp-thumb:focus {\n    outline: none;\n}\n\n#sp-harmonized-gallery .sp-thumb:focus-visible {\n    border-color: var(--sp-orange);\n    box-shadow: 0 0 0 2px rgba(223,107,48,.18);\n}\n\n#sp-harmonized-gallery .sp-thumb-image {\n    width: 100%;\n    height: 57px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    overflow: hidden;\n    border-radius: 4px;\n    background: #fff;\n}\n\n#sp-harmonized-gallery .sp-thumb img {\n    width: 100%;\n    height: 100%;\n    object-fit: contain;\n    display: block;\n    pointer-events: none;\n}\n\n#sp-harmonized-gallery .sp-thumb-label {\n    display: block;\n    width: 100%;\n    color: var(--sp-dark);\n    font-size: 9px;\n    font-weight: 700;\n    line-height: 1.15;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n}\n\n#sp-harmonized-gallery .sp-thumb-part {\n    display: block;\n    color: #777;\n    font-size: 8px;\n    font-weight: 600;\n    line-height: 1;\n}\n\n#sp-harmonized-gallery .sp-thumb-view {\n    display: block;\n    color: #777;\n    font-size: 8px;\n    font-weight: 600;\n    line-height: 1;\n}\n\n#sp-harmonized-gallery .sp-feature-thumb .sp-thumb-part {\n    visibility: hidden;\n}\n\n\/* =========================================================\nTHUMBNAIL ARROWS\n========================================================= *\/\n\n#sp-harmonized-gallery .sp-thumb-nav {\n    display: none;\n    width: 26px;\n    min-width: 26px;\n    height: 26px;\n    align-self: center;\n    padding: 0;\n    border: 0;\n    border-radius: 50%;\n    background: #fff;\n    color: #222;\n    font-family: Arial, sans-serif;\n    font-size: 16px;\n    line-height: 26px;\n    text-align: center;\n    cursor: pointer;\n    appearance: none;\n    -webkit-appearance: none;\n}\n\n\/* =========================================================\nPAGINATION\n========================================================= *\/\n\n#sp-harmonized-gallery .sp-gallery-pagination {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    gap: 6px;\n    margin-top: 7px;\n}\n\n#sp-harmonized-gallery .sp-page-dot {\n    width: 6px;\n    height: 6px;\n    padding: 0;\n    border: 0;\n    border-radius: 50%;\n    background: #c7c7c7;\n    cursor: pointer;\n    appearance: none;\n    -webkit-appearance: none;\n    transition: background .2s ease, transform .2s ease;\n}\n\n#sp-harmonized-gallery .sp-page-dot:hover,\n#sp-harmonized-gallery .sp-page-dot.active {\n    background: var(--sp-orange);\n}\n\n#sp-harmonized-gallery .sp-page-dot.active {\n    transform: scale(1.25);\n}\n\n\/* =========================================================\nFULL SCREEN VIEW + HOVER ZOOM\n========================================================= *\/\n\n#sp-harmonized-gallery .sp-fullscreen-trigger {\n    position: static;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    margin-top: 7px;\n    transform: none;\n    z-index: 10;\n    border: 1px solid #d7d7d7;\n    border-radius: 4px;\n    background: #fff;\n    color: #333;\n    padding: 6px 11px;\n    font-family: \"Montserrat\", sans-serif;\n    font-size: 9px;\n    font-weight: 700;\n    letter-spacing: .2px;\n    line-height: 1;\n    cursor: pointer;\n    white-space: nowrap;\n    appearance: none;\n    -webkit-appearance: none;\n    box-shadow: 0 1px 4px rgba(0,0,0,.08);\n    transition: border-color .18s ease, color .18s ease, background .18s ease;\n}\n\n#sp-harmonized-gallery .sp-fullscreen-trigger:hover {\n    border-color: var(--sp-orange);\n    color: var(--sp-orange);\n}\n\n#sp-harmonized-gallery .sp-zoom-preview {\n    position: absolute;\n    top: 0;\n    left: calc(100% + 8px);\n    width: 68%;\n    height: 100%;\n    background: #fff;\n    border: 1px solid #e3e3e3;\n    border-radius: 8px;\n    box-shadow: 0 6px 20px rgba(0,0,0,.18);\n    overflow: hidden;\n    opacity: 0;\n    visibility: hidden;\n    pointer-events: none;\n    z-index: 200;\n    transition: opacity .12s ease, visibility .12s ease;\n}\n\n#sp-harmonized-gallery .sp-zoom-preview img {\n    position: absolute;\n    width: 200%;\n    height: 200%;\n    max-width: none;\n    object-fit: contain;\n    display: block;\n    pointer-events: none;\n    transform-origin: top left;\n}\n\n#sp-harmonized-gallery .sp-variant-image-wrap.sp-zoom-active .sp-zoom-preview {\n    opacity: 1;\n    visibility: visible;\n}\n\n\/* =========================================================\nFULL SCREEN PRODUCT POPUP\n========================================================= *\/\n\n#sp-harmonized-gallery .sp-fullscreen-modal {\n    position: fixed;\n    inset: 0;\n    z-index: 999999;\n    display: none;\n    align-items: center;\n    justify-content: center;\n    padding: 20px;\n    background: rgba(0,0,0,.38);\n}\n\n#sp-harmonized-gallery .sp-fullscreen-modal.is-open {\n    display: flex;\n}\n\n#sp-harmonized-gallery .sp-fullscreen-dialog {\n    position: relative;\n    width: var(--sp-popup-width-desktop, 1100px);\n    height: var(--sp-popup-height-desktop, 520px);\n    max-width: calc(100vw - 30px);\n    max-height: calc(100vh - 40px);\n    display: grid;\n    grid-template-columns: minmax(0, 1.55fr) minmax(260px, .75fr);\n    gap: 28px;\n    padding: 24px 28px;\n    background: #fff;\n    border-radius: 7px;\n    box-shadow: 0 8px 35px rgba(0,0,0,.25);\n    overflow: hidden;\n}\n\n#sp-harmonized-gallery .sp-fullscreen-close {\n    position: absolute;\n    top: 8px;\n    right: 10px;\n    width: 28px;\n    height: 28px;\n    padding: 0;\n    border: 0;\n    background: transparent;\n    color: #222;\n    font-family: Arial, sans-serif;\n    font-size: 24px;\n    line-height: 28px;\n    cursor: pointer;\n    z-index: 5;\n}\n\n#sp-harmonized-gallery .sp-fullscreen-image-area {\n    min-width: 0;\n    min-height: 0;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    overflow: hidden;\n}\n\n#sp-harmonized-gallery .sp-fullscreen-image {\n    width: var(--sp-popup-image-width-desktop, 100%);\n    height: var(--sp-popup-image-height-desktop, 100%);\n    max-width: none;\n    max-height: none;\n    object-fit: contain;\n    display: block;\n    transform: translate(\n        var(--sp-popup-image-x-desktop, 0px),\n        var(--sp-popup-image-y-desktop, 0px)\n    );\n}\n\n#sp-harmonized-gallery .sp-fullscreen-info {\n    min-width: 0;\n    padding: 8px 8px 8px 0;\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n    overflow-y: auto;\n}\n\n\n#sp-harmonized-gallery .sp-fullscreen-title {\n    margin-top: 5px;\n    color: var(--sp-dark);\n    font-family: \"Bebas Neue\", sans-serif;\n    font-size: 31px;\n    line-height: 1;\n    letter-spacing: 1px;\n}\n\n#sp-harmonized-gallery .sp-fullscreen-description {\n    margin-top: 8px;\n    color: #666;\n    font-size: 12px;\n    line-height: 1.45;\n}\n\n#sp-harmonized-gallery .sp-fullscreen-part-number {\n    margin-top: 8px;\n    color: #555;\n    font-size: 10px;\n    font-weight: 600;\n}\n\n#sp-harmonized-gallery .sp-fullscreen-amp-wrap {\n    margin-top: 12px;\n    width: 100%;\n}\n\n#sp-harmonized-gallery .sp-fullscreen-amp-wrap.is-visible {\n    display: block;\n}\n\n#sp-harmonized-gallery .sp-fullscreen-amp-label {\n    color: #777;\n    font-size: 10px;\n    font-weight: 700;\n    margin-bottom: 5px;\n}\n\n#sp-harmonized-gallery .sp-fullscreen-amp-toggle {\n    display: flex;\n    width: 250px;\n    max-width: 100%;\n    border: 1px solid #d8d8d8;\n    border-radius: 6px;\n    overflow: hidden;\n}\n\n#sp-harmonized-gallery .sp-fullscreen-amp-btn {\n    flex: 1 1 50%;\n    min-height: 30px;\n    padding: 6px 8px;\n    border: 0;\n    background: #fff;\n    color: #333;\n    font-family: \"Montserrat\", sans-serif;\n    font-size: 10px;\n    font-weight: 700;\n    cursor: pointer;\n}\n\n#sp-harmonized-gallery .sp-fullscreen-amp-btn.active {\n    background: var(--sp-orange);\n    color: #fff;\n}\n\n#sp-harmonized-gallery .sp-fullscreen-thumbnails {\n    width: 100%;\n    margin-top: 18px;\n    display: grid;\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n    gap: 8px;\n}\n\n#sp-harmonized-gallery .sp-fullscreen-thumb {\n    width: 100%;\n    height: 72px;\n    padding: 4px;\n    border: 1px solid var(--sp-border);\n    border-radius: 4px;\n    background: #fff;\n    cursor: pointer;\n    overflow: hidden;\n}\n\n#sp-harmonized-gallery .sp-fullscreen-thumb.active {\n    border: 2px solid var(--sp-orange);\n}\n\n#sp-harmonized-gallery .sp-fullscreen-thumb img {\n    width: 100%;\n    height: 100%;\n    object-fit: contain;\n    display: block;\n}\n\n\/* =========================================================\nMOBILE\n========================================================= *\/\n\n@media (max-width: 767px) {\n\n    #sp-harmonized-gallery .sp-fullscreen-trigger {\n        position: static;\n        display: inline-flex;\n        margin-top: 6px;\n        transform: none;\n        font-size: 8px;\n        padding: 6px 10px;\n    }\n\n    #sp-harmonized-gallery .sp-zoom-preview {\n        display: none;\n    }\n\n    #sp-harmonized-gallery .sp-fullscreen-modal {\n        padding: 8px;\n    }\n\n    #sp-harmonized-gallery .sp-fullscreen-dialog {\n        width: var(--sp-popup-width-mobile, calc(100vw - 16px));\n        height: var(--sp-popup-height-mobile, 90vh);\n        max-width: calc(100vw - 16px);\n        max-height: calc(100vh - 16px);\n        min-height: 0;\n        grid-template-columns: 1fr;\n        gap: 8px;\n        padding: 18px 12px 12px;\n        border-radius: 8px;\n        box-shadow: 0 8px 30px rgba(0,0,0,.22);\n        overflow-y: auto;\n    }\n\n    #sp-harmonized-gallery .sp-fullscreen-image-area {\n        height: var(--sp-popup-image-area-height-mobile, 54vh);\n        min-height: 260px;\n        overflow: hidden;\n    }\n\n    #sp-harmonized-gallery .sp-fullscreen-image {\n        width: var(--sp-popup-image-width-mobile, 100%);\n        height: var(--sp-popup-image-height-mobile, 100%);\n        transform: translate(\n            var(--sp-popup-image-x-mobile, 0px),\n            var(--sp-popup-image-y-mobile, 0px)\n        );\n    }\n\n    #sp-harmonized-gallery .sp-fullscreen-info {\n        padding: 0 4px 4px;\n        overflow: visible;\n    }\n\n    #sp-harmonized-gallery .sp-fullscreen-title {\n        font-size: 25px;\n    }\n\n    #sp-harmonized-gallery .sp-fullscreen-description {\n        font-size: 10px;\n    }\n\n    #sp-harmonized-gallery .sp-fullscreen-part-number {\n        font-size: 9px;\n    }\n\n    #sp-harmonized-gallery .sp-fullscreen-amp-wrap {\n        margin-top: 8px;\n    }\n\n    #sp-harmonized-gallery .sp-fullscreen-amp-label {\n        font-size: 9px;\n        margin-bottom: 4px;\n    }\n\n    #sp-harmonized-gallery .sp-fullscreen-amp-toggle {\n        width: 250px;\n    }\n\n    #sp-harmonized-gallery .sp-fullscreen-amp-btn {\n        min-height: 30px;\n        padding: 6px 8px;\n        font-size: 10px;\n    }\n\n    #sp-harmonized-gallery .sp-fullscreen-thumbnails {\n        margin-top: 10px;\n        grid-template-columns: repeat(3, minmax(0, 1fr));\n        gap: 5px;\n    }\n\n    #sp-harmonized-gallery .sp-fullscreen-thumb {\n        height: 58px;\n    }\n\n    \/* =====================================================\n       MOBILE PRODUCT GALLERY\n       ===================================================== *\/\n\n    #sp-harmonized-gallery {\n        width: 100%;\n        max-width: 100%;\n        height: auto;\n        min-height: 0;\n        margin: 0 auto;\n        overflow: visible;\n    }\n\n    #sp-harmonized-gallery .sp-main-view {\n        width: 100%;\n        height: auto;\n        min-height: 0;\n        overflow: visible;\n    }\n\n    #sp-harmonized-gallery .sp-gallery-slide {\n        width: 100%;\n        height: auto;\n        min-height: 0;\n        display: none;\n        position: relative;\n        overflow: visible;\n        flex-direction: column;\n        align-items: center;\n        justify-content: flex-start;\n    }\n\n    #sp-harmonized-gallery .sp-gallery-slide.active {\n        display: flex;\n    }\n\n    #sp-harmonized-gallery .sp-main-product {\n        width: 100%;\n        height: auto;\n        aspect-ratio: 3.3 \/ 3;\n        min-height: 0;\n        flex: 0 0 auto;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        order: 1;\n        position: relative;\n        overflow: visible;\n    }\n\n    #sp-harmonized-gallery .sp-main-image-clip {\n        inset: 0;\n    }\n\n    #sp-harmonized-gallery .sp-main-image-clip > img {\n        width: 100%;\n        height: 100%;\n        object-fit: contain;\n        transform:\n            translate(var(--image-x-mobile), var(--image-y-mobile))\n            scale(var(--image-scale-mobile));\n    }\n\n    #sp-harmonized-gallery .sp-variant-layout {\n        width: 100%;\n        height: auto;\n        min-height: 0;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        justify-content: flex-start;\n        gap: 0;\n    }\n\n    #sp-harmonized-gallery .sp-mobile-variant-title {\n        display: block;\n        width: 100%;\n        min-height: 46px;\n        padding: 0 8px;\n        text-align: center;\n        order: 1;\n        margin: 0;\n        position: relative;\n        z-index: 2;\n    }\n\n    #sp-harmonized-gallery .sp-mobile-variant-title .sp-slide-title {\n        margin: 2px 0 0;\n        font-size: 23px;\n        line-height: .95;\n        letter-spacing: .8px;\n    }\n\n    #sp-harmonized-gallery .sp-mobile-variant-title .sp-slide-subtitle {\n        margin: 3px 0 0;\n        font-size: 10px;\n        line-height: 1.2;\n    }\n\n    #sp-harmonized-gallery .sp-variant-image-wrap {\n        width: 100%;\n        height: auto;\n        aspect-ratio: 5 \/ 3;\n        min-height: 0;\n        flex: 0 0 auto;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        order: 2;\n        position: relative;\n        overflow: visible;\n    }\n\n    #sp-harmonized-gallery .sp-variant-image-wrap img {\n        width: 100%;\n        height: 100%;\n        object-fit: contain;\n        display: block;\n        transform:\n            translate(var(--image-x-mobile), var(--image-y-mobile))\n            scale(var(--image-scale-mobile));\n        transform-origin: center center;\n        transition: opacity .16s ease, transform .18s ease;\n    }\n\n    #sp-harmonized-gallery .sp-side-info {\n        width: 100%;\n        max-width: 100%;\n        height: auto;\n        min-height: 0;\n        padding: 0;\n        margin: 0;\n        text-align: center;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        justify-content: flex-start;\n        gap: 0;\n        order: 3;\n    }\n    #sp-harmonized-gallery .sp-side-info .sp-slide-title,\n    #sp-harmonized-gallery .sp-side-info .sp-slide-subtitle {\n        display: none;\n    }\n\n    #sp-harmonized-gallery .sp-side-info .sp-amp-label {\n        display: block;\n        width: 100%;\n        margin: 0 0 4px;\n        color: #777;\n        font-size: 10px;\n        line-height: 1.1;\n        font-weight: 700;\n        letter-spacing: .5px;\n        text-align: center;\n    }\n\n    #sp-harmonized-gallery .sp-side-info .sp-amp-toggle {\n        display: flex;\n        width: 180px;\n        max-width: 180px;\n        height: 35px;\n        min-height: 35px;\n        max-height: 35px;\n        gap: 0;\n        margin: 0 auto;\n        border: 1px solid #d8d8d8;\n        border-radius: 6px;\n        overflow: hidden;\n        background: #fff;\n    }\n\n    #sp-harmonized-gallery .sp-side-info .sp-amp-btn {\n        width: 100%;\n        flex: 1 1 50%;\n        min-width: 0;\n        height: 35px;\n        min-height: 35px;\n        max-height: 35px;\n        padding: 5px 8px;\n        font-size: 11px;\n        line-height: 1;\n        white-space: nowrap;\n    }\n\n    #sp-harmonized-gallery .sp-side-info .sp-current-amp {\n        display: block;\n        width: 100%;\n        margin: 3px 0 0;\n        color: #666;\n        font-size: 11px;\n        line-height: 1.1;\n        text-align: center;\n    }\n\n    #sp-harmonized-gallery .sp-side-info .sp-part-number {\n        display: inline-block;\n        margin: 3px auto 0;\n        padding: 0;\n        color: #555;\n        font-size: 8px;\n        letter-spacing: .4px;\n        text-align: center;\n    }\n\n    #sp-harmonized-gallery .sp-part-number strong {\n        color: var(--sp-dark);\n    }\n\n    #sp-harmonized-gallery .sp-variant-image.is-empty {\n        visibility: hidden;\n    }\n\n    \/* HOTSPOTS\n       Position remains JavaScript-calculated from the actual rendered image.\n       Only the existing mobile bubble scale is preserved here. *\/\n    #sp-harmonized-gallery .sp-hotspot {\n        top: var(--sp-hotspot-top-px, var(--top));\n        left: var(--sp-hotspot-left-px, var(--left));\n        transform:\n            translate(-50%, -50%)\n            scale(var(--hotspot-scale-mobile));\n    }\n\n    #sp-harmonized-gallery .sp-tooltip {\n        bottom: calc(100% + 7px - var(--tooltip-y-mobile));\n        left: calc(50% + var(--tooltip-x-mobile));\n        transform:\n            translateX(-50%)\n            scale(var(--tooltip-scale-mobile));\n        width: min(190px, calc(100vw - 22px));\n        padding: 8px;\n        font-size: 9px;\n    }\n\n    #sp-harmonized-gallery .sp-product-selector {\n        width: 100%;\n        display: flex;\n        align-items: center;\n        gap: 3px;\n        margin-top: 2px;\n    }\n\n    #sp-harmonized-gallery .sp-thumb-nav {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        flex: 0 0 26px;\n        width: 26px;\n        min-width: 26px;\n        height: 26px;\n        min-height: 26px;\n        padding: 0;\n        border: 0;\n        border-radius: 50%;\n        background: #fff;\n        color: #222;\n        font-size: 16px;\n        line-height: 26px;\n        cursor: pointer;\n        z-index: 3;\n    }\n\n    #sp-harmonized-gallery .sp-thumbnails {\n        flex: 1 1 auto;\n        width: auto;\n        max-width: calc(100% - 58px);\n        min-width: 0;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        gap: 4px;\n        overflow-x: auto;\n        overflow-y: hidden;\n        scroll-behavior: smooth;\n        scrollbar-width: none;\n        padding: 1px 0;\n    }\n\n    #sp-harmonized-gallery .sp-thumbnails::-webkit-scrollbar {\n        display: none;\n    }\n\n    #sp-harmonized-gallery .sp-thumb {\n        flex: 0 0 62px;\n        width: 62px;\n        min-width: 62px;\n        min-height: 75px;\n        height: 75px;\n        padding: 3px;\n        border: 1px solid var(--sp-border);\n        border-radius: 5px;\n        gap: 2px;\n    }\n\n    #sp-harmonized-gallery .sp-thumb.active {\n        border: 2px solid var(--sp-orange);\n    }\n\n    #sp-harmonized-gallery .sp-thumb-image {\n        width: 100%;\n        height: 45px;\n        min-height: 45px;\n        border-radius: 3px;\n    }\n\n    #sp-harmonized-gallery .sp-thumb-label {\n        font-size: 8px;\n        line-height: 1.05;\n    }\n\n    #sp-harmonized-gallery .sp-thumb-part,\n    #sp-harmonized-gallery .sp-thumb-view {\n        font-size: 7px;\n        line-height: 1;\n    }\n\n    #sp-harmonized-gallery .sp-gallery-pagination {\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        gap: 5px;\n        margin-top: 3px;\n        height: 7px;\n    }\n\n    #sp-harmonized-gallery .sp-page-dot {\n        width: 6px;\n        height: 6px;\n    }\n}\n\n\/* Elementor containers must not clip hotspot tooltips *\/\n.sp-gallery-overflow,\n.sp-gallery-overflow > .e-con,\n.sp-gallery-overflow > .elementor-widget-container {\n    overflow: visible !important;\n}\n\n\/* =========================================================\nHARMONIZED CORDSET \u2014 REQUIRED LAYOUT OVERRIDES\n========================================================= *\/\n\n\/* Variation fullscreen button:\n   force it onto its own line directly below Part Number. *\/\n#sp-harmonized-gallery .sp-side-info .sp-part-number {\n    display: block;\n    width: 100%;\n    margin-bottom: 0;\n}\n\n#sp-harmonized-gallery .sp-side-info .sp-fullscreen-trigger {\n    display: flex;\n    width: max-content;\n    align-self: flex-start;\n    margin: 6px 0 0;\n    text-align: left;\n}\n\n\/* Keep the variation information area stable on desktop. *\/\n#sp-harmonized-gallery .sp-side-info {\n    min-height: 220px;\n}\n\n\/* Mobile fixed title, image, controls, and button spacing. *\/\n@media (max-width: 767px) {\n\n    #sp-harmonized-gallery .sp-mobile-variant-title {\n        height: 70px;\n        min-height: 70px;\n        max-height: 70px;\n        overflow: hidden;\n    }\n\n    #sp-harmonized-gallery .sp-side-info {\n        height: 112px;\n        min-height: 112px;\n        max-height: 112px;\n        overflow: visible;\n    }\n\n    #sp-harmonized-gallery .sp-side-info .sp-amp-toggle {\n        display: grid;\n        grid-template-columns: repeat(2, minmax(0, 1fr));\n        width: 180px;\n        max-width: 180px;\n        height: 35px;\n        min-height: 35px;\n        max-height: 35px;\n        gap: 0;\n    }\n\n    #sp-harmonized-gallery .sp-side-info .sp-amp-btn {\n        width: 100%;\n        min-width: 0;\n        height: 35px;\n        min-height: 35px;\n        max-height: 35px;\n        padding: 5px 8px;\n        white-space: nowrap;\n    }\n\n    #sp-harmonized-gallery .sp-side-info .sp-current-amp {\n        margin-top: 3px;\n    }\n\n    #sp-harmonized-gallery .sp-side-info .sp-part-number {\n        margin-top: 3px;\n        line-height: 1.05;\n    }\n\n    \/* Fullscreen is inserted immediately after Part Number. *\/\n    #sp-harmonized-gallery .sp-side-info .sp-fullscreen-trigger {\n        display: flex;\n        width: max-content;\n        align-self: center;\n        margin: 5px auto 0;\n    }\n\n    #sp-harmonized-gallery .sp-product-selector {\n        margin-top: 2px;\n    }\n\n    #sp-harmonized-gallery .sp-gallery-pagination {\n        margin-top: 3px;\n    }\n}\n\n<\/style>\n\n<script>\n(function () {\n\n    function initSmartPlugHarmonizedGallery() {\n\n        const gallery = document.getElementById(\"sp-harmonized-gallery\");\n\n        if (!gallery || gallery.dataset.initialized === \"true\") return;\n\n        gallery.dataset.initialized = \"true\";\n\n        const slides = gallery.querySelectorAll(\".sp-gallery-slide\");\n        const thumbs = gallery.querySelectorAll(\".sp-thumb\");\n        const hotspots = gallery.querySelectorAll(\".sp-hotspot\");\n        const pageDots = gallery.querySelectorAll(\".sp-page-dot\");\n        const variantSlides = gallery.querySelectorAll(\".sp-variant-slide\");\n        const thumbnailContainer = gallery.querySelector(\".sp-thumbnails\");\n        const thumbPrev = gallery.querySelector(\".sp-thumb-prev\");\n        const thumbNext = gallery.querySelector(\".sp-thumb-next\");\n\n        if (!slides.length || !thumbs.length) return;\n\n        let currentIndex = 0;\n\n        let fullscreenModal = null;\n        let refreshFullscreenModal = function () {};\n\n        \/* =================================================\n           DYNAMIC EDITABLE TITLE \/ SUBTITLE \/ PART NUMBER\n           ================================================= *\/\n\n        function getViewDataAttributeName(view, field) {\n            return \"data-\" + view + \"-\" + field;\n        }\n\n        function getViewCopy(slide, view) {\n\n            const prefix = view\n                ? view.toLowerCase()\n                : \"\";\n\n            if (prefix) {\n                return {\n                    title:\n                        slide.getAttribute(\n                            getViewDataAttributeName(prefix, \"title\")\n                        ) ||\n                        slide.getAttribute(\"data-title\") ||\n                        \"\",\n\n                    subtitle:\n                        slide.getAttribute(\n                            getViewDataAttributeName(prefix, \"subtitle\")\n                        ) ||\n                        slide.getAttribute(\"data-subtitle\") ||\n                        \"\",\n\n                    partNumber:\n                        slide.getAttribute(\n                            getViewDataAttributeName(prefix, \"part-number\")\n                        ) ||\n                        slide.getAttribute(\"data-part-number\") ||\n                        \"\"\n                };\n            }\n\n            return {\n                title: slide.getAttribute(\"data-title\") || \"\",\n                subtitle: slide.getAttribute(\"data-subtitle\") || \"\",\n                partNumber: slide.getAttribute(\"data-part-number\") || \"\"\n            };\n        }\n\n        function updateVariantText(slide, view) {\n\n            const copy = getViewCopy(slide, view);\n            const desktopTitle =\n                slide.querySelector(\".sp-side-info .sp-slide-title\");\n\n            const desktopSubtitle =\n                slide.querySelector(\".sp-side-info .sp-slide-subtitle\");\n            const mobileTitle =\n                slide.querySelector(\".sp-mobile-variant-title .sp-slide-title\");\n\n            const mobileSubtitle =\n                slide.querySelector(\".sp-mobile-variant-title .sp-slide-subtitle\");\n\n            const partNumber =\n                slide.querySelector(\".sp-part-number-value\");\n            if (desktopTitle) desktopTitle.textContent = copy.title;\n            if (desktopSubtitle) desktopSubtitle.textContent = copy.subtitle;\n            if (mobileTitle) mobileTitle.textContent = copy.title;\n            if (mobileSubtitle) mobileSubtitle.textContent = copy.subtitle;\n\n            if (partNumber) partNumber.textContent = copy.partNumber;\n        }\n\n        function updateFeatureText() {\n\n            const slide = slides[0];\n\n            if (!slide) return;\n\n            const copy = getViewCopy(slide, \"\");\n\n            const title =\n                slide.querySelector(\".sp-slide-info .sp-slide-title\");\n\n            const subtitle =\n                slide.querySelector(\".sp-slide-info .sp-slide-subtitle\");\n\n            if (title) title.textContent = copy.title;\n            if (subtitle) subtitle.textContent = copy.subtitle;\n        }\n\n        \/* =================================================\n           RESPONSIVE HOTSPOT POSITIONING\n           =================================================\n           Rebuilds hotspot positions from the actual rendered\n           feature image instead of breakpoint-specific hotspot\n           coordinates.\n\n           The gallery's own image settings remain untouched.\n           The same canonical hotspot anchor is recalculated\n           against the responsive image geometry.\n           ================================================= *\/\n\n        function readCssNumber(element, name, fallback) {\n\n            if (!element) return fallback;\n\n            const inlineValue =\n                element.style.getPropertyValue(name).trim();\n\n            if (inlineValue) {\n                const parsedInline = parseFloat(inlineValue);\n\n                if (Number.isFinite(parsedInline)) {\n                    return parsedInline;\n                }\n            }\n\n            const computed =\n                window.getComputedStyle(element);\n\n            const computedValue =\n                computed.getPropertyValue(name).trim();\n\n            if (computedValue) {\n                const parsedComputed = parseFloat(computedValue);\n\n                if (Number.isFinite(parsedComputed)) {\n                    return parsedComputed;\n                }\n            }\n\n            return fallback;\n        }\n\n        function syncFeatureHotspots() {\n\n            const featureSlide = slides[0];\n\n            if (!featureSlide) return;\n\n            const clip =\n                featureSlide.querySelector(\n                    \".sp-main-image-clip\"\n                );\n\n            const image =\n                featureSlide.querySelector(\n                    \".sp-main-image-clip > img\"\n                );\n\n            const featureHotspots =\n                featureSlide.querySelectorAll(\n                    \".sp-hotspot\"\n                );\n\n            if (\n                !clip ||\n                !image ||\n                !featureHotspots.length\n            ) {\n                return;\n            }\n\n            if (\n                !image.naturalWidth ||\n                !image.naturalHeight\n            ) {\n                return;\n            }\n\n            const rect =\n                clip.getBoundingClientRect();\n\n            if (\n                !rect.width ||\n                !rect.height\n            ) {\n                return;\n            }\n\n            \/*\n             * This gallery switches from the desktop image\n             * transform to the mobile image transform at\n             * max-width: 767px. Laptop\/tablet therefore use\n             * the desktop image settings exactly as the\n             * existing CSS does.\n             *\/\n            const mobile =\n                window.matchMedia(\n                    \"(max-width: 767px)\"\n                ).matches;\n\n            const imageX =\n                readCssNumber(\n                    image,\n                    mobile\n                        ? \"--image-x-mobile\"\n                        : \"--image-x-desktop\",\n                    0\n                );\n\n            const imageY =\n                readCssNumber(\n                    image,\n                    mobile\n                        ? \"--image-y-mobile\"\n                        : \"--image-y-desktop\",\n                    0\n                );\n\n            const imageScale =\n                readCssNumber(\n                    image,\n                    mobile\n                        ? \"--image-scale-mobile\"\n                        : \"--image-scale-desktop\",\n                    1\n                );\n\n            const safeScale =\n                Number.isFinite(imageScale) &&\n                imageScale > 0\n                    ? imageScale\n                    : 1;\n\n            const imageRatio =\n                image.naturalWidth \/\n                image.naturalHeight;\n\n            const containerRatio =\n                rect.width \/\n                rect.height;\n\n            let renderedWidth;\n            let renderedHeight;\n\n            \/*\n             * Match object-fit: contain.\n             *\/\n            if (\n                imageRatio >\n                containerRatio\n            ) {\n\n                renderedWidth =\n                    rect.width;\n\n                renderedHeight =\n                    renderedWidth \/\n                    imageRatio;\n\n            } else {\n\n                renderedHeight =\n                    rect.height;\n\n                renderedWidth =\n                    renderedHeight *\n                    imageRatio;\n            }\n\n            \/*\n             * Match the image's centered transform origin\n             * and its configured scale.\n             *\/\n            renderedWidth *= safeScale;\n            renderedHeight *= safeScale;\n\n            const imageLeft =\n                (rect.width - renderedWidth) \/ 2 +\n                imageX;\n\n            const imageTop =\n                (rect.height - renderedHeight) \/ 2 +\n                imageY;\n\n            featureHotspots.forEach(\n                function (hotspot) {\n\n                    const top =\n                        readCssNumber(\n                            hotspot,\n                            \"--top\",\n                            NaN\n                        );\n\n                    const left =\n                        readCssNumber(\n                            hotspot,\n                            \"--left\",\n                            NaN\n                        );\n\n                    const hotspotX =\n                        readCssNumber(\n                            hotspot,\n                            \"--hotspot-x\",\n                            0\n                        );\n\n                    const hotspotY =\n                        readCssNumber(\n                            hotspot,\n                            \"--hotspot-y\",\n                            0\n                        );\n\n                    if (\n                        !Number.isFinite(top) ||\n                        !Number.isFinite(left)\n                    ) {\n                        return;\n                    }\n\n                    hotspot.style.setProperty(\n                        \"--sp-hotspot-left-px\",\n                        imageLeft +\n                            (renderedWidth * left \/ 100) +\n                            hotspotX +\n                            \"px\"\n                    );\n\n                    hotspot.style.setProperty(\n                        \"--sp-hotspot-top-px\",\n                        imageTop +\n                            (renderedHeight * top \/ 100) +\n                            hotspotY +\n                            \"px\"\n                    );\n\n                    hotspot.setAttribute(\n                        \"data-responsive-zone\",\n                        mobile\n                            ? \"mobile\"\n                            : \"desktop\"\n                    );\n                }\n            );\n        }\n\n        let hotspotFrame = null;\n\n        function scheduleFeatureHotspotSync() {\n\n            if (hotspotFrame) {\n                cancelAnimationFrame(\n                    hotspotFrame\n                );\n            }\n\n            hotspotFrame =\n                requestAnimationFrame(\n                    function () {\n\n                        hotspotFrame = null;\n\n                        syncFeatureHotspots();\n                    }\n                );\n        }\n\n        function bindFeatureHotspotResync() {\n\n            const featureSlide = slides[0];\n\n            if (!featureSlide) return;\n\n            const featureImage =\n                featureSlide.querySelector(\n                    \".sp-main-image-clip > img\"\n                );\n\n            const clip =\n                featureSlide.querySelector(\n                    \".sp-main-image-clip\"\n                );\n\n            const productWrap =\n                featureSlide.querySelector(\n                    \".sp-main-product\"\n                );\n\n            if (featureImage) {\n\n                if (featureImage.complete) {\n                    scheduleFeatureHotspotSync();\n                } else {\n                    featureImage.addEventListener(\n                        \"load\",\n                        scheduleFeatureHotspotSync,\n                        { once: true }\n                    );\n                }\n            }\n\n            window.addEventListener(\n                \"resize\",\n                scheduleFeatureHotspotSync\n            );\n\n            window.addEventListener(\n                \"orientationchange\",\n                scheduleFeatureHotspotSync\n            );\n\n            if (window.ResizeObserver) {\n\n                const observer =\n                    new ResizeObserver(\n                        scheduleFeatureHotspotSync\n                    );\n\n                if (clip) {\n                    observer.observe(clip);\n                }\n\n                if (productWrap) {\n                    observer.observe(productWrap);\n                }\n            }\n        }\n\n        bindFeatureHotspotResync();\n\n        \/* =================================================\n           SLIDE SWITCHING\n           ================================================= *\/\n\n        function showSlide(index) {\n\n            if (index < 0) index = slides.length - 1;\n\n            if (index >= slides.length) index = 0;\n\n            slides.forEach(function (slide, i) {\n                slide.classList.toggle(\"active\", i === index);\n            });\n\n            thumbs.forEach(function (thumb) {\n\n                const target =\n                    parseInt(\n                        thumb.getAttribute(\"data-target\"),\n                        10\n                    );\n\n                thumb.classList.toggle(\n                    \"active\",\n                    target === index\n                );\n            });\n\n            pageDots.forEach(function (dot, i) {\n\n                dot.classList.toggle(\n                    \"active\",\n                    i === index\n                );\n            });\n\n            currentIndex = index;\n\n            scheduleFeatureHotspotSync();\n\n            if (index === 0) {\n\n                updateFeatureText();\n\n            } else {\n\n                const activeVariant = slides[index];\n\n                if (activeVariant) {\n\n                    updateVariantText(\n                        activeVariant,\n                        activeVariant.dataset.currentView ||\n                        activeVariant\n                            .querySelector(\".sp-amp-btn.active\")\n                            ?.getAttribute(\"data-view\") ||\n                        activeVariant\n                            .querySelector(\".sp-amp-btn\")\n                            ?.getAttribute(\"data-view\") ||\n                        \"\"\n                    );\n                }\n            }\n\n            const activeThumb =\n                Array.from(thumbs).find(function (thumb) {\n\n                    return parseInt(\n                        thumb.getAttribute(\"data-target\"),\n                        10\n                    ) === index;\n\n                });\n\n            if (activeThumb && thumbnailContainer) {\n\n                const left = activeThumb.offsetLeft;\n                const right =\n                    left + activeThumb.offsetWidth;\n\n                const viewLeft =\n                    thumbnailContainer.scrollLeft;\n\n                const viewRight =\n                    viewLeft + thumbnailContainer.clientWidth;\n\n                if (\n                    left < viewLeft ||\n                    right > viewRight\n                ) {\n                    thumbnailContainer.scrollTo({\n                        left:\n                            left -\n                            (thumbnailContainer.clientWidth \/ 2) +\n                            (activeThumb.offsetWidth \/ 2),\n                        behavior: \"smooth\"\n                    });\n                }\n            }\n\n            hotspots.forEach(function (hotspot) {\n                hotspot.classList.remove(\"is-open\");\n            });\n        }\n\n        \/* =================================================\n           THUMBNAIL EVENTS\n           ================================================= *\/\n\n        thumbs.forEach(function (thumb) {\n\n            thumb.addEventListener(\"click\", function (event) {\n\n                event.preventDefault();\n                event.stopPropagation();\n\n                const target =\n                    parseInt(\n                        thumb.getAttribute(\"data-target\"),\n                        10\n                    );\n\n                if (!isNaN(target)) {\n                    showSlide(target);\n                }\n            });\n        });\n\n        \/* =================================================\n           PAGINATION EVENTS\n           ================================================= *\/\n\n        pageDots.forEach(function (dot) {\n\n            dot.addEventListener(\"click\", function (event) {\n\n                event.preventDefault();\n                event.stopPropagation();\n\n                const target =\n                    parseInt(\n                        dot.getAttribute(\"data-page\"),\n                        10\n                    );\n\n                if (!isNaN(target)) {\n                    showSlide(target);\n                }\n            });\n        });\n\n        \/* =================================================\n           MOBILE THUMBNAIL NAVIGATION\n           ================================================= *\/\n\n        function scrollThumbnailStrip(direction) {\n\n            if (\n                !thumbnailContainer ||\n                !window.matchMedia(\"(max-width: 767px)\").matches\n            ) {\n                return;\n            }\n\n            const items =\n                Array.from(\n                    thumbnailContainer.querySelectorAll(\".sp-thumb\")\n                );\n\n            if (!items.length) return;\n\n            let activeIndex =\n                items.findIndex(function (thumb) {\n                    return thumb.classList.contains(\"active\");\n                });\n\n            if (activeIndex < 0) {\n                activeIndex = 0;\n            }\n\n            let targetIndex =\n                activeIndex +\n                (direction > 0 ? 1 : -1);\n\n            if (targetIndex < 0) {\n                targetIndex = items.length - 1;\n            }\n\n            if (targetIndex >= items.length) {\n                targetIndex = 0;\n            }\n\n            items[targetIndex].click();\n\n            items[targetIndex].scrollIntoView({\n                behavior: \"smooth\",\n                block: \"nearest\",\n                inline: \"center\"\n            });\n        }\n\n        if (thumbPrev) {\n\n            thumbPrev.addEventListener(\"click\", function (event) {\n\n                event.preventDefault();\n                event.stopPropagation();\n\n                scrollThumbnailStrip(-1);\n            });\n        }\n\n        if (thumbNext) {\n\n            thumbNext.addEventListener(\"click\", function (event) {\n\n                event.preventDefault();\n                event.stopPropagation();\n\n                scrollThumbnailStrip(1);\n            });\n        }\n\n        \/* =================================================\n           HOTSPOT EVENTS\n           ================================================= *\/\n\n        hotspots.forEach(function (hotspot) {\n\n            hotspot.addEventListener(\"click\", function (event) {\n\n                event.preventDefault();\n                event.stopPropagation();\n\n                const isOpen =\n                    hotspot.classList.contains(\"is-open\");\n\n                hotspots.forEach(function (item) {\n                    item.classList.remove(\"is-open\");\n                });\n\n                if (!isOpen) {\n                    hotspot.classList.add(\"is-open\");\n                }\n            });\n        });\n\n        document.addEventListener(\"click\", function (event) {\n\n            if (!gallery.contains(event.target)) {\n\n                hotspots.forEach(function (hotspot) {\n                    hotspot.classList.remove(\"is-open\");\n                });\n            }\n        });\n\n        \/* =================================================\n           VARIATION \/ LENGTH SWITCHING\n           ================================================= *\/\n\n        variantSlides.forEach(function (slide) {\n\n            const image =\n                slide.querySelector(\".sp-variant-image\");\n\n            const viewButtons =\n                slide.querySelectorAll(\".sp-amp-btn\");\n\n            const currentView =\n                slide.querySelector(\".sp-current-amp\");\n\n            if (!image) return;\n\n            slide.dataset.currentView =\n                slide.querySelector(\".sp-amp-btn.active\")\n                    ?.getAttribute(\"data-view\") ||\n                slide.querySelector(\".sp-amp-btn\")\n                    ?.getAttribute(\"data-view\") ||\n                \"\";\n\n            function updateImage() {\n\n                const view =\n                    slide.dataset.currentView || \"\";\n\n                const source =\n                    slide.getAttribute(\"data-\" + view) || \"\";\n\n                updateVariantText(slide, view);\n\n                image.style.opacity = \"0\";\n\n                window.setTimeout(function () {\n\n                    if (source) {\n\n                        image.src = source;\n                        image.classList.remove(\"is-empty\");\n\n                    } else {\n\n                        image.removeAttribute(\"src\");\n                        image.classList.add(\"is-empty\");\n                    }\n\n                    image.style.opacity = \"1\";\n\n                    if (\n                        fullscreenModal &&\n                        fullscreenModal.classList.contains(\"is-open\")\n                    ) {\n                        refreshFullscreenModal();\n                    }\n\n                }, 90);\n\n                viewButtons.forEach(function (button) {\n\n                    button.classList.toggle(\n                        \"active\",\n                        button.getAttribute(\"data-view\") === view\n                    );\n                });\n\n                if (currentView) {\n\n                    currentView.innerHTML =\n                        \"Showing <strong>\" +\n                        view +\n                        \"<\/strong>\";\n                }\n            }\n\n            function setView(view) {\n\n                slide.dataset.currentView =\n                    view || \"\";\n\n                updateImage();\n            }\n\n            slide._setView = setView;\n\n            viewButtons.forEach(function (button) {\n\n                button.addEventListener(\"click\", function (event) {\n\n                    event.preventDefault();\n                    event.stopPropagation();\n\n                    setView(\n                        button.getAttribute(\"data-view\")\n                    );\n                });\n            });\n\n            \/* Default to the first configured length. *\/\n            setView(\n                slide.querySelector(\".sp-amp-btn.active\")\n                    ?.getAttribute(\"data-view\") ||\n                slide.querySelector(\".sp-amp-btn\")\n                    ?.getAttribute(\"data-view\") ||\n                \"\"\n            );\n        });\n\n        \/* =================================================\n           VIEW FULL SCREEN + HOVER ZOOM\n           ================================================= *\/\n\n        fullscreenModal =\n            document.createElement(\"div\");\n\n        fullscreenModal.className =\n            \"sp-fullscreen-modal\";\n\n        fullscreenModal.setAttribute(\n            \"aria-hidden\",\n            \"true\"\n        );\n\n        fullscreenModal.innerHTML = `\n            <div class=\"sp-fullscreen-dialog\"\n                 role=\"dialog\"\n                 aria-modal=\"true\"\n                 aria-label=\"Product full screen view\">\n\n                <button type=\"button\"\n                        class=\"sp-fullscreen-close\"\n                        aria-label=\"Close full screen\">\n                    &times;\n                <\/button>\n\n                <div class=\"sp-fullscreen-image-area\">\n                    <img class=\"sp-fullscreen-image\"\n                         alt=\"\">\n                <\/div>\n\n                <div class=\"sp-fullscreen-info\">\n                    <div class=\"sp-fullscreen-title\"><\/div>\n\n                    <div class=\"sp-fullscreen-description\"><\/div>\n\n                    <div class=\"sp-fullscreen-part-number\">\n                        PART NUMBER:\n                        <strong class=\"sp-fullscreen-part-number-value\"><\/strong>\n                    <\/div>\n\n                    <div class=\"sp-fullscreen-amp-wrap\">\n\n                        <div class=\"sp-fullscreen-amp-label\">\n                            SELECT LENGTH\n                        <\/div>\n\n                        <div class=\"sp-fullscreen-amp-toggle\"\n                             role=\"group\"\n                             aria-label=\"Fullscreen product length selection\">\n\n                            <button type=\"button\"\n                                    class=\"sp-fullscreen-amp-btn active\"\n                                    data-view=\"\">\n                                15m\n                            <\/button>\n\n                            <button type=\"button\"\n                                    class=\"sp-fullscreen-amp-btn\"\n                                    data-view=\"\">\n                                25m\n                            <\/button>\n\n                        <\/div>\n                    <\/div>\n\n                    <div class=\"sp-fullscreen-thumbnails\"><\/div>\n\n                <\/div>\n            <\/div>\n        `;\n\n        gallery.appendChild(fullscreenModal);\n\n        const fullscreenImage =\n            fullscreenModal.querySelector(\n                \".sp-fullscreen-image\"\n            );\n        const fullscreenTitle =\n            fullscreenModal.querySelector(\n                \".sp-fullscreen-title\"\n            );\n\n        const fullscreenDescription =\n            fullscreenModal.querySelector(\n                \".sp-fullscreen-description\"\n            );\n\n        const fullscreenPartNumber =\n            fullscreenModal.querySelector(\n                \".sp-fullscreen-part-number-value\"\n            );\n\n        const fullscreenViewWrap =\n            fullscreenModal.querySelector(\n                \".sp-fullscreen-amp-wrap\"\n            );\n\n        const fullscreenViewButtons =\n            fullscreenModal.querySelectorAll(\n                \".sp-fullscreen-amp-btn\"\n            );\n\n        const fullscreenThumbs =\n            fullscreenModal.querySelector(\n                \".sp-fullscreen-thumbnails\"\n            );\n\n        const fullscreenClose =\n            fullscreenModal.querySelector(\n                \".sp-fullscreen-close\"\n            );\n\n        \/* =================================================\n           FEATURE IMAGE \u2014 FULL SCREEN IMAGE\n           ================================================= *\/\n\n        const FEATURE_FULLSCREEN_IMAGE =\n            \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/09\/32-AMP-25-METER-HARMONIZED-CORD-W_-SMARTPLUG-FEMALE-BOAT-SIDE-CONNECTOR-W_-BLUNT-END.png\";\n\n        function getActiveGalleryImage() {\n\n            const activeSlide =\n                slides[currentIndex];\n\n            if (!activeSlide) return null;\n\n            if (currentIndex === 0) {\n\n                return activeSlide.querySelector(\n                    \".sp-main-image-clip img\"\n                );\n            }\n\n            return activeSlide.querySelector(\n                \".sp-variant-image\"\n            );\n        }\n\n        function getActiveGalleryCopy() {\n\n            const activeSlide =\n                slides[currentIndex];\n\n            if (!activeSlide) {\n\n                return {\n                    title: \"\",\n                    description: \"\",\n                    partNumber: \"\"\n                };\n            }\n\n            const view =\n                activeSlide.classList.contains(\n                    \"sp-variant-slide\"\n                )\n                    ? (\n                        activeSlide.dataset.currentView ||\n                        activeSlide.querySelector(\n                            \".sp-amp-btn.active\"\n                        )?.getAttribute(\"data-view\") ||\n                        \"\"\n                    )\n                    : \"\";\n\n            const copy =\n                getViewCopy(\n                    activeSlide,\n                    view\n                );\n\n            return {\n                title: copy.title,\n                description: copy.subtitle,\n                partNumber: copy.partNumber\n            };\n        }\n\n        function applyFullscreenSettings() {\n\n            const dialog =\n                fullscreenModal.querySelector(\n                    \".sp-fullscreen-dialog\"\n                );\n\n            if (!dialog) return;\n\n            dialog.style.setProperty(\n                \"--sp-popup-width-desktop\",\n                \"1100px\"\n            );\n\n            dialog.style.setProperty(\n                \"--sp-popup-height-desktop\",\n                \"520px\"\n            );\n\n            dialog.style.setProperty(\n                \"--sp-popup-width-mobile\",\n                \"calc(100vw - 16px)\"\n            );\n\n            dialog.style.setProperty(\n                \"--sp-popup-height-mobile\",\n                \"90vh\"\n            );\n\n            dialog.style.setProperty(\n                \"--sp-popup-image-area-height-mobile\",\n                \"54vh\"\n            );\n\n            fullscreenImage.style.setProperty(\n                \"--sp-popup-image-width-desktop\",\n                \"100%\"\n            );\n\n            fullscreenImage.style.setProperty(\n                \"--sp-popup-image-height-desktop\",\n                \"100%\"\n            );\n\n            fullscreenImage.style.setProperty(\n                \"--sp-popup-image-x-desktop\",\n                \"0px\"\n            );\n\n            fullscreenImage.style.setProperty(\n                \"--sp-popup-image-y-desktop\",\n                \"0px\"\n            );\n\n            fullscreenImage.style.setProperty(\n                \"--sp-popup-image-width-mobile\",\n                \"100%\"\n            );\n\n            fullscreenImage.style.setProperty(\n                \"--sp-popup-image-height-mobile\",\n                \"100%\"\n            );\n\n            fullscreenImage.style.setProperty(\n                \"--sp-popup-image-x-mobile\",\n                \"0px\"\n            );\n\n            fullscreenImage.style.setProperty(\n                \"--sp-popup-image-y-mobile\",\n                \"0px\"\n            );\n        }\n\n        refreshFullscreenModal = function () {\n\n            const activeImage =\n                getActiveGalleryImage();\n\n            if (\n                !activeImage ||\n                !activeImage.src\n            ) {\n                return;\n            }\n\n            const copy =\n                getActiveGalleryCopy();\n\n            const activeSlide =\n                slides[currentIndex];\n\n            const isVariation =\n                currentIndex >= 1 &&\n                activeSlide;\n\n            const view =\n                isVariation\n                    ? (\n                        activeSlide.dataset.currentView ||\n                        activeSlide.querySelector(\n                            \".sp-amp-btn.active\"\n                        )?.getAttribute(\"data-view\") ||\n                        \"\"\n                    )\n                    : \"\";\n\n            const viewImage =\n                isVariation\n                    ? (\n                        activeSlide.getAttribute(\n                            \"data-\" + view\n                        ) || \"\"\n                    )\n                    : FEATURE_FULLSCREEN_IMAGE;\n\n            applyFullscreenSettings();\n\n            fullscreenImage.src =\n                viewImage ||\n                activeImage.currentSrc ||\n                activeImage.src;\n\n            fullscreenImage.alt =\n                copy.title ||\n                activeImage.alt ||\n                \"\";\n            fullscreenTitle.textContent =\n                copy.title || \"\";\n\n            fullscreenDescription.textContent =\n                copy.description || \"\";\n\n            if (fullscreenPartNumber) {\n\n                fullscreenPartNumber.textContent =\n                    isVariation\n                        ? (copy.partNumber || \"\")\n                        : \"\";\n\n                fullscreenPartNumber.parentElement.style.display =\n                    isVariation\n                        ? \"\"\n                        : \"none\";\n            }\n\n            fullscreenViewWrap.classList.toggle(\n                \"is-visible\",\n                !!isVariation\n            );\n\n            \/* Hide the length toggle completely in Features fullscreen.\n               Keep it visible for all variation fullscreen views. *\/\n            fullscreenViewWrap.style.display =\n                isVariation\n                    ? \"\"\n                    : \"none\";\n\n            if (isVariation) {\n\n                const activeButtons =\n                    Array.from(\n                        activeSlide.querySelectorAll(\n                            \".sp-amp-btn\"\n                        )\n                    );\n\n                fullscreenViewButtons.forEach(\n                    function (button, index) {\n\n                        const sourceButton =\n                            activeButtons[index];\n\n                        if (sourceButton) {\n\n                            button.setAttribute(\n                                \"data-view\",\n                                sourceButton.getAttribute(\n                                    \"data-view\"\n                                ) || \"\"\n                            );\n\n                            button.textContent =\n                                sourceButton.textContent.trim();\n                        }\n                    }\n                );\n            }\n\n            fullscreenViewButtons.forEach(\n                function (button) {\n\n                    const buttonView =\n                        button.getAttribute(\n                            \"data-view\"\n                        );\n\n                    button.classList.toggle(\n                        \"active\",\n                        buttonView === view\n                    );\n\n                    button.disabled =\n                        !isVariation;\n                }\n            );\n\n            fullscreenThumbs.innerHTML = \"\";\n\n            thumbs.forEach(function (thumb) {\n\n                const sourceImage =\n                    thumb.querySelector(\"img\");\n\n                if (!sourceImage) return;\n\n                const modalThumb =\n                    document.createElement(\"button\");\n\n                modalThumb.type = \"button\";\n\n                modalThumb.className =\n                    \"sp-fullscreen-thumb\";\n\n                modalThumb.setAttribute(\n                    \"aria-label\",\n                    thumb.getAttribute(\n                        \"aria-label\"\n                    ) ||\n                    \"View product image\"\n                );\n\n                const modalThumbImage =\n                    document.createElement(\"img\");\n\n                modalThumbImage.src =\n                    sourceImage.currentSrc ||\n                    sourceImage.src;\n\n                modalThumbImage.alt =\n                    sourceImage.alt || \"\";\n\n                modalThumb.appendChild(\n                    modalThumbImage\n                );\n\n                const thumbTarget =\n                    parseInt(\n                        thumb.getAttribute(\n                            \"data-target\"\n                        ),\n                        10\n                    );\n\n                if (\n                    thumbTarget === currentIndex\n                ) {\n                    modalThumb.classList.add(\n                        \"active\"\n                    );\n                }\n\n                modalThumb.addEventListener(\n                    \"click\",\n                    function (event) {\n\n                        event.preventDefault();\n                        event.stopPropagation();\n\n                        showSlide(thumbTarget);\n\n                        window.setTimeout(\n                            refreshFullscreenModal,\n                            110\n                        );\n                    }\n                );\n\n                fullscreenThumbs.appendChild(\n                    modalThumb\n                );\n            });\n        };\n\n        fullscreenViewButtons.forEach(\n            function (button) {\n\n                button.addEventListener(\n                    \"click\",\n                    function (event) {\n\n                        event.preventDefault();\n                        event.stopPropagation();\n\n                        if (\n                            !fullscreenModal.classList.contains(\n                                \"is-open\"\n                            )\n                        ) {\n                            return;\n                        }\n\n                        const activeSlide =\n                            slides[currentIndex];\n\n                        if (\n                            !activeSlide ||\n                            currentIndex < 1\n                        ) {\n                            return;\n                        }\n\n                        if (\n                            typeof activeSlide._setView ===\n                            \"function\"\n                        ) {\n\n                            activeSlide._setView(\n                                button.getAttribute(\n                                    \"data-view\"\n                                )\n                            );\n\n                            window.setTimeout(\n                                refreshFullscreenModal,\n                                110\n                            );\n                        }\n                    }\n                );\n            }\n        );\n\n        let fullscreenScrollTop = 0;\n        let fullscreenScrollLeft = 0;\n        let fullscreenBodyPaddingRight = \"\";\n\n        function openFullscreenModal() {\n\n            refreshFullscreenModal();\n\n            fullscreenScrollTop =\n                window.scrollY ||\n                window.pageYOffset ||\n                0;\n\n            fullscreenScrollLeft =\n                window.scrollX ||\n                window.pageXOffset ||\n                0;\n\n            fullscreenBodyPaddingRight =\n                document.body.style.paddingRight;\n\n            const scrollbarWidth =\n                window.innerWidth -\n                document.documentElement.clientWidth;\n\n            if (scrollbarWidth > 0) {\n\n                document.body.style.paddingRight =\n                    scrollbarWidth + \"px\";\n            }\n\n            fullscreenModal.classList.add(\n                \"is-open\"\n            );\n\n            fullscreenModal.setAttribute(\n                \"aria-hidden\",\n                \"false\"\n            );\n\n            document.body.style.overflow =\n                \"hidden\";\n        }\n\n        function closeFullscreenModal() {\n\n            fullscreenModal.classList.remove(\n                \"is-open\"\n            );\n\n            fullscreenModal.setAttribute(\n                \"aria-hidden\",\n                \"true\"\n            );\n\n            document.body.style.overflow =\n                \"\";\n\n            document.body.style.paddingRight =\n                fullscreenBodyPaddingRight;\n\n            window.scrollTo({\n                top: fullscreenScrollTop,\n                left: fullscreenScrollLeft,\n                behavior: \"auto\"\n            });\n        }\n\n        fullscreenClose.addEventListener(\n            \"click\",\n            function (event) {\n\n                event.preventDefault();\n\n                closeFullscreenModal();\n            }\n        );\n\n        fullscreenModal.addEventListener(\n            \"click\",\n            function (event) {\n\n                if (\n                    event.target ===\n                    fullscreenModal\n                ) {\n                    closeFullscreenModal();\n                }\n            }\n        );\n\n        document.addEventListener(\n            \"keydown\",\n            function (event) {\n\n                if (\n                    event.key === \"Escape\" &&\n                    fullscreenModal.classList.contains(\n                        \"is-open\"\n                    )\n                ) {\n                    closeFullscreenModal();\n                }\n            }\n        );\n\n        \/* =================================================\n           ADD FULL SCREEN BUTTONS\n           ================================================= *\/\n\n        function addFullscreenButtons() {\n\n            const featureWrap =\n                gallery.querySelector(\n                    \".sp-main-product\"\n                );\n\n            if (\n                featureWrap &&\n                !featureWrap\n                    .closest(\".sp-gallery-slide\")\n                    .querySelector(\n                        \".sp-fullscreen-trigger\"\n                    )\n            ) {\n\n                const button =\n                    document.createElement(\n                        \"button\"\n                    );\n\n                button.type = \"button\";\n\n                button.className =\n                    \"sp-fullscreen-trigger\";\n\n                button.textContent =\n                    \"View Full Screen\";\n\n                button.addEventListener(\n                    \"click\",\n                    function (event) {\n\n                        event.preventDefault();\n                        event.stopPropagation();\n\n                        openFullscreenModal();\n                    }\n                );\n\n                const featureInfo =\n                    featureWrap\n                        .closest(\".sp-gallery-slide\")\n                        .querySelector(\n                            \".sp-slide-info\"\n                        );\n\n                if (featureInfo) {\n\n                    featureInfo.appendChild(\n                        button\n                    );\n\n                } else {\n\n                    featureWrap.appendChild(\n                        button\n                    );\n                }\n            }\n\n            variantSlides.forEach(\n                function (slide) {\n\n                    const imageWrap =\n                        slide.querySelector(\n                            \".sp-variant-image-wrap\"\n                        );\n\n                    if (\n                        !imageWrap ||\n                        slide.querySelector(\n                            \".sp-fullscreen-trigger\"\n                        )\n                    ) {\n                        return;\n                    }\n\n                    const button =\n                        document.createElement(\n                            \"button\"\n                        );\n\n                    button.type = \"button\";\n\n                    button.className =\n                        \"sp-fullscreen-trigger\";\n\n                    button.textContent =\n                        \"View Full Screen\";\n\n                    button.addEventListener(\n                        \"click\",\n                        function (event) {\n\n                            event.preventDefault();\n                            event.stopPropagation();\n\n                            openFullscreenModal();\n                        }\n                    );\n\n                    const sideInfo =\n                        slide.querySelector(\n                            \".sp-side-info\"\n                        );\n\n                    if (sideInfo) {\n\n                        const partNumber =\n                            sideInfo.querySelector(\n                                \".sp-part-number\"\n                            );\n\n                        if (partNumber) {\n\n                            \/* Always place directly after Part Number. *\/\n                            partNumber.insertAdjacentElement(\n                                \"afterend\",\n                                button\n                            );\n\n                        } else {\n\n                            sideInfo.appendChild(\n                                button\n                            );\n                        }\n\n                    } else {\n\n                        imageWrap.appendChild(\n                            button\n                        );\n                    }\n                }\n            );\n        }\n\n        \/* =================================================\n           HOVER ZOOM\n           ================================================= *\/\n\n        function setupHoverZoom() {\n\n            variantSlides.forEach(\n                function (slide) {\n\n                    const imageWrap =\n                        slide.querySelector(\n                            \".sp-variant-image-wrap\"\n                        );\n\n                    const image =\n                        slide.querySelector(\n                            \".sp-variant-image\"\n                        );\n\n                    if (\n                        !imageWrap ||\n                        !image ||\n                        imageWrap.dataset.zoomInitialized ===\n                            \"true\"\n                    ) {\n                        return;\n                    }\n\n                    imageWrap.dataset.zoomInitialized =\n                        \"true\";\n\n                    const preview =\n                        document.createElement(\n                            \"div\"\n                        );\n\n                    preview.className =\n                        \"sp-zoom-preview\";\n\n                    const previewImage =\n                        document.createElement(\n                            \"img\"\n                        );\n\n                    previewImage.alt = \"\";\n\n                    preview.appendChild(\n                        previewImage\n                    );\n\n                    imageWrap.appendChild(\n                        preview\n                    );\n\n                    function syncPreviewImage() {\n\n                        const source =\n                            image.currentSrc ||\n                            image.src;\n\n                        if (source) {\n                            previewImage.src =\n                                source;\n                        }\n                    }\n\n                    image.addEventListener(\n                        \"load\",\n                        syncPreviewImage\n                    );\n\n                    syncPreviewImage();\n\n                    imageWrap.addEventListener(\n                        \"mouseenter\",\n                        function () {\n\n                            syncPreviewImage();\n\n                            imageWrap.classList.add(\n                                \"sp-zoom-active\"\n                            );\n                        }\n                    );\n\n                    imageWrap.addEventListener(\n                        \"mouseleave\",\n                        function () {\n\n                            imageWrap.classList.remove(\n                                \"sp-zoom-active\"\n                            );\n                        }\n                    );\n\n                    imageWrap.addEventListener(\n                        \"mousemove\",\n                        function (event) {\n\n                            if (\n                                window.innerWidth <=\n                                767\n                            ) {\n                                return;\n                            }\n\n                            const rect =\n                                imageWrap.getBoundingClientRect();\n\n                            const x =\n                                Math.max(\n                                    0,\n                                    Math.min(\n                                        1,\n                                        (\n                                            event.clientX -\n                                            rect.left\n                                        ) \/\n                                        rect.width\n                                    )\n                                );\n\n                            const y =\n                                Math.max(\n                                    0,\n                                    Math.min(\n                                        1,\n                                        (\n                                            event.clientY -\n                                            rect.top\n                                        ) \/\n                                        rect.height\n                                    )\n                                );\n\n                            previewImage.style.left =\n                                (-x * 100) + \"%\";\n\n                            previewImage.style.top =\n                                (-y * 100) + \"%\";\n                        }\n                    );\n                }\n            );\n        }\n\n        addFullscreenButtons();\n        setupHoverZoom();\n\n        \/* =================================================\n           WOOCOMMERCE VARIATION COMPATIBILITY\n           ================================================= *\/\n\n        if (window.jQuery) {\n\n            jQuery(document).on(\n                \"found_variation.spHarmonizedGallery\",\n                \"form.variations_form\",\n                function (event, variation) {\n\n                    if (\n                        !variation ||\n                        !variation.image ||\n                        !variation.image.src\n                    ) {\n                        return;\n                    }\n\n                    const variationImage =\n                        variation.image.src;\n\n                    thumbs.forEach(\n                        function (thumb, index) {\n\n                            const image =\n                                thumb.querySelector(\n                                    \"img\"\n                                );\n\n                            if (!image) return;\n\n                            const thumbImage =\n                                image.currentSrc ||\n                                image.src;\n\n                            if (\n                                thumbImage ===\n                                    variationImage ||\n                                thumbImage.includes(\n                                    variationImage\n                                ) ||\n                                variationImage.includes(\n                                    thumbImage\n                                )\n                            ) {\n                                showSlide(index);\n                            }\n                        }\n                    );\n                }\n            );\n        }\n\n        \/* Initial state. *\/\n        showSlide(0);\n    }\n\n    if (\n        document.readyState ===\n        \"loading\"\n    ) {\n\n        document.addEventListener(\n            \"DOMContentLoaded\",\n            initSmartPlugHarmonizedGallery\n        );\n\n    } else {\n\n        initSmartPlugHarmonizedGallery();\n    }\n\n    if (window.jQuery) {\n\n        jQuery(window).on(\n            \"elementor\/frontend\/init\",\n            function () {\n\n                setTimeout(\n                    initSmartPlugHarmonizedGallery,\n                    150\n                );\n            }\n        );\n    }\n\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8fd309a e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"8fd309a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9f404ad elementor-widget elementor-widget-heading\" data-id=\"9f404ad\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Harmonized Cord w\/ Boat Side Connector w\/ Blunt End<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b747897 elementor-widget elementor-widget-text-editor\" data-id=\"b747897\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>The 15 Amp 115V cordset is designed to provide a complete, safe, and easy-to-use power solution for everyday applications. It delivers a simple and reliable 15A 115V connection while ensuring a secure fit through its multi-point locking clips, which hold the plug firmly in place within the inlet. This stable connection helps reduce movement and maintain consistent performance, while integrated weatherproof seals protect against moisture intrusion, ensuring dependable operation in a variety of conditions.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f79334f elementor-widget elementor-widget-button\" data-id=\"f79334f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/dev.smartplug.com\/staging\/where-to-buy\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">WHERE TO BUY<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\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>SmartPlug Harmonized Cord w\/ Boat Side Connector w\/ Blunt End 1 Heavy-Duty Harmonized Cable Flexible, durable cable designed for long-term marine power applications. 2 Hassle-Free Connection Eliminates the frustration of twisting and aligning traditional shore power plugs. 3 Stable Electrical Contact Secure connector engagement helps maintain reliable power delivery under load. 4 Premium Copper Conductors High-quality copper wiring helps deliver reliable and efficient power. KEY FEATURES Click the numbered points to explore the harmonized cord. 16AMP HARMONIZED CORDSET 12.5 meters 16 AMP HARMONIZED CORDSET 12.5 meters SELECT LENGTH 12.5m 25m Showing 12.5m PART NUMBER: 32 AMP HARMONIZED CORDSET 15 meters 32 AMP HARMONIZED CORDSET 15 meters SELECT LENGTH 15m 25m Showing 15m PART NUMBER: &#10094; Features 16 Amp 32 Amp &#10095; Harmonized Cord w\/ Boat Side Connector w\/ Blunt End The 15 Amp 115V cordset is designed to provide a complete, safe, and easy-to-use power solution for everyday applications. It delivers a simple and reliable 15A 115V connection while ensuring a secure fit through its multi-point locking clips, which hold the plug firmly in place within the inlet. This stable connection helps reduce movement and maintain consistent performance, while integrated weatherproof seals protect against moisture intrusion, ensuring dependable operation in a variety of conditions. WHERE TO BUY<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-20506","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/dev.smartplug.com\/staging\/wp-json\/wp\/v2\/pages\/20506","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dev.smartplug.com\/staging\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dev.smartplug.com\/staging\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dev.smartplug.com\/staging\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dev.smartplug.com\/staging\/wp-json\/wp\/v2\/comments?post=20506"}],"version-history":[{"count":4,"href":"https:\/\/dev.smartplug.com\/staging\/wp-json\/wp\/v2\/pages\/20506\/revisions"}],"predecessor-version":[{"id":20511,"href":"https:\/\/dev.smartplug.com\/staging\/wp-json\/wp\/v2\/pages\/20506\/revisions\/20511"}],"wp:attachment":[{"href":"https:\/\/dev.smartplug.com\/staging\/wp-json\/wp\/v2\/media?parent=20506"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}