{"title":"Decorating, Surface Preparation \u0026 Site Essentials","description":null,"products":[{"product_id":"clear-23-micron-extended-core-pallet-wrap-400mm-450m","title":"Clear 23 Micron Extended Core Pallet Wrap – 400mm × 450m","description":"\u003cstyle\u003e\n  .product-trade-sheet {\n    --pts-bg: #ffffff;\n    --pts-surface: #ffffff;\n    --pts-soft: #f6f6f4;\n    --pts-text: #111111;\n    --pts-muted: #5a5a5a;\n    --pts-accent: #f26522;\n    --pts-accent-dark: #d95316;\n    --pts-accent-soft: #fff2e8;\n    --pts-line: #dfdfdb;\n    --pts-white: #ffffff;\n\n    width: 100%;\n    max-width: 100%;\n    color: var(--pts-text);\n    background: var(--pts-bg);\n\n    font-family:\n      -apple-system,\n      BlinkMacSystemFont,\n      \"Segoe UI\",\n      Arial,\n      sans-serif;\n\n    font-size: 14px;\n    line-height: 1.7;\n\n    container-type: inline-size;\n  }\n\n  .product-trade-sheet *,\n  .product-trade-sheet *::before,\n  .product-trade-sheet *::after {\n    box-sizing: border-box;\n  }\n\n  .product-trade-sheet h2,\n  .product-trade-sheet p {\n    margin: 0;\n  }\n\n  .product-trade-sheet button,\n  .product-trade-sheet input {\n    font: inherit;\n  }\n\n\n  \/* =========================================================\n     PRODUCT OVERVIEW\n  ========================================================= *\/\n\n  .pts-hero {\n    width: 100%;\n\n    border-top: 4px solid var(--pts-accent);\n    border-bottom: 1px solid var(--pts-line);\n\n    background: var(--pts-surface);\n  }\n\n  .pts-hero-copy {\n    width: 100%;\n\n    padding: clamp(30px, 5cqw, 58px);\n  }\n\n  .pts-eyebrow {\n    display: inline-flex;\n    align-items: center;\n\n    gap: 10px;\n\n    margin-bottom: 18px;\n\n    color: var(--pts-accent);\n\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1;\n    letter-spacing: 0.16em;\n\n    text-transform: uppercase;\n  }\n\n  .pts-eyebrow::before {\n    content: \"\";\n\n    width: 34px;\n    height: 2px;\n\n    background: var(--pts-accent);\n  }\n\n  .pts-product-title {\n    width: 100%;\n    max-width: 980px;\n\n    margin: 0 0 24px !important;\n\n    color: var(--pts-text);\n\n    font-size: clamp(30px, 5.2cqw, 48px);\n    font-weight: 800;\n    line-height: 1.07;\n    letter-spacing: -0.045em;\n  }\n\n  .pts-intro {\n    width: 100%;\n    max-width: 980px;\n\n    color: var(--pts-muted);\n\n    font-size: clamp(15px, 2cqw, 18px);\n    line-height: 1.85;\n  }\n\n\n  \/* =========================================================\n     TOP STATS\n  ========================================================= *\/\n\n  .pts-hero-aside {\n    display: grid;\n    grid-template-columns: repeat(4, minmax(0, 1fr));\n\n    width: 100%;\n\n    border-top: 1px solid var(--pts-line);\n\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-stat {\n    position: relative;\n\n    min-width: 0;\n    min-height: 126px;\n\n    padding: 20px;\n\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n\n    border-right: 1px solid var(--pts-line);\n\n    background: var(--pts-accent-soft);\n\n    overflow: hidden;\n\n    transition:\n      background-color 0.25s ease,\n      padding-left 0.25s ease;\n  }\n\n  .pts-stat:last-child {\n    border-right: 0;\n  }\n\n  .pts-stat::after {\n    content: \"\";\n\n    position: absolute;\n\n    left: 0;\n    bottom: 0;\n\n    width: 0;\n    height: 3px;\n\n    background: var(--pts-accent);\n\n    transition: width 0.3s ease;\n  }\n\n  .pts-stat:hover {\n    padding-left: 24px;\n\n    background: #ffffff;\n  }\n\n  .pts-stat:hover::after {\n    width: 100%;\n  }\n\n  .pts-stat-label {\n    display: block;\n\n    color: var(--pts-muted);\n\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.14em;\n\n    text-transform: uppercase;\n  }\n\n  .pts-stat-value {\n    display: block;\n\n    margin-top: 22px;\n\n    color: var(--pts-text);\n\n    font-size: clamp(22px, 4cqw, 32px);\n    font-weight: 780;\n    line-height: 1;\n    letter-spacing: -0.035em;\n  }\n\n  .pts-stat-value small {\n    display: block;\n\n    margin-top: 8px;\n\n    color: var(--pts-muted);\n\n    font-size: 11px;\n    font-weight: 600;\n    line-height: 1.4;\n    letter-spacing: 0;\n  }\n\n\n  \/* =========================================================\n     PURCHASE PANEL\n  ========================================================= *\/\n\n  .pts-purchase-panel {\n    width: 100%;\n\n    padding: 20px;\n\n    border-bottom: 1px solid var(--pts-line);\n\n    background: var(--pts-soft);\n  }\n\n  .pts-purchase-card {\n    width: 100%;\n\n    border: 1px solid var(--pts-line);\n\n    background: #ffffff;\n  }\n\n  .pts-purchase-main {\n    display: grid;\n\n    grid-template-columns:\n      minmax(220px, 0.9fr)\n      minmax(190px, 0.75fr)\n      minmax(280px, 1.2fr);\n\n    width: 100%;\n  }\n\n\n  \/* =========================================================\n     QUANTITY\n  ========================================================= *\/\n\n  .pts-purchase-quantity {\n    min-width: 0;\n\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n\n    padding: 22px;\n\n    border-right: 1px solid var(--pts-line);\n\n    background: #ffffff;\n  }\n\n  .pts-purchase-label {\n    display: block;\n\n    margin-bottom: 12px;\n\n    color: var(--pts-muted);\n\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.13em;\n\n    text-transform: uppercase;\n  }\n\n  .pts-quantity-selector {\n    display: grid;\n\n    grid-template-columns:\n      50px\n      88px\n      50px;\n\n    width: max-content;\n    height: 52px;\n\n    border: 1px solid var(--pts-line);\n\n    background: #ffffff;\n  }\n\n  .pts-quantity-button {\n    appearance: none;\n    -webkit-appearance: none;\n\n    width: 50px;\n    height: 50px;\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    margin: 0;\n    padding: 0;\n\n    border: 0;\n    border-radius: 0;\n\n    background: #ffffff;\n    color: #111111;\n\n    cursor: pointer;\n\n    font-size: 22px;\n    font-weight: 500;\n    line-height: 1;\n\n    user-select: none;\n\n    transition:\n      background-color 0.2s ease,\n      color 0.2s ease;\n  }\n\n  .pts-quantity-button:hover:not(:disabled) {\n    background: var(--pts-accent);\n    color: #ffffff;\n  }\n\n  .pts-quantity-button:active:not(:disabled) {\n    background: var(--pts-accent-dark);\n  }\n\n  .pts-quantity-button:disabled {\n    cursor: not-allowed;\n\n    background: var(--pts-soft);\n    color: #b9b9b5;\n  }\n\n  .pts-quantity-input {\n    appearance: textfield;\n    -moz-appearance: textfield;\n\n    width: 88px;\n    height: 50px;\n\n    margin: 0;\n    padding: 0 5px;\n\n    border-top: 0;\n    border-bottom: 0;\n    border-left: 1px solid var(--pts-line);\n    border-right: 1px solid var(--pts-line);\n\n    border-radius: 0;\n    outline: none;\n\n    background: #ffffff;\n    color: var(--pts-text);\n\n    text-align: center;\n\n    font-size: 17px;\n    font-weight: 800;\n    line-height: 50px;\n  }\n\n  .pts-quantity-input:focus {\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-quantity-input::-webkit-inner-spin-button,\n  .pts-quantity-input::-webkit-outer-spin-button {\n    margin: 0;\n    -webkit-appearance: none;\n  }\n\n  .pts-minimum-note {\n    display: block;\n\n    margin-top: 10px;\n\n    color: var(--pts-muted);\n\n    font-size: 10px;\n    line-height: 1.45;\n  }\n\n  .pts-minimum-note strong {\n    color: var(--pts-text);\n  }\n\n\n  \/* =========================================================\n     ORDER TOTAL\n  ========================================================= *\/\n\n  .pts-purchase-total {\n    min-width: 0;\n\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n\n    padding: 22px;\n\n    border-right: 1px solid var(--pts-line);\n\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-order-total-value {\n    display: block;\n\n    color: var(--pts-text);\n\n    font-size: clamp(28px, 4.4cqw, 38px);\n    font-weight: 800;\n    line-height: 1;\n    letter-spacing: -0.04em;\n  }\n\n  .pts-order-total-meta {\n    display: block;\n\n    margin-top: 9px;\n\n    color: var(--pts-muted);\n\n    font-size: 11px;\n    line-height: 1.5;\n  }\n\n\n  \/* =========================================================\n     BUY BUTTONS\n  ========================================================= *\/\n\n  .pts-purchase-actions {\n    min-width: 0;\n\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n\n    gap: 14px;\n\n    padding: 14px;\n\n    background: #ffffff;\n  }\n\n  .pts-buy-button {\n    appearance: none;\n    -webkit-appearance: none;\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    width: 100%;\n    min-height: 54px;\n\n    margin: 0;\n    padding: 14px 18px;\n\n    border-radius: 0;\n\n    cursor: pointer;\n\n    font-size: 12px;\n    font-weight: 800;\n    line-height: 1.35;\n    letter-spacing: 0.055em;\n\n    text-align: center;\n    text-transform: uppercase;\n\n    transition:\n      background-color 0.2s ease,\n      color 0.2s ease,\n      border-color 0.2s ease,\n      transform 0.12s ease;\n  }\n\n  .pts-add-cart {\n    border: 1px solid #111111;\n\n    background: #111111;\n    color: #ffffff;\n  }\n\n  .pts-add-cart:hover {\n    background: #292929;\n    border-color: #292929;\n  }\n\n  .pts-add-cart:active {\n    transform: translateY(1px);\n\n    background: #000000;\n    border-color: #000000;\n  }\n\n  .pts-buy-now {\n    border: 1px solid var(--pts-accent);\n\n    background: var(--pts-accent);\n    color: #ffffff;\n  }\n\n  .pts-buy-now:hover {\n    background: var(--pts-accent-dark);\n    border-color: var(--pts-accent-dark);\n  }\n\n  .pts-buy-now:active {\n    transform: translateY(1px);\n  }\n\n  .pts-buy-button:disabled {\n    cursor: wait;\n    opacity: 0.6;\n  }\n\n\n  \/* =========================================================\n     PURCHASE FOOTER\n  ========================================================= *\/\n\n  .pts-purchase-footer {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n\n    gap: 18px;\n\n    min-height: 46px;\n\n    padding: 10px 18px;\n\n    border-top: 1px solid var(--pts-line);\n\n    background: #ffffff;\n  }\n\n  .pts-purchase-footer-text {\n    color: var(--pts-muted);\n\n    font-size: 10px;\n    line-height: 1.5;\n  }\n\n  .pts-purchase-footer-text strong {\n    color: var(--pts-text);\n  }\n\n  .pts-purchase-status {\n    min-height: 15px;\n\n    color: var(--pts-muted);\n\n    font-size: 10px;\n    line-height: 1.5;\n\n    text-align: right;\n  }\n\n  .pts-purchase-status.is-error {\n    color: #b42318;\n  }\n\n  .pts-purchase-status.is-success {\n    color: #111111;\n  }\n\n\n  \/* =========================================================\n     SECTION INDEX\n  ========================================================= *\/\n\n  .pts-section-index {\n    display: grid;\n    grid-template-columns: repeat(4, minmax(0, 1fr));\n\n    width: 100%;\n\n    border-bottom: 1px solid var(--pts-line);\n\n    background: var(--pts-soft);\n  }\n\n  .pts-index-item {\n    min-width: 0;\n\n    padding: 16px 18px;\n\n    border-right: 1px solid var(--pts-line);\n\n    transition:\n      background-color 0.25s ease,\n      padding-left 0.25s ease;\n  }\n\n  .pts-index-item:last-child {\n    border-right: 0;\n  }\n\n  .pts-index-item:hover {\n    padding-left: 23px;\n\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-index-number {\n    display: block;\n\n    margin-bottom: 6px;\n\n    color: var(--pts-accent);\n\n    font-size: 9px;\n    font-weight: 850;\n    line-height: 1;\n    letter-spacing: 0.12em;\n  }\n\n  .pts-index-label {\n    display: block;\n\n    color: var(--pts-text);\n\n    font-size: 11px;\n    font-weight: 700;\n    line-height: 1.4;\n  }\n\n\n  \/* =========================================================\n     ACCORDION\n  ========================================================= *\/\n\n  .pts-sections {\n    width: 100%;\n\n    background: var(--pts-bg);\n  }\n\n  .pts-section {\n    width: 100%;\n\n    border-bottom: 1px solid var(--pts-line);\n  }\n\n  .pts-section details {\n    display: block;\n\n    width: 100%;\n  }\n\n  .pts-section summary {\n    display: grid;\n\n    grid-template-columns:\n      82px\n      minmax(0, 1fr)\n      64px;\n\n    align-items: stretch;\n\n    width: 100%;\n    min-height: 86px;\n\n    padding: 0;\n\n    background: var(--pts-surface);\n\n    cursor: pointer;\n    list-style: none;\n    user-select: none;\n\n    transition: background-color 0.25s ease;\n  }\n\n  .pts-section summary::-webkit-details-marker {\n    display: none;\n  }\n\n  .pts-section summary::marker {\n    content: \"\";\n  }\n\n  .pts-section summary:hover,\n  .pts-section details[open] \u003e summary {\n    background: var(--pts-soft);\n  }\n\n  .pts-section-no {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    border-right: 1px solid var(--pts-line);\n\n    color: var(--pts-accent);\n\n    font-size: 11px;\n    font-weight: 850;\n    line-height: 1;\n    letter-spacing: 0.12em;\n\n    transition:\n      background-color 0.3s ease,\n      color 0.3s ease;\n  }\n\n  .pts-section details[open] .pts-section-no {\n    background: var(--pts-accent);\n    color: #ffffff;\n  }\n\n  .pts-section-title {\n    min-width: 0;\n\n    display: flex;\n    align-items: center;\n\n    padding: 18px 24px;\n\n    color: var(--pts-text);\n\n    font-size: clamp(14px, 2.1cqw, 18px);\n    font-weight: 750;\n    line-height: 1.4;\n  }\n\n\n  \/* =========================================================\n     HAMMER\n  ========================================================= *\/\n\n  .pts-section-toggle {\n    position: relative;\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    min-width: 64px;\n\n    border-left: 1px solid var(--pts-line);\n\n    background: var(--pts-surface);\n\n    overflow: hidden;\n\n    transition: background-color 0.25s ease;\n  }\n\n  .pts-section summary:hover .pts-section-toggle,\n  .pts-section details[open] .pts-section-toggle {\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-hammer {\n    position: relative;\n\n    display: block;\n\n    width: 26px;\n    height: 34px;\n\n    transform: rotate(0deg);\n    transform-origin: 50% 50%;\n\n    transition:\n      transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n  }\n\n  .pts-hammer::before {\n    content: \"\";\n\n    position: absolute;\n\n    left: 50%;\n    top: 11px;\n\n    width: 5px;\n    height: 23px;\n\n    background: var(--pts-accent);\n\n    transform: translateX(-50%);\n  }\n\n  .pts-hammer::after {\n    content: \"\";\n\n    position: absolute;\n\n    top: 4px;\n    left: 50%;\n\n    width: 24px;\n    height: 9px;\n\n    background: var(--pts-accent);\n\n    transform: translateX(-50%);\n  }\n\n  .pts-hammer-neck {\n    position: absolute;\n\n    top: 9px;\n    left: 50%;\n\n    width: 9px;\n    height: 8px;\n\n    background: var(--pts-accent);\n\n    transform: translateX(-50%);\n  }\n\n  .pts-section details[open] .pts-hammer {\n    transform: rotate(90deg);\n  }\n\n  .pts-section summary:hover .pts-hammer {\n    transform: rotate(-7deg);\n  }\n\n  .pts-section details[open] summary:hover .pts-hammer {\n    transform: rotate(97deg);\n  }\n\n\n  \/* =========================================================\n     SECTION BODY\n  ========================================================= *\/\n\n  .pts-section-body {\n    display: grid;\n\n    grid-template-columns:\n      82px\n      minmax(0, 1fr);\n\n    width: 100%;\n\n    background: var(--pts-bg);\n  }\n\n  .pts-body-rail {\n    border-right: 1px solid var(--pts-line);\n\n    background:\n      repeating-linear-gradient(\n        to bottom,\n        transparent 0,\n        transparent 17px,\n        rgba(242, 101, 34, 0.07) 17px,\n        rgba(242, 101, 34, 0.07) 18px\n      );\n  }\n\n  .pts-body-content {\n    min-width: 0;\n\n    padding: clamp(22px, 4cqw, 42px);\n\n    color: var(--pts-muted);\n  }\n\n  .pts-copy {\n    width: 100%;\n    max-width: 950px;\n  }\n\n  .pts-copy p {\n    margin-bottom: 18px;\n  }\n\n  .pts-copy p:last-child {\n    margin-bottom: 0;\n  }\n\n\n  \/* =========================================================\n     FEATURES\n  ========================================================= *\/\n\n  .pts-feature-band {\n    display: grid;\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n\n    width: 100%;\n\n    margin-top: 28px;\n\n    border-top: 1px solid var(--pts-line);\n    border-bottom: 1px solid var(--pts-line);\n\n    background: var(--pts-surface);\n  }\n\n  .pts-feature {\n    position: relative;\n\n    min-width: 0;\n    min-height: 100px;\n\n    padding: 18px;\n\n    border-right: 1px solid var(--pts-line);\n\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n\n    background: var(--pts-surface);\n\n    overflow: hidden;\n\n    transition:\n      background-color 0.25s ease,\n      padding-left 0.25s ease;\n  }\n\n  .pts-feature:last-child {\n    border-right: 0;\n  }\n\n  .pts-feature::before {\n    content: \"\";\n\n    position: absolute;\n\n    top: 0;\n    left: 0;\n\n    width: 3px;\n    height: 0;\n\n    background: var(--pts-accent);\n\n    transition: height 0.3s ease;\n  }\n\n  .pts-feature:hover {\n    padding-left: 23px;\n\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-feature:hover::before {\n    height: 100%;\n  }\n\n  .pts-feature-label {\n    color: var(--pts-muted);\n\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.12em;\n\n    text-transform: uppercase;\n  }\n\n  .pts-feature-value {\n    margin-top: 17px;\n\n    color: var(--pts-text);\n\n    font-size: 13px;\n    font-weight: 750;\n    line-height: 1.45;\n  }\n\n\n  \/* =========================================================\n     SPECIFICATIONS\n  ========================================================= *\/\n\n  .pts-spec-list {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n\n    width: 100%;\n\n    margin: 0;\n    padding: 0;\n\n    border-top: 1px solid var(--pts-line);\n\n    list-style: none;\n  }\n\n  .pts-spec-list li {\n    position: relative;\n\n    min-width: 0;\n    min-height: 84px;\n\n    padding: 17px 20px;\n\n    border-right: 1px solid var(--pts-line);\n    border-bottom: 1px solid var(--pts-line);\n\n    background: var(--pts-surface);\n\n    overflow: hidden;\n\n    transition:\n      background-color 0.22s ease,\n      padding-left 0.22s ease;\n  }\n\n  .pts-spec-list li:nth-child(2n) {\n    border-right: 0;\n  }\n\n  .pts-spec-list li::before {\n    content: \"\";\n\n    position: absolute;\n\n    left: 0;\n    top: 0;\n\n    width: 3px;\n    height: 0;\n\n    background: var(--pts-accent);\n\n    transition: height 0.25s ease;\n  }\n\n  .pts-spec-list li:hover {\n    padding-left: 25px;\n\n    background: var(--pts-soft);\n  }\n\n  .pts-spec-list li:hover::before {\n    height: 100%;\n  }\n\n  .pts-spec-list strong {\n    display: block;\n\n    margin-bottom: 6px;\n\n    color: var(--pts-text);\n\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.1em;\n\n    text-transform: uppercase;\n  }\n\n  .pts-spec-list span {\n    display: block;\n\n    color: var(--pts-muted);\n\n    font-size: 13px;\n    line-height: 1.55;\n  }\n\n\n  \/* =========================================================\n     NOTE\n  ========================================================= *\/\n\n  .pts-note {\n    display: grid;\n\n    grid-template-columns:\n      46px\n      minmax(0, 1fr);\n\n    width: 100%;\n\n    margin-top: 20px;\n\n    border-top: 1px solid var(--pts-line);\n    border-bottom: 1px solid var(--pts-line);\n\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-note-icon {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    border-right: 1px solid var(--pts-line);\n\n    color: var(--pts-accent);\n\n    font-family: Georgia, serif;\n    font-size: 15px;\n    font-weight: 700;\n  }\n\n  .pts-note-copy {\n    min-width: 0;\n\n    padding: 14px 16px;\n\n    color: var(--pts-muted);\n\n    font-size: 12px;\n    line-height: 1.7;\n  }\n\n  .pts-note-copy strong {\n    color: var(--pts-text);\n  }\n\n\n  \/* =========================================================\n     WHOLESALE TABLE\n  ========================================================= *\/\n\n  .pts-wholesale-layout {\n    display: grid;\n\n    grid-template-columns:\n      minmax(0, 1.3fr)\n      minmax(230px, 0.7fr);\n\n    width: 100%;\n\n    margin-top: 28px;\n\n    border-top: 1px solid var(--pts-line);\n    border-bottom: 1px solid var(--pts-line);\n  }\n\n  .pts-wholesale-data {\n    min-width: 0;\n\n    background: var(--pts-surface);\n  }\n\n  .pts-wholesale-row {\n    display: grid;\n\n    grid-template-columns:\n      minmax(120px, 38%)\n      minmax(0, 1fr);\n\n    min-height: 54px;\n\n    border-bottom: 1px solid var(--pts-line);\n  }\n\n  .pts-wholesale-row:last-child {\n    border-bottom: 0;\n  }\n\n  .pts-wholesale-key {\n    display: flex;\n    align-items: center;\n\n    padding: 11px 15px;\n\n    border-right: 1px solid var(--pts-line);\n\n    background: var(--pts-soft);\n\n    color: var(--pts-muted);\n\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.1em;\n\n    text-transform: uppercase;\n  }\n\n  .pts-wholesale-value {\n    min-width: 0;\n\n    display: flex;\n    align-items: center;\n\n    padding: 11px 16px;\n\n    background: var(--pts-surface);\n\n    color: var(--pts-text);\n\n    font-size: 13px;\n    font-weight: 700;\n    line-height: 1.5;\n\n    transition:\n      background-color 0.22s ease,\n      padding-left 0.22s ease;\n  }\n\n  .pts-wholesale-row:hover .pts-wholesale-value {\n    padding-left: 21px;\n\n    background: var(--pts-accent-soft);\n  }\n\n\n  \/* =========================================================\n     SUMMARY\n  ========================================================= *\/\n\n  .pts-wholesale-summary {\n    min-width: 0;\n\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n\n    padding: 28px;\n\n    background: #111111;\n    color: #ffffff;\n  }\n\n  .pts-summary-topline {\n    color: rgba(255, 255, 255, 0.64);\n\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.14em;\n\n    text-transform: uppercase;\n  }\n\n  .pts-summary-large {\n    margin: 30px 0;\n\n    color: #ffffff;\n\n    font-size: clamp(34px, 7cqw, 54px);\n    font-weight: 760;\n    line-height: 0.95;\n    letter-spacing: -0.05em;\n  }\n\n  .pts-summary-large::after {\n    content: \"\";\n\n    display: block;\n\n    width: 42px;\n    height: 3px;\n\n    margin-top: 18px;\n\n    background: var(--pts-accent);\n  }\n\n  .pts-summary-large small {\n    display: block;\n\n    margin-top: 11px;\n\n    color: rgba(255, 255, 255, 0.7);\n\n    font-size: 11px;\n    font-weight: 600;\n    line-height: 1.4;\n    letter-spacing: 0;\n  }\n\n  .pts-summary-lines {\n    color: rgba(255, 255, 255, 0.8);\n\n    font-size: 12px;\n    line-height: 1.85;\n  }\n\n  .pts-summary-lines strong {\n    color: #ffffff;\n  }\n\n  .pts-orange {\n    color: var(--pts-accent) !important;\n  }\n\n\n  \/* =========================================================\n     TABLET\n  ========================================================= *\/\n\n  @container (max-width: 760px) {\n\n    .pts-hero-copy {\n      padding: 30px 24px;\n    }\n\n    .pts-product-title {\n      font-size: 34px;\n    }\n\n    .pts-intro {\n      font-size: 15px;\n    }\n\n    .pts-hero-aside {\n      grid-template-columns:\n        repeat(2, minmax(0, 1fr));\n    }\n\n    .pts-stat {\n      border-bottom:\n        1px solid var(--pts-line);\n    }\n\n    .pts-stat:nth-child(2) {\n      border-right: 0;\n    }\n\n    .pts-stat:nth-child(3),\n    .pts-stat:nth-child(4) {\n      border-bottom: 0;\n    }\n\n    .pts-purchase-main {\n      grid-template-columns:\n        1fr 1fr;\n    }\n\n    .pts-purchase-total {\n      border-right: 0;\n    }\n\n    .pts-purchase-actions {\n      grid-column: 1 \/ -1;\n\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n\n      gap: 14px;\n\n      border-top:\n        1px solid var(--pts-line);\n    }\n\n    .pts-section-index {\n      grid-template-columns:\n        repeat(2, minmax(0, 1fr));\n    }\n\n    .pts-index-item:nth-child(2) {\n      border-right: 0;\n    }\n\n    .pts-index-item:nth-child(-n + 2) {\n      border-bottom:\n        1px solid var(--pts-line);\n    }\n\n    .pts-feature-band {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-feature {\n      min-height: auto;\n\n      border-right: 0;\n\n      border-bottom:\n        1px solid var(--pts-line);\n    }\n\n    .pts-feature:last-child {\n      border-bottom: 0;\n    }\n\n    .pts-wholesale-layout {\n      grid-template-columns: 1fr;\n    }\n  }\n\n\n  \/* =========================================================\n     MOBILE\n  ========================================================= *\/\n\n  @container (max-width: 540px) {\n\n    .pts-hero-copy {\n      padding: 26px 18px;\n    }\n\n    .pts-product-title {\n      margin-bottom: 18px !important;\n\n      font-size: 29px;\n      line-height: 1.1;\n    }\n\n    .pts-eyebrow {\n      margin-bottom: 16px;\n    }\n\n    .pts-intro {\n      font-size: 14px;\n      line-height: 1.8;\n    }\n\n    .pts-stat {\n      min-height: 108px;\n\n      padding: 16px;\n    }\n\n    .pts-stat-value {\n      margin-top: 17px;\n\n      font-size: 22px;\n    }\n\n    .pts-purchase-panel {\n      padding: 12px;\n    }\n\n    .pts-purchase-main {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-purchase-quantity,\n    .pts-purchase-total {\n      border-right: 0;\n\n      border-bottom:\n        1px solid var(--pts-line);\n    }\n\n    .pts-purchase-actions {\n      grid-column: auto;\n\n      display: flex;\n      flex-direction: column;\n\n      gap: 10px;\n\n      border-top: 0;\n    }\n\n    .pts-purchase-footer {\n      align-items: flex-start;\n      flex-direction: column;\n\n      gap: 4px;\n    }\n\n    .pts-purchase-status {\n      text-align: left;\n    }\n\n    .pts-section-index {\n      display: none;\n    }\n\n    .pts-section summary {\n      grid-template-columns:\n        52px\n        minmax(0, 1fr)\n        50px;\n\n      min-height: 72px;\n    }\n\n    .pts-section-no {\n      font-size: 9px;\n    }\n\n    .pts-section-title {\n      padding: 13px 14px;\n\n      font-size: 13px;\n    }\n\n    .pts-section-toggle {\n      min-width: 50px;\n    }\n\n    .pts-hammer {\n      transform: scale(0.86);\n    }\n\n    .pts-section details[open] .pts-hammer {\n      transform:\n        scale(0.86)\n        rotate(90deg);\n    }\n\n    .pts-section summary:hover .pts-hammer {\n      transform:\n        scale(0.86)\n        rotate(-7deg);\n    }\n\n    .pts-section details[open] summary:hover .pts-hammer {\n      transform:\n        scale(0.86)\n        rotate(97deg);\n    }\n\n    .pts-section-body {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-body-rail {\n      display: none;\n    }\n\n    .pts-body-content {\n      padding: 22px 14px 27px;\n    }\n\n    .pts-spec-list {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-spec-list li,\n    .pts-spec-list li:nth-child(2n) {\n      border-right: 0;\n    }\n\n    .pts-wholesale-row {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-wholesale-key {\n      padding: 11px 13px 3px;\n\n      border-right: 0;\n\n      background: var(--pts-surface);\n    }\n\n    .pts-wholesale-value {\n      padding: 3px 13px 13px;\n    }\n\n    .pts-wholesale-summary {\n      padding: 24px 19px;\n    }\n  }\n\n\n  @container (max-width: 360px) {\n\n    .pts-hero-aside {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-stat {\n      border-right: 0;\n\n      border-bottom:\n        1px solid var(--pts-line);\n    }\n\n    .pts-stat:last-child {\n      border-bottom: 0;\n    }\n  }\n\u003c\/style\u003e\n\u003cdiv class=\"product-trade-sheet\" id=\"pts-clear-pallet-wrap-card\"\u003e\n\u003c!-- CURRENT SHOPIFY VARIANT --\u003e \u003cinput type=\"hidden\" class=\"pts-current-variant\" value=\"{{ product.selected_or_first_available_variant.id }}\"\u003e \u003c!-- =======================================================\n       PRODUCT OVERVIEW\n  ======================================================== --\u003e\n\u003cdiv class=\"pts-hero\"\u003e\n\u003cdiv class=\"pts-hero-copy\"\u003e\n\u003cspan class=\"pts-eyebrow\"\u003e Warehouse \u0026amp; packaging supplies \u003c\/span\u003e\n\u003ch2 class=\"pts-product-title\"\u003eClear 23 Micron Extended Core Pallet Wrap – 400mm × 450m\u003c\/h2\u003e\n\u003cp class=\"pts-intro\"\u003eHeavy-duty clear pallet wrap designed for securing, stabilising and protecting palletised goods during storage, handling and transportation. The 400mm-wide stretch film provides a generous 450 metre roll length, while the 23 micron construction is suited to demanding warehouse and distribution applications. An extended core provides a practical hand grip for controlled manual wrapping without requiring a separate dispenser.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- KEY DATA --\u003e\n\u003cdiv class=\"pts-hero-aside\"\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Roll size \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e 400mm \u003csmall\u003e 450m roll length \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Unit price \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e £10.00 \u003csmall\u003e Per roll \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Minimum order \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e 24 \u003csmall\u003e Rolls \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e MOQ total \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e £240.00 \u003csmall\u003e 24 rolls \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- =======================================================\n       PURCHASE\n  ======================================================== --\u003e\n\u003cdiv class=\"pts-purchase-panel\"\u003e\n\u003cdiv class=\"pts-purchase-card\"\u003e\n\u003cdiv class=\"pts-purchase-main\"\u003e\n\u003c!-- QUANTITY --\u003e\n\u003cdiv class=\"pts-purchase-quantity\"\u003e\n\u003cspan class=\"pts-purchase-label\"\u003e Boxes \u003c\/span\u003e\n\u003cdiv class=\"pts-quantity-selector\"\u003e\n\u003cbutton type=\"button\" class=\"pts-quantity-button pts-quantity-minus\"\u003e−\u003c\/button\u003e \u003cinput type=\"number\" class=\"pts-quantity-input\" value=\"1\" min=\"1\" step=\"1\" inputmode=\"numeric\"\u003e \u003cbutton type=\"button\" class=\"pts-quantity-button pts-quantity-plus\"\u003e+\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cspan class=\"pts-minimum-note\"\u003e 1 box = \u003cstrong\u003e24 individual rolls\u003c\/strong\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c!-- TOTAL --\u003e\n\u003cdiv class=\"pts-purchase-total\"\u003e\n\u003cspan class=\"pts-purchase-label\"\u003e Order total \u003c\/span\u003e \u003cspan class=\"pts-order-total-value\"\u003e £240.00 \u003c\/span\u003e \u003cspan class=\"pts-order-total-meta\"\u003e 1 box · 24 rolls × £10.00 \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c!-- ACTIONS --\u003e\n\u003cdiv class=\"pts-purchase-actions\"\u003e\n\u003cbutton type=\"button\" class=\"pts-buy-button pts-add-cart\"\u003eADD BOX · 24 ROLLS\u003c\/button\u003e \u003cbutton type=\"button\" class=\"pts-buy-button pts-buy-now\"\u003eBUY NOW · £240.00\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-footer\"\u003e\n\u003cspan class=\"pts-purchase-footer-text\"\u003e Minimum order: \u003cstrong\u003e1 box = 24 rolls\u003c\/strong\u003e · £10.00 per roll · £240.00 per box \u003c\/span\u003e \u003cspan class=\"pts-purchase-status\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- =======================================================\n       SECTION INDEX\n  ======================================================== --\u003e\n\u003cdiv class=\"pts-section-index\"\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e 01 \u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Secure \u0026amp; stabilise \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e 02 \u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Size \u0026amp; construction \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e 03 \u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Use \u0026amp; storage \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e 04 \u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Wholesale supply \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- =======================================================\n       SECTIONS\n  ======================================================== --\u003e\n\u003cdiv class=\"pts-sections\"\u003e\n\u003c!-- SECTION 01 --\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e 01 \u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Secure Pallet Wrapping \u0026amp; Load Stability \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e \u003cspan class=\"pts-hammer\"\u003e \u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e \u003c\/span\u003e \u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cdiv class=\"pts-copy\"\u003e\n\u003cp\u003eThis clear pallet wrap provides a practical method of securing cartons, packaged products and mixed loads to pallets for storage, handling and transportation. Stretch wrapping helps keep individual items grouped together while reducing movement across the pallet during normal warehouse operations.\u003c\/p\u003e\n\u003cp\u003eThe transparent finish allows labels, barcodes and packaged goods to remain visible after wrapping. This makes the film suitable for warehouses, distribution centres, stockrooms, fulfilment operations and other environments where products may need to remain identifiable while protected.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature-band\"\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Film colour \u003c\/span\u003e \u003cspan class=\"pts-feature-value\"\u003e Clear \/ transparent \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Film thickness \u003c\/span\u003e \u003cspan class=\"pts-feature-value\"\u003e 23 micron \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Core type \u003c\/span\u003e \u003cspan class=\"pts-feature-value\"\u003e Extended core \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c!-- SECTION 02 --\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e 02 \u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Dimensions, Film \u0026amp; Extended Core Design \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e \u003cspan class=\"pts-hammer\"\u003e \u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e \u003c\/span\u003e \u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cul class=\"pts-spec-list\"\u003e\n\u003cli\u003e\n\u003cstrong\u003e Product type \u003c\/strong\u003e \u003cspan\u003e Clear hand pallet wrap. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Roll width \u003c\/strong\u003e \u003cspan\u003e 400 mm. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Roll length \u003c\/strong\u003e \u003cspan\u003e 450 metres. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Film thickness \u003c\/strong\u003e \u003cspan\u003e 23 micron. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Colour \u003c\/strong\u003e \u003cspan\u003e Clear \/ transparent. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Core design \u003c\/strong\u003e \u003cspan\u003e Extended core for manual handling and wrapping. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Application \u003c\/strong\u003e \u003cspan\u003e Manual pallet and load wrapping. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Visibility \u003c\/strong\u003e \u003cspan\u003e Transparent film keeps labels and packaged contents visible. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Recommended environments \u003c\/strong\u003e \u003cspan\u003e Warehouses, stockrooms, distribution centres, packing areas and general commercial storage. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Suitable for \u003c\/strong\u003e \u003cspan\u003e Securing cartons, packaged products and palletised loads. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003ei\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Application note: \u003c\/strong\u003e Wrap requirements can vary according to pallet weight, load shape, surface condition and transportation requirements. Apply sufficient layers to achieve suitable load stability.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c!-- SECTION 03 --\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e 03 \u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Application, Handling \u0026amp; Storage \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e \u003cspan class=\"pts-hammer\"\u003e \u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e \u003c\/span\u003e \u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cul class=\"pts-spec-list\"\u003e\n\u003cli\u003e\n\u003cstrong\u003e Before wrapping \u003c\/strong\u003e \u003cspan\u003e Ensure cartons and packaged products are positioned securely on the pallet before applying the film. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Starting the wrap \u003c\/strong\u003e \u003cspan\u003e Secure the film at the lower section of the pallet or load before beginning the wrapping process. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Application \u003c\/strong\u003e \u003cspan\u003e Maintain controlled tension while moving around the pallet and overlapping successive layers. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Load coverage \u003c\/strong\u003e \u003cspan\u003e Apply additional layers around areas requiring increased stability or protection. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Extended core \u003c\/strong\u003e \u003cspan\u003e Use the projecting core as a hand grip to support controlled manual dispensing. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Removal \u003c\/strong\u003e \u003cspan\u003e Cut or remove the film carefully without damaging packaged goods beneath the wrap. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Storage \u003c\/strong\u003e \u003cspan\u003e Store unused rolls in a clean, dry environment away from unnecessary heat and direct sunlight. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Roll protection \u003c\/strong\u003e \u003cspan\u003e Protect roll edges and film surfaces from cuts, punctures and contamination before use. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003e!\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Handling note: \u003c\/strong\u003e Pallet wrap is intended to support load containment but should not be treated as a replacement for appropriate pallet loading, stacking and transport safety procedures.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c!-- SECTION 04 --\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e 04 \u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Packaging \u0026amp; Wholesale Supply \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e \u003cspan class=\"pts-hammer\"\u003e \u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e \u003c\/span\u003e \u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cdiv class=\"pts-copy\"\u003e\n\u003cp\u003eOne Shopify selling unit is one individual roll of clear pallet wrap. Each wholesale box contains 24 rolls. Each roll measures 400mm × 450m with a 23 micron film thickness and extended core design. Each roll is priced at £10.00, giving a wholesale box value of £240.00. Additional boxes can be selected directly using the box quantity control above.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-layout\"\u003e\n\u003cdiv class=\"pts-wholesale-data\"\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eProduct\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003eClear extended core pallet wrap\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eRoll dimensions\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e400mm × 450m\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eThickness\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e23 micron\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eColour\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003eClear\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eCore\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003eExtended core\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eUnit price\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e£10.00\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eBox quantity\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e24 rolls\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eMinimum order\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e1 wholesale box\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eBox total\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e£240.00\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003caside class=\"pts-wholesale-summary\"\u003e\n\u003cdiv\u003e\n\u003cspan class=\"pts-summary-topline\"\u003e Wholesale box \u003c\/span\u003e\n\u003cdiv class=\"pts-summary-large\"\u003e£240.00 \u003csmall\u003e 24 rolls \u003c\/small\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-summary-lines\"\u003e\n\u003cstrong\u003e £10.00 \u003c\/strong\u003e per roll \u003cbr\u003e\u003cstrong\u003e 400mm × 450m \u003c\/strong\u003e per roll \u003cbr\u003e\u003cstrong\u003e 24 rolls \u003c\/strong\u003e per box \u003cbr\u003e\u003cstrong class=\"pts-orange\"\u003e £240.00 \u003c\/strong\u003e per wholesale box\u003c\/div\u003e\n\u003c\/aside\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003ei\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Wholesale calculation: \u003c\/strong\u003e 1 box = 24 rolls × £10.00 per roll = £240.00.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"My Store","offers":[{"title":"Default Title","offer_id":56819762594132,"sku":null,"price":10.0,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1063\/3117\/7300\/files\/32_14.png?v=1786963159"},{"product_id":"11-auto-stop-caulking-amp-sealant-gun","title":"11″ Auto-Stop Caulking \u0026 Sealant Gun","description":"\u003cstyle\u003e\n.product-trade-sheet{--pts-bg:#ffffff;--pts-surface:#ffffff;--pts-soft:#f6f6f4;--pts-text:#111111;--pts-muted:#5a5a5a;--pts-accent:#f26522;--pts-accent-dark:#d95316;--pts-accent-soft:#fff2e8;--pts-line:#dfdfdb;width:100%;max-width:100%;color:var(--pts-text);background:var(--pts-bg);font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Arial,sans-serif;font-size:14px;line-height:1.7;container-type:inline-size}\n.product-trade-sheet *,.product-trade-sheet *::before,.product-trade-sheet *::after{box-sizing:border-box}\n.product-trade-sheet h2,.product-trade-sheet p{margin:0}\n.product-trade-sheet button,.product-trade-sheet input{font:inherit}\n\n.pts-hero{width:100%;border-top:4px solid var(--pts-accent);border-bottom:1px solid var(--pts-line);background:var(--pts-surface)}\n.pts-hero-copy{width:100%;padding:clamp(30px,5cqw,58px)}\n.pts-eyebrow{display:inline-flex;align-items:center;gap:10px;margin-bottom:18px;color:var(--pts-accent);font-size:9px;font-weight:800;line-height:1;letter-spacing:.16em;text-transform:uppercase}\n.pts-eyebrow::before{content:\"\";width:34px;height:2px;background:var(--pts-accent)}\n.pts-product-title{width:100%;max-width:980px;margin:0 0 24px!important;color:var(--pts-text);font-size:clamp(30px,5.2cqw,48px);font-weight:800;line-height:1.07;letter-spacing:-.045em}\n.pts-intro{width:100%;max-width:980px;color:var(--pts-muted);font-size:clamp(15px,2cqw,18px);line-height:1.85}\n\n.pts-hero-aside{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;border-top:1px solid var(--pts-line);background:var(--pts-accent-soft)}\n.pts-stat{position:relative;min-width:0;min-height:126px;padding:20px;display:flex;flex-direction:column;justify-content:space-between;border-right:1px solid var(--pts-line);background:var(--pts-accent-soft);overflow:hidden;transition:background-color .25s ease,padding-left .25s ease}\n.pts-stat:last-child{border-right:0}\n.pts-stat::after{content:\"\";position:absolute;left:0;bottom:0;width:0;height:3px;background:var(--pts-accent);transition:width .3s ease}\n.pts-stat:hover{padding-left:24px;background:#fff}\n.pts-stat:hover::after{width:100%}\n.pts-stat-label{display:block;color:var(--pts-muted);font-size:9px;font-weight:800;line-height:1.4;letter-spacing:.14em;text-transform:uppercase}\n.pts-stat-value{display:block;margin-top:22px;color:var(--pts-text);font-size:clamp(22px,4cqw,32px);font-weight:780;line-height:1;letter-spacing:-.035em}\n.pts-stat-value small{display:block;margin-top:8px;color:var(--pts-muted);font-size:11px;font-weight:600;line-height:1.4}\n\n.pts-purchase-panel{width:100%;padding:20px;border-bottom:1px solid var(--pts-line);background:var(--pts-soft)}\n.pts-purchase-card{width:100%;border:1px solid var(--pts-line);background:#fff}\n.pts-purchase-main{display:grid;grid-template-columns:minmax(220px,.9fr) minmax(190px,.75fr) minmax(280px,1.2fr);width:100%}\n\n.pts-purchase-quantity{min-width:0;display:flex;flex-direction:column;justify-content:center;padding:22px;border-right:1px solid var(--pts-line);background:#fff}\n.pts-purchase-label{display:block;margin-bottom:12px;color:var(--pts-muted);font-size:9px;font-weight:800;line-height:1.4;letter-spacing:.13em;text-transform:uppercase}\n\n.pts-quantity-selector{display:grid;grid-template-columns:50px 88px 50px;width:max-content;height:52px;border:1px solid var(--pts-line);background:#fff}\n\n.pts-quantity-button{appearance:none;-webkit-appearance:none;width:50px;height:50px;display:flex;align-items:center;justify-content:center;margin:0;padding:0;border:0;border-radius:0;background:#fff;color:#111;cursor:pointer;font-size:22px;font-weight:500;line-height:1;user-select:none;transition:background-color .2s ease,color .2s ease}\n.pts-quantity-button:hover:not(:disabled){background:var(--pts-accent);color:#fff}\n.pts-quantity-button:active:not(:disabled){background:var(--pts-accent-dark)}\n.pts-quantity-button:disabled{cursor:not-allowed;background:var(--pts-soft);color:#b9b9b5}\n\n.pts-quantity-input{appearance:textfield;-moz-appearance:textfield;width:88px;height:50px;margin:0;padding:0 5px;border-top:0;border-bottom:0;border-left:1px solid var(--pts-line);border-right:1px solid var(--pts-line);border-radius:0;outline:none;background:#fff;color:var(--pts-text);text-align:center;font-size:17px;font-weight:800;line-height:50px}\n.pts-quantity-input:focus{background:var(--pts-accent-soft)}\n.pts-quantity-input::-webkit-inner-spin-button,.pts-quantity-input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}\n\n.pts-minimum-note{display:block;margin-top:10px;color:var(--pts-muted);font-size:10px;line-height:1.45}\n.pts-minimum-note strong{color:var(--pts-text)}\n\n.pts-purchase-total{min-width:0;display:flex;flex-direction:column;justify-content:center;padding:22px;border-right:1px solid var(--pts-line);background:var(--pts-accent-soft)}\n.pts-order-total-value{display:block;color:var(--pts-text);font-size:clamp(28px,4.4cqw,38px);font-weight:800;line-height:1;letter-spacing:-.04em}\n.pts-order-total-meta{display:block;margin-top:9px;color:var(--pts-muted);font-size:11px;line-height:1.5}\n\n.pts-purchase-actions{min-width:0;display:flex;flex-direction:column;justify-content:center;gap:14px;padding:14px;background:#fff}\n\n.pts-buy-button{appearance:none;-webkit-appearance:none;display:flex;align-items:center;justify-content:center;width:100%;min-height:54px;margin:0;padding:14px 18px;border-radius:0;cursor:pointer;font-size:12px;font-weight:800;line-height:1.35;letter-spacing:.055em;text-align:center;text-transform:uppercase;transition:background-color .2s ease,color .2s ease,border-color .2s ease,transform .12s ease}\n\n.pts-add-cart{border:1px solid #111;background:#111;color:#fff}\n.pts-add-cart:hover{background:#292929;border-color:#292929}\n.pts-add-cart:active{transform:translateY(1px);background:#000;border-color:#000}\n\n.pts-buy-now{border:1px solid var(--pts-accent);background:var(--pts-accent);color:#fff}\n.pts-buy-now:hover{background:var(--pts-accent-dark);border-color:var(--pts-accent-dark)}\n.pts-buy-now:active{transform:translateY(1px)}\n\n.pts-buy-button:disabled{cursor:wait;opacity:.6}\n\n.pts-purchase-footer{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:46px;padding:10px 18px;border-top:1px solid var(--pts-line);background:#fff}\n.pts-purchase-footer-text{color:var(--pts-muted);font-size:10px;line-height:1.5}\n.pts-purchase-footer-text strong{color:var(--pts-text)}\n\n.pts-purchase-status{min-height:15px;color:var(--pts-muted);font-size:10px;line-height:1.5;text-align:right}\n.pts-purchase-status.is-error{color:#b42318}\n.pts-purchase-status.is-success{color:#111}\n\n.pts-section-index{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;border-bottom:1px solid var(--pts-line);background:var(--pts-soft)}\n\n.pts-index-item{min-width:0;padding:16px 18px;border-right:1px solid var(--pts-line);transition:background-color .25s ease,padding-left .25s ease}\n.pts-index-item:last-child{border-right:0}\n.pts-index-item:hover{padding-left:23px;background:var(--pts-accent-soft)}\n\n.pts-index-number{display:block;margin-bottom:6px;color:var(--pts-accent);font-size:9px;font-weight:850;line-height:1;letter-spacing:.12em}\n.pts-index-label{display:block;color:var(--pts-text);font-size:11px;font-weight:700;line-height:1.4}\n\n.pts-sections{width:100%;background:var(--pts-bg)}\n.pts-section{width:100%;border-bottom:1px solid var(--pts-line)}\n.pts-section details{display:block;width:100%}\n\n.pts-section summary{display:grid;grid-template-columns:82px minmax(0,1fr) 64px;align-items:stretch;width:100%;min-height:86px;padding:0;background:var(--pts-surface);cursor:pointer;list-style:none;user-select:none;transition:background-color .25s ease}\n.pts-section summary::-webkit-details-marker{display:none}\n.pts-section summary::marker{content:\"\"}\n.pts-section summary:hover,.pts-section details[open]\u003esummary{background:var(--pts-soft)}\n\n.pts-section-no{display:flex;align-items:center;justify-content:center;border-right:1px solid var(--pts-line);color:var(--pts-accent);font-size:11px;font-weight:850;line-height:1;letter-spacing:.12em;transition:background-color .3s ease,color .3s ease}\n.pts-section details[open] .pts-section-no{background:var(--pts-accent);color:#fff}\n\n.pts-section-title{min-width:0;display:flex;align-items:center;padding:18px 24px;color:var(--pts-text);font-size:clamp(14px,2.1cqw,18px);font-weight:750;line-height:1.4}\n\n.pts-section-toggle{position:relative;display:flex;align-items:center;justify-content:center;min-width:64px;border-left:1px solid var(--pts-line);background:var(--pts-surface);overflow:hidden;transition:background-color .25s ease}\n\n.pts-section summary:hover .pts-section-toggle,.pts-section details[open] .pts-section-toggle{background:var(--pts-accent-soft)}\n\n.pts-hammer{position:relative;display:block;width:26px;height:34px;transform:rotate(0deg);transform-origin:50% 50%;transition:transform .35s cubic-bezier(.4,0,.2,1)}\n.pts-hammer::before{content:\"\";position:absolute;left:50%;top:11px;width:5px;height:23px;background:var(--pts-accent);transform:translateX(-50%)}\n.pts-hammer::after{content:\"\";position:absolute;top:4px;left:50%;width:24px;height:9px;background:var(--pts-accent);transform:translateX(-50%)}\n.pts-hammer-neck{position:absolute;top:9px;left:50%;width:9px;height:8px;background:var(--pts-accent);transform:translateX(-50%)}\n\n.pts-section details[open] .pts-hammer{transform:rotate(90deg)}\n.pts-section summary:hover .pts-hammer{transform:rotate(-7deg)}\n.pts-section details[open] summary:hover .pts-hammer{transform:rotate(97deg)}\n\n.pts-section-body{display:grid;grid-template-columns:82px minmax(0,1fr);width:100%;background:var(--pts-bg)}\n\n.pts-body-rail{border-right:1px solid var(--pts-line);background:repeating-linear-gradient(to bottom,transparent 0,transparent 17px,rgba(242,101,34,.07) 17px,rgba(242,101,34,.07) 18px)}\n\n.pts-body-content{min-width:0;padding:clamp(22px,4cqw,42px);color:var(--pts-muted)}\n.pts-copy{width:100%;max-width:950px}\n.pts-copy p{margin-bottom:18px}\n.pts-copy p:last-child{margin-bottom:0}\n\n.pts-feature-band{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;margin-top:28px;border-top:1px solid var(--pts-line);border-bottom:1px solid var(--pts-line);background:var(--pts-surface)}\n\n.pts-feature{position:relative;min-width:0;min-height:100px;padding:18px;border-right:1px solid var(--pts-line);display:flex;flex-direction:column;justify-content:space-between;background:var(--pts-surface);overflow:hidden;transition:background-color .25s ease,padding-left .25s ease}\n.pts-feature:last-child{border-right:0}\n.pts-feature::before{content:\"\";position:absolute;top:0;left:0;width:3px;height:0;background:var(--pts-accent);transition:height .3s ease}\n.pts-feature:hover{padding-left:23px;background:var(--pts-accent-soft)}\n.pts-feature:hover::before{height:100%}\n\n.pts-feature-label{color:var(--pts-muted);font-size:9px;font-weight:800;line-height:1.4;letter-spacing:.12em;text-transform:uppercase}\n.pts-feature-value{margin-top:17px;color:var(--pts-text);font-size:13px;font-weight:750;line-height:1.45}\n\n.pts-spec-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;margin:0;padding:0;border-top:1px solid var(--pts-line);list-style:none}\n\n.pts-spec-list li{position:relative;min-width:0;min-height:84px;padding:17px 20px;border-right:1px solid var(--pts-line);border-bottom:1px solid var(--pts-line);background:var(--pts-surface);overflow:hidden;transition:background-color .22s ease,padding-left .22s ease}\n.pts-spec-list li:nth-child(2n){border-right:0}\n.pts-spec-list li::before{content:\"\";position:absolute;left:0;top:0;width:3px;height:0;background:var(--pts-accent);transition:height .25s ease}\n.pts-spec-list li:hover{padding-left:25px;background:var(--pts-soft)}\n.pts-spec-list li:hover::before{height:100%}\n\n.pts-spec-list strong{display:block;margin-bottom:6px;color:var(--pts-text);font-size:9px;font-weight:800;line-height:1.4;letter-spacing:.1em;text-transform:uppercase}\n.pts-spec-list span{display:block;color:var(--pts-muted);font-size:13px;line-height:1.55}\n\n.pts-note{display:grid;grid-template-columns:46px minmax(0,1fr);width:100%;margin-top:20px;border-top:1px solid var(--pts-line);border-bottom:1px solid var(--pts-line);background:var(--pts-accent-soft)}\n\n.pts-note-icon{display:flex;align-items:center;justify-content:center;border-right:1px solid var(--pts-line);color:var(--pts-accent);font-family:Georgia,serif;font-size:15px;font-weight:700}\n\n.pts-note-copy{min-width:0;padding:14px 16px;color:var(--pts-muted);font-size:12px;line-height:1.7}\n.pts-note-copy strong{color:var(--pts-text)}\n\n.pts-wholesale-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(230px,.7fr);width:100%;margin-top:28px;border-top:1px solid var(--pts-line);border-bottom:1px solid var(--pts-line)}\n\n.pts-wholesale-data{min-width:0;background:var(--pts-surface)}\n\n.pts-wholesale-row{display:grid;grid-template-columns:minmax(120px,38%) minmax(0,1fr);min-height:54px;border-bottom:1px solid var(--pts-line)}\n.pts-wholesale-row:last-child{border-bottom:0}\n\n.pts-wholesale-key{display:flex;align-items:center;padding:11px 15px;border-right:1px solid var(--pts-line);background:var(--pts-soft);color:var(--pts-muted);font-size:9px;font-weight:800;line-height:1.4;letter-spacing:.1em;text-transform:uppercase}\n\n.pts-wholesale-value{min-width:0;display:flex;align-items:center;padding:11px 16px;background:var(--pts-surface);color:var(--pts-text);font-size:13px;font-weight:700;line-height:1.5;transition:background-color .22s ease,padding-left .22s ease}\n\n.pts-wholesale-row:hover .pts-wholesale-value{padding-left:21px;background:var(--pts-accent-soft)}\n\n.pts-wholesale-summary{min-width:0;display:flex;flex-direction:column;justify-content:space-between;padding:28px;background:#111;color:#fff}\n\n.pts-summary-topline{color:rgba(255,255,255,.64);font-size:9px;font-weight:800;line-height:1.4;letter-spacing:.14em;text-transform:uppercase}\n\n.pts-summary-large{margin:30px 0;color:#fff;font-size:clamp(34px,7cqw,54px);font-weight:760;line-height:.95;letter-spacing:-.05em}\n\n.pts-summary-large::after{content:\"\";display:block;width:42px;height:3px;margin-top:18px;background:var(--pts-accent)}\n\n.pts-summary-large small{display:block;margin-top:11px;color:rgba(255,255,255,.7);font-size:11px;font-weight:600;line-height:1.4;letter-spacing:0}\n\n.pts-summary-lines{color:rgba(255,255,255,.8);font-size:12px;line-height:1.85}\n.pts-summary-lines strong{color:#fff}\n.pts-orange{color:var(--pts-accent)!important}\n\n@container (max-width:760px){\n.pts-hero-copy{padding:30px 24px}\n.pts-product-title{font-size:34px}\n.pts-intro{font-size:15px}\n.pts-hero-aside{grid-template-columns:repeat(2,minmax(0,1fr))}\n.pts-stat{border-bottom:1px solid var(--pts-line)}\n.pts-stat:nth-child(2){border-right:0}\n.pts-stat:nth-child(3),.pts-stat:nth-child(4){border-bottom:0}\n.pts-purchase-main{grid-template-columns:1fr 1fr}\n.pts-purchase-total{border-right:0}\n.pts-purchase-actions{grid-column:1\/-1;display:grid;grid-template-columns:1fr 1fr;gap:14px;border-top:1px solid var(--pts-line)}\n.pts-section-index{grid-template-columns:repeat(2,minmax(0,1fr))}\n.pts-index-item:nth-child(2){border-right:0}\n.pts-index-item:nth-child(-n+2){border-bottom:1px solid var(--pts-line)}\n.pts-feature-band{grid-template-columns:1fr}\n.pts-feature{min-height:auto;border-right:0;border-bottom:1px solid var(--pts-line)}\n.pts-feature:last-child{border-bottom:0}\n.pts-wholesale-layout{grid-template-columns:1fr}\n}\n\n@container (max-width:540px){\n.pts-hero-copy{padding:26px 18px}\n.pts-product-title{margin-bottom:18px!important;font-size:29px;line-height:1.1}\n.pts-eyebrow{margin-bottom:16px}\n.pts-intro{font-size:14px;line-height:1.8}\n.pts-stat{min-height:108px;padding:16px}\n.pts-stat-value{margin-top:17px;font-size:22px}\n.pts-purchase-panel{padding:12px}\n.pts-purchase-main{grid-template-columns:1fr}\n.pts-purchase-quantity,.pts-purchase-total{border-right:0;border-bottom:1px solid var(--pts-line)}\n.pts-purchase-actions{grid-column:auto;display:flex;flex-direction:column;gap:10px;border-top:0}\n.pts-purchase-footer{align-items:flex-start;flex-direction:column;gap:4px}\n.pts-purchase-status{text-align:left}\n.pts-section-index{display:none}\n.pts-section summary{grid-template-columns:52px minmax(0,1fr) 50px;min-height:72px}\n.pts-section-no{font-size:9px}\n.pts-section-title{padding:13px 14px;font-size:13px}\n.pts-section-toggle{min-width:50px}\n.pts-hammer{transform:scale(.86)}\n.pts-section details[open] .pts-hammer{transform:scale(.86) rotate(90deg)}\n.pts-section summary:hover .pts-hammer{transform:scale(.86) rotate(-7deg)}\n.pts-section details[open] summary:hover .pts-hammer{transform:scale(.86) rotate(97deg)}\n.pts-section-body{grid-template-columns:1fr}\n.pts-body-rail{display:none}\n.pts-body-content{padding:22px 14px 27px}\n.pts-spec-list{grid-template-columns:1fr}\n.pts-spec-list li,.pts-spec-list li:nth-child(2n){border-right:0}\n.pts-wholesale-row{grid-template-columns:1fr}\n.pts-wholesale-key{padding:11px 13px 3px;border-right:0;background:var(--pts-surface)}\n.pts-wholesale-value{padding:3px 13px 13px}\n.pts-wholesale-summary{padding:24px 19px}\n}\n\n@container (max-width:360px){\n.pts-hero-aside{grid-template-columns:1fr}\n.pts-stat{border-right:0;border-bottom:1px solid var(--pts-line)}\n.pts-stat:last-child{border-bottom:0}\n}\n\u003c\/style\u003e\n\u003cdiv class=\"product-trade-sheet\" id=\"pts-auto-stop-sealant-gun-card\"\u003e\n\u003cinput type=\"hidden\" class=\"pts-current-variant\" value=\"{{ product.selected_or_first_available_variant.id }}\"\u003e\n\u003cdiv class=\"pts-hero\"\u003e\n\u003cdiv class=\"pts-hero-copy\"\u003e\n\u003cspan class=\"pts-eyebrow\"\u003e Sealant application tool \u003c\/span\u003e\n\u003ch2 class=\"pts-product-title\"\u003e11″ Auto-Stop Caulking \u0026amp; Sealant Gun\u003c\/h2\u003e\n\u003cp class=\"pts-intro\"\u003ePractical 11-inch caulking and sealant gun designed for controlled application of sealants, caulks and similar cartridge products. The steel skeleton frame provides a straightforward manual tool format, while the auto-stop mechanism helps release pressure when application stops to reduce unwanted continued flow. A hooked hexagonal rod, plunger and release lever support simple loading, dispensing and cartridge handling during decorating, construction and maintenance work.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-hero-aside\"\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Tool length \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e 11″ \u003csmall\u003e Approx. 275mm \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Unit price \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e £8.33 \u003csmall\u003e Per sealant gun \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Minimum order \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e 24 \u003csmall\u003e Sealant guns \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e MOQ total \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e £199.92 \u003csmall\u003e 24 sealant guns \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-panel\"\u003e\n\u003cdiv class=\"pts-purchase-card\"\u003e\n\u003cdiv class=\"pts-purchase-main\"\u003e\n\u003cdiv class=\"pts-purchase-quantity\"\u003e\n\u003cspan class=\"pts-purchase-label\"\u003e Boxes \u003c\/span\u003e\n\u003cdiv class=\"pts-quantity-selector\"\u003e\n\u003cbutton type=\"button\" class=\"pts-quantity-button pts-quantity-minus\"\u003e − \u003c\/button\u003e \u003cinput type=\"number\" class=\"pts-quantity-input\" value=\"1\" min=\"1\" step=\"1\" inputmode=\"numeric\"\u003e \u003cbutton type=\"button\" class=\"pts-quantity-button pts-quantity-plus\"\u003e + \u003c\/button\u003e\n\u003c\/div\u003e\n\u003cspan class=\"pts-minimum-note\"\u003e 1 box = \u003cstrong\u003e 24 individual sealant guns \u003c\/strong\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-total\"\u003e\n\u003cspan class=\"pts-purchase-label\"\u003e Order total \u003c\/span\u003e \u003cspan class=\"pts-order-total-value\"\u003e £199.92 \u003c\/span\u003e \u003cspan class=\"pts-order-total-meta\"\u003e 1 box · 24 sealant guns × £8.33 \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-actions\"\u003e\n\u003cbutton type=\"button\" class=\"pts-buy-button pts-add-cart\"\u003e ADD BOX · 24 SEALANT GUNS \u003c\/button\u003e \u003cbutton type=\"button\" class=\"pts-buy-button pts-buy-now\"\u003e BUY NOW · £199.92 \u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-footer\"\u003e\n\u003cspan class=\"pts-purchase-footer-text\"\u003e Minimum order: \u003cstrong\u003e 1 box = 24 sealant guns \u003c\/strong\u003e · £8.33 per unit · £199.92 per box \u003c\/span\u003e \u003cspan class=\"pts-purchase-status\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-section-index\"\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e01\u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Auto-stop application \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e02\u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Design \u0026amp; construction \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e03\u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Use \u0026amp; care \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e04\u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Wholesale supply \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-sections\"\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e 01 \u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Controlled Application \u0026amp; Auto-Stop Pressure Release \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e \u003cspan class=\"pts-hammer\"\u003e \u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e \u003c\/span\u003e \u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cdiv class=\"pts-copy\"\u003e\n\u003cp\u003eThe manual dispensing mechanism is designed for controlled application of suitable sealant, caulk and similar cartridge products. Pressure is applied through the handle and plunger system to advance material through the cartridge nozzle.\u003c\/p\u003e\n\u003cp\u003eThe auto-stop function helps release dispensing pressure when application stops, reducing the tendency for sealant to continue flowing unnecessarily. This can support cleaner application during decorating, fitting, maintenance and general construction tasks.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature-band\"\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Tool length \u003c\/span\u003e \u003cspan class=\"pts-feature-value\"\u003e 11″ \/ approx. 275mm \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Frame \u003c\/span\u003e \u003cspan class=\"pts-feature-value\"\u003e Steel skeleton frame \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Feature \u003c\/span\u003e \u003cspan class=\"pts-feature-value\"\u003e Auto-stop pressure release \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e 02 \u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Frame, Rod \u0026amp; Operating Mechanism \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e \u003cspan class=\"pts-hammer\"\u003e \u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e \u003c\/span\u003e \u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cul class=\"pts-spec-list\"\u003e\n\u003cli\u003e\n\u003cstrong\u003e Product type \u003c\/strong\u003e \u003cspan\u003e Manual caulking and sealant gun. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Approx. length \u003c\/strong\u003e \u003cspan\u003e 11 inches \/ approximately 275mm. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Frame \u003c\/strong\u003e \u003cspan\u003e Steel skeleton frame. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Rod \u003c\/strong\u003e \u003cspan\u003e Hexagonal rod with hooked end. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Dispensing mechanism \u003c\/strong\u003e \u003cspan\u003e Handle-operated plunger system. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Pressure release \u003c\/strong\u003e \u003cspan\u003e Manual release lever with auto-stop functionality. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Cartridge compatibility \u003c\/strong\u003e \u003cspan\u003e Suitable for use with most standard cartridges. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Operation \u003c\/strong\u003e \u003cspan\u003e Fully manual dispensing. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Typical applications \u003c\/strong\u003e \u003cspan\u003e Sealant, caulk and similar cartridge application. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Recommended environments \u003c\/strong\u003e \u003cspan\u003e Decorating, construction, fitting, workshop, maintenance and general DIY environments. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003ei\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Cartridge note: \u003c\/strong\u003e Confirm that the cartridge dimensions and material type are suitable for the applicator before use. Do not force an incorrectly sized or damaged cartridge into the frame.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e 03 \u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Use, Handling \u0026amp; Product Care \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e \u003cspan class=\"pts-hammer\"\u003e \u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e \u003c\/span\u003e \u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cul class=\"pts-spec-list\"\u003e\n\u003cli\u003e\n\u003cstrong\u003e Before use \u003c\/strong\u003e \u003cspan\u003e Inspect the frame, rod, plunger, handle and release mechanism for visible damage. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Loading \u003c\/strong\u003e \u003cspan\u003e Release the rod and position a compatible cartridge securely within the skeleton frame. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Preparation \u003c\/strong\u003e \u003cspan\u003e Prepare the cartridge nozzle according to the instructions supplied with the sealant or caulk. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Application \u003c\/strong\u003e \u003cspan\u003e Apply controlled handle pressure while moving the nozzle steadily along the required joint or surface. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Auto-stop \u003c\/strong\u003e \u003cspan\u003e Release the handle at the end of the application to allow dispensing pressure to reduce. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Cartridge removal \u003c\/strong\u003e \u003cspan\u003e Use the release mechanism before withdrawing the rod and removing the cartridge. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Cleaning \u003c\/strong\u003e \u003cspan\u003e Remove uncured material from the tool in accordance with the sealant manufacturer's cleaning guidance. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Storage \u003c\/strong\u003e \u003cspan\u003e Store the applicator in a clean, dry location when not in use. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003e!\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Safety note: \u003c\/strong\u003e Follow the handling and safety instructions supplied with the sealant, adhesive or caulk being dispensed. Use appropriate protective equipment where required and avoid contact with uncured material.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e 04 \u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Packaging \u0026amp; Wholesale Supply \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e \u003cspan class=\"pts-hammer\"\u003e \u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e \u003c\/span\u003e \u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cdiv class=\"pts-copy\"\u003e\n\u003cp\u003eOne Shopify selling unit is one individual 11-inch auto-stop caulking and sealant gun. Each wholesale box contains 24 sealant guns. Each unit is priced at £8.33, giving a wholesale box value of £199.92. Additional boxes can be selected directly using the box quantity control above.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-layout\"\u003e\n\u003cdiv class=\"pts-wholesale-data\"\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eProduct\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e11″ auto-stop caulking \u0026amp; sealant gun\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eApprox. length\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e11″ \/ 275mm\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eFrame\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003eSteel skeleton frame\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eFeature\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003eAuto-stop pressure release\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eUnit price\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e£8.33\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eBox quantity\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e24 sealant guns\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eMinimum order\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e1 wholesale box\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eBox total\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e£199.92\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003caside class=\"pts-wholesale-summary\"\u003e\n\u003cdiv\u003e\n\u003cspan class=\"pts-summary-topline\"\u003e Wholesale box \u003c\/span\u003e\n\u003cdiv class=\"pts-summary-large\"\u003e£199.92 \u003csmall\u003e 24 sealant guns \u003c\/small\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-summary-lines\"\u003e\n\u003cstrong\u003e £8.33 \u003c\/strong\u003e per sealant gun \u003cbr\u003e\u003cstrong\u003e 11″ \/ 275mm \u003c\/strong\u003e approximate length \u003cbr\u003e\u003cstrong\u003e 24 sealant guns \u003c\/strong\u003e per box \u003cbr\u003e\u003cstrong class=\"pts-orange\"\u003e £199.92 \u003c\/strong\u003e per wholesale box\u003c\/div\u003e\n\u003c\/aside\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003ei\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Wholesale calculation: \u003c\/strong\u003e 1 box = 24 sealant guns × £8.33 per sealant gun = £199.92.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"My Store","offers":[{"title":"Default Title","offer_id":56821054079316,"sku":null,"price":8.33,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1063\/3117\/7300\/files\/56554_2_a734bad1-568f-45d2-8725-fa9976169de1.png?v=1786967389"},{"product_id":"heavy-duty-black-pallet-wrap-400mm-200m-20-micron","title":"Heavy Duty Black Pallet Wrap – 400mm × 200m, 20 Micron","description":"\u003cstyle\u003e\n.product-trade-sheet{\n  --pts-bg:#fff;\n  --pts-surface:#fff;\n  --pts-soft:#f6f6f4;\n  --pts-text:#111;\n  --pts-muted:#5a5a5a;\n  --pts-accent:#f26522;\n  --pts-accent-dark:#d95316;\n  --pts-accent-soft:#fff2e8;\n  --pts-line:#dfdfdb;\n\n  width:100%;\n  max-width:100%;\n  color:var(--pts-text);\n  background:var(--pts-bg);\n  font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Arial,sans-serif;\n  font-size:14px;\n  line-height:1.7;\n  container-type:inline-size;\n}\n\n.product-trade-sheet *,\n.product-trade-sheet *::before,\n.product-trade-sheet *::after{\n  box-sizing:border-box;\n}\n\n.product-trade-sheet h2,\n.product-trade-sheet p{\n  margin:0;\n}\n\n.product-trade-sheet button,\n.product-trade-sheet input{\n  font:inherit;\n}\n\n\n\/* =========================\n   HERO\n========================= *\/\n\n.pts-hero{\n  width:100%;\n  border-top:4px solid var(--pts-accent);\n  border-bottom:1px solid var(--pts-line);\n  background:var(--pts-surface);\n}\n\n.pts-hero-copy{\n  width:100%;\n  padding:clamp(30px,5cqw,58px);\n}\n\n.pts-eyebrow{\n  display:inline-flex;\n  align-items:center;\n  gap:10px;\n  margin-bottom:18px;\n  color:var(--pts-accent);\n  font-size:9px;\n  font-weight:800;\n  line-height:1;\n  letter-spacing:.16em;\n  text-transform:uppercase;\n}\n\n.pts-eyebrow::before{\n  content:\"\";\n  width:34px;\n  height:2px;\n  background:var(--pts-accent);\n}\n\n.pts-product-title{\n  width:100%;\n  max-width:980px;\n  margin:0 0 24px!important;\n  color:var(--pts-text);\n  font-size:clamp(30px,5.2cqw,48px);\n  font-weight:800;\n  line-height:1.07;\n  letter-spacing:-.045em;\n}\n\n.pts-intro{\n  width:100%;\n  max-width:980px;\n  color:var(--pts-muted);\n  font-size:clamp(15px,2cqw,18px);\n  line-height:1.85;\n}\n\n\n\/* =========================\n   STATS\n========================= *\/\n\n.pts-hero-aside{\n  display:grid;\n  grid-template-columns:repeat(4,minmax(0,1fr));\n  width:100%;\n  border-top:1px solid var(--pts-line);\n  background:var(--pts-accent-soft);\n}\n\n.pts-stat{\n  position:relative;\n  min-width:0;\n  min-height:126px;\n  padding:20px;\n  display:flex;\n  flex-direction:column;\n  justify-content:space-between;\n  border-right:1px solid var(--pts-line);\n  background:var(--pts-accent-soft);\n  overflow:hidden;\n  transition:\n    background-color .25s ease,\n    padding-left .25s ease;\n}\n\n.pts-stat:last-child{\n  border-right:0;\n}\n\n.pts-stat::after{\n  content:\"\";\n  position:absolute;\n  left:0;\n  bottom:0;\n  width:0;\n  height:3px;\n  background:var(--pts-accent);\n  transition:width .3s ease;\n}\n\n.pts-stat:hover{\n  padding-left:24px;\n  background:#fff;\n}\n\n.pts-stat:hover::after{\n  width:100%;\n}\n\n.pts-stat-label{\n  display:block;\n  color:var(--pts-muted);\n  font-size:9px;\n  font-weight:800;\n  line-height:1.4;\n  letter-spacing:.14em;\n  text-transform:uppercase;\n}\n\n.pts-stat-value{\n  display:block;\n  margin-top:22px;\n  color:var(--pts-text);\n  font-size:clamp(22px,4cqw,32px);\n  font-weight:780;\n  line-height:1;\n  letter-spacing:-.035em;\n}\n\n.pts-stat-value small{\n  display:block;\n  margin-top:8px;\n  color:var(--pts-muted);\n  font-size:11px;\n  font-weight:600;\n  line-height:1.4;\n}\n\n\n\/* =========================\n   PURCHASE\n========================= *\/\n\n.pts-purchase-panel{\n  width:100%;\n  padding:20px;\n  border-bottom:1px solid var(--pts-line);\n  background:var(--pts-soft);\n}\n\n.pts-purchase-card{\n  width:100%;\n  border:1px solid var(--pts-line);\n  background:#fff;\n}\n\n.pts-purchase-main{\n  display:grid;\n  grid-template-columns:\n    minmax(220px,.9fr)\n    minmax(190px,.75fr)\n    minmax(280px,1.2fr);\n  width:100%;\n}\n\n.pts-purchase-quantity{\n  min-width:0;\n  display:flex;\n  flex-direction:column;\n  justify-content:center;\n  padding:22px;\n  border-right:1px solid var(--pts-line);\n  background:#fff;\n}\n\n.pts-purchase-label{\n  display:block;\n  margin-bottom:12px;\n  color:var(--pts-muted);\n  font-size:9px;\n  font-weight:800;\n  line-height:1.4;\n  letter-spacing:.13em;\n  text-transform:uppercase;\n}\n\n.pts-quantity-selector{\n  display:grid;\n  grid-template-columns:50px 88px 50px;\n  width:max-content;\n  height:52px;\n  border:1px solid var(--pts-line);\n  background:#fff;\n}\n\n.pts-quantity-button{\n  appearance:none;\n  -webkit-appearance:none;\n  width:50px;\n  height:50px;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  margin:0;\n  padding:0;\n  border:0;\n  border-radius:0;\n  background:#fff;\n  color:#111;\n  cursor:pointer;\n  font-size:22px;\n  font-weight:500;\n  line-height:1;\n  user-select:none;\n  transition:\n    background-color .2s ease,\n    color .2s ease,\n    transform .15s ease;\n}\n\n.pts-quantity-button:hover:not(:disabled){\n  background:var(--pts-accent);\n  color:#fff;\n}\n\n.pts-quantity-button:active:not(:disabled){\n  background:var(--pts-accent-dark);\n  transform:scale(.96);\n}\n\n.pts-quantity-button:disabled{\n  cursor:not-allowed;\n  background:var(--pts-soft);\n  color:#b9b9b5;\n}\n\n.pts-quantity-input{\n  appearance:textfield;\n  -moz-appearance:textfield;\n  width:88px;\n  height:50px;\n  margin:0;\n  padding:0 5px;\n  border-top:0;\n  border-bottom:0;\n  border-left:1px solid var(--pts-line);\n  border-right:1px solid var(--pts-line);\n  border-radius:0;\n  outline:none;\n  background:#fff;\n  color:var(--pts-text);\n  text-align:center;\n  font-size:17px;\n  font-weight:800;\n  line-height:50px;\n  transition:background-color .2s ease;\n}\n\n.pts-quantity-input:focus{\n  background:var(--pts-accent-soft);\n}\n\n.pts-quantity-input::-webkit-inner-spin-button,\n.pts-quantity-input::-webkit-outer-spin-button{\n  margin:0;\n  -webkit-appearance:none;\n}\n\n.pts-minimum-note{\n  display:block;\n  margin-top:10px;\n  color:var(--pts-muted);\n  font-size:10px;\n  line-height:1.45;\n}\n\n.pts-minimum-note strong{\n  color:var(--pts-text);\n}\n\n\n\/* =========================\n   ORDER TOTAL\n========================= *\/\n\n.pts-purchase-total{\n  min-width:0;\n  display:flex;\n  flex-direction:column;\n  justify-content:center;\n  padding:22px;\n  border-right:1px solid var(--pts-line);\n  background:var(--pts-accent-soft);\n}\n\n.pts-order-total-value{\n  display:block;\n  color:var(--pts-text);\n  font-size:clamp(28px,4.4cqw,38px);\n  font-weight:800;\n  line-height:1;\n  letter-spacing:-.04em;\n}\n\n.pts-order-total-meta{\n  display:block;\n  margin-top:9px;\n  color:var(--pts-muted);\n  font-size:11px;\n  line-height:1.5;\n}\n\n\n\/* =========================\n   BUTTONS\n========================= *\/\n\n.pts-purchase-actions{\n  min-width:0;\n  display:flex;\n  flex-direction:column;\n  justify-content:center;\n  gap:14px;\n  padding:14px;\n  background:#fff;\n}\n\n.pts-buy-button{\n  appearance:none;\n  -webkit-appearance:none;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  width:100%;\n  min-height:54px;\n  margin:0;\n  padding:14px 18px;\n  border-radius:0;\n  cursor:pointer;\n  font-size:12px;\n  font-weight:800;\n  line-height:1.35;\n  letter-spacing:.055em;\n  text-align:center;\n  text-transform:uppercase;\n  transition:\n    background-color .2s ease,\n    color .2s ease,\n    border-color .2s ease,\n    transform .12s ease;\n}\n\n.pts-add-cart{\n  border:1px solid #111;\n  background:#111;\n  color:#fff;\n}\n\n.pts-add-cart:hover{\n  background:#292929;\n  border-color:#292929;\n}\n\n.pts-add-cart:active{\n  transform:translateY(1px);\n  background:#000;\n  border-color:#000;\n}\n\n.pts-buy-now{\n  border:1px solid var(--pts-accent);\n  background:var(--pts-accent);\n  color:#fff;\n}\n\n.pts-buy-now:hover{\n  background:var(--pts-accent-dark);\n  border-color:var(--pts-accent-dark);\n}\n\n.pts-buy-now:active{\n  transform:translateY(1px);\n}\n\n.pts-buy-button:disabled{\n  cursor:wait;\n  opacity:.6;\n}\n\n\n\/* =========================\n   PURCHASE FOOTER\n========================= *\/\n\n.pts-purchase-footer{\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap:18px;\n  min-height:46px;\n  padding:10px 18px;\n  border-top:1px solid var(--pts-line);\n  background:#fff;\n}\n\n.pts-purchase-footer-text{\n  color:var(--pts-muted);\n  font-size:10px;\n  line-height:1.5;\n}\n\n.pts-purchase-footer-text strong{\n  color:var(--pts-text);\n}\n\n.pts-purchase-status{\n  min-height:15px;\n  color:var(--pts-muted);\n  font-size:10px;\n  line-height:1.5;\n  text-align:right;\n}\n\n.pts-purchase-status.is-error{\n  color:#b42318;\n}\n\n.pts-purchase-status.is-success{\n  color:#111;\n}\n\n\n\/* =========================\n   SECTION INDEX\n========================= *\/\n\n.pts-section-index{\n  display:grid;\n  grid-template-columns:repeat(4,minmax(0,1fr));\n  width:100%;\n  border-bottom:1px solid var(--pts-line);\n  background:var(--pts-soft);\n}\n\n.pts-index-item{\n  min-width:0;\n  padding:16px 18px;\n  border-right:1px solid var(--pts-line);\n  transition:\n    background-color .25s ease,\n    padding-left .25s ease;\n}\n\n.pts-index-item:last-child{\n  border-right:0;\n}\n\n.pts-index-item:hover{\n  padding-left:23px;\n  background:var(--pts-accent-soft);\n}\n\n.pts-index-number{\n  display:block;\n  margin-bottom:6px;\n  color:var(--pts-accent);\n  font-size:9px;\n  font-weight:850;\n  line-height:1;\n  letter-spacing:.12em;\n}\n\n.pts-index-label{\n  display:block;\n  color:var(--pts-text);\n  font-size:11px;\n  font-weight:700;\n  line-height:1.4;\n}\n\n\n\/* =========================\n   ACCORDION\n========================= *\/\n\n.pts-sections{\n  width:100%;\n  background:var(--pts-bg);\n}\n\n.pts-section{\n  width:100%;\n  border-bottom:1px solid var(--pts-line);\n}\n\n.pts-section details{\n  display:block;\n  width:100%;\n}\n\n.pts-section summary{\n  display:grid;\n  grid-template-columns:82px minmax(0,1fr) 64px;\n  align-items:stretch;\n  width:100%;\n  min-height:86px;\n  padding:0;\n  background:var(--pts-surface);\n  cursor:pointer;\n  list-style:none;\n  user-select:none;\n  transition:background-color .25s ease;\n}\n\n.pts-section summary::-webkit-details-marker{\n  display:none;\n}\n\n.pts-section summary::marker{\n  content:\"\";\n}\n\n.pts-section summary:hover,\n.pts-section details[open]\u003esummary{\n  background:var(--pts-soft);\n}\n\n.pts-section-no{\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  border-right:1px solid var(--pts-line);\n  color:var(--pts-accent);\n  font-size:11px;\n  font-weight:850;\n  line-height:1;\n  letter-spacing:.12em;\n  transition:\n    background-color .3s ease,\n    color .3s ease;\n}\n\n.pts-section details[open] .pts-section-no{\n  background:var(--pts-accent);\n  color:#fff;\n}\n\n.pts-section-title{\n  min-width:0;\n  display:flex;\n  align-items:center;\n  padding:18px 24px;\n  color:var(--pts-text);\n  font-size:clamp(14px,2.1cqw,18px);\n  font-weight:750;\n  line-height:1.4;\n}\n\n\n\/* =========================\n   HAMMER\n========================= *\/\n\n.pts-section-toggle{\n  position:relative;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  min-width:64px;\n  border-left:1px solid var(--pts-line);\n  background:var(--pts-surface);\n  overflow:hidden;\n  transition:background-color .25s ease;\n}\n\n.pts-section summary:hover .pts-section-toggle,\n.pts-section details[open] .pts-section-toggle{\n  background:var(--pts-accent-soft);\n}\n\n.pts-hammer{\n  position:relative;\n  display:block;\n  width:26px;\n  height:34px;\n  transform:rotate(0deg);\n  transform-origin:50% 50%;\n  transition:transform .35s cubic-bezier(.4,0,.2,1);\n}\n\n.pts-hammer::before{\n  content:\"\";\n  position:absolute;\n  left:50%;\n  top:11px;\n  width:5px;\n  height:23px;\n  background:var(--pts-accent);\n  transform:translateX(-50%);\n}\n\n.pts-hammer::after{\n  content:\"\";\n  position:absolute;\n  top:4px;\n  left:50%;\n  width:24px;\n  height:9px;\n  background:var(--pts-accent);\n  transform:translateX(-50%);\n}\n\n.pts-hammer-neck{\n  position:absolute;\n  top:9px;\n  left:50%;\n  width:9px;\n  height:8px;\n  background:var(--pts-accent);\n  transform:translateX(-50%);\n}\n\n.pts-section details[open] .pts-hammer{\n  transform:rotate(90deg);\n}\n\n.pts-section summary:hover .pts-hammer{\n  transform:rotate(-7deg);\n}\n\n.pts-section details[open] summary:hover .pts-hammer{\n  transform:rotate(97deg);\n}\n\n\n\/* =========================\n   BODY\n========================= *\/\n\n.pts-section-body{\n  display:grid;\n  grid-template-columns:82px minmax(0,1fr);\n  width:100%;\n  background:var(--pts-bg);\n}\n\n.pts-body-rail{\n  border-right:1px solid var(--pts-line);\n  background:\n    repeating-linear-gradient(\n      to bottom,\n      transparent 0,\n      transparent 17px,\n      rgba(242,101,34,.07) 17px,\n      rgba(242,101,34,.07) 18px\n    );\n}\n\n.pts-body-content{\n  min-width:0;\n  padding:clamp(22px,4cqw,42px);\n  color:var(--pts-muted);\n}\n\n.pts-copy{\n  width:100%;\n  max-width:950px;\n}\n\n.pts-copy p{\n  margin-bottom:18px;\n}\n\n.pts-copy p:last-child{\n  margin-bottom:0;\n}\n\n\n\/* =========================\n   FEATURES\n========================= *\/\n\n.pts-feature-band{\n  display:grid;\n  grid-template-columns:repeat(3,minmax(0,1fr));\n  width:100%;\n  margin-top:28px;\n  border-top:1px solid var(--pts-line);\n  border-bottom:1px solid var(--pts-line);\n  background:var(--pts-surface);\n}\n\n.pts-feature{\n  position:relative;\n  min-width:0;\n  min-height:100px;\n  padding:18px;\n  border-right:1px solid var(--pts-line);\n  display:flex;\n  flex-direction:column;\n  justify-content:space-between;\n  background:var(--pts-surface);\n  overflow:hidden;\n  transition:\n    background-color .25s ease,\n    padding-left .25s ease;\n}\n\n.pts-feature:last-child{\n  border-right:0;\n}\n\n.pts-feature::before{\n  content:\"\";\n  position:absolute;\n  top:0;\n  left:0;\n  width:3px;\n  height:0;\n  background:var(--pts-accent);\n  transition:height .3s ease;\n}\n\n.pts-feature:hover{\n  padding-left:23px;\n  background:var(--pts-accent-soft);\n}\n\n.pts-feature:hover::before{\n  height:100%;\n}\n\n.pts-feature-label{\n  color:var(--pts-muted);\n  font-size:9px;\n  font-weight:800;\n  line-height:1.4;\n  letter-spacing:.12em;\n  text-transform:uppercase;\n}\n\n.pts-feature-value{\n  margin-top:17px;\n  color:var(--pts-text);\n  font-size:13px;\n  font-weight:750;\n  line-height:1.45;\n}\n\n\n\/* =========================\n   SPECS\n========================= *\/\n\n.pts-spec-list{\n  display:grid;\n  grid-template-columns:repeat(2,minmax(0,1fr));\n  width:100%;\n  margin:0;\n  padding:0;\n  border-top:1px solid var(--pts-line);\n  list-style:none;\n}\n\n.pts-spec-list li{\n  position:relative;\n  min-width:0;\n  min-height:84px;\n  padding:17px 20px;\n  border-right:1px solid var(--pts-line);\n  border-bottom:1px solid var(--pts-line);\n  background:var(--pts-surface);\n  overflow:hidden;\n  transition:\n    background-color .22s ease,\n    padding-left .22s ease;\n}\n\n.pts-spec-list li:nth-child(2n){\n  border-right:0;\n}\n\n.pts-spec-list li::before{\n  content:\"\";\n  position:absolute;\n  left:0;\n  top:0;\n  width:3px;\n  height:0;\n  background:var(--pts-accent);\n  transition:height .25s ease;\n}\n\n.pts-spec-list li:hover{\n  padding-left:25px;\n  background:var(--pts-soft);\n}\n\n.pts-spec-list li:hover::before{\n  height:100%;\n}\n\n.pts-spec-list strong{\n  display:block;\n  margin-bottom:6px;\n  color:var(--pts-text);\n  font-size:9px;\n  font-weight:800;\n  line-height:1.4;\n  letter-spacing:.1em;\n  text-transform:uppercase;\n}\n\n.pts-spec-list span{\n  display:block;\n  color:var(--pts-muted);\n  font-size:13px;\n  line-height:1.55;\n}\n\n\n\/* =========================\n   NOTE\n========================= *\/\n\n.pts-note{\n  display:grid;\n  grid-template-columns:46px minmax(0,1fr);\n  width:100%;\n  margin-top:20px;\n  border-top:1px solid var(--pts-line);\n  border-bottom:1px solid var(--pts-line);\n  background:var(--pts-accent-soft);\n}\n\n.pts-note-icon{\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  border-right:1px solid var(--pts-line);\n  color:var(--pts-accent);\n  font-family:Georgia,serif;\n  font-size:15px;\n  font-weight:700;\n}\n\n.pts-note-copy{\n  min-width:0;\n  padding:14px 16px;\n  color:var(--pts-muted);\n  font-size:12px;\n  line-height:1.7;\n}\n\n.pts-note-copy strong{\n  color:var(--pts-text);\n}\n\n\n\/* =========================\n   WHOLESALE\n========================= *\/\n\n.pts-wholesale-layout{\n  display:grid;\n  grid-template-columns:minmax(0,1.3fr) minmax(230px,.7fr);\n  width:100%;\n  margin-top:28px;\n  border-top:1px solid var(--pts-line);\n  border-bottom:1px solid var(--pts-line);\n}\n\n.pts-wholesale-data{\n  min-width:0;\n  background:var(--pts-surface);\n}\n\n.pts-wholesale-row{\n  display:grid;\n  grid-template-columns:minmax(120px,38%) minmax(0,1fr);\n  min-height:54px;\n  border-bottom:1px solid var(--pts-line);\n}\n\n.pts-wholesale-row:last-child{\n  border-bottom:0;\n}\n\n.pts-wholesale-key{\n  display:flex;\n  align-items:center;\n  padding:11px 15px;\n  border-right:1px solid var(--pts-line);\n  background:var(--pts-soft);\n  color:var(--pts-muted);\n  font-size:9px;\n  font-weight:800;\n  line-height:1.4;\n  letter-spacing:.1em;\n  text-transform:uppercase;\n}\n\n.pts-wholesale-value{\n  min-width:0;\n  display:flex;\n  align-items:center;\n  padding:11px 16px;\n  background:var(--pts-surface);\n  color:var(--pts-text);\n  font-size:13px;\n  font-weight:700;\n  line-height:1.5;\n  transition:\n    background-color .22s ease,\n    padding-left .22s ease;\n}\n\n.pts-wholesale-row:hover .pts-wholesale-value{\n  padding-left:21px;\n  background:var(--pts-accent-soft);\n}\n\n.pts-wholesale-summary{\n  min-width:0;\n  display:flex;\n  flex-direction:column;\n  justify-content:space-between;\n  padding:28px;\n  background:#111;\n  color:#fff;\n}\n\n.pts-summary-topline{\n  color:rgba(255,255,255,.64);\n  font-size:9px;\n  font-weight:800;\n  line-height:1.4;\n  letter-spacing:.14em;\n  text-transform:uppercase;\n}\n\n.pts-summary-large{\n  margin:30px 0;\n  color:#fff;\n  font-size:clamp(34px,7cqw,54px);\n  font-weight:760;\n  line-height:.95;\n  letter-spacing:-.05em;\n}\n\n.pts-summary-large::after{\n  content:\"\";\n  display:block;\n  width:42px;\n  height:3px;\n  margin-top:18px;\n  background:var(--pts-accent);\n}\n\n.pts-summary-large small{\n  display:block;\n  margin-top:11px;\n  color:rgba(255,255,255,.7);\n  font-size:11px;\n  font-weight:600;\n  line-height:1.4;\n}\n\n.pts-summary-lines{\n  color:rgba(255,255,255,.8);\n  font-size:12px;\n  line-height:1.85;\n}\n\n.pts-summary-lines strong{\n  color:#fff;\n}\n\n.pts-orange{\n  color:var(--pts-accent)!important;\n}\n\n\n\/* =========================\n   TABLET\n========================= *\/\n\n@container (max-width:760px){\n\n  .pts-hero-copy{\n    padding:30px 24px;\n  }\n\n  .pts-product-title{\n    font-size:34px;\n  }\n\n  .pts-intro{\n    font-size:15px;\n  }\n\n  .pts-hero-aside{\n    grid-template-columns:repeat(2,minmax(0,1fr));\n  }\n\n  .pts-stat{\n    border-bottom:1px solid var(--pts-line);\n  }\n\n  .pts-stat:nth-child(2){\n    border-right:0;\n  }\n\n  .pts-stat:nth-child(3),\n  .pts-stat:nth-child(4){\n    border-bottom:0;\n  }\n\n  .pts-purchase-main{\n    grid-template-columns:1fr 1fr;\n  }\n\n  .pts-purchase-total{\n    border-right:0;\n  }\n\n  .pts-purchase-actions{\n    grid-column:1\/-1;\n    display:grid;\n    grid-template-columns:1fr 1fr;\n    gap:14px;\n    border-top:1px solid var(--pts-line);\n  }\n\n  .pts-section-index{\n    grid-template-columns:repeat(2,minmax(0,1fr));\n  }\n\n  .pts-index-item:nth-child(2){\n    border-right:0;\n  }\n\n  .pts-index-item:nth-child(-n+2){\n    border-bottom:1px solid var(--pts-line);\n  }\n\n  .pts-feature-band{\n    grid-template-columns:1fr;\n  }\n\n  .pts-feature{\n    min-height:auto;\n    border-right:0;\n    border-bottom:1px solid var(--pts-line);\n  }\n\n  .pts-feature:last-child{\n    border-bottom:0;\n  }\n\n  .pts-wholesale-layout{\n    grid-template-columns:1fr;\n  }\n}\n\n\n\/* =========================\n   MOBILE\n========================= *\/\n\n@container (max-width:540px){\n\n  .pts-hero-copy{\n    padding:26px 18px;\n  }\n\n  .pts-product-title{\n    margin-bottom:18px!important;\n    font-size:29px;\n    line-height:1.1;\n  }\n\n  .pts-eyebrow{\n    margin-bottom:16px;\n  }\n\n  .pts-intro{\n    font-size:14px;\n    line-height:1.8;\n  }\n\n  .pts-stat{\n    min-height:108px;\n    padding:16px;\n  }\n\n  .pts-stat-value{\n    margin-top:17px;\n    font-size:22px;\n  }\n\n  .pts-purchase-panel{\n    padding:12px;\n  }\n\n  .pts-purchase-main{\n    grid-template-columns:1fr;\n  }\n\n  .pts-purchase-quantity,\n  .pts-purchase-total{\n    border-right:0;\n    border-bottom:1px solid var(--pts-line);\n  }\n\n  .pts-purchase-actions{\n    grid-column:auto;\n    display:flex;\n    flex-direction:column;\n    gap:10px;\n    border-top:0;\n  }\n\n  .pts-purchase-footer{\n    align-items:flex-start;\n    flex-direction:column;\n    gap:4px;\n  }\n\n  .pts-purchase-status{\n    text-align:left;\n  }\n\n  .pts-section-index{\n    display:none;\n  }\n\n  .pts-section summary{\n    grid-template-columns:52px minmax(0,1fr) 50px;\n    min-height:72px;\n  }\n\n  .pts-section-no{\n    font-size:9px;\n  }\n\n  .pts-section-title{\n    padding:13px 14px;\n    font-size:13px;\n  }\n\n  .pts-section-toggle{\n    min-width:50px;\n  }\n\n  .pts-hammer{\n    transform:scale(.86);\n  }\n\n  .pts-section details[open] .pts-hammer{\n    transform:scale(.86) rotate(90deg);\n  }\n\n  .pts-section summary:hover .pts-hammer{\n    transform:scale(.86) rotate(-7deg);\n  }\n\n  .pts-section details[open] summary:hover .pts-hammer{\n    transform:scale(.86) rotate(97deg);\n  }\n\n  .pts-section-body{\n    grid-template-columns:1fr;\n  }\n\n  .pts-body-rail{\n    display:none;\n  }\n\n  .pts-body-content{\n    padding:22px 14px 27px;\n  }\n\n  .pts-spec-list{\n    grid-template-columns:1fr;\n  }\n\n  .pts-spec-list li,\n  .pts-spec-list li:nth-child(2n){\n    border-right:0;\n  }\n\n  .pts-wholesale-row{\n    grid-template-columns:1fr;\n  }\n\n  .pts-wholesale-key{\n    padding:11px 13px 3px;\n    border-right:0;\n    background:var(--pts-surface);\n  }\n\n  .pts-wholesale-value{\n    padding:3px 13px 13px;\n  }\n\n  .pts-wholesale-summary{\n    padding:24px 19px;\n  }\n}\n\n@container (max-width:360px){\n\n  .pts-hero-aside{\n    grid-template-columns:1fr;\n  }\n\n  .pts-stat{\n    border-right:0;\n    border-bottom:1px solid var(--pts-line);\n  }\n\n  .pts-stat:last-child{\n    border-bottom:0;\n  }\n}\n\u003c\/style\u003e\n\u003cdiv class=\"product-trade-sheet\" id=\"pts-black-pallet-wrap-card\"\u003e\n\u003cinput type=\"hidden\" class=\"pts-current-variant\" value=\"{{ product.selected_or_first_available_variant.id }}\"\u003e\n\u003cdiv class=\"pts-hero\"\u003e\n\u003cdiv class=\"pts-hero-copy\"\u003e\n\u003cspan class=\"pts-eyebrow\"\u003e Warehouse \u0026amp; packaging supplies \u003c\/span\u003e\n\u003ch2 class=\"pts-product-title\"\u003eHeavy Duty Black Pallet Wrap – 400mm × 200m, 20 Micron\u003c\/h2\u003e\n\u003cp class=\"pts-intro\"\u003eHeavy-duty black pallet wrap designed for securing, stabilising, concealing and protecting palletised goods during storage, handling and transportation. The 400mm-wide blown stretch film provides a 200 metre roll length with a 20 micron construction, while the opaque black finish helps keep pallet contents out of view. An extended core provides a practical hand grip for controlled manual wrapping without requiring a separate dispenser.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-hero-aside\"\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Roll size \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e 400mm \u003csmall\u003e 200m roll length \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Unit price \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e £10.49 \u003csmall\u003e Per roll \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Minimum order \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e 24 \u003csmall\u003e Rolls \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e MOQ total \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e £251.76 \u003csmall\u003e 24 rolls \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-panel\"\u003e\n\u003cdiv class=\"pts-purchase-card\"\u003e\n\u003cdiv class=\"pts-purchase-main\"\u003e\n\u003cdiv class=\"pts-purchase-quantity\"\u003e\n\u003cspan class=\"pts-purchase-label\"\u003e Boxes \u003c\/span\u003e\n\u003cdiv class=\"pts-quantity-selector\"\u003e\n\u003cbutton type=\"button\" class=\"pts-quantity-button pts-quantity-minus\"\u003e − \u003c\/button\u003e \u003cinput type=\"number\" class=\"pts-quantity-input\" value=\"1\" min=\"1\" step=\"1\" inputmode=\"numeric\"\u003e \u003cbutton type=\"button\" class=\"pts-quantity-button pts-quantity-plus\"\u003e + \u003c\/button\u003e\n\u003c\/div\u003e\n\u003cspan class=\"pts-minimum-note\"\u003e 1 box = \u003cstrong\u003e 24 individual rolls \u003c\/strong\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-total\"\u003e\n\u003cspan class=\"pts-purchase-label\"\u003e Order total \u003c\/span\u003e \u003cspan class=\"pts-order-total-value\"\u003e £251.76 \u003c\/span\u003e \u003cspan class=\"pts-order-total-meta\"\u003e 1 box · 24 rolls × £10.49 \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-actions\"\u003e\n\u003cbutton type=\"button\" class=\"pts-buy-button pts-add-cart\"\u003e ADD BOX · 24 ROLLS \u003c\/button\u003e \u003cbutton type=\"button\" class=\"pts-buy-button pts-buy-now\"\u003e BUY NOW · £251.76 \u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-footer\"\u003e\n\u003cspan class=\"pts-purchase-footer-text\"\u003e Minimum order: \u003cstrong\u003e 1 box = 24 rolls \u003c\/strong\u003e · £10.49 per roll · £251.76 per box \u003c\/span\u003e \u003cspan class=\"pts-purchase-status\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-section-index\"\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e01\u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Secure \u0026amp; conceal \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e02\u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Size \u0026amp; construction \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e03\u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Use \u0026amp; storage \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e04\u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Wholesale supply \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-sections\"\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e 01 \u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Secure Pallet Wrapping, Concealment \u0026amp; Load Stability \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e \u003cspan class=\"pts-hammer\"\u003e \u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e \u003c\/span\u003e \u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cdiv class=\"pts-copy\"\u003e\n\u003cp\u003eThis black pallet wrap provides a practical method of securing cartons, packaged products and mixed loads to pallets for storage, handling and transportation. Stretch wrapping helps keep individual items grouped together while reducing movement across the pallet during normal warehouse operations.\u003c\/p\u003e\n\u003cp\u003eThe opaque black finish helps conceal pallet contents from view while the film supports general load containment and protection. This makes it suitable for warehouses, distribution centres, stockrooms, packing areas and other commercial environments where discreet pallet wrapping is useful.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature-band\"\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Film colour \u003c\/span\u003e \u003cspan class=\"pts-feature-value\"\u003e Black \/ opaque \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Film thickness \u003c\/span\u003e \u003cspan class=\"pts-feature-value\"\u003e 20 micron \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Core type \u003c\/span\u003e \u003cspan class=\"pts-feature-value\"\u003e Extended core \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e 02 \u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Dimensions, Blown Film \u0026amp; Extended Core Design \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e \u003cspan class=\"pts-hammer\"\u003e \u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e \u003c\/span\u003e \u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cul class=\"pts-spec-list\"\u003e\n\u003cli\u003e\n\u003cstrong\u003e Product type \u003c\/strong\u003e \u003cspan\u003e Black hand pallet wrap. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Roll width \u003c\/strong\u003e \u003cspan\u003e 400 mm. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Roll length \u003c\/strong\u003e \u003cspan\u003e 200 metres. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Film thickness \u003c\/strong\u003e \u003cspan\u003e 20 micron. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Colour \u003c\/strong\u003e \u003cspan\u003e Black \/ opaque. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Film type \u003c\/strong\u003e \u003cspan\u003e Blown stretch film. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Core design \u003c\/strong\u003e \u003cspan\u003e Extended core for manual handling and wrapping. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Application \u003c\/strong\u003e \u003cspan\u003e Manual pallet and load wrapping. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Concealment \u003c\/strong\u003e \u003cspan\u003e Opaque black film helps keep wrapped contents out of view. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Recommended environments \u003c\/strong\u003e \u003cspan\u003e Warehouses, stockrooms, distribution centres, packing areas and general commercial storage. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003ei\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Application note: \u003c\/strong\u003e Wrap requirements vary according to pallet weight, load shape, surface condition and transportation requirements. Apply sufficient layers to achieve appropriate load stability and containment.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e 03 \u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Application, Handling \u0026amp; Storage \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e \u003cspan class=\"pts-hammer\"\u003e \u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e \u003c\/span\u003e \u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cul class=\"pts-spec-list\"\u003e\n\u003cli\u003e\n\u003cstrong\u003e Before wrapping \u003c\/strong\u003e \u003cspan\u003e Ensure cartons and packaged products are positioned securely on the pallet before applying the film. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Starting the wrap \u003c\/strong\u003e \u003cspan\u003e Secure the film at the lower section of the pallet or load before beginning the wrapping process. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Application \u003c\/strong\u003e \u003cspan\u003e Maintain controlled tension while moving around the pallet and overlapping successive layers. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Load coverage \u003c\/strong\u003e \u003cspan\u003e Apply additional layers around areas requiring increased stability or protection. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Extended core \u003c\/strong\u003e \u003cspan\u003e Use the projecting core as a hand grip to support controlled manual dispensing. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Removal \u003c\/strong\u003e \u003cspan\u003e Cut or remove the film carefully without damaging packaged goods beneath the wrap. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Storage \u003c\/strong\u003e \u003cspan\u003e Store unused rolls in a clean, dry environment away from unnecessary heat and direct sunlight. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Roll protection \u003c\/strong\u003e \u003cspan\u003e Protect roll edges and film surfaces from cuts, punctures and contamination before use. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003e!\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Handling note: \u003c\/strong\u003e Pallet wrap is intended to support load containment but should not be treated as a replacement for appropriate pallet loading, stacking and transport safety procedures.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e 04 \u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Packaging \u0026amp; Wholesale Supply \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e \u003cspan class=\"pts-hammer\"\u003e \u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e \u003c\/span\u003e \u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cdiv class=\"pts-copy\"\u003e\n\u003cp\u003eOne Shopify selling unit is one individual pallet-wrap roll. Each wholesale box contains 24 rolls. Each roll measures 400mm × 200m with a 20 micron blown-film construction and extended core design. Each roll is priced at £10.49, giving a wholesale box value of £251.76.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-layout\"\u003e\n\u003cdiv class=\"pts-wholesale-data\"\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eProduct\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003eBlack extended core pallet wrap\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eRoll dimensions\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e400mm × 200m\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eThickness\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e20 micron\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eColour\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003eBlack\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eFilm type\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003eBlown stretch film\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eCore\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003eExtended core\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eUnit price\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e£10.49\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eBox quantity\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e24 rolls\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eMinimum order\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e1 wholesale box\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eBox total\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e£251.76\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003caside class=\"pts-wholesale-summary\"\u003e\n\u003cdiv\u003e\n\u003cspan class=\"pts-summary-topline\"\u003e Wholesale box \u003c\/span\u003e\n\u003cdiv class=\"pts-summary-large\"\u003e£251.76 \u003csmall\u003e 24 rolls \u003c\/small\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-summary-lines\"\u003e\n\u003cstrong\u003e £10.49 \u003c\/strong\u003e per roll \u003cbr\u003e\u003cstrong\u003e 400mm × 200m \u003c\/strong\u003e per roll \u003cbr\u003e\u003cstrong\u003e 20 micron \u003c\/strong\u003e blown film \u003cbr\u003e\u003cstrong\u003e 24 rolls \u003c\/strong\u003e per box \u003cbr\u003e\u003cstrong class=\"pts-orange\"\u003e £251.76 \u003c\/strong\u003e per wholesale box\u003c\/div\u003e\n\u003c\/aside\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003ei\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Wholesale calculation: \u003c\/strong\u003e 1 box = 24 rolls × £10.49 per roll = £251.76.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"My Store","offers":[{"title":"Default Title","offer_id":56823844405588,"sku":null,"price":10.49,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1063\/3117\/7300\/files\/35612_1.png?v=1786977997"},{"product_id":"20-piece-assorted-brass-wire-brush-wheel-pack","title":"20 Piece Assorted Brass Wire Brush \u0026 Wheel Pack","description":"\u003cstyle\u003e\n  .product-trade-sheet {\n    --pts-bg: #ffffff;\n    --pts-surface: #ffffff;\n    --pts-soft: #f6f6f4;\n    --pts-text: #111111;\n    --pts-muted: #5a5a5a;\n    --pts-accent: #f26522;\n    --pts-accent-dark: #d95316;\n    --pts-accent-soft: #fff2e8;\n    --pts-line: #dfdfdb;\n\n    width: 100%;\n    max-width: 100%;\n    color: var(--pts-text);\n    background: var(--pts-bg);\n\n    font-family:\n      -apple-system,\n      BlinkMacSystemFont,\n      \"Segoe UI\",\n      Arial,\n      sans-serif;\n\n    font-size: 14px;\n    line-height: 1.7;\n\n    container-type: inline-size;\n  }\n\n  .product-trade-sheet *,\n  .product-trade-sheet *::before,\n  .product-trade-sheet *::after {\n    box-sizing: border-box;\n  }\n\n  .product-trade-sheet h2,\n  .product-trade-sheet p {\n    margin: 0;\n  }\n\n  .product-trade-sheet button,\n  .product-trade-sheet input {\n    font: inherit;\n  }\n\n  \/* =========================================================\n     PRODUCT OVERVIEW\n  ========================================================= *\/\n\n  .pts-hero {\n    width: 100%;\n    border-top: 4px solid var(--pts-accent);\n    border-bottom: 1px solid var(--pts-line);\n    background: var(--pts-surface);\n  }\n\n  .pts-hero-copy {\n    width: 100%;\n    padding: clamp(30px, 5cqw, 58px);\n  }\n\n  .pts-eyebrow {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin-bottom: 18px;\n    color: var(--pts-accent);\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1;\n    letter-spacing: 0.16em;\n    text-transform: uppercase;\n  }\n\n  .pts-eyebrow::before {\n    content: \"\";\n    width: 34px;\n    height: 2px;\n    background: var(--pts-accent);\n  }\n\n  .pts-product-title {\n    width: 100%;\n    max-width: 980px;\n    margin: 0 0 24px !important;\n    color: var(--pts-text);\n    font-size: clamp(30px, 5.2cqw, 48px);\n    font-weight: 800;\n    line-height: 1.07;\n    letter-spacing: -0.045em;\n  }\n\n  .pts-intro {\n    width: 100%;\n    max-width: 980px;\n    color: var(--pts-muted);\n    font-size: clamp(15px, 2cqw, 18px);\n    line-height: 1.85;\n  }\n\n  \/* =========================================================\n     TOP STATS\n  ========================================================= *\/\n\n  .pts-hero-aside {\n    display: grid;\n    grid-template-columns: repeat(4, minmax(0, 1fr));\n    width: 100%;\n    border-top: 1px solid var(--pts-line);\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-stat {\n    position: relative;\n    min-width: 0;\n    min-height: 126px;\n    padding: 20px;\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n    border-right: 1px solid var(--pts-line);\n    background: var(--pts-accent-soft);\n    overflow: hidden;\n    transition:\n      background-color 0.25s ease,\n      padding-left 0.25s ease;\n  }\n\n  .pts-stat:last-child {\n    border-right: 0;\n  }\n\n  .pts-stat::after {\n    content: \"\";\n    position: absolute;\n    left: 0;\n    bottom: 0;\n    width: 0;\n    height: 3px;\n    background: var(--pts-accent);\n    transition: width 0.3s ease;\n  }\n\n  .pts-stat:hover {\n    padding-left: 24px;\n    background: #ffffff;\n  }\n\n  .pts-stat:hover::after {\n    width: 100%;\n  }\n\n  .pts-stat-label {\n    display: block;\n    color: var(--pts-muted);\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.14em;\n    text-transform: uppercase;\n  }\n\n  .pts-stat-value {\n    display: block;\n    margin-top: 22px;\n    color: var(--pts-text);\n    font-size: clamp(22px, 4cqw, 32px);\n    font-weight: 780;\n    line-height: 1;\n    letter-spacing: -0.035em;\n  }\n\n  .pts-stat-value small {\n    display: block;\n    margin-top: 8px;\n    color: var(--pts-muted);\n    font-size: 11px;\n    font-weight: 600;\n    line-height: 1.4;\n  }\n\n  \/* =========================================================\n     PURCHASE PANEL\n  ========================================================= *\/\n\n  .pts-purchase-panel {\n    width: 100%;\n    padding: 20px;\n    border-bottom: 1px solid var(--pts-line);\n    background: var(--pts-soft);\n  }\n\n  .pts-purchase-card {\n    width: 100%;\n    border: 1px solid var(--pts-line);\n    background: #ffffff;\n  }\n\n  .pts-purchase-main {\n    display: grid;\n    grid-template-columns:\n      minmax(220px, 0.9fr)\n      minmax(190px, 0.75fr)\n      minmax(280px, 1.2fr);\n    width: 100%;\n  }\n\n  \/* =========================================================\n     QUANTITY\n  ========================================================= *\/\n\n  .pts-purchase-quantity {\n    min-width: 0;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    padding: 22px;\n    border-right: 1px solid var(--pts-line);\n    background: #ffffff;\n  }\n\n  .pts-purchase-label {\n    display: block;\n    margin-bottom: 12px;\n    color: var(--pts-muted);\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.13em;\n    text-transform: uppercase;\n  }\n\n  .pts-quantity-selector {\n    display: grid;\n    grid-template-columns: 50px 88px 50px;\n    width: max-content;\n    height: 52px;\n    border: 1px solid var(--pts-line);\n    background: #ffffff;\n  }\n\n  .pts-quantity-button {\n    appearance: none;\n    -webkit-appearance: none;\n    width: 50px;\n    height: 50px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    margin: 0;\n    padding: 0;\n    border: 0;\n    border-radius: 0;\n    background: #ffffff;\n    color: #111111;\n    cursor: pointer;\n    font-size: 22px;\n    font-weight: 500;\n    line-height: 1;\n    user-select: none;\n    transition:\n      background-color 0.2s ease,\n      color 0.2s ease;\n  }\n\n  .pts-quantity-button:hover:not(:disabled) {\n    background: var(--pts-accent);\n    color: #ffffff;\n  }\n\n  .pts-quantity-button:active:not(:disabled) {\n    background: var(--pts-accent-dark);\n  }\n\n  .pts-quantity-button:disabled {\n    cursor: not-allowed;\n    background: var(--pts-soft);\n    color: #b9b9b5;\n  }\n\n  .pts-quantity-input {\n    appearance: textfield;\n    -moz-appearance: textfield;\n    width: 88px;\n    height: 50px;\n    margin: 0;\n    padding: 0 5px;\n    border-top: 0;\n    border-bottom: 0;\n    border-left: 1px solid var(--pts-line);\n    border-right: 1px solid var(--pts-line);\n    border-radius: 0;\n    outline: none;\n    background: #ffffff;\n    color: var(--pts-text);\n    text-align: center;\n    font-size: 17px;\n    font-weight: 800;\n    line-height: 50px;\n  }\n\n  .pts-quantity-input:focus {\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-quantity-input::-webkit-inner-spin-button,\n  .pts-quantity-input::-webkit-outer-spin-button {\n    margin: 0;\n    -webkit-appearance: none;\n  }\n\n  .pts-minimum-note {\n    display: block;\n    margin-top: 10px;\n    color: var(--pts-muted);\n    font-size: 10px;\n    line-height: 1.45;\n  }\n\n  .pts-minimum-note strong {\n    color: var(--pts-text);\n  }\n\n  \/* =========================================================\n     ORDER TOTAL\n  ========================================================= *\/\n\n  .pts-purchase-total {\n    min-width: 0;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    padding: 22px;\n    border-right: 1px solid var(--pts-line);\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-order-total-value {\n    display: block;\n    color: var(--pts-text);\n    font-size: clamp(28px, 4.4cqw, 38px);\n    font-weight: 800;\n    line-height: 1;\n    letter-spacing: -0.04em;\n  }\n\n  .pts-order-total-meta {\n    display: block;\n    margin-top: 9px;\n    color: var(--pts-muted);\n    font-size: 11px;\n    line-height: 1.5;\n  }\n\n  \/* =========================================================\n     BUY BUTTONS\n  ========================================================= *\/\n\n  .pts-purchase-actions {\n    min-width: 0;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    gap: 14px;\n    padding: 14px;\n    background: #ffffff;\n  }\n\n  .pts-buy-button {\n    appearance: none;\n    -webkit-appearance: none;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-height: 54px;\n    margin: 0;\n    padding: 14px 18px;\n    border-radius: 0;\n    cursor: pointer;\n    font-size: 12px;\n    font-weight: 800;\n    line-height: 1.35;\n    letter-spacing: 0.055em;\n    text-align: center;\n    text-transform: uppercase;\n    transition:\n      background-color 0.2s ease,\n      color 0.2s ease,\n      border-color 0.2s ease,\n      transform 0.12s ease;\n  }\n\n  .pts-add-cart {\n    border: 1px solid #111111;\n    background: #111111;\n    color: #ffffff;\n  }\n\n  .pts-add-cart:hover {\n    background: #292929;\n    border-color: #292929;\n  }\n\n  .pts-add-cart:active {\n    transform: translateY(1px);\n    background: #000000;\n    border-color: #000000;\n  }\n\n  .pts-buy-now {\n    border: 1px solid var(--pts-accent);\n    background: var(--pts-accent);\n    color: #ffffff;\n  }\n\n  .pts-buy-now:hover {\n    background: var(--pts-accent-dark);\n    border-color: var(--pts-accent-dark);\n  }\n\n  .pts-buy-now:active {\n    transform: translateY(1px);\n  }\n\n  .pts-buy-button:disabled {\n    cursor: wait;\n    opacity: 0.6;\n  }\n\n  \/* =========================================================\n     PURCHASE FOOTER\n  ========================================================= *\/\n\n  .pts-purchase-footer {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 18px;\n    min-height: 46px;\n    padding: 10px 18px;\n    border-top: 1px solid var(--pts-line);\n    background: #ffffff;\n  }\n\n  .pts-purchase-footer-text {\n    color: var(--pts-muted);\n    font-size: 10px;\n    line-height: 1.5;\n  }\n\n  .pts-purchase-footer-text strong {\n    color: var(--pts-text);\n  }\n\n  .pts-purchase-status {\n    min-height: 15px;\n    color: var(--pts-muted);\n    font-size: 10px;\n    line-height: 1.5;\n    text-align: right;\n  }\n\n  .pts-purchase-status.is-error {\n    color: #b42318;\n  }\n\n  .pts-purchase-status.is-success {\n    color: #111111;\n  }\n\n  \/* =========================================================\n     SECTION INDEX\n  ========================================================= *\/\n\n  .pts-section-index {\n    display: grid;\n    grid-template-columns: repeat(4, minmax(0, 1fr));\n    width: 100%;\n    border-bottom: 1px solid var(--pts-line);\n    background: var(--pts-soft);\n  }\n\n  .pts-index-item {\n    min-width: 0;\n    padding: 16px 18px;\n    border-right: 1px solid var(--pts-line);\n    transition:\n      background-color 0.25s ease,\n      padding-left 0.25s ease;\n  }\n\n  .pts-index-item:last-child {\n    border-right: 0;\n  }\n\n  .pts-index-item:hover {\n    padding-left: 23px;\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-index-number {\n    display: block;\n    margin-bottom: 6px;\n    color: var(--pts-accent);\n    font-size: 9px;\n    font-weight: 850;\n    line-height: 1;\n    letter-spacing: 0.12em;\n  }\n\n  .pts-index-label {\n    display: block;\n    color: var(--pts-text);\n    font-size: 11px;\n    font-weight: 700;\n    line-height: 1.4;\n  }\n\n  \/* =========================================================\n     ACCORDION\n  ========================================================= *\/\n\n  .pts-sections {\n    width: 100%;\n    background: var(--pts-bg);\n  }\n\n  .pts-section {\n    width: 100%;\n    border-bottom: 1px solid var(--pts-line);\n  }\n\n  .pts-section details {\n    display: block;\n    width: 100%;\n  }\n\n  .pts-section summary {\n    display: grid;\n    grid-template-columns:\n      82px\n      minmax(0, 1fr)\n      64px;\n    align-items: stretch;\n    width: 100%;\n    min-height: 86px;\n    padding: 0;\n    background: var(--pts-surface);\n    cursor: pointer;\n    list-style: none;\n    user-select: none;\n    transition: background-color 0.25s ease;\n  }\n\n  .pts-section summary::-webkit-details-marker {\n    display: none;\n  }\n\n  .pts-section summary::marker {\n    content: \"\";\n  }\n\n  .pts-section summary:hover,\n  .pts-section details[open] \u003e summary {\n    background: var(--pts-soft);\n  }\n\n  .pts-section-no {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    border-right: 1px solid var(--pts-line);\n    color: var(--pts-accent);\n    font-size: 11px;\n    font-weight: 850;\n    line-height: 1;\n    letter-spacing: 0.12em;\n    transition:\n      background-color 0.3s ease,\n      color 0.3s ease;\n  }\n\n  .pts-section details[open] .pts-section-no {\n    background: var(--pts-accent);\n    color: #ffffff;\n  }\n\n  .pts-section-title {\n    min-width: 0;\n    display: flex;\n    align-items: center;\n    padding: 18px 24px;\n    color: var(--pts-text);\n    font-size: clamp(14px, 2.1cqw, 18px);\n    font-weight: 750;\n    line-height: 1.4;\n  }\n\n  \/* =========================================================\n     HAMMER\n  ========================================================= *\/\n\n  .pts-section-toggle {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-width: 64px;\n    border-left: 1px solid var(--pts-line);\n    background: var(--pts-surface);\n    overflow: hidden;\n    transition: background-color 0.25s ease;\n  }\n\n  .pts-section summary:hover .pts-section-toggle,\n  .pts-section details[open] .pts-section-toggle {\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-hammer {\n    position: relative;\n    display: block;\n    width: 26px;\n    height: 34px;\n    transform: rotate(0deg);\n    transform-origin: 50% 50%;\n    transition:\n      transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n  }\n\n  .pts-hammer::before {\n    content: \"\";\n    position: absolute;\n    left: 50%;\n    top: 11px;\n    width: 5px;\n    height: 23px;\n    background: var(--pts-accent);\n    transform: translateX(-50%);\n  }\n\n  .pts-hammer::after {\n    content: \"\";\n    position: absolute;\n    top: 4px;\n    left: 50%;\n    width: 24px;\n    height: 9px;\n    background: var(--pts-accent);\n    transform: translateX(-50%);\n  }\n\n  .pts-hammer-neck {\n    position: absolute;\n    top: 9px;\n    left: 50%;\n    width: 9px;\n    height: 8px;\n    background: var(--pts-accent);\n    transform: translateX(-50%);\n  }\n\n  .pts-section details[open] .pts-hammer {\n    transform: rotate(90deg);\n  }\n\n  .pts-section summary:hover .pts-hammer {\n    transform: rotate(-7deg);\n  }\n\n  .pts-section details[open] summary:hover .pts-hammer {\n    transform: rotate(97deg);\n  }\n\n  \/* =========================================================\n     SECTION BODY\n  ========================================================= *\/\n\n  .pts-section-body {\n    display: grid;\n    grid-template-columns:\n      82px\n      minmax(0, 1fr);\n    width: 100%;\n    background: var(--pts-bg);\n  }\n\n  .pts-body-rail {\n    border-right: 1px solid var(--pts-line);\n    background:\n      repeating-linear-gradient(\n        to bottom,\n        transparent 0,\n        transparent 17px,\n        rgba(242, 101, 34, 0.07) 17px,\n        rgba(242, 101, 34, 0.07) 18px\n      );\n  }\n\n  .pts-body-content {\n    min-width: 0;\n    padding: clamp(22px, 4cqw, 42px);\n    color: var(--pts-muted);\n  }\n\n  .pts-copy {\n    width: 100%;\n    max-width: 950px;\n  }\n\n  .pts-copy p {\n    margin-bottom: 18px;\n  }\n\n  .pts-copy p:last-child {\n    margin-bottom: 0;\n  }\n\n  \/* =========================================================\n     FEATURES\n  ========================================================= *\/\n\n  .pts-feature-band {\n    display: grid;\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n    width: 100%;\n    margin-top: 28px;\n    border-top: 1px solid var(--pts-line);\n    border-bottom: 1px solid var(--pts-line);\n    background: var(--pts-surface);\n  }\n\n  .pts-feature {\n    position: relative;\n    min-width: 0;\n    min-height: 100px;\n    padding: 18px;\n    border-right: 1px solid var(--pts-line);\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n    background: var(--pts-surface);\n    overflow: hidden;\n    transition:\n      background-color 0.25s ease,\n      padding-left 0.25s ease;\n  }\n\n  .pts-feature:last-child {\n    border-right: 0;\n  }\n\n  .pts-feature::before {\n    content: \"\";\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 3px;\n    height: 0;\n    background: var(--pts-accent);\n    transition: height 0.3s ease;\n  }\n\n  .pts-feature:hover {\n    padding-left: 23px;\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-feature:hover::before {\n    height: 100%;\n  }\n\n  .pts-feature-label {\n    color: var(--pts-muted);\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.12em;\n    text-transform: uppercase;\n  }\n\n  .pts-feature-value {\n    margin-top: 17px;\n    color: var(--pts-text);\n    font-size: 13px;\n    font-weight: 750;\n    line-height: 1.45;\n  }\n\n  \/* =========================================================\n     SPECIFICATIONS\n  ========================================================= *\/\n\n  .pts-spec-list {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    width: 100%;\n    margin: 0;\n    padding: 0;\n    border-top: 1px solid var(--pts-line);\n    list-style: none;\n  }\n\n  .pts-spec-list li {\n    position: relative;\n    min-width: 0;\n    min-height: 84px;\n    padding: 17px 20px;\n    border-right: 1px solid var(--pts-line);\n    border-bottom: 1px solid var(--pts-line);\n    background: var(--pts-surface);\n    overflow: hidden;\n    transition:\n      background-color 0.22s ease,\n      padding-left 0.22s ease;\n  }\n\n  .pts-spec-list li:nth-child(2n) {\n    border-right: 0;\n  }\n\n  .pts-spec-list li::before {\n    content: \"\";\n    position: absolute;\n    left: 0;\n    top: 0;\n    width: 3px;\n    height: 0;\n    background: var(--pts-accent);\n    transition: height 0.25s ease;\n  }\n\n  .pts-spec-list li:hover {\n    padding-left: 25px;\n    background: var(--pts-soft);\n  }\n\n  .pts-spec-list li:hover::before {\n    height: 100%;\n  }\n\n  .pts-spec-list strong {\n    display: block;\n    margin-bottom: 6px;\n    color: var(--pts-text);\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.1em;\n    text-transform: uppercase;\n  }\n\n  .pts-spec-list span {\n    display: block;\n    color: var(--pts-muted);\n    font-size: 13px;\n    line-height: 1.55;\n  }\n\n  \/* =========================================================\n     NOTE\n  ========================================================= *\/\n\n  .pts-note {\n    display: grid;\n    grid-template-columns:\n      46px\n      minmax(0, 1fr);\n    width: 100%;\n    margin-top: 20px;\n    border-top: 1px solid var(--pts-line);\n    border-bottom: 1px solid var(--pts-line);\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-note-icon {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    border-right: 1px solid var(--pts-line);\n    color: var(--pts-accent);\n    font-family: Georgia, serif;\n    font-size: 15px;\n    font-weight: 700;\n  }\n\n  .pts-note-copy {\n    min-width: 0;\n    padding: 14px 16px;\n    color: var(--pts-muted);\n    font-size: 12px;\n    line-height: 1.7;\n  }\n\n  .pts-note-copy strong {\n    color: var(--pts-text);\n  }\n\n  \/* =========================================================\n     WHOLESALE\n  ========================================================= *\/\n\n  .pts-wholesale-layout {\n    display: grid;\n    grid-template-columns:\n      minmax(0, 1.3fr)\n      minmax(230px, 0.7fr);\n    width: 100%;\n    margin-top: 28px;\n    border-top: 1px solid var(--pts-line);\n    border-bottom: 1px solid var(--pts-line);\n  }\n\n  .pts-wholesale-data {\n    min-width: 0;\n    background: var(--pts-surface);\n  }\n\n  .pts-wholesale-row {\n    display: grid;\n    grid-template-columns:\n      minmax(120px, 38%)\n      minmax(0, 1fr);\n    min-height: 54px;\n    border-bottom: 1px solid var(--pts-line);\n  }\n\n  .pts-wholesale-row:last-child {\n    border-bottom: 0;\n  }\n\n  .pts-wholesale-key {\n    display: flex;\n    align-items: center;\n    padding: 11px 15px;\n    border-right: 1px solid var(--pts-line);\n    background: var(--pts-soft);\n    color: var(--pts-muted);\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.1em;\n    text-transform: uppercase;\n  }\n\n  .pts-wholesale-value {\n    min-width: 0;\n    display: flex;\n    align-items: center;\n    padding: 11px 16px;\n    background: var(--pts-surface);\n    color: var(--pts-text);\n    font-size: 13px;\n    font-weight: 700;\n    line-height: 1.5;\n    transition:\n      background-color 0.22s ease,\n      padding-left 0.22s ease;\n  }\n\n  .pts-wholesale-row:hover .pts-wholesale-value {\n    padding-left: 21px;\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-wholesale-summary {\n    min-width: 0;\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n    padding: 28px;\n    background: #111111;\n    color: #ffffff;\n  }\n\n  .pts-summary-topline {\n    color: rgba(255, 255, 255, 0.64);\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.14em;\n    text-transform: uppercase;\n  }\n\n  .pts-summary-large {\n    margin: 30px 0;\n    color: #ffffff;\n    font-size: clamp(34px, 7cqw, 54px);\n    font-weight: 760;\n    line-height: 0.95;\n    letter-spacing: -0.05em;\n  }\n\n  .pts-summary-large::after {\n    content: \"\";\n    display: block;\n    width: 42px;\n    height: 3px;\n    margin-top: 18px;\n    background: var(--pts-accent);\n  }\n\n  .pts-summary-large small {\n    display: block;\n    margin-top: 11px;\n    color: rgba(255, 255, 255, 0.7);\n    font-size: 11px;\n    font-weight: 600;\n    line-height: 1.4;\n  }\n\n  .pts-summary-lines {\n    color: rgba(255, 255, 255, 0.8);\n    font-size: 12px;\n    line-height: 1.85;\n  }\n\n  .pts-summary-lines strong {\n    color: #ffffff;\n  }\n\n  .pts-orange {\n    color: var(--pts-accent) !important;\n  }\n\n  \/* =========================================================\n     TABLET\n  ========================================================= *\/\n\n  @container (max-width: 760px) {\n    .pts-hero-copy {\n      padding: 30px 24px;\n    }\n\n    .pts-product-title {\n      font-size: 34px;\n    }\n\n    .pts-intro {\n      font-size: 15px;\n    }\n\n    .pts-hero-aside {\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n    }\n\n    .pts-stat {\n      border-bottom: 1px solid var(--pts-line);\n    }\n\n    .pts-stat:nth-child(2) {\n      border-right: 0;\n    }\n\n    .pts-stat:nth-child(3),\n    .pts-stat:nth-child(4) {\n      border-bottom: 0;\n    }\n\n    .pts-purchase-main {\n      grid-template-columns: 1fr 1fr;\n    }\n\n    .pts-purchase-total {\n      border-right: 0;\n    }\n\n    .pts-purchase-actions {\n      grid-column: 1 \/ -1;\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 14px;\n      border-top: 1px solid var(--pts-line);\n    }\n\n    .pts-section-index {\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n    }\n\n    .pts-index-item:nth-child(2) {\n      border-right: 0;\n    }\n\n    .pts-index-item:nth-child(-n + 2) {\n      border-bottom: 1px solid var(--pts-line);\n    }\n\n    .pts-feature-band {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-feature {\n      min-height: auto;\n      border-right: 0;\n      border-bottom: 1px solid var(--pts-line);\n    }\n\n    .pts-feature:last-child {\n      border-bottom: 0;\n    }\n\n    .pts-wholesale-layout {\n      grid-template-columns: 1fr;\n    }\n  }\n\n  \/* =========================================================\n     MOBILE\n  ========================================================= *\/\n\n  @container (max-width: 540px) {\n    .pts-hero-copy {\n      padding: 26px 18px;\n    }\n\n    .pts-product-title {\n      margin-bottom: 18px !important;\n      font-size: 29px;\n      line-height: 1.1;\n    }\n\n    .pts-eyebrow {\n      margin-bottom: 16px;\n    }\n\n    .pts-intro {\n      font-size: 14px;\n      line-height: 1.8;\n    }\n\n    .pts-stat {\n      min-height: 108px;\n      padding: 16px;\n    }\n\n    .pts-stat-value {\n      margin-top: 17px;\n      font-size: 22px;\n    }\n\n    .pts-purchase-panel {\n      padding: 12px;\n    }\n\n    .pts-purchase-main {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-purchase-quantity,\n    .pts-purchase-total {\n      border-right: 0;\n      border-bottom: 1px solid var(--pts-line);\n    }\n\n    .pts-purchase-actions {\n      grid-column: auto;\n      display: flex;\n      flex-direction: column;\n      gap: 10px;\n      border-top: 0;\n    }\n\n    .pts-purchase-footer {\n      align-items: flex-start;\n      flex-direction: column;\n      gap: 4px;\n    }\n\n    .pts-purchase-status {\n      text-align: left;\n    }\n\n    .pts-section-index {\n      display: none;\n    }\n\n    .pts-section summary {\n      grid-template-columns:\n        52px\n        minmax(0, 1fr)\n        50px;\n      min-height: 72px;\n    }\n\n    .pts-section-no {\n      font-size: 9px;\n    }\n\n    .pts-section-title {\n      padding: 13px 14px;\n      font-size: 13px;\n    }\n\n    .pts-section-toggle {\n      min-width: 50px;\n    }\n\n    .pts-hammer {\n      transform: scale(0.86);\n    }\n\n    .pts-section details[open] .pts-hammer {\n      transform:\n        scale(0.86)\n        rotate(90deg);\n    }\n\n    .pts-section summary:hover .pts-hammer {\n      transform:\n        scale(0.86)\n        rotate(-7deg);\n    }\n\n    .pts-section details[open] summary:hover .pts-hammer {\n      transform:\n        scale(0.86)\n        rotate(97deg);\n    }\n\n    .pts-section-body {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-body-rail {\n      display: none;\n    }\n\n    .pts-body-content {\n      padding: 22px 14px 27px;\n    }\n\n    .pts-spec-list {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-spec-list li,\n    .pts-spec-list li:nth-child(2n) {\n      border-right: 0;\n    }\n\n    .pts-wholesale-row {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-wholesale-key {\n      padding: 11px 13px 3px;\n      border-right: 0;\n      background: var(--pts-surface);\n    }\n\n    .pts-wholesale-value {\n      padding: 3px 13px 13px;\n    }\n\n    .pts-wholesale-summary {\n      padding: 24px 19px;\n    }\n  }\n\n  @container (max-width: 360px) {\n    .pts-hero-aside {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-stat {\n      border-right: 0;\n      border-bottom: 1px solid var(--pts-line);\n    }\n\n    .pts-stat:last-child {\n      border-bottom: 0;\n    }\n  }\n\u003c\/style\u003e\n\u003cdiv class=\"product-trade-sheet\" id=\"pts-wire-brush-wheel-set-card\" data-box-size=\"24\" data-unit-price=\"71.41\" data-pieces-per-unit=\"20\"\u003e\n\u003cinput type=\"hidden\" class=\"pts-current-variant\" value=\"{{ product.selected_or_first_available_variant.id }}\"\u003e \u003c!-- =======================================================\n       PRODUCT OVERVIEW\n  ======================================================== --\u003e\n\u003cdiv class=\"pts-hero\"\u003e\n\u003cdiv class=\"pts-hero-copy\"\u003e\n\u003cspan class=\"pts-eyebrow\"\u003e 20-piece surface preparation accessory set \u003c\/span\u003e\n\u003ch2 class=\"pts-product-title\"\u003e20-Piece Assorted Wire Brush \u0026amp; Wheel Set\u003c\/h2\u003e\n\u003cp class=\"pts-intro\"\u003ePractical mixed wire-brush assortment supplied as one 20-piece set for general workshop cleaning, surface preparation and maintenance tasks. Each selling unit contains ten 3-inch brass wire cup brushes and ten 4-inch brass wire wheels, giving users two useful brush formats in one organised assortment. The mixed configuration is suitable for stocking within workshop, maintenance and general-purpose tool-accessory ranges.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-hero-aside\"\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Set contents \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e 20 \u003csmall\u003e Wire brush accessories \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Unit price \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e £71.41 \u003csmall\u003e Per 20-piece set \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Minimum order \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e 1 box \u003csmall\u003e 24 sets \/ 480 accessories \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e MOQ total \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e £1,713.84 \u003csmall\u003e 24 sets \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- =======================================================\n       PURCHASE\n  ========================================================= --\u003e\n\u003cdiv class=\"pts-purchase-panel\"\u003e\n\u003cdiv class=\"pts-purchase-card\"\u003e\n\u003cdiv class=\"pts-purchase-main\"\u003e\n\u003cdiv class=\"pts-purchase-quantity\"\u003e\n\u003cspan class=\"pts-purchase-label\"\u003e Boxes \u003c\/span\u003e\n\u003cdiv class=\"pts-quantity-selector\"\u003e\n\u003cbutton type=\"button\" class=\"pts-quantity-button pts-quantity-minus\" aria-label=\"Decrease box quantity\"\u003e−\u003c\/button\u003e \u003cinput type=\"number\" class=\"pts-quantity-input\" value=\"1\" min=\"1\" step=\"1\" inputmode=\"numeric\" aria-label=\"Box quantity\"\u003e \u003cbutton type=\"button\" class=\"pts-quantity-button pts-quantity-plus\" aria-label=\"Increase box quantity\"\u003e+\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cspan class=\"pts-minimum-note\"\u003e 1 box = \u003cstrong\u003e24 complete sets \/ 480 accessories\u003c\/strong\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-total\"\u003e\n\u003cspan class=\"pts-purchase-label\"\u003e Order total \u003c\/span\u003e \u003cspan class=\"pts-order-total-value\"\u003e £1,713.84 \u003c\/span\u003e \u003cspan class=\"pts-order-total-meta\"\u003e 1 box · 24 sets \/ 480 accessories × £71.41 \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-actions\"\u003e\n\u003cbutton type=\"button\" class=\"pts-buy-button pts-add-cart\"\u003e ADD BOX · 24 SETS \u003c\/button\u003e \u003cbutton type=\"button\" class=\"pts-buy-button pts-buy-now\"\u003e BUY NOW · £1,713.84 \u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-footer\"\u003e\n\u003cspan class=\"pts-purchase-footer-text\"\u003e Minimum order: \u003cstrong\u003e1 box = 24 sets \/ 480 accessories\u003c\/strong\u003e · £71.41 per set · £1,713.84 per box \u003c\/span\u003e \u003cspan class=\"pts-purchase-status\" aria-live=\"polite\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- =======================================================\n       SECTION INDEX\n  ========================================================= --\u003e\n\u003cdiv class=\"pts-section-index\"\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e01\u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Mixed brush formats \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e02\u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Set specification \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e03\u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Use \u0026amp; care \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e04\u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Wholesale supply \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- =======================================================\n       SECTIONS\n  ========================================================= --\u003e\n\u003cdiv class=\"pts-sections\"\u003e\n\u003c!-- SECTION 01 --\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails open\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e01\u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Mixed Wire Brush Formats \u0026amp; Workshop Use \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e\u003cspan class=\"pts-hammer\"\u003e\u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cdiv class=\"pts-copy\"\u003e\n\u003cp\u003eThis 20-piece assortment combines cup-brush and wheel-brush formats in one convenient selling unit. The mixed configuration gives users a practical choice of brush shapes for appropriate workshop cleaning, maintenance and surface-preparation tasks.\u003c\/p\u003e\n\u003cp\u003eEach set contains equal quantities of the two supplied formats: ten 3-inch brass wire cup brushes and ten 4-inch brass wire wheels. Keeping both formats together makes the assortment practical for workshop storage, trade counters and general tool-accessory ranges.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature-band\"\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Cup brushes \u003c\/span\u003e \u003cspan class=\"pts-feature-value\"\u003e 10 × 3-inch brass wire cup brushes \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Wire wheels \u003c\/span\u003e \u003cspan class=\"pts-feature-value\"\u003e 10 × 4-inch brass wire wheels \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Total contents \u003c\/span\u003e \u003cspan class=\"pts-feature-value\"\u003e 20 accessories per set \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c!-- SECTION 02 --\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e02\u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Set Specification \u0026amp; General Applications \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e\u003cspan class=\"pts-hammer\"\u003e\u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cul class=\"pts-spec-list\"\u003e\n\u003cli\u003e\n\u003cstrong\u003e Product type \u003c\/strong\u003e\u003cspan\u003e Assorted wire brush and wire wheel set. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Quantity per set \u003c\/strong\u003e\u003cspan\u003e 20 individual brush accessories. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Cup brush quantity \u003c\/strong\u003e\u003cspan\u003e 10 pieces. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Cup brush size \u003c\/strong\u003e\u003cspan\u003e 3 inches. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Wire wheel quantity \u003c\/strong\u003e\u003cspan\u003e 10 pieces. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Wire wheel size \u003c\/strong\u003e\u003cspan\u003e 4 inches. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Brush description \u003c\/strong\u003e\u003cspan\u003e Brass wire construction as stated for the supplied assortment. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e General use \u003c\/strong\u003e\u003cspan\u003e Appropriate workshop cleaning and surface-preparation applications. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Storage format \u003c\/strong\u003e\u003cspan\u003e Mixed accessories supplied together as one 20-piece assortment. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Equipment compatibility \u003c\/strong\u003e\u003cspan\u003e Use only with compatible equipment suitable for the individual brush fitting and operating requirements. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003ei\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Specification note: \u003c\/strong\u003e The source listing confirms 10 × 3-inch brass wire cup brushes and 10 × 4-inch brass wire wheels. Exact spindle or shank fitting, wire gauge, maximum RPM and detailed material specification are not confirmed, so unsupported technical figures are not included.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c!-- SECTION 03 --\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e03\u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Use, Handling \u0026amp; Product Care \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e\u003cspan class=\"pts-hammer\"\u003e\u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cul class=\"pts-spec-list\"\u003e\n\u003cli\u003e\n\u003cstrong\u003e Before use \u003c\/strong\u003e\u003cspan\u003e Inspect the selected brush for loose, bent, damaged or excessively worn wire. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Compatibility \u003c\/strong\u003e\u003cspan\u003e Confirm that the brush size and fitting are suitable for the equipment being used. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Workpiece \u003c\/strong\u003e\u003cspan\u003e Secure the workpiece and confirm that wire brushing is appropriate for the surface. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Operation \u003c\/strong\u003e\u003cspan\u003e Apply controlled contact and avoid excessive pressure during use. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Personal protection \u003c\/strong\u003e\u003cspan\u003e Use suitable eye, face and hand protection for the task and equipment. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Work area \u003c\/strong\u003e\u003cspan\u003e Keep bystanders clear of the operating area and possible wire or debris ejection. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Cleaning \u003c\/strong\u003e\u003cspan\u003e Remove loose debris from the accessory and surrounding equipment after use. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Storage \u003c\/strong\u003e\u003cspan\u003e Store unused accessories in a clean, dry location protected from impact and moisture. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003e!\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Safety note: \u003c\/strong\u003e Wire brushes can release wire fragments and debris during operation. Always use suitable protective equipment, follow the operating instructions for the compatible power tool and do not use a damaged or incorrectly fitted brush.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c!-- SECTION 04 --\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e04\u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Packaging \u0026amp; Wholesale Supply \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e\u003cspan class=\"pts-hammer\"\u003e\u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cdiv class=\"pts-copy\"\u003e\n\u003cp\u003eOne Shopify selling unit is one complete 20-piece assorted wire brush and wheel set. Each wholesale box contains 24 complete sets, equivalent to 480 individual brush accessories in total: 240 × 3-inch brass wire cup brushes and 240 × 4-inch brass wire wheels. Each set is priced at £71.41, giving a wholesale box value of £1,713.84.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-layout\"\u003e\n\u003cdiv class=\"pts-wholesale-data\"\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eProduct\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e20-piece assorted wire brush \u0026amp; wheel set\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eSet contents\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e10 × 3-inch cup brushes + 10 × 4-inch wire wheels\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003ePieces per set\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e20 accessories\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eApplication\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003eWorkshop cleaning \u0026amp; surface preparation\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eSet price\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e£71.41\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eBox quantity\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e24 complete sets\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eMinimum order\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e1 wholesale box\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eBox total\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e£1,713.84\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003caside class=\"pts-wholesale-summary\"\u003e\n\u003cdiv\u003e\n\u003cspan class=\"pts-summary-topline\"\u003e Wholesale box \u003c\/span\u003e\n\u003cdiv class=\"pts-summary-large\"\u003e£1,713.84\u003csmall\u003e 24 sets \/ 480 accessories \u003c\/small\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-summary-lines\"\u003e\n\u003cstrong\u003e £71.41 \u003c\/strong\u003e per complete set\u003cbr\u003e\u003cstrong\u003e 24 sets \u003c\/strong\u003e per box\u003cbr\u003e\u003cstrong\u003e 480 accessories \u003c\/strong\u003e total\u003cbr\u003e\u003cstrong class=\"pts-orange\"\u003e £1,713.84 \u003c\/strong\u003e per wholesale box\u003c\/div\u003e\n\u003c\/aside\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003ei\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Wholesale calculation: \u003c\/strong\u003e 1 box = 24 complete sets × £71.41 per set = £1,713.84. Each set contains 20 brush accessories, so one wholesale box contains 480 individual accessories.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function(){\n\n  function initProductCard(){\n\n    var card =\n      document.getElementById(\n        \"pts-wire-brush-wheel-set-card\"\n      );\n\n    if(\n      !card ||\n      card.dataset.ptsBound === \"true\"\n    ){\n      return;\n    }\n\n    card.dataset.ptsBound = \"true\";\n\n\n    var minus =\n      card.querySelector(\n        \".pts-quantity-minus\"\n      );\n\n    var plus =\n      card.querySelector(\n        \".pts-quantity-plus\"\n      );\n\n    var input =\n      card.querySelector(\n        \".pts-quantity-input\"\n      );\n\n    var addButton =\n      card.querySelector(\n        \".pts-add-cart\"\n      );\n\n    var buyButton =\n      card.querySelector(\n        \".pts-buy-now\"\n      );\n\n    var totalValue =\n      card.querySelector(\n        \".pts-order-total-value\"\n      );\n\n    var totalMeta =\n      card.querySelector(\n        \".pts-order-total-meta\"\n      );\n\n    var status =\n      card.querySelector(\n        \".pts-purchase-status\"\n      );\n\n    var variantField =\n      card.querySelector(\n        \".pts-current-variant\"\n      );\n\n\n    var boxSize =\n      parseInt(\n        card.dataset.boxSize || \"24\",\n        10\n      );\n\n    var unitPrice =\n      parseFloat(\n        card.dataset.unitPrice || \"71.41\"\n      );\n\n    var piecesPerUnit =\n      parseInt(\n        card.dataset.piecesPerUnit || \"20\",\n        10\n      );\n\n\n    function money(value){\n\n      return \"£\" +\n        Number(value).toLocaleString(\n          \"en-GB\",\n          {\n            minimumFractionDigits:2,\n            maximumFractionDigits:2\n          }\n        );\n\n    }\n\n\n    function getBoxes(){\n\n      var boxes =\n        parseInt(\n          input.value,\n          10\n        );\n\n      if(\n        isNaN(boxes) ||\n        boxes \u003c 1\n      ){\n        boxes = 1;\n      }\n\n      return boxes;\n\n    }\n\n\n    function setStatus(\n      message,\n      type\n    ){\n\n      if(!status){\n        return;\n      }\n\n      status.className =\n        \"pts-purchase-status\";\n\n      if(type){\n        status.classList.add(\n          \"is-\" + type\n        );\n      }\n\n      status.textContent =\n        message || \"\";\n\n    }\n\n\n    function refresh(){\n\n      var boxes =\n        getBoxes();\n\n      var sets =\n        boxes * boxSize;\n\n      var accessories =\n        sets * piecesPerUnit;\n\n      var total =\n        sets * unitPrice;\n\n\n      input.value =\n        boxes;\n\n      minus.disabled =\n        boxes \u003c= 1;\n\n\n      totalValue.textContent =\n        money(total);\n\n\n      totalMeta.textContent =\n        boxes +\n        (\n          boxes === 1\n            ? \" box\"\n            : \" boxes\"\n        ) +\n        \" · \" +\n        sets +\n        \" sets \/ \" +\n        accessories +\n        \" accessories × \" +\n        money(unitPrice);\n\n\n      addButton.textContent =\n        boxes === 1\n          ? \"ADD BOX · \" +\n            sets +\n            \" SETS\"\n          : \"ADD \" +\n            boxes +\n            \" BOXES · \" +\n            sets +\n            \" SETS\";\n\n\n      buyButton.textContent =\n        \"BUY NOW · \" +\n        money(total);\n\n    }\n\n\n    function isValidVariantId(value){\n\n      if(\n        value === undefined ||\n        value === null\n      ){\n        return false;\n      }\n\n      var clean =\n        String(value).trim();\n\n      if(\n        !\/^\\d+$\/.test(clean)\n      ){\n        return false;\n      }\n\n      var number =\n        Number(clean);\n\n      return(\n        Number.isFinite(number) \u0026\u0026\n        number \u003e 0\n      );\n\n    }\n\n\n    function readVariantFromField(field){\n\n      if(!field){\n        return null;\n      }\n\n      if(\n        isValidVariantId(\n          field.value\n        )\n      ){\n        return Number(\n          field.value\n        );\n      }\n\n      return null;\n\n    }\n\n\n    async function getVariantId(){\n\n      var directId =\n        readVariantFromField(\n          variantField\n        );\n\n      if(directId){\n        return directId;\n      }\n\n\n      var urlVariant =\n        new URLSearchParams(\n          window.location.search\n        ).get(\"variant\");\n\n      if(\n        isValidVariantId(\n          urlVariant\n        )\n      ){\n        return Number(\n          urlVariant\n        );\n      }\n\n\n      var section =\n        card.closest(\n          \".shopify-section\"\n        );\n\n      if(section){\n\n        var sectionFields =\n          section.querySelectorAll(\n            'form[action*=\"\/cart\/add\"] [name=\"id\"], ' +\n            'product-form [name=\"id\"], ' +\n            'input[name=\"id\"], select[name=\"id\"]'\n          );\n\n        for(\n          var i = 0;\n          i \u003c sectionFields.length;\n          i++\n        ){\n\n          var sectionId =\n            readVariantFromField(\n              sectionFields[i]\n            );\n\n          if(sectionId){\n            return sectionId;\n          }\n\n        }\n\n      }\n\n\n      var globalFields =\n        document.querySelectorAll(\n          'form[action*=\"\/cart\/add\"] [name=\"id\"], ' +\n          'product-form [name=\"id\"], ' +\n          'input[name=\"id\"], select[name=\"id\"]'\n        );\n\n      for(\n        var j = 0;\n        j \u003c globalFields.length;\n        j++\n      ){\n\n        var globalId =\n          readVariantFromField(\n            globalFields[j]\n          );\n\n        if(globalId){\n          return globalId;\n        }\n\n      }\n\n\n      try{\n\n        if(\n          window.ShopifyAnalytics \u0026\u0026\n          ShopifyAnalytics.meta \u0026\u0026\n          isValidVariantId(\n            ShopifyAnalytics.meta.selectedVariantId\n          )\n        ){\n\n          return Number(\n            ShopifyAnalytics.meta.selectedVariantId\n          );\n\n        }\n\n      }catch(error){}\n\n\n      try{\n\n        if(\n          window.meta \u0026\u0026\n          meta.product \u0026\u0026\n          meta.product.variants \u0026\u0026\n          meta.product.variants.length\n        ){\n\n          for(\n            var m = 0;\n            m \u003c meta.product.variants.length;\n            m++\n          ){\n\n            if(\n              isValidVariantId(\n                meta.product.variants[m].id\n              )\n            ){\n\n              return Number(\n                meta.product.variants[m].id\n              );\n\n            }\n\n          }\n\n        }\n\n      }catch(error){}\n\n\n      try{\n\n        var productPath =\n          window.location.pathname;\n\n\n        var canonical =\n          document.querySelector(\n            'link[rel=\"canonical\"]'\n          );\n\n\n        if(\n          canonical \u0026\u0026\n          canonical.href\n        ){\n\n          try{\n\n            productPath =\n              new URL(\n                canonical.href,\n                window.location.origin\n              ).pathname;\n\n          }catch(error){}\n\n        }\n\n\n        productPath =\n          productPath.replace(\n            \/\\\/$\/,\n            \"\"\n          );\n\n\n        if(\n          productPath.indexOf(\n            \"\/products\/\"\n          ) !== -1\n        ){\n\n          var productResponse =\n            await fetch(\n              productPath + \".js\",\n              {\n                method:\"GET\",\n\n                headers:{\n                  \"Accept\":\n                    \"application\/json\"\n                },\n\n                credentials:\n                  \"same-origin\"\n              }\n            );\n\n\n          if(productResponse.ok){\n\n            var productData =\n              await productResponse.json();\n\n\n            if(\n              productData \u0026\u0026\n              productData.variants \u0026\u0026\n              productData.variants.length\n            ){\n\n              for(\n                var p = 0;\n                p \u003c productData.variants.length;\n                p++\n              ){\n\n                if(\n                  productData.variants[p].available \u0026\u0026\n                  isValidVariantId(\n                    productData.variants[p].id\n                  )\n                ){\n\n                  return Number(\n                    productData.variants[p].id\n                  );\n\n                }\n\n              }\n\n\n              if(\n                isValidVariantId(\n                  productData.variants[0].id\n                )\n              ){\n\n                return Number(\n                  productData.variants[0].id\n                );\n\n              }\n\n            }\n\n          }\n\n        }\n\n      }catch(error){\n\n        console.error(\n          \"PTS product JSON variant lookup failed:\",\n          error\n        );\n\n      }\n\n\n      return null;\n\n    }\n\n\n    async function addToCart(\n      goToCheckout\n    ){\n\n      setStatus(\n        \"Detecting product variant...\"\n      );\n\n\n      var variantId =\n        await getVariantId();\n\n\n      if(!variantId){\n\n        setStatus(\n          \"Unable to detect the Shopify product variant.\",\n          \"error\"\n        );\n\n        return;\n\n      }\n\n\n      var boxes =\n        getBoxes();\n\n      \/*\n        1 Shopify selling unit =\n        1 complete 20-piece wire brush \u0026 wheel set.\n\n        1 wholesale box =\n        24 Shopify selling units.\n\n        Internal accessory count is display-only:\n        24 sets × 20 accessories = 480 accessories.\n      *\/\n\n      var sets =\n        boxes * boxSize;\n\n\n      addButton.disabled =\n        true;\n\n      buyButton.disabled =\n        true;\n\n\n      setStatus(\n        \"Adding \" +\n        sets +\n        \" wire brush sets to cart...\"\n      );\n\n\n      try{\n\n        var root =\n          window.Shopify \u0026\u0026\n          Shopify.routes \u0026\u0026\n          Shopify.routes.root\n            ? Shopify.routes.root\n            : \"\/\";\n\n\n        var response =\n          await fetch(\n            root + \"cart\/add.js\",\n            {\n              method:\"POST\",\n\n              headers:{\n                \"Content-Type\":\n                  \"application\/json\",\n\n                \"Accept\":\n                  \"application\/json\"\n              },\n\n              body:\n                JSON.stringify({\n                  items:[\n                    {\n                      id:\n                        Number(\n                          variantId\n                        ),\n\n                      quantity:\n                        sets\n                    }\n                  ]\n                })\n            }\n          );\n\n\n        var result =\n          await response.json();\n\n\n        if(!response.ok){\n\n          throw new Error(\n            result.description ||\n            result.message ||\n            \"Unable to add the product.\"\n          );\n\n        }\n\n\n        setStatus(\n          sets +\n          \" wire brush sets added successfully.\",\n          \"success\"\n        );\n\n\n        document.dispatchEvent(\n          new CustomEvent(\n            \"cart:refresh\",\n            {\n              bubbles:true,\n              detail:result\n            }\n          )\n        );\n\n\n        document.dispatchEvent(\n          new CustomEvent(\n            \"cart:updated\",\n            {\n              bubbles:true,\n              detail:result\n            }\n          )\n        );\n\n\n        window.location.href =\n          goToCheckout\n            ? root + \"checkout\"\n            : root + \"cart\";\n\n\n      }catch(error){\n\n        console.error(\n          \"PTS cart error:\",\n          error\n        );\n\n\n        setStatus(\n          error \u0026\u0026\n          error.message\n            ? error.message\n            : \"Unable to add the product.\",\n          \"error\"\n        );\n\n\n      }finally{\n\n        addButton.disabled =\n          false;\n\n        buyButton.disabled =\n          false;\n\n      }\n\n    }\n\n\n    minus.addEventListener(\n      \"click\",\n      function(){\n\n        input.value =\n          Math.max(\n            1,\n            getBoxes() - 1\n          );\n\n        refresh();\n\n      }\n    );\n\n\n    plus.addEventListener(\n      \"click\",\n      function(){\n\n        input.value =\n          getBoxes() + 1;\n\n        refresh();\n\n      }\n    );\n\n\n    input.addEventListener(\n      \"input\",\n      function(){\n\n        if(\n          input.value === \"\"\n        ){\n          return;\n        }\n\n        refresh();\n\n      }\n    );\n\n\n    input.addEventListener(\n      \"change\",\n      refresh\n    );\n\n\n    input.addEventListener(\n      \"blur\",\n      refresh\n    );\n\n\n    addButton.addEventListener(\n      \"click\",\n      function(){\n\n        addToCart(false);\n\n      }\n    );\n\n\n    buyButton.addEventListener(\n      \"click\",\n      function(){\n\n        addToCart(true);\n\n      }\n    );\n\n\n    refresh();\n\n  }\n\n\n  if(\n    document.readyState ===\n    \"loading\"\n  ){\n\n    document.addEventListener(\n      \"DOMContentLoaded\",\n      initProductCard\n    );\n\n  }else{\n\n    initProductCard();\n\n  }\n\n\n  document.addEventListener(\n    \"shopify:section:load\",\n    initProductCard\n  );\n\n})();\n\u003c\/script\u003e\n","brand":"My Store","offers":[{"title":"Default Title","offer_id":56824289263956,"sku":null,"price":71.41,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1063\/3117\/7300\/files\/987656789.png?v=1786982003"},{"product_id":"4-100mm-wall-brush-wooden-handle","title":"4″ \/ 100mm Wall Brush – Wooden Handle","description":"\u003cstyle\u003e\n.product-trade-sheet{\n  --pts-bg:#fff;\n  --pts-surface:#fff;\n  --pts-soft:#f6f6f4;\n  --pts-text:#111;\n  --pts-muted:#5a5a5a;\n  --pts-accent:#f26522;\n  --pts-accent-dark:#d95316;\n  --pts-accent-soft:#fff2e8;\n  --pts-line:#dfdfdb;\n\n  width:100%;\n  max-width:100%;\n  color:var(--pts-text);\n  background:var(--pts-bg);\n  font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Arial,sans-serif;\n  font-size:14px;\n  line-height:1.7;\n  container-type:inline-size;\n}\n\n.product-trade-sheet *,\n.product-trade-sheet *::before,\n.product-trade-sheet *::after{\n  box-sizing:border-box;\n}\n\n.product-trade-sheet h2,\n.product-trade-sheet p{\n  margin:0;\n}\n\n.product-trade-sheet button,\n.product-trade-sheet input{\n  font:inherit;\n}\n\n\n\/* =========================\n   HERO\n========================= *\/\n\n.pts-hero{\n  width:100%;\n  border-top:4px solid var(--pts-accent);\n  border-bottom:1px solid var(--pts-line);\n  background:var(--pts-surface);\n}\n\n.pts-hero-copy{\n  width:100%;\n  padding:clamp(30px,5cqw,58px);\n}\n\n.pts-eyebrow{\n  display:inline-flex;\n  align-items:center;\n  gap:10px;\n  margin-bottom:18px;\n  color:var(--pts-accent);\n  font-size:9px;\n  font-weight:800;\n  line-height:1;\n  letter-spacing:.16em;\n  text-transform:uppercase;\n}\n\n.pts-eyebrow::before{\n  content:\"\";\n  width:34px;\n  height:2px;\n  background:var(--pts-accent);\n}\n\n.pts-product-title{\n  width:100%;\n  max-width:980px;\n  margin:0 0 24px!important;\n  color:var(--pts-text);\n  font-size:clamp(30px,5.2cqw,48px);\n  font-weight:800;\n  line-height:1.07;\n  letter-spacing:-.045em;\n}\n\n.pts-intro{\n  width:100%;\n  max-width:980px;\n  color:var(--pts-muted);\n  font-size:clamp(15px,2cqw,18px);\n  line-height:1.85;\n}\n\n\n\/* =========================\n   STATS\n========================= *\/\n\n.pts-hero-aside{\n  display:grid;\n  grid-template-columns:repeat(4,minmax(0,1fr));\n  width:100%;\n  border-top:1px solid var(--pts-line);\n  background:var(--pts-accent-soft);\n}\n\n.pts-stat{\n  position:relative;\n  min-width:0;\n  min-height:126px;\n  padding:20px;\n  display:flex;\n  flex-direction:column;\n  justify-content:space-between;\n  border-right:1px solid var(--pts-line);\n  background:var(--pts-accent-soft);\n  overflow:hidden;\n  transition:\n    background-color .25s ease,\n    padding-left .25s ease;\n}\n\n.pts-stat:last-child{\n  border-right:0;\n}\n\n.pts-stat::after{\n  content:\"\";\n  position:absolute;\n  left:0;\n  bottom:0;\n  width:0;\n  height:3px;\n  background:var(--pts-accent);\n  transition:width .3s ease;\n}\n\n.pts-stat:hover{\n  padding-left:24px;\n  background:#fff;\n}\n\n.pts-stat:hover::after{\n  width:100%;\n}\n\n.pts-stat-label{\n  display:block;\n  color:var(--pts-muted);\n  font-size:9px;\n  font-weight:800;\n  line-height:1.4;\n  letter-spacing:.14em;\n  text-transform:uppercase;\n}\n\n.pts-stat-value{\n  display:block;\n  margin-top:22px;\n  color:var(--pts-text);\n  font-size:clamp(22px,4cqw,32px);\n  font-weight:780;\n  line-height:1;\n  letter-spacing:-.035em;\n}\n\n.pts-stat-value small{\n  display:block;\n  margin-top:8px;\n  color:var(--pts-muted);\n  font-size:11px;\n  font-weight:600;\n  line-height:1.4;\n  letter-spacing:0;\n}\n\n\n\/* =========================\n   PURCHASE\n========================= *\/\n\n.pts-purchase-panel{\n  width:100%;\n  padding:20px;\n  border-bottom:1px solid var(--pts-line);\n  background:var(--pts-soft);\n}\n\n.pts-purchase-card{\n  width:100%;\n  border:1px solid var(--pts-line);\n  background:#fff;\n}\n\n.pts-purchase-main{\n  display:grid;\n  grid-template-columns:\n    minmax(220px,.9fr)\n    minmax(190px,.75fr)\n    minmax(280px,1.2fr);\n  width:100%;\n}\n\n.pts-purchase-quantity{\n  min-width:0;\n  display:flex;\n  flex-direction:column;\n  justify-content:center;\n  padding:22px;\n  border-right:1px solid var(--pts-line);\n  background:#fff;\n}\n\n.pts-purchase-label{\n  display:block;\n  margin-bottom:12px;\n  color:var(--pts-muted);\n  font-size:9px;\n  font-weight:800;\n  line-height:1.4;\n  letter-spacing:.13em;\n  text-transform:uppercase;\n}\n\n.pts-quantity-selector{\n  display:grid;\n  grid-template-columns:50px 88px 50px;\n  width:max-content;\n  height:52px;\n  border:1px solid var(--pts-line);\n  background:#fff;\n}\n\n.pts-quantity-button{\n  appearance:none;\n  -webkit-appearance:none;\n  width:50px;\n  height:50px;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  margin:0;\n  padding:0;\n  border:0;\n  border-radius:0;\n  background:#fff;\n  color:#111;\n  cursor:pointer;\n  font-size:22px;\n  font-weight:500;\n  line-height:1;\n  user-select:none;\n  transition:\n    background-color .2s ease,\n    color .2s ease,\n    transform .15s ease;\n}\n\n.pts-quantity-button:hover:not(:disabled){\n  background:var(--pts-accent);\n  color:#fff;\n}\n\n.pts-quantity-button:active:not(:disabled){\n  background:var(--pts-accent-dark);\n  transform:scale(.96);\n}\n\n.pts-quantity-button:disabled{\n  cursor:not-allowed;\n  background:var(--pts-soft);\n  color:#b9b9b5;\n}\n\n.pts-quantity-input{\n  appearance:textfield;\n  -moz-appearance:textfield;\n  width:88px;\n  height:50px;\n  margin:0;\n  padding:0 5px;\n  border-top:0;\n  border-bottom:0;\n  border-left:1px solid var(--pts-line);\n  border-right:1px solid var(--pts-line);\n  border-radius:0;\n  outline:none;\n  background:#fff;\n  color:var(--pts-text);\n  text-align:center;\n  font-size:17px;\n  font-weight:800;\n  line-height:50px;\n  transition:background-color .2s ease;\n}\n\n.pts-quantity-input:focus{\n  background:var(--pts-accent-soft);\n}\n\n.pts-quantity-input::-webkit-inner-spin-button,\n.pts-quantity-input::-webkit-outer-spin-button{\n  margin:0;\n  -webkit-appearance:none;\n}\n\n.pts-minimum-note{\n  display:block;\n  margin-top:10px;\n  color:var(--pts-muted);\n  font-size:10px;\n  line-height:1.45;\n}\n\n.pts-minimum-note strong{\n  color:var(--pts-text);\n}\n\n\n\/* =========================\n   TOTAL\n========================= *\/\n\n.pts-purchase-total{\n  min-width:0;\n  display:flex;\n  flex-direction:column;\n  justify-content:center;\n  padding:22px;\n  border-right:1px solid var(--pts-line);\n  background:var(--pts-accent-soft);\n}\n\n.pts-order-total-value{\n  display:block;\n  color:var(--pts-text);\n  font-size:clamp(28px,4.4cqw,38px);\n  font-weight:800;\n  line-height:1;\n  letter-spacing:-.04em;\n}\n\n.pts-order-total-meta{\n  display:block;\n  margin-top:9px;\n  color:var(--pts-muted);\n  font-size:11px;\n  line-height:1.5;\n}\n\n\n\/* =========================\n   BUTTONS\n========================= *\/\n\n.pts-purchase-actions{\n  min-width:0;\n  display:flex;\n  flex-direction:column;\n  justify-content:center;\n  gap:14px;\n  padding:14px;\n  background:#fff;\n}\n\n.pts-buy-button{\n  appearance:none;\n  -webkit-appearance:none;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  width:100%;\n  min-height:54px;\n  margin:0;\n  padding:14px 18px;\n  border-radius:0;\n  cursor:pointer;\n  font-size:12px;\n  font-weight:800;\n  line-height:1.35;\n  letter-spacing:.055em;\n  text-align:center;\n  text-transform:uppercase;\n  transition:\n    background-color .2s ease,\n    color .2s ease,\n    border-color .2s ease,\n    transform .12s ease;\n}\n\n.pts-add-cart{\n  border:1px solid #111;\n  background:#111;\n  color:#fff;\n}\n\n.pts-add-cart:hover{\n  background:#292929;\n  border-color:#292929;\n}\n\n.pts-add-cart:active{\n  transform:translateY(1px);\n  background:#000;\n  border-color:#000;\n}\n\n.pts-buy-now{\n  border:1px solid var(--pts-accent);\n  background:var(--pts-accent);\n  color:#fff;\n}\n\n.pts-buy-now:hover{\n  background:var(--pts-accent-dark);\n  border-color:var(--pts-accent-dark);\n}\n\n.pts-buy-now:active{\n  transform:translateY(1px);\n}\n\n.pts-buy-button:disabled{\n  cursor:wait;\n  opacity:.6;\n}\n\n\n\/* =========================\n   FOOTER STATUS\n========================= *\/\n\n.pts-purchase-footer{\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap:18px;\n  min-height:46px;\n  padding:10px 18px;\n  border-top:1px solid var(--pts-line);\n  background:#fff;\n}\n\n.pts-purchase-footer-text{\n  color:var(--pts-muted);\n  font-size:10px;\n  line-height:1.5;\n}\n\n.pts-purchase-footer-text strong{\n  color:var(--pts-text);\n}\n\n.pts-purchase-status{\n  min-height:15px;\n  color:var(--pts-muted);\n  font-size:10px;\n  line-height:1.5;\n  text-align:right;\n}\n\n.pts-purchase-status.is-error{\n  color:#b42318;\n}\n\n.pts-purchase-status.is-success{\n  color:#111;\n}\n\n\n\/* =========================\n   INDEX\n========================= *\/\n\n.pts-section-index{\n  display:grid;\n  grid-template-columns:repeat(4,minmax(0,1fr));\n  width:100%;\n  border-bottom:1px solid var(--pts-line);\n  background:var(--pts-soft);\n}\n\n.pts-index-item{\n  min-width:0;\n  padding:16px 18px;\n  border-right:1px solid var(--pts-line);\n  transition:\n    background-color .25s ease,\n    padding-left .25s ease;\n}\n\n.pts-index-item:last-child{\n  border-right:0;\n}\n\n.pts-index-item:hover{\n  padding-left:23px;\n  background:var(--pts-accent-soft);\n}\n\n.pts-index-number{\n  display:block;\n  margin-bottom:6px;\n  color:var(--pts-accent);\n  font-size:9px;\n  font-weight:850;\n  line-height:1;\n  letter-spacing:.12em;\n}\n\n.pts-index-label{\n  display:block;\n  color:var(--pts-text);\n  font-size:11px;\n  font-weight:700;\n  line-height:1.4;\n}\n\n\n\/* =========================\n   ACCORDION\n========================= *\/\n\n.pts-sections{\n  width:100%;\n  background:var(--pts-bg);\n}\n\n.pts-section{\n  width:100%;\n  border-bottom:1px solid var(--pts-line);\n}\n\n.pts-section details{\n  display:block;\n  width:100%;\n}\n\n.pts-section summary{\n  display:grid;\n  grid-template-columns:82px minmax(0,1fr) 64px;\n  align-items:stretch;\n  width:100%;\n  min-height:86px;\n  padding:0;\n  background:var(--pts-surface);\n  cursor:pointer;\n  list-style:none;\n  user-select:none;\n  transition:background-color .25s ease;\n}\n\n.pts-section summary::-webkit-details-marker{\n  display:none;\n}\n\n.pts-section summary::marker{\n  content:\"\";\n}\n\n.pts-section summary:hover,\n.pts-section details[open]\u003esummary{\n  background:var(--pts-soft);\n}\n\n.pts-section-no{\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  border-right:1px solid var(--pts-line);\n  color:var(--pts-accent);\n  font-size:11px;\n  font-weight:850;\n  line-height:1;\n  letter-spacing:.12em;\n  transition:\n    background-color .3s ease,\n    color .3s ease;\n}\n\n.pts-section details[open] .pts-section-no{\n  background:var(--pts-accent);\n  color:#fff;\n}\n\n.pts-section-title{\n  min-width:0;\n  display:flex;\n  align-items:center;\n  padding:18px 24px;\n  color:var(--pts-text);\n  font-size:clamp(14px,2.1cqw,18px);\n  font-weight:750;\n  line-height:1.4;\n}\n\n\n\/* =========================\n   HAMMER\n========================= *\/\n\n.pts-section-toggle{\n  position:relative;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  min-width:64px;\n  border-left:1px solid var(--pts-line);\n  background:var(--pts-surface);\n  overflow:hidden;\n  transition:background-color .25s ease;\n}\n\n.pts-section summary:hover .pts-section-toggle,\n.pts-section details[open] .pts-section-toggle{\n  background:var(--pts-accent-soft);\n}\n\n.pts-hammer{\n  position:relative;\n  display:block;\n  width:26px;\n  height:34px;\n  transform:rotate(0deg);\n  transform-origin:50% 50%;\n  transition:transform .35s cubic-bezier(.4,0,.2,1);\n}\n\n.pts-hammer::before{\n  content:\"\";\n  position:absolute;\n  left:50%;\n  top:11px;\n  width:5px;\n  height:23px;\n  background:var(--pts-accent);\n  transform:translateX(-50%);\n}\n\n.pts-hammer::after{\n  content:\"\";\n  position:absolute;\n  top:4px;\n  left:50%;\n  width:24px;\n  height:9px;\n  background:var(--pts-accent);\n  transform:translateX(-50%);\n}\n\n.pts-hammer-neck{\n  position:absolute;\n  top:9px;\n  left:50%;\n  width:9px;\n  height:8px;\n  background:var(--pts-accent);\n  transform:translateX(-50%);\n}\n\n.pts-section details[open] .pts-hammer{\n  transform:rotate(90deg);\n}\n\n.pts-section summary:hover .pts-hammer{\n  transform:rotate(-7deg);\n}\n\n.pts-section details[open] summary:hover .pts-hammer{\n  transform:rotate(97deg);\n}\n\n\n\/* =========================\n   BODY\n========================= *\/\n\n.pts-section-body{\n  display:grid;\n  grid-template-columns:82px minmax(0,1fr);\n  width:100%;\n  background:var(--pts-bg);\n}\n\n.pts-body-rail{\n  border-right:1px solid var(--pts-line);\n  background:\n    repeating-linear-gradient(\n      to bottom,\n      transparent 0,\n      transparent 17px,\n      rgba(242,101,34,.07) 17px,\n      rgba(242,101,34,.07) 18px\n    );\n}\n\n.pts-body-content{\n  min-width:0;\n  padding:clamp(22px,4cqw,42px);\n  color:var(--pts-muted);\n}\n\n.pts-copy{\n  width:100%;\n  max-width:950px;\n}\n\n.pts-copy p{\n  margin-bottom:18px;\n}\n\n.pts-copy p:last-child{\n  margin-bottom:0;\n}\n\n\n\/* =========================\n   FEATURES\n========================= *\/\n\n.pts-feature-band{\n  display:grid;\n  grid-template-columns:repeat(3,minmax(0,1fr));\n  width:100%;\n  margin-top:28px;\n  border-top:1px solid var(--pts-line);\n  border-bottom:1px solid var(--pts-line);\n  background:var(--pts-surface);\n}\n\n.pts-feature{\n  position:relative;\n  min-width:0;\n  min-height:100px;\n  padding:18px;\n  border-right:1px solid var(--pts-line);\n  display:flex;\n  flex-direction:column;\n  justify-content:space-between;\n  background:var(--pts-surface);\n  overflow:hidden;\n  transition:\n    background-color .25s ease,\n    padding-left .25s ease;\n}\n\n.pts-feature:last-child{\n  border-right:0;\n}\n\n.pts-feature::before{\n  content:\"\";\n  position:absolute;\n  top:0;\n  left:0;\n  width:3px;\n  height:0;\n  background:var(--pts-accent);\n  transition:height .3s ease;\n}\n\n.pts-feature:hover{\n  padding-left:23px;\n  background:var(--pts-accent-soft);\n}\n\n.pts-feature:hover::before{\n  height:100%;\n}\n\n.pts-feature-label{\n  color:var(--pts-muted);\n  font-size:9px;\n  font-weight:800;\n  line-height:1.4;\n  letter-spacing:.12em;\n  text-transform:uppercase;\n}\n\n.pts-feature-value{\n  margin-top:17px;\n  color:var(--pts-text);\n  font-size:13px;\n  font-weight:750;\n  line-height:1.45;\n}\n\n\n\/* =========================\n   SPECS\n========================= *\/\n\n.pts-spec-list{\n  display:grid;\n  grid-template-columns:repeat(2,minmax(0,1fr));\n  width:100%;\n  margin:0;\n  padding:0;\n  border-top:1px solid var(--pts-line);\n  list-style:none;\n}\n\n.pts-spec-list li{\n  position:relative;\n  min-width:0;\n  min-height:84px;\n  padding:17px 20px;\n  border-right:1px solid var(--pts-line);\n  border-bottom:1px solid var(--pts-line);\n  background:var(--pts-surface);\n  overflow:hidden;\n  transition:\n    background-color .22s ease,\n    padding-left .22s ease;\n}\n\n.pts-spec-list li:nth-child(2n){\n  border-right:0;\n}\n\n.pts-spec-list li::before{\n  content:\"\";\n  position:absolute;\n  left:0;\n  top:0;\n  width:3px;\n  height:0;\n  background:var(--pts-accent);\n  transition:height .25s ease;\n}\n\n.pts-spec-list li:hover{\n  padding-left:25px;\n  background:var(--pts-soft);\n}\n\n.pts-spec-list li:hover::before{\n  height:100%;\n}\n\n.pts-spec-list strong{\n  display:block;\n  margin-bottom:6px;\n  color:var(--pts-text);\n  font-size:9px;\n  font-weight:800;\n  line-height:1.4;\n  letter-spacing:.1em;\n  text-transform:uppercase;\n}\n\n.pts-spec-list span{\n  display:block;\n  color:var(--pts-muted);\n  font-size:13px;\n  line-height:1.55;\n}\n\n\n\/* =========================\n   NOTE\n========================= *\/\n\n.pts-note{\n  display:grid;\n  grid-template-columns:46px minmax(0,1fr);\n  width:100%;\n  margin-top:20px;\n  border-top:1px solid var(--pts-line);\n  border-bottom:1px solid var(--pts-line);\n  background:var(--pts-accent-soft);\n}\n\n.pts-note-icon{\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  border-right:1px solid var(--pts-line);\n  color:var(--pts-accent);\n  font-family:Georgia,serif;\n  font-size:15px;\n  font-weight:700;\n}\n\n.pts-note-copy{\n  min-width:0;\n  padding:14px 16px;\n  color:var(--pts-muted);\n  font-size:12px;\n  line-height:1.7;\n}\n\n.pts-note-copy strong{\n  color:var(--pts-text);\n}\n\n\n\/* =========================\n   WHOLESALE\n========================= *\/\n\n.pts-wholesale-layout{\n  display:grid;\n  grid-template-columns:minmax(0,1.3fr) minmax(230px,.7fr);\n  width:100%;\n  margin-top:28px;\n  border-top:1px solid var(--pts-line);\n  border-bottom:1px solid var(--pts-line);\n}\n\n.pts-wholesale-data{\n  min-width:0;\n  background:var(--pts-surface);\n}\n\n.pts-wholesale-row{\n  display:grid;\n  grid-template-columns:minmax(120px,38%) minmax(0,1fr);\n  min-height:54px;\n  border-bottom:1px solid var(--pts-line);\n}\n\n.pts-wholesale-row:last-child{\n  border-bottom:0;\n}\n\n.pts-wholesale-key{\n  display:flex;\n  align-items:center;\n  padding:11px 15px;\n  border-right:1px solid var(--pts-line);\n  background:var(--pts-soft);\n  color:var(--pts-muted);\n  font-size:9px;\n  font-weight:800;\n  line-height:1.4;\n  letter-spacing:.1em;\n  text-transform:uppercase;\n}\n\n.pts-wholesale-value{\n  min-width:0;\n  display:flex;\n  align-items:center;\n  padding:11px 16px;\n  background:var(--pts-surface);\n  color:var(--pts-text);\n  font-size:13px;\n  font-weight:700;\n  line-height:1.5;\n  transition:\n    background-color .22s ease,\n    padding-left .22s ease;\n}\n\n.pts-wholesale-row:hover .pts-wholesale-value{\n  padding-left:21px;\n  background:var(--pts-accent-soft);\n}\n\n.pts-wholesale-summary{\n  min-width:0;\n  display:flex;\n  flex-direction:column;\n  justify-content:space-between;\n  padding:28px;\n  background:#111;\n  color:#fff;\n}\n\n.pts-summary-topline{\n  color:rgba(255,255,255,.64);\n  font-size:9px;\n  font-weight:800;\n  line-height:1.4;\n  letter-spacing:.14em;\n  text-transform:uppercase;\n}\n\n.pts-summary-large{\n  margin:30px 0;\n  color:#fff;\n  font-size:clamp(34px,7cqw,54px);\n  font-weight:760;\n  line-height:.95;\n  letter-spacing:-.05em;\n}\n\n.pts-summary-large::after{\n  content:\"\";\n  display:block;\n  width:42px;\n  height:3px;\n  margin-top:18px;\n  background:var(--pts-accent);\n}\n\n.pts-summary-large small{\n  display:block;\n  margin-top:11px;\n  color:rgba(255,255,255,.7);\n  font-size:11px;\n  font-weight:600;\n  line-height:1.4;\n}\n\n.pts-summary-lines{\n  color:rgba(255,255,255,.8);\n  font-size:12px;\n  line-height:1.85;\n}\n\n.pts-summary-lines strong{\n  color:#fff;\n}\n\n.pts-orange{\n  color:var(--pts-accent)!important;\n}\n\n\n\/* =========================\n   TABLET\n========================= *\/\n\n@container (max-width:760px){\n\n  .pts-hero-copy{\n    padding:30px 24px;\n  }\n\n  .pts-product-title{\n    font-size:34px;\n  }\n\n  .pts-intro{\n    font-size:15px;\n  }\n\n  .pts-hero-aside{\n    grid-template-columns:repeat(2,minmax(0,1fr));\n  }\n\n  .pts-stat{\n    border-bottom:1px solid var(--pts-line);\n  }\n\n  .pts-stat:nth-child(2){\n    border-right:0;\n  }\n\n  .pts-stat:nth-child(3),\n  .pts-stat:nth-child(4){\n    border-bottom:0;\n  }\n\n  .pts-purchase-main{\n    grid-template-columns:1fr 1fr;\n  }\n\n  .pts-purchase-total{\n    border-right:0;\n  }\n\n  .pts-purchase-actions{\n    grid-column:1\/-1;\n    display:grid;\n    grid-template-columns:1fr 1fr;\n    gap:14px;\n    border-top:1px solid var(--pts-line);\n  }\n\n  .pts-section-index{\n    grid-template-columns:repeat(2,minmax(0,1fr));\n  }\n\n  .pts-index-item:nth-child(2){\n    border-right:0;\n  }\n\n  .pts-index-item:nth-child(-n+2){\n    border-bottom:1px solid var(--pts-line);\n  }\n\n  .pts-feature-band{\n    grid-template-columns:1fr;\n  }\n\n  .pts-feature{\n    min-height:auto;\n    border-right:0;\n    border-bottom:1px solid var(--pts-line);\n  }\n\n  .pts-feature:last-child{\n    border-bottom:0;\n  }\n\n  .pts-wholesale-layout{\n    grid-template-columns:1fr;\n  }\n}\n\n\n\/* =========================\n   MOBILE\n========================= *\/\n\n@container (max-width:540px){\n\n  .pts-hero-copy{\n    padding:26px 18px;\n  }\n\n  .pts-product-title{\n    margin-bottom:18px!important;\n    font-size:29px;\n    line-height:1.1;\n  }\n\n  .pts-eyebrow{\n    margin-bottom:16px;\n  }\n\n  .pts-intro{\n    font-size:14px;\n    line-height:1.8;\n  }\n\n  .pts-stat{\n    min-height:108px;\n    padding:16px;\n  }\n\n  .pts-stat-value{\n    margin-top:17px;\n    font-size:22px;\n  }\n\n  .pts-purchase-panel{\n    padding:12px;\n  }\n\n  .pts-purchase-main{\n    grid-template-columns:1fr;\n  }\n\n  .pts-purchase-quantity,\n  .pts-purchase-total{\n    border-right:0;\n    border-bottom:1px solid var(--pts-line);\n  }\n\n  .pts-purchase-actions{\n    grid-column:auto;\n    display:flex;\n    flex-direction:column;\n    gap:10px;\n    border-top:0;\n  }\n\n  .pts-purchase-footer{\n    align-items:flex-start;\n    flex-direction:column;\n    gap:4px;\n  }\n\n  .pts-purchase-status{\n    text-align:left;\n  }\n\n  .pts-section-index{\n    display:none;\n  }\n\n  .pts-section summary{\n    grid-template-columns:52px minmax(0,1fr) 50px;\n    min-height:72px;\n  }\n\n  .pts-section-no{\n    font-size:9px;\n  }\n\n  .pts-section-title{\n    padding:13px 14px;\n    font-size:13px;\n  }\n\n  .pts-section-toggle{\n    min-width:50px;\n  }\n\n  .pts-hammer{\n    transform:scale(.86);\n  }\n\n  .pts-section details[open] .pts-hammer{\n    transform:scale(.86) rotate(90deg);\n  }\n\n  .pts-section summary:hover .pts-hammer{\n    transform:scale(.86) rotate(-7deg);\n  }\n\n  .pts-section details[open] summary:hover .pts-hammer{\n    transform:scale(.86) rotate(97deg);\n  }\n\n  .pts-section-body{\n    grid-template-columns:1fr;\n  }\n\n  .pts-body-rail{\n    display:none;\n  }\n\n  .pts-body-content{\n    padding:22px 14px 27px;\n  }\n\n  .pts-spec-list{\n    grid-template-columns:1fr;\n  }\n\n  .pts-spec-list li,\n  .pts-spec-list li:nth-child(2n){\n    border-right:0;\n  }\n\n  .pts-wholesale-row{\n    grid-template-columns:1fr;\n  }\n\n  .pts-wholesale-key{\n    padding:11px 13px 3px;\n    border-right:0;\n    background:var(--pts-surface);\n  }\n\n  .pts-wholesale-value{\n    padding:3px 13px 13px;\n  }\n\n  .pts-wholesale-summary{\n    padding:24px 19px;\n  }\n}\n\n@container (max-width:360px){\n\n  .pts-hero-aside{\n    grid-template-columns:1fr;\n  }\n\n  .pts-stat{\n    border-right:0;\n    border-bottom:1px solid var(--pts-line);\n  }\n\n  .pts-stat:last-child{\n    border-bottom:0;\n  }\n}\n\u003c\/style\u003e\n\u003cdiv class=\"product-trade-sheet\" id=\"pts-4in-100mm-wall-brush-card\"\u003e\n\u003cinput type=\"hidden\" class=\"pts-current-variant\" value=\"{{ product.selected_or_first_available_variant.id }}\"\u003e\n\u003cdiv class=\"pts-hero\"\u003e\n\u003cdiv class=\"pts-hero-copy\"\u003e\n\u003cspan class=\"pts-eyebrow\"\u003e Decorating \u0026amp; painting tool \u003c\/span\u003e\n\u003ch2 class=\"pts-product-title\"\u003e4″ \/ 100mm Wall Brush – Wooden Handle\u003c\/h2\u003e\n\u003cp class=\"pts-intro\"\u003ePractical 4-inch \/ 100mm wall brush for interior and exterior decorating work. Suitable for paints, emulsion, stains and varnishes across smooth, rough and textured surfaces. The shaped wooden handle includes a hanging hole for convenient storage, and the brush can also be used as a splash brush.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-hero-aside\"\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Brush width \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e 100mm \u003csmall\u003e Approx. 4 inches \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Unit price \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e £12.85 \u003csmall\u003e Per wall brush \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Minimum order \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e 24 \u003csmall\u003e Wall brushes \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e MOQ total \u003c\/span\u003e \u003cspan class=\"pts-stat-value\"\u003e £308.40 \u003csmall\u003e 24 units \u003c\/small\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-panel\"\u003e\n\u003cdiv class=\"pts-purchase-card\"\u003e\n\u003cdiv class=\"pts-purchase-main\"\u003e\n\u003cdiv class=\"pts-purchase-quantity\"\u003e\n\u003cspan class=\"pts-purchase-label\"\u003e Boxes \u003c\/span\u003e\n\u003cdiv class=\"pts-quantity-selector\"\u003e\n\u003cbutton type=\"button\" class=\"pts-quantity-button pts-quantity-minus\"\u003e − \u003c\/button\u003e \u003cinput type=\"number\" class=\"pts-quantity-input\" value=\"1\" min=\"1\" step=\"1\" inputmode=\"numeric\"\u003e \u003cbutton type=\"button\" class=\"pts-quantity-button pts-quantity-plus\"\u003e + \u003c\/button\u003e\n\u003c\/div\u003e\n\u003cspan class=\"pts-minimum-note\"\u003e 1 box = \u003cstrong\u003e 24 individual wall brushes \u003c\/strong\u003e \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-total\"\u003e\n\u003cspan class=\"pts-purchase-label\"\u003e Order total \u003c\/span\u003e \u003cspan class=\"pts-order-total-value\"\u003e £308.40 \u003c\/span\u003e \u003cspan class=\"pts-order-total-meta\"\u003e 1 box · 24 brushes × £12.85 \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-actions\"\u003e\n\u003cbutton type=\"button\" class=\"pts-buy-button pts-add-cart\"\u003e ADD BOX · 24 UNITS \u003c\/button\u003e \u003cbutton type=\"button\" class=\"pts-buy-button pts-buy-now\"\u003e BUY NOW · £308.40 \u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-footer\"\u003e\n\u003cspan class=\"pts-purchase-footer-text\"\u003e Minimum order: \u003cstrong\u003e 1 box = 24 wall brushes \u003c\/strong\u003e · £12.85 per unit · £308.40 per box \u003c\/span\u003e \u003cspan class=\"pts-purchase-status\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-section-index\"\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e01\u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Broad coverage \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e02\u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Paint \u0026amp; surface use \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e03\u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Use \u0026amp; care \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e04\u003c\/span\u003e \u003cspan class=\"pts-index-label\"\u003e Wholesale supply \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-sections\"\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails open=\"\"\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e 01 \u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Broad Wall Coverage \u0026amp; General Decorating Use \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e \u003cspan class=\"pts-hammer\"\u003e \u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e \u003c\/span\u003e \u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cdiv class=\"pts-copy\"\u003e\n\u003cp\u003eThe 100mm \/ 4-inch width provides a broad application area for general wall and decorating work. It is suitable for interior and exterior painting tasks and can be used with paints, emulsion, stains and varnishes.\u003c\/p\u003e\n\u003cp\u003eThe brush is intended for smooth, rough and textured surfaces and can also be used as a splash brush where that format is appropriate.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature-band\"\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Brush width \u003c\/span\u003e \u003cspan class=\"pts-feature-value\"\u003e 4″ \/ 100mm \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Use \u003c\/span\u003e \u003cspan class=\"pts-feature-value\"\u003e Interior \u0026amp; exterior \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Surfaces \u003c\/span\u003e \u003cspan class=\"pts-feature-value\"\u003e Smooth, rough \u0026amp; textured \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e 02 \u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Paint Compatibility, Handle \u0026amp; Surface Applications \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e \u003cspan class=\"pts-hammer\"\u003e \u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e \u003c\/span\u003e \u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cul class=\"pts-spec-list\"\u003e\n\u003cli\u003e\n\u003cstrong\u003e Product type \u003c\/strong\u003e \u003cspan\u003e General-purpose wall brush. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Brush width \u003c\/strong\u003e \u003cspan\u003e 100mm \/ approximately 4 inches. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Interior use \u003c\/strong\u003e \u003cspan\u003e Suitable for interior decorating applications. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Exterior use \u003c\/strong\u003e \u003cspan\u003e Suitable for exterior decorating applications. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Paint compatibility \u003c\/strong\u003e \u003cspan\u003e Paints, emulsion, stains and varnishes. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Surface compatibility \u003c\/strong\u003e \u003cspan\u003e Smooth, rough and textured surfaces. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Handle \u003c\/strong\u003e \u003cspan\u003e Shaped wooden handle. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Storage feature \u003c\/strong\u003e \u003cspan\u003e Hanging hole in the handle. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Additional use \u003c\/strong\u003e \u003cspan\u003e Can also be used as a splash brush. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Operation \u003c\/strong\u003e \u003cspan\u003e Fully manual decorating tool. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003ei\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Specification note: \u003c\/strong\u003e The source confirms the size, coating applications, surface types, shaped wooden handle with hanging hole and splash-brush use. Bristle and ferrule materials are not stated, so they are not claimed here.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e 03 \u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Use, Cleaning \u0026amp; Product Care \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e \u003cspan class=\"pts-hammer\"\u003e \u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e \u003c\/span\u003e \u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cul class=\"pts-spec-list\"\u003e\n\u003cli\u003e\n\u003cstrong\u003e Before use \u003c\/strong\u003e \u003cspan\u003e Inspect the brush, handle and bristles for visible damage or excessive wear. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Surface preparation \u003c\/strong\u003e \u003cspan\u003e Ensure the work surface is suitably prepared for the selected coating. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Application \u003c\/strong\u003e \u003cspan\u003e Load the brush evenly and apply the coating using controlled strokes. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Textured surfaces \u003c\/strong\u003e \u003cspan\u003e Work the brush carefully into uneven areas without unnecessary force. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Paint selection \u003c\/strong\u003e \u003cspan\u003e Follow the coating manufacturer's application and drying instructions. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Cleaning \u003c\/strong\u003e \u003cspan\u003e Clean promptly after use using the method appropriate to the coating applied. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Drying \u003c\/strong\u003e \u003cspan\u003e Allow the brush to dry thoroughly before storage. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Storage \u003c\/strong\u003e \u003cspan\u003e Store in a clean, dry location and use the hanging hole where convenient. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003e!\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Use note: \u003c\/strong\u003e Follow all safety, ventilation and handling instructions supplied with the paint, stain, varnish or other coating being applied.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e 04 \u003c\/span\u003e \u003cspan class=\"pts-section-title\"\u003e Packaging \u0026amp; Wholesale Supply \u003c\/span\u003e \u003cspan class=\"pts-section-toggle\"\u003e \u003cspan class=\"pts-hammer\"\u003e \u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e \u003c\/span\u003e \u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cdiv class=\"pts-copy\"\u003e\n\u003cp\u003eOne Shopify selling unit is one individual 4-inch \/ 100mm wall brush. Each wholesale box contains 24 brushes. Each unit is priced at £12.85, giving a wholesale box value of £308.40. Additional boxes can be selected directly using the box quantity control above.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-layout\"\u003e\n\u003cdiv class=\"pts-wholesale-data\"\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eProduct\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e4″ \/ 100mm wall brush\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eBrush width\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e100mm \/ approximately 4″\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eHandle\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003eShaped wooden handle with hanging hole\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eSuitable coatings\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003ePaints, emulsion, stains \u0026amp; varnishes\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eUnit price\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e£12.85\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eBox quantity\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e24 wall brushes\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eBox total\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e£308.40\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003caside class=\"pts-wholesale-summary\"\u003e\n\u003cdiv\u003e\n\u003cspan class=\"pts-summary-topline\"\u003e Wholesale box \u003c\/span\u003e\n\u003cdiv class=\"pts-summary-large\"\u003e£308.40 \u003csmall\u003e 24 wall brushes \u003c\/small\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-summary-lines\"\u003e\n\u003cstrong\u003e £12.85 \u003c\/strong\u003e per wall brush \u003cbr\u003e\u003cstrong\u003e 4″ \/ 100mm \u003c\/strong\u003e brush width \u003cbr\u003e\u003cstrong\u003e 24 units \u003c\/strong\u003e per box \u003cbr\u003e\u003cstrong class=\"pts-orange\"\u003e £308.40 \u003c\/strong\u003e per wholesale box\u003c\/div\u003e\n\u003c\/aside\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003ei\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Wholesale calculation: \u003c\/strong\u003e 1 box = 24 wall brushes × £12.85 per unit = £308.40.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"My Store","offers":[{"title":"Default Title","offer_id":56824994267476,"sku":null,"price":12.85,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1063\/3117\/7300\/files\/12345_2_75da5f0a-ed60-4c4c-a9cb-9257060b68f4.png?v=1786988601"},{"product_id":"6-150mm-wall-brush-wooden-handle","title":"6″ \/ 150mm Wall Brush – Wooden Handle","description":"\u003cstyle\u003e\n  .product-trade-sheet {\n    --pts-bg: #ffffff;\n    --pts-surface: #ffffff;\n    --pts-soft: #f6f6f4;\n    --pts-text: #111111;\n    --pts-muted: #5a5a5a;\n    --pts-accent: #f26522;\n    --pts-accent-dark: #d95316;\n    --pts-accent-soft: #fff2e8;\n    --pts-line: #dfdfdb;\n    --pts-white: #ffffff;\n\n    width: 100%;\n    max-width: 100%;\n    color: var(--pts-text);\n    background: var(--pts-bg);\n\n    font-family:\n      -apple-system,\n      BlinkMacSystemFont,\n      \"Segoe UI\",\n      Arial,\n      sans-serif;\n\n    font-size: 14px;\n    line-height: 1.7;\n\n    container-type: inline-size;\n  }\n\n  .product-trade-sheet *,\n  .product-trade-sheet *::before,\n  .product-trade-sheet *::after {\n    box-sizing: border-box;\n  }\n\n  .product-trade-sheet h2,\n  .product-trade-sheet p {\n    margin: 0;\n  }\n\n  .product-trade-sheet button,\n  .product-trade-sheet input {\n    font: inherit;\n  }\n\n  \/* =========================================================\n     PRODUCT OVERVIEW\n  ========================================================= *\/\n\n  .pts-hero {\n    width: 100%;\n\n    border-top: 4px solid var(--pts-accent);\n    border-bottom: 1px solid var(--pts-line);\n\n    background: var(--pts-surface);\n  }\n\n  .pts-hero-copy {\n    width: 100%;\n    padding: clamp(30px, 5cqw, 58px);\n  }\n\n  .pts-eyebrow {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n\n    margin-bottom: 18px;\n\n    color: var(--pts-accent);\n\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1;\n    letter-spacing: 0.16em;\n\n    text-transform: uppercase;\n  }\n\n  .pts-eyebrow::before {\n    content: \"\";\n\n    width: 34px;\n    height: 2px;\n\n    background: var(--pts-accent);\n  }\n\n  .pts-product-title {\n    width: 100%;\n    max-width: 980px;\n\n    margin: 0 0 24px !important;\n\n    color: var(--pts-text);\n\n    font-size: clamp(30px, 5.2cqw, 48px);\n    font-weight: 800;\n    line-height: 1.07;\n    letter-spacing: -0.045em;\n  }\n\n  .pts-intro {\n    width: 100%;\n    max-width: 980px;\n\n    color: var(--pts-muted);\n\n    font-size: clamp(15px, 2cqw, 18px);\n    line-height: 1.85;\n  }\n\n  \/* =========================================================\n     TOP STATS\n  ========================================================= *\/\n\n  .pts-hero-aside {\n    display: grid;\n    grid-template-columns: repeat(4, minmax(0, 1fr));\n\n    width: 100%;\n\n    border-top: 1px solid var(--pts-line);\n\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-stat {\n    position: relative;\n\n    min-width: 0;\n    min-height: 126px;\n\n    padding: 20px;\n\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n\n    border-right: 1px solid var(--pts-line);\n\n    background: var(--pts-accent-soft);\n\n    overflow: hidden;\n\n    transition:\n      background-color 0.25s ease,\n      padding-left 0.25s ease;\n  }\n\n  .pts-stat:last-child {\n    border-right: 0;\n  }\n\n  .pts-stat::after {\n    content: \"\";\n\n    position: absolute;\n\n    left: 0;\n    bottom: 0;\n\n    width: 0;\n    height: 3px;\n\n    background: var(--pts-accent);\n\n    transition: width 0.3s ease;\n  }\n\n  .pts-stat:hover {\n    padding-left: 24px;\n    background: #ffffff;\n  }\n\n  .pts-stat:hover::after {\n    width: 100%;\n  }\n\n  .pts-stat-label {\n    display: block;\n\n    color: var(--pts-muted);\n\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.14em;\n\n    text-transform: uppercase;\n  }\n\n  .pts-stat-value {\n    display: block;\n\n    margin-top: 22px;\n\n    color: var(--pts-text);\n\n    font-size: clamp(22px, 4cqw, 32px);\n    font-weight: 780;\n    line-height: 1;\n    letter-spacing: -0.035em;\n  }\n\n  .pts-stat-value small {\n    display: block;\n\n    margin-top: 8px;\n\n    color: var(--pts-muted);\n\n    font-size: 11px;\n    font-weight: 600;\n    line-height: 1.4;\n    letter-spacing: 0;\n  }\n\n  \/* =========================================================\n     PURCHASE PANEL\n  ========================================================= *\/\n\n  .pts-purchase-panel {\n    width: 100%;\n\n    padding: 20px;\n\n    border-bottom: 1px solid var(--pts-line);\n\n    background: var(--pts-soft);\n  }\n\n  .pts-purchase-card {\n    width: 100%;\n\n    border: 1px solid var(--pts-line);\n\n    background: #ffffff;\n  }\n\n  .pts-purchase-main {\n    display: grid;\n\n    grid-template-columns:\n      minmax(220px, 0.9fr)\n      minmax(190px, 0.75fr)\n      minmax(280px, 1.2fr);\n\n    width: 100%;\n  }\n\n  \/* =========================================================\n     QUANTITY\n  ========================================================= *\/\n\n  .pts-purchase-quantity {\n    min-width: 0;\n\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n\n    padding: 22px;\n\n    border-right: 1px solid var(--pts-line);\n\n    background: #ffffff;\n  }\n\n  .pts-purchase-label {\n    display: block;\n\n    margin-bottom: 12px;\n\n    color: var(--pts-muted);\n\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.13em;\n\n    text-transform: uppercase;\n  }\n\n  .pts-quantity-selector {\n    display: grid;\n\n    grid-template-columns:\n      50px\n      88px\n      50px;\n\n    width: max-content;\n    height: 52px;\n\n    border: 1px solid var(--pts-line);\n\n    background: #ffffff;\n  }\n\n  .pts-quantity-button {\n    appearance: none;\n    -webkit-appearance: none;\n\n    width: 50px;\n    height: 50px;\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    margin: 0;\n    padding: 0;\n\n    border: 0;\n    border-radius: 0;\n\n    background: #ffffff;\n    color: #111111;\n\n    cursor: pointer;\n\n    font-size: 22px;\n    font-weight: 500;\n    line-height: 1;\n\n    user-select: none;\n\n    transition:\n      background-color 0.2s ease,\n      color 0.2s ease;\n  }\n\n  .pts-quantity-button:hover:not(:disabled) {\n    background: var(--pts-accent);\n    color: #ffffff;\n  }\n\n  .pts-quantity-button:active:not(:disabled) {\n    background: var(--pts-accent-dark);\n  }\n\n  .pts-quantity-button:disabled {\n    cursor: not-allowed;\n\n    background: var(--pts-soft);\n    color: #b9b9b5;\n  }\n\n  .pts-quantity-input {\n    appearance: textfield;\n    -moz-appearance: textfield;\n\n    width: 88px;\n    height: 50px;\n\n    margin: 0;\n    padding: 0 5px;\n\n    border-top: 0;\n    border-bottom: 0;\n    border-left: 1px solid var(--pts-line);\n    border-right: 1px solid var(--pts-line);\n\n    border-radius: 0;\n    outline: none;\n\n    background: #ffffff;\n    color: var(--pts-text);\n\n    text-align: center;\n\n    font-size: 17px;\n    font-weight: 800;\n    line-height: 50px;\n  }\n\n  .pts-quantity-input:focus {\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-quantity-input::-webkit-inner-spin-button,\n  .pts-quantity-input::-webkit-outer-spin-button {\n    margin: 0;\n    -webkit-appearance: none;\n  }\n\n  .pts-minimum-note {\n    display: block;\n\n    margin-top: 10px;\n\n    color: var(--pts-muted);\n\n    font-size: 10px;\n    line-height: 1.45;\n  }\n\n  .pts-minimum-note strong {\n    color: var(--pts-text);\n  }\n\n  \/* =========================================================\n     ORDER TOTAL\n  ========================================================= *\/\n\n  .pts-purchase-total {\n    min-width: 0;\n\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n\n    padding: 22px;\n\n    border-right: 1px solid var(--pts-line);\n\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-order-total-value {\n    display: block;\n\n    color: var(--pts-text);\n\n    font-size: clamp(28px, 4.4cqw, 38px);\n    font-weight: 800;\n    line-height: 1;\n    letter-spacing: -0.04em;\n  }\n\n  .pts-order-total-meta {\n    display: block;\n\n    margin-top: 9px;\n\n    color: var(--pts-muted);\n\n    font-size: 11px;\n    line-height: 1.5;\n  }\n\n  \/* =========================================================\n     BUY BUTTONS\n  ========================================================= *\/\n\n  .pts-purchase-actions {\n    min-width: 0;\n\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n\n    gap: 14px;\n\n    padding: 14px;\n\n    background: #ffffff;\n  }\n\n  .pts-buy-button {\n    appearance: none;\n    -webkit-appearance: none;\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    width: 100%;\n    min-height: 54px;\n\n    margin: 0;\n    padding: 14px 18px;\n\n    border-radius: 0;\n\n    cursor: pointer;\n\n    font-size: 12px;\n    font-weight: 800;\n    line-height: 1.35;\n    letter-spacing: 0.055em;\n\n    text-align: center;\n    text-transform: uppercase;\n\n    transition:\n      background-color 0.2s ease,\n      color 0.2s ease,\n      border-color 0.2s ease,\n      transform 0.12s ease;\n  }\n\n  .pts-add-cart {\n    border: 1px solid #111111;\n\n    background: #111111;\n    color: #ffffff;\n  }\n\n  .pts-add-cart:hover {\n    background: #292929;\n    border-color: #292929;\n  }\n\n  .pts-add-cart:active {\n    transform: translateY(1px);\n\n    background: #000000;\n    border-color: #000000;\n  }\n\n  .pts-buy-now {\n    border: 1px solid var(--pts-accent);\n\n    background: var(--pts-accent);\n    color: #ffffff;\n  }\n\n  .pts-buy-now:hover {\n    background: var(--pts-accent-dark);\n    border-color: var(--pts-accent-dark);\n  }\n\n  .pts-buy-now:active {\n    transform: translateY(1px);\n  }\n\n  .pts-buy-button:disabled {\n    cursor: wait;\n    opacity: 0.6;\n  }\n\n  \/* =========================================================\n     PURCHASE FOOTER\n  ========================================================= *\/\n\n  .pts-purchase-footer {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n\n    gap: 18px;\n\n    min-height: 46px;\n\n    padding: 10px 18px;\n\n    border-top: 1px solid var(--pts-line);\n\n    background: #ffffff;\n  }\n\n  .pts-purchase-footer-text {\n    color: var(--pts-muted);\n\n    font-size: 10px;\n    line-height: 1.5;\n  }\n\n  .pts-purchase-footer-text strong {\n    color: var(--pts-text);\n  }\n\n  .pts-purchase-status {\n    min-height: 15px;\n\n    color: var(--pts-muted);\n\n    font-size: 10px;\n    line-height: 1.5;\n\n    text-align: right;\n  }\n\n  .pts-purchase-status.is-error {\n    color: #b42318;\n  }\n\n  .pts-purchase-status.is-success {\n    color: #111111;\n  }\n\n  \/* =========================================================\n     SECTION INDEX\n  ========================================================= *\/\n\n  .pts-section-index {\n    display: grid;\n    grid-template-columns: repeat(4, minmax(0, 1fr));\n\n    width: 100%;\n\n    border-bottom: 1px solid var(--pts-line);\n\n    background: var(--pts-soft);\n  }\n\n  .pts-index-item {\n    min-width: 0;\n\n    padding: 16px 18px;\n\n    border-right: 1px solid var(--pts-line);\n\n    transition:\n      background-color 0.25s ease,\n      padding-left 0.25s ease;\n  }\n\n  .pts-index-item:last-child {\n    border-right: 0;\n  }\n\n  .pts-index-item:hover {\n    padding-left: 23px;\n\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-index-number {\n    display: block;\n\n    margin-bottom: 6px;\n\n    color: var(--pts-accent);\n\n    font-size: 9px;\n    font-weight: 850;\n    line-height: 1;\n    letter-spacing: 0.12em;\n  }\n\n  .pts-index-label {\n    display: block;\n\n    color: var(--pts-text);\n\n    font-size: 11px;\n    font-weight: 700;\n    line-height: 1.4;\n  }\n\n  \/* =========================================================\n     ACCORDION\n  ========================================================= *\/\n\n  .pts-sections {\n    width: 100%;\n\n    background: var(--pts-bg);\n  }\n\n  .pts-section {\n    width: 100%;\n\n    border-bottom: 1px solid var(--pts-line);\n  }\n\n  .pts-section details {\n    display: block;\n\n    width: 100%;\n  }\n\n  .pts-section summary {\n    display: grid;\n\n    grid-template-columns:\n      82px\n      minmax(0, 1fr)\n      64px;\n\n    align-items: stretch;\n\n    width: 100%;\n    min-height: 86px;\n\n    padding: 0;\n\n    background: var(--pts-surface);\n\n    cursor: pointer;\n    list-style: none;\n    user-select: none;\n\n    transition: background-color 0.25s ease;\n  }\n\n  .pts-section summary::-webkit-details-marker {\n    display: none;\n  }\n\n  .pts-section summary::marker {\n    content: \"\";\n  }\n\n  .pts-section summary:hover,\n  .pts-section details[open] \u003e summary {\n    background: var(--pts-soft);\n  }\n\n  .pts-section-no {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    border-right: 1px solid var(--pts-line);\n\n    color: var(--pts-accent);\n\n    font-size: 11px;\n    font-weight: 850;\n    line-height: 1;\n    letter-spacing: 0.12em;\n\n    transition:\n      background-color 0.3s ease,\n      color 0.3s ease;\n  }\n\n  .pts-section details[open] .pts-section-no {\n    background: var(--pts-accent);\n    color: #ffffff;\n  }\n\n  .pts-section-title {\n    min-width: 0;\n\n    display: flex;\n    align-items: center;\n\n    padding: 18px 24px;\n\n    color: var(--pts-text);\n\n    font-size: clamp(14px, 2.1cqw, 18px);\n    font-weight: 750;\n    line-height: 1.4;\n  }\n\n  \/* =========================================================\n     HAMMER\n  ========================================================= *\/\n\n  .pts-section-toggle {\n    position: relative;\n\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    min-width: 64px;\n\n    border-left: 1px solid var(--pts-line);\n\n    background: var(--pts-surface);\n\n    overflow: hidden;\n\n    transition: background-color 0.25s ease;\n  }\n\n  .pts-section summary:hover .pts-section-toggle,\n  .pts-section details[open] .pts-section-toggle {\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-hammer {\n    position: relative;\n\n    display: block;\n\n    width: 26px;\n    height: 34px;\n\n    transform: rotate(0deg);\n    transform-origin: 50% 50%;\n\n    transition:\n      transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n  }\n\n  .pts-hammer::before {\n    content: \"\";\n\n    position: absolute;\n\n    left: 50%;\n    top: 11px;\n\n    width: 5px;\n    height: 23px;\n\n    background: var(--pts-accent);\n\n    transform: translateX(-50%);\n  }\n\n  .pts-hammer::after {\n    content: \"\";\n\n    position: absolute;\n\n    top: 4px;\n    left: 50%;\n\n    width: 24px;\n    height: 9px;\n\n    background: var(--pts-accent);\n\n    transform: translateX(-50%);\n  }\n\n  .pts-hammer-neck {\n    position: absolute;\n\n    top: 9px;\n    left: 50%;\n\n    width: 9px;\n    height: 8px;\n\n    background: var(--pts-accent);\n\n    transform: translateX(-50%);\n  }\n\n  .pts-section details[open] .pts-hammer {\n    transform: rotate(90deg);\n  }\n\n  .pts-section summary:hover .pts-hammer {\n    transform: rotate(-7deg);\n  }\n\n  .pts-section details[open] summary:hover .pts-hammer {\n    transform: rotate(97deg);\n  }\n\n  \/* =========================================================\n     SECTION BODY\n  ========================================================= *\/\n\n  .pts-section-body {\n    display: grid;\n\n    grid-template-columns:\n      82px\n      minmax(0, 1fr);\n\n    width: 100%;\n\n    background: var(--pts-bg);\n  }\n\n  .pts-body-rail {\n    border-right: 1px solid var(--pts-line);\n\n    background:\n      repeating-linear-gradient(\n        to bottom,\n        transparent 0,\n        transparent 17px,\n        rgba(242, 101, 34, 0.07) 17px,\n        rgba(242, 101, 34, 0.07) 18px\n      );\n  }\n\n  .pts-body-content {\n    min-width: 0;\n\n    padding: clamp(22px, 4cqw, 42px);\n\n    color: var(--pts-muted);\n  }\n\n  .pts-copy {\n    width: 100%;\n    max-width: 950px;\n  }\n\n  .pts-copy p {\n    margin-bottom: 18px;\n  }\n\n  .pts-copy p:last-child {\n    margin-bottom: 0;\n  }\n\n  \/* =========================================================\n     FEATURES\n  ========================================================= *\/\n\n  .pts-feature-band {\n    display: grid;\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n\n    width: 100%;\n\n    margin-top: 28px;\n\n    border-top: 1px solid var(--pts-line);\n    border-bottom: 1px solid var(--pts-line);\n\n    background: var(--pts-surface);\n  }\n\n  .pts-feature {\n    position: relative;\n\n    min-width: 0;\n    min-height: 100px;\n\n    padding: 18px;\n\n    border-right: 1px solid var(--pts-line);\n\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n\n    background: var(--pts-surface);\n\n    overflow: hidden;\n\n    transition:\n      background-color 0.25s ease,\n      padding-left 0.25s ease;\n  }\n\n  .pts-feature:last-child {\n    border-right: 0;\n  }\n\n  .pts-feature::before {\n    content: \"\";\n\n    position: absolute;\n\n    top: 0;\n    left: 0;\n\n    width: 3px;\n    height: 0;\n\n    background: var(--pts-accent);\n\n    transition: height 0.3s ease;\n  }\n\n  .pts-feature:hover {\n    padding-left: 23px;\n\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-feature:hover::before {\n    height: 100%;\n  }\n\n  .pts-feature-label {\n    color: var(--pts-muted);\n\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.12em;\n\n    text-transform: uppercase;\n  }\n\n  .pts-feature-value {\n    margin-top: 17px;\n\n    color: var(--pts-text);\n\n    font-size: 13px;\n    font-weight: 750;\n    line-height: 1.45;\n  }\n\n  \/* =========================================================\n     SPECIFICATIONS\n  ========================================================= *\/\n\n  .pts-spec-list {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n\n    width: 100%;\n\n    margin: 0;\n    padding: 0;\n\n    border-top: 1px solid var(--pts-line);\n\n    list-style: none;\n  }\n\n  .pts-spec-list li {\n    position: relative;\n\n    min-width: 0;\n    min-height: 84px;\n\n    padding: 17px 20px;\n\n    border-right: 1px solid var(--pts-line);\n    border-bottom: 1px solid var(--pts-line);\n\n    background: var(--pts-surface);\n\n    overflow: hidden;\n\n    transition:\n      background-color 0.22s ease,\n      padding-left 0.22s ease;\n  }\n\n  .pts-spec-list li:nth-child(2n) {\n    border-right: 0;\n  }\n\n  .pts-spec-list li::before {\n    content: \"\";\n\n    position: absolute;\n\n    left: 0;\n    top: 0;\n\n    width: 3px;\n    height: 0;\n\n    background: var(--pts-accent);\n\n    transition: height 0.25s ease;\n  }\n\n  .pts-spec-list li:hover {\n    padding-left: 25px;\n\n    background: var(--pts-soft);\n  }\n\n  .pts-spec-list li:hover::before {\n    height: 100%;\n  }\n\n  .pts-spec-list strong {\n    display: block;\n\n    margin-bottom: 6px;\n\n    color: var(--pts-text);\n\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.1em;\n\n    text-transform: uppercase;\n  }\n\n  .pts-spec-list span {\n    display: block;\n\n    color: var(--pts-muted);\n\n    font-size: 13px;\n    line-height: 1.55;\n  }\n\n  \/* =========================================================\n     NOTE\n  ========================================================= *\/\n\n  .pts-note {\n    display: grid;\n\n    grid-template-columns:\n      46px\n      minmax(0, 1fr);\n\n    width: 100%;\n\n    margin-top: 20px;\n\n    border-top: 1px solid var(--pts-line);\n    border-bottom: 1px solid var(--pts-line);\n\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-note-icon {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    border-right: 1px solid var(--pts-line);\n\n    color: var(--pts-accent);\n\n    font-family: Georgia, serif;\n    font-size: 15px;\n    font-weight: 700;\n  }\n\n  .pts-note-copy {\n    min-width: 0;\n\n    padding: 14px 16px;\n\n    color: var(--pts-muted);\n\n    font-size: 12px;\n    line-height: 1.7;\n  }\n\n  .pts-note-copy strong {\n    color: var(--pts-text);\n  }\n\n  \/* =========================================================\n     WHOLESALE\n  ========================================================= *\/\n\n  .pts-wholesale-layout {\n    display: grid;\n\n    grid-template-columns:\n      minmax(0, 1.3fr)\n      minmax(230px, 0.7fr);\n\n    width: 100%;\n\n    margin-top: 28px;\n\n    border-top: 1px solid var(--pts-line);\n    border-bottom: 1px solid var(--pts-line);\n  }\n\n  .pts-wholesale-data {\n    min-width: 0;\n\n    background: var(--pts-surface);\n  }\n\n  .pts-wholesale-row {\n    display: grid;\n\n    grid-template-columns:\n      minmax(120px, 38%)\n      minmax(0, 1fr);\n\n    min-height: 54px;\n\n    border-bottom: 1px solid var(--pts-line);\n  }\n\n  .pts-wholesale-row:last-child {\n    border-bottom: 0;\n  }\n\n  .pts-wholesale-key {\n    display: flex;\n    align-items: center;\n\n    padding: 11px 15px;\n\n    border-right: 1px solid var(--pts-line);\n\n    background: var(--pts-soft);\n\n    color: var(--pts-muted);\n\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.1em;\n\n    text-transform: uppercase;\n  }\n\n  .pts-wholesale-value {\n    min-width: 0;\n\n    display: flex;\n    align-items: center;\n\n    padding: 11px 16px;\n\n    background: var(--pts-surface);\n\n    color: var(--pts-text);\n\n    font-size: 13px;\n    font-weight: 700;\n    line-height: 1.5;\n\n    transition:\n      background-color 0.22s ease,\n      padding-left 0.22s ease;\n  }\n\n  .pts-wholesale-row:hover .pts-wholesale-value {\n    padding-left: 21px;\n\n    background: var(--pts-accent-soft);\n  }\n\n  .pts-wholesale-summary {\n    min-width: 0;\n\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n\n    padding: 28px;\n\n    background: #111111;\n    color: #ffffff;\n  }\n\n  .pts-summary-topline {\n    color: rgba(255, 255, 255, 0.64);\n\n    font-size: 9px;\n    font-weight: 800;\n    line-height: 1.4;\n    letter-spacing: 0.14em;\n\n    text-transform: uppercase;\n  }\n\n  .pts-summary-large {\n    margin: 30px 0;\n\n    color: #ffffff;\n\n    font-size: clamp(34px, 7cqw, 54px);\n    font-weight: 760;\n    line-height: 0.95;\n    letter-spacing: -0.05em;\n  }\n\n  .pts-summary-large::after {\n    content: \"\";\n\n    display: block;\n\n    width: 42px;\n    height: 3px;\n\n    margin-top: 18px;\n\n    background: var(--pts-accent);\n  }\n\n  .pts-summary-large small {\n    display: block;\n\n    margin-top: 11px;\n\n    color: rgba(255, 255, 255, 0.7);\n\n    font-size: 11px;\n    font-weight: 600;\n    line-height: 1.4;\n    letter-spacing: 0;\n  }\n\n  .pts-summary-lines {\n    color: rgba(255, 255, 255, 0.8);\n\n    font-size: 12px;\n    line-height: 1.85;\n  }\n\n  .pts-summary-lines strong {\n    color: #ffffff;\n  }\n\n  .pts-orange {\n    color: var(--pts-accent) !important;\n  }\n\n  \/* =========================================================\n     TABLET\n  ========================================================= *\/\n\n  @container (max-width: 760px) {\n    .pts-hero-copy {\n      padding: 30px 24px;\n    }\n\n    .pts-product-title {\n      font-size: 34px;\n    }\n\n    .pts-intro {\n      font-size: 15px;\n    }\n\n    .pts-hero-aside {\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n    }\n\n    .pts-stat {\n      border-bottom: 1px solid var(--pts-line);\n    }\n\n    .pts-stat:nth-child(2) {\n      border-right: 0;\n    }\n\n    .pts-stat:nth-child(3),\n    .pts-stat:nth-child(4) {\n      border-bottom: 0;\n    }\n\n    .pts-purchase-main {\n      grid-template-columns: 1fr 1fr;\n    }\n\n    .pts-purchase-total {\n      border-right: 0;\n    }\n\n    .pts-purchase-actions {\n      grid-column: 1 \/ -1;\n\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n\n      gap: 14px;\n\n      border-top: 1px solid var(--pts-line);\n    }\n\n    .pts-section-index {\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n    }\n\n    .pts-index-item:nth-child(2) {\n      border-right: 0;\n    }\n\n    .pts-index-item:nth-child(-n + 2) {\n      border-bottom: 1px solid var(--pts-line);\n    }\n\n    .pts-feature-band {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-feature {\n      min-height: auto;\n\n      border-right: 0;\n      border-bottom: 1px solid var(--pts-line);\n    }\n\n    .pts-feature:last-child {\n      border-bottom: 0;\n    }\n\n    .pts-wholesale-layout {\n      grid-template-columns: 1fr;\n    }\n  }\n\n  \/* =========================================================\n     MOBILE\n  ========================================================= *\/\n\n  @container (max-width: 540px) {\n    .pts-hero-copy {\n      padding: 26px 18px;\n    }\n\n    .pts-product-title {\n      margin-bottom: 18px !important;\n\n      font-size: 29px;\n      line-height: 1.1;\n    }\n\n    .pts-eyebrow {\n      margin-bottom: 16px;\n    }\n\n    .pts-intro {\n      font-size: 14px;\n      line-height: 1.8;\n    }\n\n    .pts-stat {\n      min-height: 108px;\n      padding: 16px;\n    }\n\n    .pts-stat-value {\n      margin-top: 17px;\n\n      font-size: 22px;\n    }\n\n    .pts-purchase-panel {\n      padding: 12px;\n    }\n\n    .pts-purchase-main {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-purchase-quantity,\n    .pts-purchase-total {\n      border-right: 0;\n      border-bottom: 1px solid var(--pts-line);\n    }\n\n    .pts-purchase-actions {\n      grid-column: auto;\n\n      display: flex;\n      flex-direction: column;\n\n      gap: 10px;\n\n      border-top: 0;\n    }\n\n    .pts-purchase-footer {\n      align-items: flex-start;\n      flex-direction: column;\n\n      gap: 4px;\n    }\n\n    .pts-purchase-status {\n      text-align: left;\n    }\n\n    .pts-section-index {\n      display: none;\n    }\n\n    .pts-section summary {\n      grid-template-columns:\n        52px\n        minmax(0, 1fr)\n        50px;\n\n      min-height: 72px;\n    }\n\n    .pts-section-no {\n      font-size: 9px;\n    }\n\n    .pts-section-title {\n      padding: 13px 14px;\n\n      font-size: 13px;\n    }\n\n    .pts-section-toggle {\n      min-width: 50px;\n    }\n\n    .pts-hammer {\n      transform: scale(0.86);\n    }\n\n    .pts-section details[open] .pts-hammer {\n      transform:\n        scale(0.86)\n        rotate(90deg);\n    }\n\n    .pts-section summary:hover .pts-hammer {\n      transform:\n        scale(0.86)\n        rotate(-7deg);\n    }\n\n    .pts-section details[open] summary:hover .pts-hammer {\n      transform:\n        scale(0.86)\n        rotate(97deg);\n    }\n\n    .pts-section-body {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-body-rail {\n      display: none;\n    }\n\n    .pts-body-content {\n      padding: 22px 14px 27px;\n    }\n\n    .pts-spec-list {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-spec-list li,\n    .pts-spec-list li:nth-child(2n) {\n      border-right: 0;\n    }\n\n    .pts-wholesale-row {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-wholesale-key {\n      padding: 11px 13px 3px;\n\n      border-right: 0;\n\n      background: var(--pts-surface);\n    }\n\n    .pts-wholesale-value {\n      padding: 3px 13px 13px;\n    }\n\n    .pts-wholesale-summary {\n      padding: 24px 19px;\n    }\n  }\n\n  @container (max-width: 360px) {\n    .pts-hero-aside {\n      grid-template-columns: 1fr;\n    }\n\n    .pts-stat {\n      border-right: 0;\n      border-bottom: 1px solid var(--pts-line);\n    }\n\n    .pts-stat:last-child {\n      border-bottom: 0;\n    }\n  }\n\u003c\/style\u003e\n\u003cdiv class=\"product-trade-sheet\" id=\"pts-6in-150mm-wall-brush-card\" data-box-size=\"24\" data-unit-price=\"17.44\"\u003e\n\u003cinput type=\"hidden\" class=\"pts-current-variant\" value=\"{{ product.selected_or_first_available_variant.id }}\"\u003e\n\u003cdiv class=\"pts-hero\"\u003e\n\u003cdiv class=\"pts-hero-copy\"\u003e\n\u003cspan class=\"pts-eyebrow\"\u003e Decorating \u0026amp; painting tool \u003c\/span\u003e\n\u003ch2 class=\"pts-product-title\"\u003e6″ \/ 150mm Wall Brush – Wooden Handle\u003c\/h2\u003e\n\u003cp class=\"pts-intro\"\u003ePractical 6-inch \/ 150mm wall brush for interior and exterior decorating work. Suitable for paints, emulsion, stains and varnishes across smooth, rough and textured surfaces. The shaped wooden handle includes a hanging hole for convenient storage, and the brush can also be used as a splash brush.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-hero-aside\"\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Brush width \u003c\/span\u003e\u003cspan class=\"pts-stat-value\"\u003e 150mm \u003csmall\u003e Approx. 6 inches \u003c\/small\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Unit price \u003c\/span\u003e\u003cspan class=\"pts-stat-value\"\u003e £17.44 \u003csmall\u003e Per wall brush \u003c\/small\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e Minimum order \u003c\/span\u003e\u003cspan class=\"pts-stat-value\"\u003e 24 \u003csmall\u003e Wall brushes \u003c\/small\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-stat\"\u003e\n\u003cspan class=\"pts-stat-label\"\u003e MOQ total \u003c\/span\u003e\u003cspan class=\"pts-stat-value\"\u003e £418.56 \u003csmall\u003e 24 units \u003c\/small\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-panel\"\u003e\n\u003cdiv class=\"pts-purchase-card\"\u003e\n\u003cdiv class=\"pts-purchase-main\"\u003e\n\u003cdiv class=\"pts-purchase-quantity\"\u003e\n\u003cspan class=\"pts-purchase-label\"\u003e Boxes \u003c\/span\u003e\n\u003cdiv class=\"pts-quantity-selector\"\u003e\n\u003cbutton type=\"button\" class=\"pts-quantity-button pts-quantity-minus\" aria-label=\"Decrease box quantity\"\u003e−\u003c\/button\u003e \u003cinput type=\"number\" class=\"pts-quantity-input\" value=\"1\" min=\"1\" step=\"1\" inputmode=\"numeric\" aria-label=\"Box quantity\"\u003e \u003cbutton type=\"button\" class=\"pts-quantity-button pts-quantity-plus\" aria-label=\"Increase box quantity\"\u003e+\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cspan class=\"pts-minimum-note\"\u003e1 box = \u003cstrong\u003e24 individual wall brushes\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-total\"\u003e\n\u003cspan class=\"pts-purchase-label\"\u003e Order total \u003c\/span\u003e\u003cspan class=\"pts-order-total-value\"\u003e £418.56 \u003c\/span\u003e\u003cspan class=\"pts-order-total-meta\"\u003e 1 box · 24 brushes × £17.44 \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-actions\"\u003e\n\u003cbutton type=\"button\" class=\"pts-buy-button pts-add-cart\"\u003eADD BOX · 24 UNITS\u003c\/button\u003e \u003cbutton type=\"button\" class=\"pts-buy-button pts-buy-now\"\u003eBUY NOW · £418.56\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-purchase-footer\"\u003e\n\u003cspan class=\"pts-purchase-footer-text\"\u003eMinimum order: \u003cstrong\u003e1 box = 24 wall brushes\u003c\/strong\u003e · £17.44 per unit · £418.56 per box\u003c\/span\u003e\u003cspan class=\"pts-purchase-status\" aria-live=\"polite\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-section-index\"\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e01\u003c\/span\u003e\u003cspan class=\"pts-index-label\"\u003e Broad coverage \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e02\u003c\/span\u003e\u003cspan class=\"pts-index-label\"\u003e Paint \u0026amp; surface use \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e03\u003c\/span\u003e\u003cspan class=\"pts-index-label\"\u003e Use \u0026amp; care \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-index-item\"\u003e\n\u003cspan class=\"pts-index-number\"\u003e04\u003c\/span\u003e\u003cspan class=\"pts-index-label\"\u003e Wholesale supply \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-sections\"\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails open\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e01\u003c\/span\u003e\u003cspan class=\"pts-section-title\"\u003e Broad Wall Coverage \u0026amp; General Decorating Use \u003c\/span\u003e\u003cspan class=\"pts-section-toggle\"\u003e\u003cspan class=\"pts-hammer\"\u003e\u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cdiv class=\"pts-copy\"\u003e\n\u003cp\u003eThe 150mm \/ 6-inch width provides a broad application area for general wall and decorating work. It is suitable for interior and exterior painting tasks and can be used with paints, emulsion, stains and varnishes.\u003c\/p\u003e\n\u003cp\u003eThe brush is intended for smooth, rough and textured surfaces and can also be used as a splash brush where that format is appropriate.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature-band\"\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Brush width \u003c\/span\u003e\u003cspan class=\"pts-feature-value\"\u003e 6″ \/ 150mm \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Use \u003c\/span\u003e\u003cspan class=\"pts-feature-value\"\u003e Interior \u0026amp; exterior \u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-feature\"\u003e\n\u003cspan class=\"pts-feature-label\"\u003e Surfaces \u003c\/span\u003e\u003cspan class=\"pts-feature-value\"\u003e Smooth, rough \u0026amp; textured \u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e02\u003c\/span\u003e\u003cspan class=\"pts-section-title\"\u003e Paint Compatibility, Handle \u0026amp; Surface Applications \u003c\/span\u003e\u003cspan class=\"pts-section-toggle\"\u003e\u003cspan class=\"pts-hammer\"\u003e\u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cul class=\"pts-spec-list\"\u003e\n\u003cli\u003e\n\u003cstrong\u003e Product type \u003c\/strong\u003e\u003cspan\u003e General-purpose wall brush. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Brush width \u003c\/strong\u003e\u003cspan\u003e 150mm \/ approximately 6 inches. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Interior use \u003c\/strong\u003e\u003cspan\u003e Suitable for interior decorating applications. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Exterior use \u003c\/strong\u003e\u003cspan\u003e Suitable for exterior decorating applications. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Paint compatibility \u003c\/strong\u003e\u003cspan\u003e Paints, emulsion, stains and varnishes. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Surface compatibility \u003c\/strong\u003e\u003cspan\u003e Smooth, rough and textured surfaces. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Handle \u003c\/strong\u003e\u003cspan\u003e Shaped wooden handle. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Storage feature \u003c\/strong\u003e\u003cspan\u003e Hanging hole in the handle. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Additional use \u003c\/strong\u003e\u003cspan\u003e Can also be used as a splash brush. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Operation \u003c\/strong\u003e\u003cspan\u003e Fully manual decorating tool. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003ei\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Specification note: \u003c\/strong\u003eThe source confirms the size, coating applications, surface types, shaped wooden handle with hanging hole and splash-brush use. Bristle and ferrule materials are not stated, so they are not claimed here.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e03\u003c\/span\u003e\u003cspan class=\"pts-section-title\"\u003e Use, Cleaning \u0026amp; Product Care \u003c\/span\u003e\u003cspan class=\"pts-section-toggle\"\u003e\u003cspan class=\"pts-hammer\"\u003e\u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cul class=\"pts-spec-list\"\u003e\n\u003cli\u003e\n\u003cstrong\u003e Before use \u003c\/strong\u003e\u003cspan\u003e Inspect the brush, handle and bristles for visible damage or excessive wear. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Surface preparation \u003c\/strong\u003e\u003cspan\u003e Ensure the work surface is suitably prepared for the selected coating. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Application \u003c\/strong\u003e\u003cspan\u003e Load the brush evenly and apply the coating using controlled strokes. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Textured surfaces \u003c\/strong\u003e\u003cspan\u003e Work the brush carefully into uneven areas without unnecessary force. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Paint selection \u003c\/strong\u003e\u003cspan\u003e Follow the coating manufacturer's application and drying instructions. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Cleaning \u003c\/strong\u003e\u003cspan\u003e Clean promptly after use using the method appropriate to the coating applied. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Drying \u003c\/strong\u003e\u003cspan\u003e Allow the brush to dry thoroughly before storage. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e Storage \u003c\/strong\u003e\u003cspan\u003e Store in a clean, dry location and use the hanging hole where convenient. \u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003e!\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Use note: \u003c\/strong\u003eFollow all safety, ventilation and handling instructions supplied with the paint, stain, varnish or other coating being applied.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-section\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cspan class=\"pts-section-no\"\u003e04\u003c\/span\u003e\u003cspan class=\"pts-section-title\"\u003e Packaging \u0026amp; Wholesale Supply \u003c\/span\u003e\u003cspan class=\"pts-section-toggle\"\u003e\u003cspan class=\"pts-hammer\"\u003e\u003cspan class=\"pts-hammer-neck\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"pts-section-body\"\u003e\n\u003cdiv class=\"pts-body-rail\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pts-body-content\"\u003e\n\u003cdiv class=\"pts-copy\"\u003e\n\u003cp\u003eOne Shopify selling unit is one individual 6-inch \/ 150mm wall brush. Each wholesale box contains 24 brushes. Each unit is priced at £17.44, giving a wholesale box value of £418.56. Additional boxes can be selected directly using the box quantity control above.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-layout\"\u003e\n\u003cdiv class=\"pts-wholesale-data\"\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eProduct\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e6″ \/ 150mm wall brush\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eBrush width\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e150mm \/ approximately 6″\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eHandle\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003eShaped wooden handle with hanging hole\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eSuitable coatings\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003ePaints, emulsion, stains \u0026amp; varnishes\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eUnit price\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e£17.44\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eBox quantity\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e24 wall brushes\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-row\"\u003e\n\u003cdiv class=\"pts-wholesale-key\"\u003eBox total\u003c\/div\u003e\n\u003cdiv class=\"pts-wholesale-value\"\u003e£418.56\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003caside class=\"pts-wholesale-summary\"\u003e\n\u003cdiv\u003e\n\u003cspan class=\"pts-summary-topline\"\u003e Wholesale box \u003c\/span\u003e\n\u003cdiv class=\"pts-summary-large\"\u003e£418.56\u003csmall\u003e 24 wall brushes \u003c\/small\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-summary-lines\"\u003e\n\u003cstrong\u003e £17.44 \u003c\/strong\u003e per wall brush\u003cbr\u003e\u003cstrong\u003e 6″ \/ 150mm \u003c\/strong\u003e brush width\u003cbr\u003e\u003cstrong\u003e 24 units \u003c\/strong\u003e per box\u003cbr\u003e\u003cstrong class=\"pts-orange\"\u003e £418.56 \u003c\/strong\u003e per wholesale box\u003c\/div\u003e\n\u003c\/aside\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pts-note\"\u003e\n\u003cdiv class=\"pts-note-icon\"\u003ei\u003c\/div\u003e\n\u003cdiv class=\"pts-note-copy\"\u003e\n\u003cstrong\u003e Wholesale calculation: \u003c\/strong\u003e1 box = 24 wall brushes × £17.44 per unit = £418.56.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function() {\n  function initWallBrushCard() {\n    var card = document.getElementById(\"pts-6in-150mm-wall-brush-card\");\n\n    if (!card || card.dataset.ptsBound === \"true\") return;\n\n    card.dataset.ptsBound = \"true\";\n\n    var minus = card.querySelector(\".pts-quantity-minus\");\n    var plus = card.querySelector(\".pts-quantity-plus\");\n    var input = card.querySelector(\".pts-quantity-input\");\n    var addButton = card.querySelector(\".pts-add-cart\");\n    var buyButton = card.querySelector(\".pts-buy-now\");\n    var totalValue = card.querySelector(\".pts-order-total-value\");\n    var totalMeta = card.querySelector(\".pts-order-total-meta\");\n    var status = card.querySelector(\".pts-purchase-status\");\n    var variantField = card.querySelector(\".pts-current-variant\");\n\n    var boxSize = parseInt(card.dataset.boxSize || \"24\", 10);\n    var unitPrice = parseFloat(card.dataset.unitPrice || \"17.44\");\n\n    function money(value) {\n      return \"£\" + Number(value).toLocaleString(\"en-GB\", {\n        minimumFractionDigits: 2,\n        maximumFractionDigits: 2\n      });\n    }\n\n    function getBoxes() {\n      var boxes = parseInt(input.value, 10);\n\n      if (isNaN(boxes) || boxes \u003c 1) {\n        boxes = 1;\n      }\n\n      return boxes;\n    }\n\n    function setStatus(message, type) {\n      if (!status) return;\n\n      status.className = \"pts-purchase-status\";\n\n      if (type) {\n        status.classList.add(\"is-\" + type);\n      }\n\n      status.textContent = message || \"\";\n    }\n\n    function refresh() {\n      var boxes = getBoxes();\n      var units = boxes * boxSize;\n      var total = units * unitPrice;\n\n      input.value = boxes;\n      minus.disabled = boxes \u003c= 1;\n\n      totalValue.textContent = money(total);\n\n      totalMeta.textContent =\n        boxes +\n        (boxes === 1 ? \" box\" : \" boxes\") +\n        \" · \" +\n        units +\n        \" brushes × \" +\n        money(unitPrice);\n\n      addButton.textContent =\n        boxes === 1\n          ? \"ADD BOX · \" + units + \" UNITS\"\n          : \"ADD \" + boxes + \" BOXES · \" + units + \" UNITS\";\n\n      buyButton.textContent =\n        \"BUY NOW · \" + money(total);\n    }\n\n    function isValidVariantId(value) {\n      if (value === undefined || value === null) {\n        return false;\n      }\n\n      var clean = String(value).trim();\n\n      if (!\/^\\d+$\/.test(clean)) {\n        return false;\n      }\n\n      var number = Number(clean);\n\n      return Number.isFinite(number) \u0026\u0026 number \u003e 0;\n    }\n\n    function readVariantFromField(field) {\n      if (!field) {\n        return null;\n      }\n\n      if (isValidVariantId(field.value)) {\n        return Number(field.value);\n      }\n\n      return null;\n    }\n\n    async function getVariantId() {\n      \/*\n        1. Hidden variant field inside this card.\n        Works when Shopify actually renders the Liquid value.\n      *\/\n      var directId = readVariantFromField(variantField);\n\n      if (directId) {\n        return directId;\n      }\n\n      \/*\n        2. Explicit ?variant=123456... parameter.\n      *\/\n      var urlVariant = new URLSearchParams(\n        window.location.search\n      ).get(\"variant\");\n\n      if (isValidVariantId(urlVariant)) {\n        return Number(urlVariant);\n      }\n\n      \/*\n        3. Native Shopify product form in the same section.\n      *\/\n      var section = card.closest(\".shopify-section\");\n\n      if (section) {\n        var sectionFields = section.querySelectorAll(\n          'form[action*=\"\/cart\/add\"] [name=\"id\"], ' +\n          'product-form [name=\"id\"], ' +\n          'input[name=\"id\"], select[name=\"id\"]'\n        );\n\n        for (var i = 0; i \u003c sectionFields.length; i++) {\n          var sectionId = readVariantFromField(sectionFields[i]);\n\n          if (sectionId) {\n            return sectionId;\n          }\n        }\n      }\n\n      \/*\n        4. Any native Shopify product form on this page.\n\n        Some themes render Product Description and the native\n        Add to Cart form in different Shopify sections, so limiting\n        the search to card.closest(\".shopify-section\") can fail.\n      *\/\n      var globalFields = document.querySelectorAll(\n        'form[action*=\"\/cart\/add\"] [name=\"id\"], ' +\n        'product-form [name=\"id\"], ' +\n        'input[name=\"id\"], select[name=\"id\"]'\n      );\n\n      for (var j = 0; j \u003c globalFields.length; j++) {\n        var globalId = readVariantFromField(globalFields[j]);\n\n        if (globalId) {\n          return globalId;\n        }\n      }\n\n      \/*\n        5. Common Shopify theme globals.\n      *\/\n      try {\n        if (\n          window.ShopifyAnalytics \u0026\u0026\n          ShopifyAnalytics.meta \u0026\u0026\n          isValidVariantId(ShopifyAnalytics.meta.selectedVariantId)\n        ) {\n          return Number(ShopifyAnalytics.meta.selectedVariantId);\n        }\n      } catch (error) {}\n\n      try {\n        if (\n          window.meta \u0026\u0026\n          meta.product \u0026\u0026\n          meta.product.variants \u0026\u0026\n          meta.product.variants.length\n        ) {\n          for (var m = 0; m \u003c meta.product.variants.length; m++) {\n            if (isValidVariantId(meta.product.variants[m].id)) {\n              return Number(meta.product.variants[m].id);\n            }\n          }\n        }\n      } catch (error) {}\n\n      \/*\n        6. FINAL FALLBACK:\n        Load the current Shopify product JSON directly.\n\n        This does NOT depend on Liquid being available in the card.\n        It therefore also works when the visual card is stored inside\n        Product Description, provided the script itself is allowed to run.\n\n        On a normal one-variant product such as this wall brush,\n        Shopify returns the exact variant ID we need.\n      *\/\n      try {\n        var productPath = window.location.pathname;\n\n        var canonical = document.querySelector(\n          'link[rel=\"canonical\"]'\n        );\n\n        if (canonical \u0026\u0026 canonical.href) {\n          try {\n            productPath = new URL(\n              canonical.href,\n              window.location.origin\n            ).pathname;\n          } catch (error) {}\n        }\n\n        productPath = productPath.replace(\/\\\/$\/, \"\");\n\n        if (productPath.indexOf(\"\/products\/\") !== -1) {\n          var productResponse = await fetch(\n            productPath + \".js\",\n            {\n              method: \"GET\",\n              headers: {\n                \"Accept\": \"application\/json\"\n              },\n              credentials: \"same-origin\"\n            }\n          );\n\n          if (productResponse.ok) {\n            var productData = await productResponse.json();\n\n            if (\n              productData \u0026\u0026\n              productData.variants \u0026\u0026\n              productData.variants.length\n            ) {\n              \/*\n                If the URL already had a variant ID we would have\n                returned it above. Otherwise use the first available\n                variant, falling back to the first variant.\n              *\/\n              for (var p = 0; p \u003c productData.variants.length; p++) {\n                if (\n                  productData.variants[p].available \u0026\u0026\n                  isValidVariantId(productData.variants[p].id)\n                ) {\n                  return Number(productData.variants[p].id);\n                }\n              }\n\n              if (isValidVariantId(productData.variants[0].id)) {\n                return Number(productData.variants[0].id);\n              }\n            }\n          }\n        }\n      } catch (error) {\n        console.error(\n          \"PTS product JSON variant lookup failed:\",\n          error\n        );\n      }\n\n      return null;\n    }\n\n    async function addToCart(goToCheckout) {\n      setStatus(\"Detecting product variant...\");\n\n      var variantId = await getVariantId();\n\n      if (!variantId) {\n        setStatus(\n          \"Unable to detect the Shopify product variant. Make sure this code is used on the actual product page.\",\n          \"error\"\n        );\n        return;\n      }\n\n      var boxes = getBoxes();\n      var units = boxes * boxSize;\n\n      addButton.disabled = true;\n      buyButton.disabled = true;\n\n      setStatus(\"Adding \" + units + \" wall brushes to cart...\");\n\n      try {\n        var root =\n          window.Shopify \u0026\u0026\n          Shopify.routes \u0026\u0026\n          Shopify.routes.root\n            ? Shopify.routes.root\n            : \"\/\";\n\n        var response = await fetch(root + \"cart\/add.js\", {\n          method: \"POST\",\n          headers: {\n            \"Content-Type\": \"application\/json\",\n            \"Accept\": \"application\/json\"\n          },\n          body: JSON.stringify({\n            items: [\n              {\n                id: variantId,\n                quantity: units\n              }\n            ]\n          })\n        });\n\n        var result = await response.json();\n\n        if (!response.ok) {\n          throw new Error(\n            result.description ||\n            result.message ||\n            \"Unable to add the product.\"\n          );\n        }\n\n        setStatus(\n          units + \" wall brushes added successfully.\",\n          \"success\"\n        );\n\n        document.dispatchEvent(\n          new CustomEvent(\"cart:refresh\", {\n            bubbles: true,\n            detail: result\n          })\n        );\n\n        document.dispatchEvent(\n          new CustomEvent(\"cart:updated\", {\n            bubbles: true,\n            detail: result\n          })\n        );\n\n        window.location.href =\n          goToCheckout\n            ? root + \"checkout\"\n            : root + \"cart\";\n\n      } catch (error) {\n        console.error(\"PTS cart error:\", error);\n\n        setStatus(\n          error \u0026\u0026 error.message\n            ? error.message\n            : \"Unable to add the product.\",\n          \"error\"\n        );\n\n      } finally {\n        addButton.disabled = false;\n        buyButton.disabled = false;\n      }\n    }\n\n    minus.addEventListener(\"click\", function() {\n      input.value = Math.max(1, getBoxes() - 1);\n      refresh();\n    });\n\n    plus.addEventListener(\"click\", function() {\n      input.value = getBoxes() + 1;\n      refresh();\n    });\n\n    input.addEventListener(\"input\", function() {\n      if (input.value === \"\") return;\n      refresh();\n    });\n\n    input.addEventListener(\"change\", function() {\n      refresh();\n    });\n\n    input.addEventListener(\"blur\", function() {\n      refresh();\n    });\n\n    addButton.addEventListener(\"click\", function() {\n      addToCart(false);\n    });\n\n    buyButton.addEventListener(\"click\", function() {\n      addToCart(true);\n    });\n\n    refresh();\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", initWallBrushCard);\n  } else {\n    initWallBrushCard();\n  }\n\n  document.addEventListener(\"shopify:section:load\", initWallBrushCard);\n})();\n\u003c\/script\u003e\n","brand":"My Store","offers":[{"title":"Default Title","offer_id":56825051382100,"sku":null,"price":17.44,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1063\/3117\/7300\/files\/03026_1.png?v=1786988723"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1063\/3117\/7300\/collections\/12345678_2.png?v=1787054014","url":"https:\/\/buildpro-wholesale.com\/collections\/decorating-surface-preparation-site-essentials.oembed","provider":"BUILDPRO WHOLESALE","version":"1.0","type":"link"}