{"product_id":"phase-2-functional-trainer","title":"Phase 2 Plate-Loaded Functional Trainer","description":"\u003cstyle\u003e\n    * {\n        box-sizing: border-box;\n    }\n\n    \/* ── Comparison table styles (preserved exactly) ── *\/\n    .comparison-container {\n        width: 100%;\n        max-width: 1400px;\n        margin: 0 auto;\n        padding: 20px;\n        font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n    }\n\n    .comparison-title {\n        text-align: center;\n        font-size: 28px;\n        font-weight: 700;\n        margin-bottom: 30px;\n        color: #333;\n    }\n\n    .comparison-wrapper {\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n    }\n\n    .comparison-table {\n        width: 100%;\n        border-collapse: collapse;\n        min-width: 800px;\n        background: #fff;\n        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n        border-radius: 4px;\n        overflow: hidden;\n    }\n\n    .comparison-table th,\n    .comparison-table td {\n        padding: 15px;\n        text-align: left;\n        border: 1px solid #e0e0e0;\n        font-family: Helvetica, Arial, sans-serif;\n    }\n\n    .comparison-table thead tr:first-child th {\n        background: #f8f8f8;\n        font-weight: 600;\n        color: #333;\n        vertical-align: top;\n        position: relative;\n    }\n\n    .product-header {\n        text-align: center;\n        padding: 20px 15px !important;\n    }\n\n    .product-image {\n        width: 100%;\n        max-width: 180px;\n        height: auto;\n        margin: 0 auto 15px;\n        display: block;\n        border: 1px solid #e0e0e0;\n        border-radius: 4px;\n    }\n\n    .product-name {\n        font-size: 16px;\n        font-weight: 700;\n        color: #C4262E;\n        margin-bottom: 10px;\n        min-height: 40px;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n    }\n\n    .loading-text {\n        color: #999;\n        font-size: 14px;\n    }\n\n    .comparison-table tbody tr:first-child td {\n        font-weight: 600;\n        background: #fafafa;\n    }\n\n    .comparison-table tbody tr:nth-child(even) {\n        background: #f9f9f9;\n    }\n\n    .comparison-table tbody tr:hover {\n        background: #f5f5f5;\n    }\n\n    .row-label {\n        font-weight: 600;\n        color: #333;\n        background: #fafafa !important;\n        white-space: nowrap;\n    }\n\n    .price-cell {\n        font-size: 18px;\n        font-weight: 700;\n        color: #C4262E;\n    }\n\n    .view-product-btn {\n        display: inline-block;\n        padding: 10px 20px;\n        background: #C4262E;\n        color: #fff;\n        text-decoration: none;\n        border-radius: 4px;\n        font-weight: 600;\n        transition: background 0.3s ease;\n        text-align: center;\n        font-family: Helvetica, Arial, sans-serif;\n    }\n\n    .view-product-btn:hover {\n        background: #a01f25;\n        color: #fff;\n    }\n\n    .highlight-yes {\n        color: #28a745;\n        font-weight: 600;\n    }\n\n    .highlight-no {\n        color: #999;\n    }\n\n    @media (max-width: 768px) {\n        .comparison-container {\n            padding: 10px;\n        }\n\n        .comparison-title {\n            font-size: 22px;\n            margin-bottom: 20px;\n        }\n\n        .comparison-table {\n            display: table !important;\n            min-width: 800px;\n        }\n\n        .comparison-table thead {\n            display: table-header-group !important;\n        }\n\n        .comparison-table tbody {\n            display: table-row-group !important;\n        }\n\n        .comparison-table tbody tr {\n            display: table-row !important;\n            margin-bottom: 0 !important;\n            border: none !important;\n            border-radius: 0 !important;\n        }\n\n        .comparison-table tbody tr td {\n            display: table-cell !important;\n            grid-template-columns: none !important;\n            border: 1px solid #e0e0e0 !important;\n            border-bottom: 1px solid #e0e0e0 !important;\n        }\n\n        .comparison-table tbody tr td:first-child {\n            background: #fafafa !important;\n            color: #333 !important;\n            font-weight: 600 !important;\n            text-align: left !important;\n        }\n\n        .comparison-table tbody tr td:before {\n            content: none !important;\n        }\n\n        .comparison-table th,\n        .comparison-table td {\n            padding: 10px 8px;\n            font-size: 13px;\n        }\n\n        .product-image {\n            max-width: 120px;\n        }\n\n        .product-name {\n            font-size: 14px;\n            min-height: 35px;\n        }\n\n        .price-cell {\n            font-size: 16px;\n        }\n\n        .view-product-btn {\n            padding: 8px 15px;\n            font-size: 13px;\n        }\n\n        .row-label {\n            min-width: 120px;\n            font-size: 12px !important;\n        }\n    }\n\n    @media (max-width: 480px) {\n\n        .comparison-table th,\n        .comparison-table td {\n            padding: 8px 5px;\n            font-size: 12px;\n        }\n\n        .product-image {\n            max-width: 100px;\n        }\n\n        .product-name {\n            font-size: 12px;\n        }\n\n        .row-label {\n            min-width: 100px;\n            font-size: 11px !important;\n        }\n    }\n\n    \/* ── ms-desc design system ── *\/\n    .ms-desc {\n        font-size: 16px;\n        color: #000;\n        line-height: 1.6;\n    }\n\n    .ms-desc .ms-hero-heading {\n        font-size: 28px;\n        font-weight: 700;\n        color: #C4262E;\n        margin: 0 0 16px;\n    }\n\n    .ms-desc .ms-lead {\n        font-size: 17px;\n        color: #000;\n        margin: 0 0 20px;\n        line-height: 1.6;\n    }\n\n    .ms-desc p {\n        margin: 0 0 14px;\n        color: #000;\n    }\n\n    .ms-desc .ms-sub-heading {\n        font-size: 18px;\n        font-weight: 700;\n        color: #C4262E;\n        border-bottom: 2px solid #C4262E;\n        display: inline-block;\n        margin: 24px 0 14px;\n        padding-bottom: 3px;\n    }\n\n    \/* ms-features: 2-col grid, red left border *\/\n    .ms-desc .ms-features {\n        display: grid;\n        grid-template-columns: 1fr 1fr;\n        gap: 0;\n        margin: 16px 0 24px;\n        border: 1px solid #e0e0e0;\n        border-radius: 4px;\n        overflow: hidden;\n    }\n\n    .ms-desc .ms-features .ms-feature {\n        padding: 14px 16px;\n        border-left: 4px solid #C4262E;\n        border-bottom: 1px solid #e0e0e0;\n        background: #fff;\n    }\n\n    \/* Remove the bottom border only from items that are genuinely in the last visual row of the 2-col grid.\n       Two cases: an even total count means the last 2 items form the final row; an odd total count means\n       the very last item sits alone in its own final row (and spans full width via the rule below), so only\n       it should lose its border, the second-to-last item is NOT in the final row and must keep its divider. *\/\n    .ms-desc .ms-features:not(.ms-features--odd) .ms-feature:nth-last-child(-n+2) {\n        border-bottom: none;\n    }\n\n    .ms-desc .ms-features.ms-features--odd .ms-feature:last-child {\n        border-bottom: none;\n    }\n\n    .ms-desc .ms-features .ms-feature:nth-last-child(1):nth-child(odd) {\n        border-bottom: none;\n        grid-column: span 2;\n    }\n\n    \/* ms-features--3col: even 3-column layout for the top highlights grid, avoids the 2-then-1 lopsided row *\/\n    .ms-desc .ms-features.ms-features--3col {\n        grid-template-columns: repeat(3, 1fr);\n    }\n\n    .ms-desc .ms-features.ms-features--3col .ms-feature {\n        grid-column: span 1 !important;\n        border-bottom: none;\n        border-right: 1px solid #e0e0e0;\n    }\n\n    .ms-desc .ms-features.ms-features--3col .ms-feature:last-child {\n        border-right: none;\n    }\n\n    .ms-desc .ms-features.ms-features--3col .ms-feature span {\n        word-wrap: break-word;\n        overflow-wrap: break-word;\n    }\n\n    .ms-desc .ms-feature strong {\n        display: block;\n        font-weight: 700;\n        color: #000;\n        margin-bottom: 2px;\n    }\n\n    .ms-desc .ms-feature span {\n        font-size: 14px;\n        color: #818A8F;\n    }\n\n    \/* ms-benefits: 3-col grid, red top border — used here for warranty stats *\/\n    .ms-desc .ms-benefits {\n        display: grid;\n        grid-template-columns: repeat(3, 1fr);\n        gap: 0;\n        margin: 0 0 24px;\n        border: 1px solid #e0e0e0;\n        border-radius: 4px;\n        overflow: hidden;\n    }\n\n    .ms-desc .ms-benefits .ms-benefit {\n        padding: 20px 16px;\n        border-top: 4px solid #C4262E;\n        border-right: 1px solid #e0e0e0;\n        background: #fff;\n        text-align: left;\n    }\n\n    .ms-desc .ms-benefits .ms-benefit:last-child {\n        border-right: none;\n    }\n\n    .ms-desc .ms-benefit .ms-stat {\n        font-size: 28px;\n        font-weight: 700;\n        color: #C4262E;\n        display: block;\n        margin-bottom: 4px;\n    }\n\n    .ms-desc .ms-benefit .ms-label {\n        font-size: 14px;\n        color: #818A8F;\n        display: block;\n    }\n\n    \/* ms-callout: red block (shimmer removed per request) *\/\n    .ms-desc .ms-callout {\n        background: #000000;\n        color: #fff;\n        padding: 20px 24px;\n        margin: 28px 0 24px;\n        font-size: 18px;\n        font-weight: 700;\n        line-height: 1.4;\n        border-radius: 4px;\n        position: relative;\n        overflow: hidden;\n    }\n\n    .ms-desc .ms-callout .ms-callout-instruction {\n        display: block;\n        margin-top: 10px;\n    }\n\n    \/* Big-three centrepiece reuses ms-benefits with text headings *\/\n    .ms-desc .ms-benefits.ms-big-three .ms-stat {\n        font-size: 19px;\n        line-height: 1.25;\n    }\n\n    .ms-desc .ms-feature strong a {\n        color: #C4262E;\n        text-decoration: none;\n    }\n\n    .ms-desc .ms-feature strong a:hover {\n        text-decoration: underline;\n    }\n\n    .ms-desc .ms-feature strong a::after {\n        content: '';\n        display: inline-block;\n        width: 12px;\n        height: 12px;\n        margin-left: 5px;\n        vertical-align: -1px;\n        background-image: url(\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23C4262E%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M18%2013v6a2%202%200%200%201-2%202H5a2%202%200%200%201-2-2V8a2%202%200%200%201%202-2h6%27%2F%3E%3Cpolyline%20points%3D%2715%203%2021%203%2021%209%27%2F%3E%3Cline%20x1%3D%2710%27%20y1%3D%2714%27%20x2%3D%2721%27%20y2%3D%273%27%2F%3E%3C%2Fsvg%3E\");\n        background-size: contain;\n        background-repeat: no-repeat;\n    }\n\n    \/* ms-notes: small print *\/\n    .ms-desc .ms-notes {\n        font-size: 13px;\n        color: #818A8F;\n        margin: 0 0 14px;\n        line-height: 1.5;\n    }\n\n    \/* ms-faq: checkbox accordion, no JS *\/\n    .ms-desc .ms-faq {\n        margin: 0 0 24px;\n    }\n\n    .ms-desc .ms-faq-item {\n        border-bottom: 1px solid #e0e0e0;\n    }\n\n    .ms-desc .ms-faq-item input[type=\"checkbox\"] {\n        display: none;\n    }\n\n    .ms-desc .ms-faq-item label {\n        display: block;\n        padding: 14px 0 14px 28px;\n        font-weight: 700;\n        cursor: pointer;\n        position: relative;\n        color: #000;\n    }\n\n    .ms-desc .ms-faq-item label::after {\n        content: '+';\n        position: absolute;\n        left: 0;\n        top: 50%;\n        transform: translateY(-50%);\n        font-size: 20px;\n        color: #C4262E;\n        font-weight: 400;\n    }\n\n    .ms-desc .ms-faq-item input:checked + label::after {\n        content: '−';\n    }\n\n    .ms-desc .ms-faq-answer {\n        display: none;\n        padding: 0 0 14px;\n        color: #000;\n    }\n\n    .ms-desc .ms-faq-answer \u003e div + div {\n        margin-top: 14px;\n    }\n\n    .ms-desc \u003e .p + .p {\n        margin-top: 14px;\n    }\n\n    .ms-desc .ms-faq-item input:checked ~ .ms-faq-answer {\n        display: block;\n    }\n\n    \/* Delivery tab prose *\/\n    .ms-desc .ms-delivery-grid {\n        display: grid;\n        grid-template-columns: 1fr 1fr;\n        gap: 24px;\n        margin: 0 0 24px;\n    }\n\n    \/* Warranty tab *\/\n    .ms-desc .ms-warranty-list {\n        margin: 0 0 20px;\n        padding-left: 20px;\n    }\n\n    .ms-desc .ms-warranty-list li {\n        margin-bottom: 8px;\n        color: #000;\n    }\n\n    .ms-desc .ms-warranty-list li ul {\n        margin-top: 6px;\n        padding-left: 18px;\n    }\n\n    .ms-desc .ms-warranty-list li ul li {\n        list-style-type: circle;\n        font-size: 14px;\n        color: #818A8F;\n    }\n\n    \/* Optional extras list *\/\n    .ms-desc .ms-list {\n        margin: 0 0 20px;\n        padding-left: 20px;\n    }\n\n    .ms-desc .ms-list li {\n        margin-bottom: 6px;\n        color: #000;\n    }\n\n    .ms-desc .ms-list li a {\n        color: #C4262E;\n        text-decoration: none;\n    }\n\n    .ms-desc .ms-list li a:hover {\n        text-decoration: underline;\n    }\n\n    \/* Package links list *\/\n    .ms-desc .ms-package-list {\n        margin: 0 0 20px;\n        padding-left: 20px;\n    }\n\n    .ms-desc .ms-package-list li {\n        margin-bottom: 8px;\n        color: #000;\n    }\n\n    .ms-desc .ms-package-list li a {\n        color: #C4262E;\n        text-decoration: none;\n        font-weight: 700;\n    }\n\n    .ms-desc .ms-package-list li a:hover {\n        text-decoration: underline;\n    }\n\n    \/* ms-gallery: image + copy blocks *\/\n    .ms-gallery {\n        margin: 0 0 24px;\n    }\n\n    .ms-gallery-row {\n        display: flex;\n        gap: 20px;\n        margin-bottom: 20px;\n    }\n\n    .ms-gallery-row:last-child {\n        margin-bottom: 0;\n    }\n\n    .ms-gallery-block {\n        flex: 1;\n        min-width: 0;\n    }\n\n    .ms-gallery-block img {\n        width: 100%;\n        aspect-ratio: 1 \/ 1;\n        object-fit: cover;\n        display: block;\n        margin-bottom: 14px;\n    }\n\n    \/* Dot indicators — hidden on desktop *\/\n    .ms-gallery-dots {\n        display: none;\n    }\n\n    @media (max-width: 768px) {\n\n        .ms-gallery {\n            overflow: hidden;\n            position: relative;\n            margin: 0 0 12px;\n        }\n\n        \/* Track — width and transform set by JS in pixels *\/\n        .ms-gallery-row {\n            display: flex;\n            gap: 0;\n            margin: 0;\n            transition: transform 0.35s ease;\n            will-change: transform;\n        }\n\n        \/* Each slide — width set by JS; horizontal padding gives breathing room between slides *\/\n        .ms-gallery-block {\n            flex-shrink: 0;\n            box-sizing: border-box;\n            padding: 0 0 16px;\n        }\n\n        .ms-gallery-block img {\n            aspect-ratio: 1 \/ 1;\n            height: auto;\n            width: 100%;\n            display: block;\n            margin-bottom: 12px;\n        }\n\n        \/* Dot indicators *\/\n        .ms-gallery-dots {\n            display: flex;\n            justify-content: center;\n            gap: 6px;\n            margin: 0 0 24px;\n        }\n\n        .ms-gallery-dots span {\n            width: 8px;\n            height: 8px;\n            border-radius: 50%;\n            background: #e0e0e0;\n            display: block;\n            transition: background 0.2s;\n            cursor: pointer;\n        }\n\n        .ms-gallery-dots span.active {\n            background: #C4262E;\n        }\n\n    }\n\n    @media (max-width: 768px) {\n        .ms-desc .ms-features {\n            grid-template-columns: 1fr;\n        }\n\n        .ms-desc .ms-features .ms-feature:nth-last-child(-n+2) {\n            border-bottom: 1px solid #e0e0e0 !important;\n        }\n\n        .ms-desc .ms-features .ms-feature:last-child {\n            border-bottom: none !important;\n        }\n\n        .ms-desc .ms-features .ms-feature:nth-last-child(1):nth-child(odd) {\n            grid-column: span 1;\n        }\n\n        .ms-desc .ms-features.ms-features--3col {\n            grid-template-columns: 1fr;\n        }\n\n        .ms-desc .ms-features.ms-features--3col .ms-feature {\n            border-right: none;\n            border-bottom: 1px solid #e0e0e0;\n        }\n\n        .ms-desc .ms-features.ms-features--3col .ms-feature:last-child {\n            border-bottom: none;\n        }\n\n        .ms-desc .ms-benefits {\n            grid-template-columns: 1fr;\n        }\n\n        .ms-desc .ms-benefits .ms-benefit {\n            border-right: none;\n            border-bottom: 1px solid #e0e0e0;\n        }\n\n        .ms-desc .ms-benefits .ms-benefit:last-child {\n            border-bottom: none;\n        }\n\n        .ms-desc .ms-delivery-grid {\n            grid-template-columns: 1fr;\n            gap: 0;\n        }\n    }\n    \/* ms-testimonials *\/\n    .ms-desc .ms-testimonials {\n        display: grid;\n        grid-template-columns: repeat(3, 1fr);\n        gap: 16px;\n        margin: 0 0 28px;\n    }\n\n    .ms-desc .ms-testimonial {\n        border: 1px solid #e0e0e0;\n        border-top: 3px solid #C4262E;\n        border-radius: 4px;\n        padding: 18px;\n        background: #fff;\n    }\n\n    .ms-desc .ms-testimonial-stars {\n        font-size: 16px;\n        color: #00b67a;\n        letter-spacing: 2px;\n        margin-bottom: 10px;\n    }\n\n    .ms-desc .ms-testimonial-stars::before {\n        content: '\\2605\\2605\\2605\\2605\\2605';\n    }\n\n    .ms-desc .ms-testimonial-quote {\n        font-size: 15px;\n        color: #000;\n        line-height: 1.6;\n        margin-bottom: 12px;\n    }\n\n    .ms-desc .ms-testimonial-author {\n        font-weight: 700;\n        color: #000;\n        font-size: 15px;\n    }\n\n    .ms-desc .ms-testimonial-meta {\n        font-size: 13px;\n        color: #818A8F;\n    }\n\n    \/* Track wrapper: invisible on desktop so grid layout is unchanged *\/\n    .ms-desc .ms-testimonials-track {\n        display: contents;\n    }\n\n    \/* Testimonials dots — hidden on desktop *\/\n    .ms-testimonials-dots {\n        display: none;\n    }\n\n    @media (max-width: 768px) {\n        .ms-desc .ms-testimonials {\n            overflow: hidden;\n            position: relative;\n            display: block;\n            transition: height 0.35s ease;\n            margin: 0 0 12px;\n        }\n\n        .ms-desc .ms-testimonials-track {\n            display: flex;\n            transition: transform 0.35s ease;\n            will-change: transform;\n        }\n\n        .ms-desc .ms-testimonial {\n            flex-shrink: 0;\n            box-sizing: border-box;\n        }\n\n        .ms-testimonials-dots {\n            display: flex;\n            justify-content: center;\n            gap: 6px;\n            margin: 0 0 24px;\n        }\n\n        .ms-testimonials-dots span {\n            width: 8px;\n            height: 8px;\n            border-radius: 50%;\n            background: #e0e0e0;\n            display: block;\n            transition: background 0.2s;\n            cursor: pointer;\n        }\n\n        .ms-testimonials-dots span.active {\n            background: #C4262E;\n        }\n    }\n\n    \/* ms-use-cases: reuses sub-heading pattern, simple stacked blocks *\/\n    .ms-desc .ms-use-case {\n        margin: 0 0 18px;\n    }\n\n    .ms-desc .ms-use-case:last-child {\n        margin-bottom: 24px;\n    }\n\n    .ms-desc .ms-use-case-title {\n        font-weight: 700;\n        color: #000;\n        display: block;\n        margin-bottom: 4px;\n    }\n\n    \/* ms-about-plates: icon-marked split list inside a card matching the lead gen CTA style, mobile-first single column, desktop 2-col *\/\n    .ms-desc .ms-about-plates {\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n        margin: 8px 0 28px;\n        background: #fff;\n        border: 1px solid #e0e0e0;\n        border-left: 4px solid #C4262E;\n        border-radius: 4px;\n        padding: 20px 24px;\n    }\n\n    .ms-desc .ms-about-plates-col {\n        flex: 1;\n        border-bottom: 1px solid #e0e0e0;\n        padding-bottom: 16px;\n    }\n\n    .ms-desc .ms-about-plates-col:last-child {\n        border-bottom: none;\n        padding-bottom: 0;\n    }\n\n    .ms-desc .ms-about-plates-title {\n        font-weight: 700;\n        font-size: 15px;\n        color: #000;\n        margin-bottom: 14px;\n    }\n\n    .ms-desc .ms-about-plates-list {\n        margin: 0;\n        padding-left: 18px;\n        list-style: disc;\n    }\n\n    .ms-desc .ms-about-plates-list li {\n        padding: 0;\n        margin-bottom: 8px;\n        font-size: 15px;\n        color: #000;\n        line-height: 1.5;\n    }\n\n    .ms-desc .ms-about-plates-list li:last-child {\n        margin-bottom: 0;\n    }\n\n    @media (min-width: 769px) {\n        .ms-desc .ms-about-plates-col {\n            border-bottom: none;\n            padding-bottom: 0;\n            padding-right: 24px;\n            border-right: 1px solid #e0e0e0;\n        }\n\n        .ms-desc .ms-about-plates-col:last-child {\n            padding-right: 0;\n            border-right: none;\n        }\n    }\n\n    @media (min-width: 769px) {\n        .ms-desc .ms-about-plates {\n            flex-direction: row;\n            gap: 40px;\n        }\n    }\n\n    \/* Comparison table — current product highlight *\/\n    .comparison-table th.is-current {\n        background: #fdecec !important;\n        border-top: 3px solid #C4262E !important;\n    }\n\n    .comparison-table td.is-current {\n        background: #fdecec !important;\n    }\n\n    .current-badge {\n        display: inline-block;\n        background: #C4262E;\n        color: #fff;\n        font-size: 11px;\n        font-weight: 700;\n        padding: 3px 8px;\n        border-radius: 4px;\n        margin-bottom: 10px;\n    }\n\n    \/* Info icon + tooltip for Cable Ratio row *\/\n    .row-label-info {\n        position: relative;\n        display: inline-flex;\n        align-items: center;\n        gap: 6px;\n        white-space: nowrap;\n    }\n\n    .info-icon {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        width: 16px;\n        height: 16px;\n        border-radius: 50%;\n        background: #818A8F;\n        color: #fff;\n        font-size: 11px;\n        font-weight: 700;\n        font-style: normal;\n        cursor: pointer;\n        flex-shrink: 0;\n    }\n\n    .info-tooltip {\n        display: none;\n        position: absolute;\n        top: 100%;\n        left: 0;\n        padding-top: 8px;\n        width: 240px;\n        z-index: 10;\n    }\n\n    .row-label-info:hover .info-tooltip,\n    .info-icon:focus + .info-tooltip,\n    .info-tooltip:focus-within {\n        display: block;\n    }\n\n    .info-tooltip-inner {\n        background: #fff;\n        border: 1px solid #e0e0e0;\n        border-radius: 4px;\n        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n        padding: 14px;\n        font-size: 13px;\n        font-weight: 400;\n        line-height: 1.5;\n        color: #000;\n        white-space: normal;\n        display: block;\n    }\n\n    .info-tooltip a {\n        color: #C4262E;\n        text-decoration: none;\n        font-weight: 700;\n    }\n\n    .info-tooltip a:hover {\n        text-decoration: underline;\n    }\n\n    \/* PLACEHOLDER highlighting so unresolved content is easy to scan for *\/\n    .ms-placeholder {\n        background: #fff3cd;\n        color: #856404;\n        font-weight: 700;\n        padding: 1px 4px;\n        border-radius: 3px;\n    }\n\u003c\/style\u003e\n\u003cdiv class=\"productDetailsTabArea\"\u003e\n\u003cdiv id=\"horizontalTab\"\u003e\n\u003cul class=\"tabHeader FourItems\"\u003e\n\u003cli\u003e\u003ca href=\"#tab-1\"\u003eDescription\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"#tab-2\"\u003eDelivery\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"#tab-3\"\u003eWarranty\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"#tab-4\"\u003eManuals\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c!-- ── TAB 1: Description ── --\u003e\n\u003cdiv class=\"tabContent\" id=\"tab-1\"\u003e\n\u003cdiv class=\"ms-desc\"\u003e\n\u003cdiv class=\"ms-hero-heading\"\u003eThe all-in-one trainer that'll fit your space and budget\u003c\/div\u003e\n\u003cdiv class=\"ms-lead\"\u003eA smith machine, dual cable system and squat rack, all in a unit below 2 metres in height. If you've found the other options out there to be either too tall or too expensive, then this is the rack to choose.\u003c\/div\u003e\n\u003cdiv class=\"ms-features\"\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eThree gym essentials in one\u003c\/strong\u003e \u003cspan\u003eA squat rack, smith machine and dual cables cover just about every major gym exercise. No wasted space, no limits to your training.\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eZero-gravity smith machine\u003c\/strong\u003e \u003cspan\u003eA counterbalanced smith bar with an almost-weightless base resistance, providing a much friendlier starting point for beginners.\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eFits most spaces\u003c\/strong\u003e \u003cspan\u003eAt only 2m tall, this is one of the most compact all-in-one trainers on the market. The plate-loaded system still provides plenty of cable travel, so its height won't restrict you.\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003e0% finance available\u003c\/strong\u003e \u003cspan\u003eSpread the cost of your rack over 12 months at 0% interest. This can work out cheaper than the family's gym memberships, and the difference? The equipment's yours to keep.\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-sub-heading\"\u003eThe winning all-in-one formula, made plate-loaded to be more affordable\u003c\/div\u003e\n\u003cdiv class=\"ms-desc p\"\u003ePlate-loaded racks cost less than their pin-loaded counterparts since they don't come with included weight stacks for the cables. Instead, users load the horns with the same weight plates they use on the barbell and smith machine. Now you can experience all the benefits of having three gym machines available to you without the associated cost.\u003c\/div\u003e\n\u003cdiv style=\"position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; border-radius: 4px; margin: 24px 0;\"\u003e\u003ciframe src=\"https:\/\/www.youtube.com\/embed\/UyEGk4sUG2A\" title=\"P2 Plate-Loaded Functional Trainer\" style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%;\"\u003e\u003c\/iframe\u003e\u003c\/div\u003e\n\u003cdiv class=\"ms-sub-heading\"\u003eThree training stations\u003c\/div\u003e\n\u003cdiv class=\"ms-use-case\"\u003e\n\u003cspan class=\"ms-use-case-title\"\u003eSquat \u0026amp; power rack\u003c\/span\u003e\n\u003cdiv class=\"ms-desc p\"\u003eUse the included J-hooks and spotter arms for all of your traditional barbell lifts. With a max load of 286kg, this is futureproofed for advanced users the same as for new lifters.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-use-case\"\u003e\n\u003cspan class=\"ms-use-case-title\"\u003eDual cables\u003c\/span\u003e\n\u003cdiv class=\"ms-desc p\"\u003eThe two cable pulleys are set up on a 1:1 ratio, meaning you feel every kilogram of weight you load. These can be used individually for exercises like tricep pushdowns and weighted crunches, or together for chest flys, rear delt flys and Bayesian curls.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-use-case\"\u003e\n\u003cspan class=\"ms-use-case-title\"\u003eSmith machine\u003c\/span\u003e\n\u003cdiv class=\"ms-desc p\"\u003eThe counterbalanced smith has an almost-weightless base resistance. This makes it more beginner-friendly and enables an exceptionally smooth glide. With a max load of 120kg, it's well-suited for Smith favourites like incline bench and split squats.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-gallery\"\u003e\n\u003cdiv class=\"ms-gallery-row\"\u003e\n\u003cdiv class=\"ms-gallery-block\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2602\/1472\/files\/under-2m-all-in-one-gym-trainer.jpg?v=1783671496\" alt=\"P2 Functional Trainer in a low-ceiling space\"\u003e\n\u003cdiv\u003eFits where most other racks don't. At only 2m tall, this is the most compact all-in-one trainer we produce and is made for rooms that couldn't previously house a rack like this.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-gallery-block\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2602\/1472\/files\/aluminium-pulley-wheels-on-cable-machine.jpg?v=1783671495\" alt=\"P2 Functional Trainer aluminium pulley wheels\"\u003e\n\u003cdiv\u003eWe use aluminium pulley wheels throughout the machine for a smooth, consistent pull on every rep. Very few all-in-one trainers at this price point can say the same.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-gallery-block\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2602\/1472\/files\/plate-loaded-functional-trainer.jpg?v=1783671495\" alt=\"P2 Functional Trainer counterbalanced smith machine\"\u003e\n\u003cdiv\u003eThe three things people want from a home gym are a squat rack, smith machine and cables. We've put all of them into a single frame at a price that's genuinely accessible.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-gallery-dots\"\u003e\n\u003cspan class=\"active\"\u003e\u003c\/span\u003e \u003cspan\u003e\u003c\/span\u003e \u003cspan\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-faq\"\u003e\n\u003cdiv class=\"ms-faq-item\"\u003e\n\u003cinput type=\"checkbox\" id=\"faq-specs\"\u003e \u003clabel for=\"faq-specs\"\u003eFull specifications\u003c\/label\u003e\n\u003cdiv class=\"ms-faq-answer\"\u003e\n\u003cdiv class=\"ms-features\"\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eTotal height\u003c\/strong\u003e \u003cspan\u003e2m\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eTotal width\u003c\/strong\u003e \u003cspan\u003e2060mm\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eTotal depth\u003c\/strong\u003e \u003cspan\u003e1660mm\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eNet weight\u003c\/strong\u003e \u003cspan\u003e246kg\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eFrame\u003c\/strong\u003e \u003cspan\u003e60 x 60 x 2mm\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eHole spacing\u003c\/strong\u003e \u003cspan\u003e10mm increasing to 35mm (Westside spacing)\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eHole size\u003c\/strong\u003e \u003cspan\u003e15mm\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eWeight capacity\u003c\/strong\u003e \u003cspan\u003e286kg\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-faq-item\"\u003e\n\u003cinput type=\"checkbox\" id=\"faq-included\"\u003e \u003clabel for=\"faq-included\"\u003eWhat's included\u003c\/label\u003e\n\u003cdiv class=\"ms-faq-answer\"\u003e\n\u003cdiv class=\"ms-features\"\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eSmith machine\u003c\/strong\u003e \u003cspan\u003eCounterbalanced, max load of 120kg\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eDual cable system\u003c\/strong\u003e \u003cspan\u003ePlate-loaded and on a 1:1 ratio\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eMulti-grip pull-up bar\u003c\/strong\u003e \u003cspan\u003eFor wide and close grips\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eJ-hooks \u0026amp; spotter arms\u003c\/strong\u003e \u003cspan\u003eFor barbell lifts\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003e2 x D-handles\u003c\/strong\u003e \u003cspan\u003eFor flys, lateral raises and presses\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003e6 x weight plate storage horns\u003c\/strong\u003e \u003cspan\u003eFor keeping plates neat and nearby\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eRear storage hooks\u003c\/strong\u003e \u003cspan\u003eFor keeping accessories accessible\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eLandmine attachment\u003c\/strong\u003e \u003cspan\u003eTakes 1 and 2-inch barbells\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\u003cstrong\u003eLat pulldown bar\u003c\/strong\u003e\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\u003cstrong\u003eShort straight bar\u003c\/strong\u003e\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\u003cstrong\u003eAnkle strap\u003c\/strong\u003e\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eBarbell shoulder pad\u003c\/strong\u003e \u003cspan\u003eFits the Smith or your own barbell\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-faq-item\"\u003e\n\u003cinput type=\"checkbox\" id=\"faq-extras\"\u003e \u003clabel for=\"faq-extras\"\u003eOptional extras\u003c\/label\u003e\n\u003cdiv class=\"ms-faq-answer\"\u003e\n\u003cdiv class=\"ms-features\"\u003e\n\u003cdiv class=\"ms-feature\"\u003e\u003cstrong\u003e\u003ca href=\"https:\/\/musclesquad.com\/products\/musclesquad-phase-2-jammer-arms-v2\" rel=\"noopener\" target=\"_blank\"\u003eJammer Arms\u003c\/a\u003e\u003c\/strong\u003e\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\u003cstrong\u003e\u003ca href=\"https:\/\/musclesquad.com\/products\/musclesquad-phase-2-bull-horn-dip-handle-attachment\" rel=\"noopener\" target=\"_blank\"\u003eBull Horn Dip Handle\u003c\/a\u003e\u003c\/strong\u003e\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\u003cstrong\u003e\u003ca href=\"https:\/\/musclesquad.com\/products\/musclesquad-phase-2-pair-of-monolifts\" rel=\"noopener\" target=\"_blank\"\u003eMonolifts\u003c\/a\u003e\u003c\/strong\u003e\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\u003cstrong\u003e\u003ca href=\"https:\/\/musclesquad.com\/products\/musclesquad-phase-2-dual-dip-attachment\" rel=\"noopener\" target=\"_blank\"\u003eDual Dip Handles\u003c\/a\u003e\u003c\/strong\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-sub-heading\"\u003eThe plate-loaded trade off\u003c\/div\u003e\n\u003cdiv class=\"ms-about-plates\"\u003e\n\u003cdiv class=\"ms-about-plates-col\"\u003e\n\u003cdiv class=\"ms-about-plates-title\"\u003eWhat you get\u003c\/div\u003e\n\u003cul class=\"ms-about-plates-list\"\u003e\n\u003cli\u003eLower price than pin-loaded options\u003c\/li\u003e\n\u003cli\u003e1:1 ratio, so a 20kg weight plate provides 20kg of resistance\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-about-plates-col\"\u003e\n\u003cdiv class=\"ms-about-plates-title\"\u003eWhat to consider\u003c\/div\u003e\n\u003cul class=\"ms-about-plates-list\"\u003e\n\u003cli\u003eChanging weight on the cables takes longer than a pin-loaded machine\u003c\/li\u003e\n\u003cli\u003eChange plates or light tri-grip weights are highly recommended for small increment jumps\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-sub-heading\"\u003eSave with a full gym package\u003c\/div\u003e\n\u003cdiv class=\"ms-desc p\"\u003eYou can buy the P2 Functional Trainer as part of a package for a group discount. Each set includes the rack, our Phase 2 Bench, Phase 1 7ft Olympic Barbell and your choice of weight plates.\u003c\/div\u003e\n\u003cdiv class=\"ms-features\"\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eRubber Tri-Grip\u003c\/strong\u003e \u003cspan\u003eMost popular\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eRubber Bumper\u003c\/strong\u003e \u003cspan\u003eOlympic style\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eCrumb Rubber Bumper\u003c\/strong\u003e \u003cspan\u003eQuietest\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eCompetition Metal Core\u003c\/strong\u003e \u003cspan\u003eThinnest profile\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eRubber Coloured Bumper\u003c\/strong\u003e \u003cspan\u003eCompetition colours\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eColoured Competition Metal Core\u003c\/strong\u003e \u003cspan\u003eThinnest profile\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-desc p\"\u003eSimply make your selection at the top of the page for extra savings.\u003c\/div\u003e\n\u003cdiv class=\"ms-sub-heading\"\u003eAssembly and installation\u003c\/div\u003e\n\u003cdiv class=\"ms-features\"\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eBuild it yourself\u003c\/strong\u003e \u003cspan\u003eTwo people and 4-6 hours is all it takes. Every rack ships with a full instruction manual and our team is on hand every weekday to support you with the build if needed.\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-feature\"\u003e\n\u003cstrong\u003eProfessional installation\u003c\/strong\u003e \u003cspan\u003eWe offer a \u003ca href=\"https:\/\/musclesquad.com\/pages\/installation-service\" rel=\"noopener\" target=\"_blank\"\u003eprofessional installation service\u003c\/a\u003e in select postcodes. Get in touch at \u003ca href=\"mailto:sales@musclesquad.com\"\u003esales@musclesquad.com\u003c\/a\u003e for a bespoke quote. Outside our coverage? We can refer you to one of our trusted installation partners.\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- \/ms-desc --\u003e \u003cscript\u003e\n        (function () {\n            function initCarousel(opts) {\n                var container = document.querySelector(opts.container);\n                var track = container ? container.querySelector(opts.track) : null;\n                var slides = container ? Array.prototype.slice.call(container.querySelectorAll(opts.slide)) : [];\n                var dots = Array.prototype.slice.call(document.querySelectorAll(opts.dots));\n                var total = slides.length;\n                var current = 0;\n                var slideWidth = 0;\n                var adaptive = opts.adaptiveHeight || false;\n                if (!container || !track || !total || !dots.length) return;\n\n                function setHeight() {\n                    if (adaptive) {\n                        container.style.height = slides[current].offsetHeight + 'px';\n                    } else {\n                        var maxH = 0;\n                        slides.forEach(function (s) { if (s.offsetHeight \u003e maxH) maxH = s.offsetHeight; });\n                        if (maxH) container.style.height = maxH + 'px';\n                    }\n                }\n\n                function measure() {\n                    if (window.innerWidth \u003e 768) {\n                        track.style.width = '';\n                        track.style.transform = '';\n                        slides.forEach(function (s) { s.style.width = ''; });\n                        container.style.height = '';\n                        return;\n                    }\n                    var w = container.offsetWidth;\n                    if (!w) return;\n                    slideWidth = w;\n                    track.style.width = (slideWidth * total) + 'px';\n                    slides.forEach(function (s) { s.style.width = slideWidth + 'px'; });\n                    setHeight();\n                    track.style.transition = 'none';\n                    track.style.transform = 'translateX(-' + (slideWidth * current) + 'px)';\n                    setTimeout(function () { track.style.transition = 'transform 0.35s ease'; }, 50);\n                }\n\n                function goTo(idx) {\n                    current = Math.max(0, Math.min(idx, total - 1));\n                    track.style.transform = 'translateX(-' + (slideWidth * current) + 'px)';\n                    if (adaptive) { setHeight(); }\n                    dots.forEach(function (d, i) { d.classList.toggle('active', i === current); });\n                }\n\n                dots.forEach(function (d, i) {\n                    d.addEventListener('click', function () { goTo(i); });\n                });\n\n                var touchStartX = 0;\n                container.addEventListener('touchstart', function (e) {\n                    touchStartX = e.changedTouches[0].clientX;\n                }, { passive: true });\n                container.addEventListener('touchend', function (e) {\n                    var dx = e.changedTouches[0].clientX - touchStartX;\n                    if (Math.abs(dx) \u003e 40) { goTo(dx \u003c 0 ? current + 1 : current - 1); }\n                }, { passive: true });\n\n                var resizeTimer;\n                window.addEventListener('resize', function () {\n                    clearTimeout(resizeTimer);\n                    resizeTimer = setTimeout(measure, 150);\n                }, { passive: true });\n\n                measure();\n                setTimeout(measure, 300);\n                window.addEventListener('load', function () { measure(); }, { once: true });\n                goTo(0);\n            }\n\n            function init() {\n                initCarousel({\n                    container: '.ms-gallery',\n                    track: '.ms-gallery-row',\n                    slide: '.ms-gallery-block',\n                    dots: '.ms-gallery-dots span',\n                    adaptiveHeight: false\n                });\n            }\n\n            if (document.readyState === 'loading') {\n                document.addEventListener('DOMContentLoaded', init);\n            } else {\n                init();\n            }\n        })();\n    \u003c\/script\u003e \u003c!-- Comparison table — PLACEHOLDER, awaiting decision on whether P2 belongs in the 6-product rack table and which product it would replace --\u003e \u003c!-- ── Lead gen CTA — link to be added by devs ── --\u003e\n\u003cdiv style=\"border: 1px solid #e0e0e0; border-left: 4px solid #C4262E; border-radius: 4px; padding: 24px 28px; margin: 32px 0; background: #fff; display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap;\"\u003e\n\u003cdiv\u003e\n\u003cdiv style=\"font-size: 18px; font-weight: bold; color: #000; margin-bottom: 6px;\"\u003eNot sure where to start?\u003c\/div\u003e\n\u003cdiv style=\"font-size: 15px; color: #818a8f;\"\u003eTell us about your space and our team will send you a free video proposal. No obligations, no strings attached.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ca href=\"#\" style=\"display: inline-block; padding: 12px 24px; background: #000; color: #fff; font-family: Helvetica, Arial, sans-serif; font-size: 15px; font-weight: bold; text-decoration: none; border-radius: 4px; white-space: nowrap;\"\u003eOpen form\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c!-- \/Lead gen CTA --\u003e\n\u003cdiv class=\"ms-desc\"\u003e\n\u003cdiv class=\"ms-sub-heading\"\u003eFrequently asked questions\u003c\/div\u003e\n\u003cdiv class=\"ms-faq\"\u003e\n\u003cdiv class=\"ms-faq-item\"\u003e\n\u003cinput type=\"checkbox\" id=\"faq-q-assembly\"\u003e \u003clabel for=\"faq-q-assembly\"\u003eHow do I build the rack?\u003c\/label\u003e\n\u003cdiv class=\"ms-faq-answer\"\u003e\n\u003cdiv class=\"ms-desc p\"\u003eTwo people are required for assembly and the build shouldn't take you more than six hours. If you're handy and enjoy building furniture, you shouldn't struggle too much with it. If you'd rather have it professionally installed, check out our \u003ca href=\"https:\/\/musclesquad.com\/pages\/installation-service\" rel=\"noopener\" target=\"_blank\"\u003einstallation services\u003c\/a\u003e.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-faq-item\"\u003e\n\u003cinput type=\"checkbox\" id=\"faq-q-space\"\u003e \u003clabel for=\"faq-q-space\"\u003eHow much space do I need?\u003c\/label\u003e\n\u003cdiv class=\"ms-faq-answer\"\u003e\n\u003cdiv class=\"ms-desc p\"\u003eOur Phase 2 Functional Trainer has a height of exactly 2 metres, helping it fit in rooms where other units wouldn't. All other measurements are further up the page under \"Full specifications\".\u003c\/div\u003e\n\u003cdiv class=\"ms-desc p\"\u003eFor comfortable use, we recommend allowing 30cm of clearance above the top of the frame, 30cm on either side of the Smith bar and a metre in front of the rack.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-faq-item\"\u003e\n\u003cinput type=\"checkbox\" id=\"faq-q-delivery\"\u003e \u003clabel for=\"faq-q-delivery\"\u003eHow will it be delivered?\u003c\/label\u003e\n\u003cdiv class=\"ms-faq-answer\"\u003e\n\u003cdiv class=\"ms-desc p\"\u003eYour rack will be delivered on a pallet to the nearest kerbside to your address. This is standard for equipment this size since our delivery partners aren't insured to bring the rack onto your property. You can then decant the box and move the parts inside.\u003c\/div\u003e\n\u003cdiv class=\"ms-desc p\"\u003eBefore your delivery, you'll be contacted by our couriers to arrange a date so you can be in to accept the pallet. We can also arrange specific delivery dates or hold your order until you're ready to receive it. Simply get in touch before ordering and we'll be happy to help.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-faq-item\"\u003e\n\u003cinput type=\"checkbox\" id=\"faq-q-bolt\"\u003e \u003clabel for=\"faq-q-bolt\"\u003eDo I need to bolt it to the floor?\u003c\/label\u003e\n\u003cdiv class=\"ms-faq-answer\"\u003e\n\u003cdiv class=\"ms-desc p\"\u003eNo, it's not necessary to bolt this rack down to the floor.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-faq-item\"\u003e\n\u003cinput type=\"checkbox\" id=\"faq-q-plate-loaded\"\u003e \u003clabel for=\"faq-q-plate-loaded\"\u003eWhy should I get a plate-loaded machine?\u003c\/label\u003e\n\u003cdiv class=\"ms-faq-answer\"\u003e\n\u003cdiv class=\"ms-desc p\"\u003eWhether you get a plate or pin-loaded machine is personal preference. The facts are this: plate-loaded units are cheaper since they don't need to include the dedicated cable weight stacks. Instead, you generate resistance by adding 2 inch weight plates to the trolley system, in the same way you'd load a barbell.\u003c\/div\u003e\n\u003cdiv class=\"ms-desc p\"\u003eThe drawbacks of a plate-loaded machine are that it takes longer to change weights than on a pin-loaded variant. It also runs on a 1:1 ratio which has its own set of pros and cons, so you'll want to invest in some light weight plates to support gradual jumps in weight.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-faq-item\"\u003e\n\u003cinput type=\"checkbox\" id=\"faq-q-height\"\u003e \u003clabel for=\"faq-q-height\"\u003eWhy is this rack shorter than a lot of your others?\u003c\/label\u003e\n\u003cdiv class=\"ms-faq-answer\"\u003e\n\u003cdiv class=\"ms-desc p\"\u003eWe've kept this rack short because the most common limiting factor for customers is ceiling height. Since this is a plate-loaded machine, we're able to keep the height low without compromising performance. The lack of a weight stack means the cable pulley can still access a full range of motion even with less space in the actual frame. You'll still get plenty of cable travel without encroaching on your ceiling.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-faq-item\"\u003e\n\u003cinput type=\"checkbox\" id=\"faq-q-phase2-accessories\"\u003e \u003clabel for=\"faq-q-phase2-accessories\"\u003eWill it take Phase 2 accessories?\u003c\/label\u003e\n\u003cdiv class=\"ms-faq-answer\"\u003e\n\u003cdiv class=\"ms-desc p\"\u003eYes, all Phase 2 accessories will fit onto this rack.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-faq-item\"\u003e\n\u003cinput type=\"checkbox\" id=\"faq-q-floor\"\u003e \u003clabel for=\"faq-q-floor\"\u003eDo I need gym flooring beneath the rack?\u003c\/label\u003e\n\u003cdiv class=\"ms-faq-answer\"\u003e\n\u003cdiv class=\"ms-desc p\"\u003eYes, it's highly recommended. We suggest having gym flooring across your entire space, but at the very least it should be under your equipment where the brunt of the weight is centred.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-faq-item\"\u003e\n\u003cinput type=\"checkbox\" id=\"faq-q-finance\"\u003e \u003clabel for=\"faq-q-finance\"\u003eIs finance available?\u003c\/label\u003e\n\u003cdiv class=\"ms-faq-answer\"\u003e\n\u003cdiv class=\"ms-desc p\"\u003eYes, we offer interest-free finance for 12 months and interest-bearing finance up to 48 months through our partners Novuna. Applications are subject to status and eligibility.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-faq-item\"\u003e\n\u003cinput type=\"checkbox\" id=\"faq-q-warranty\"\u003e \u003clabel for=\"faq-q-warranty\"\u003eWhat warranty comes with it?\u003c\/label\u003e\n\u003cdiv class=\"ms-faq-answer\"\u003e\n\u003cdiv class=\"ms-desc p\"\u003eAll MuscleSquad racks come with a 10 year warranty on the frame and 2 years on the cables, pulleys and accessories. If anything goes wrong in that time, contact us and we will arrange a replacement.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- \/tab-1 --\u003e \u003c!-- ── TAB 2: Delivery (standard reusable copy, unchanged) ── --\u003e\n\u003cdiv class=\"tabContent\" id=\"tab-2\"\u003e\n\u003cdiv class=\"ms-desc\"\u003e\n\u003cdiv class=\"ms-sub-heading\"\u003eEngland and Scotland (excluding Highlands)\u003c\/div\u003e\n\u003cdiv class=\"ms-desc p\"\u003eYour rack will be delivered by our delivery partners, Pallex. They will contact you within 48 hours of your order to arrange a convenient delivery day to kerbside. The rack will arrive on a pallet, please arrange disposal of the pallet as Pallex will not take it away. Delivery is usually within 5–10 days.\u003c\/div\u003e\n\u003cdiv class=\"ms-sub-heading\"\u003eScottish Highlands\u003c\/div\u003e\n\u003cdiv class=\"ms-desc p\"\u003eYour rack will be delivered by our delivery partners, Pallex. They will contact you within 48 hours of your order to arrange a convenient delivery day to kerbside. The rack will arrive on a pallet, please arrange disposal of the pallet as Pallex will not take it away. Delivery is usually within 5–10 days.\u003c\/div\u003e\n\u003cdiv class=\"ms-sub-heading\"\u003eNorthern Ireland\u003c\/div\u003e\n\u003cdiv class=\"ms-desc p\"\u003eYour rack will be delivered by our delivery partners, Pallet Line. They will contact you within 48 hours of your order to arrange a convenient delivery day to kerbside. The rack will arrive on a pallet, please arrange disposal of the pallet as Pallet Line will not take it away. Delivery is usually within 5 days.\u003c\/div\u003e\n\u003cdiv class=\"ms-desc p\"\u003eIf you have any questions about delivery, visit our \u003ca href=\"https:\/\/musclesquad.com\/pages\/delivery-information\" title=\"Delivery Information\"\u003edelivery information page\u003c\/a\u003e or get in touch by \u003ca href=\"mailto:info@musclesquad.com\" title=\"Email MuscleSquad support\"\u003eemail\u003c\/a\u003e or \u003ca href=\"#chat\" title=\"Chat with us via the red Contact Us button at the bottom right of your screen\"\u003echat\u003c\/a\u003e.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- \/tab-2 --\u003e \u003c!-- ── TAB 3: Warranty (standard reusable copy, unchanged) ── --\u003e\n\u003cdiv class=\"tabContent\" id=\"tab-3\"\u003e\n\u003cdiv class=\"ms-desc\"\u003e\n\u003cdiv class=\"ms-lead\"\u003eAll MuscleSquad products come with a comprehensive warranty for added peace of mind.\u003c\/div\u003e\n\u003cdiv class=\"ms-benefits\"\u003e\n\u003cdiv class=\"ms-benefit\"\u003e\n\u003cspan class=\"ms-stat\"\u003e10 years\u003c\/span\u003e \u003cspan class=\"ms-label\"\u003eFrame cover\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-benefit\"\u003e\n\u003cspan class=\"ms-stat\"\u003e2 years\u003c\/span\u003e \u003cspan class=\"ms-label\"\u003eAccessories, pulleys and cables\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-benefit\"\u003e\n\u003cspan class=\"ms-stat\"\u003e48 hours\u003c\/span\u003e \u003cspan class=\"ms-label\"\u003eResponse time for warranty claims\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ms-desc p\"\u003eDuring the warranty period, contact us directly and we will arrange a replacement.\u003c\/div\u003e\n\u003cdiv class=\"ms-sub-heading\"\u003eWarranty does not cover\u003c\/div\u003e\n\u003cul class=\"ms-warranty-list\"\u003e\n\u003cli\u003eDamage resulting from negligence (e.g. dropping the product)\u003c\/li\u003e\n\u003cli\u003eDamage resulting from unauthorised modification\u003c\/li\u003e\n\u003cli\u003eDamage caused by weather or natural disaster (e.g. rust from outdoor storage)\n\u003cul\u003e\n\u003cli\u003eThe product must only be used indoors in a temperature-controlled environment and kept dry.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003eTheft or loss of the product\u003c\/li\u003e\n\u003cli\u003eImproper cleaning\n\u003cul\u003e\n\u003cli\u003eNo chemical solution should be sprayed directly onto the product. This can remove paint, ceramic coating, ionised or chromed finishes and cause rust. Damage caused by chemical products will void the warranty.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv class=\"ms-desc p\"\u003eTo obtain warranty service, email \u003ca href=\"mailto:info@musclesquad.com\"\u003einfo@musclesquad.com\u003c\/a\u003e with full details of the issue, including photos where possible. We will respond with a resolution within 48 hours.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- \/tab-3 --\u003e \u003c!-- ── TAB 4: Manuals ── --\u003e\n\u003cdiv class=\"tabContent\" id=\"tab-4\"\u003e\n\u003cdiv class=\"ms-desc\"\u003e\u003ca rel=\"noopener\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2602\/1472\/files\/p2-plate-loaded-func-manual.pdf?v=1783595213\" target=\"_blank\"\u003e \u003cimg alt=\"P2 Plate-Loaded Functional Trainer Manual\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/2602\/1472\/files\/Screenshot_2026-07-09_115505.jpg?v=1783594621\"\u003e \u003c\/a\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- \/tab-4 --\u003e\n\u003c\/div\u003e\n\u003c!-- \/horizontalTab --\u003e\n\u003c\/div\u003e\n\u003c!-- \/productDetailsTabArea --\u003e","brand":"MuscleSquad","offers":[{"title":"Rack Only","offer_id":56328160608635,"sku":"RACK-PHASE2MFSMITH","price":1505.38,"currency_code":"GBP","in_stock":true},{"title":"Rubber Tri-Grip Package","offer_id":56328160641403,"sku":"RACK-PHASE2MFSMITH-OPRUB","price":2000.0,"currency_code":"GBP","in_stock":true},{"title":"Rubber Bumper Package","offer_id":56328160674171,"sku":"RACK-PHASE2MFSMITH-BUMPBLK","price":2000.0,"currency_code":"GBP","in_stock":true},{"title":"Crumb Rubber Bumper Package","offer_id":56328160706939,"sku":"RACK-PHASE2MFSMITH-BUMPCRUMB","price":2000.0,"currency_code":"GBP","in_stock":true},{"title":"Competition Metal Core Package","offer_id":56328160739707,"sku":"RACK-PHASE2MFSMITH-BLKCORE","price":2150.54,"currency_code":"GBP","in_stock":true},{"title":"Coloured Competition Metal Core Package","offer_id":56328160772475,"sku":"RACK-PHASE2MFSMITH-COLCORE","price":2150.54,"currency_code":"GBP","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/2602\/1472\/files\/Screenshot_2026-07-10_104558.png?v=1783676806","url":"https:\/\/musclesquad.com\/products\/phase-2-functional-trainer","provider":"MuscleSquad","version":"1.0","type":"link"}