{"product_id":"weight-tree","title":"Weight Tree","description":"\u003cdiv class=\"shogun-root\" data-shogun-id=\"69ef8ed24b088f13e243ebf8\" data-shogun-site-id=\"d921f9ba-aa7a-4156-9e44-53aad23b56fb\" data-shogun-page-id=\"69ef8ed24b088f13e243ebf8\" data-shogun-page-version-id=\"69ef90a6682591347bb083f1\" data-shogun-platform-type=\"shopify\" data-shogun-variant-id=\"69ef90a6682591347bb083f7\" data-shogun-page-type=\"product\" data-shogun-power-up-type=\"\" data-shogun-power-up-id=\"\" data-region=\"main\"\u003e \u003cdiv id=\"s-c3263eb8-3309-4a58-b93b-cdf83c360cb9\" class=\"shg-c shg-align-left\"\u003e \u003cstyle\u003e\n  .tree-hero {\n    --tr-bg: #f5f1ea;\n    --tr-ink: #2a2a2a;\n    --tr-white: #ffffff;\n    --tr-off: #faf7f2;\n    --tr-sand: #e8e0d3;\n    --tr-black: #111111;\n    --tr-accent: #1972bc;re\n    --tr-accent-d: #155a96;\n    --tr-muted: #8a8378;\n    --fo: \"Oswald\", Impact, sans-serif;\n    --fd: \"Bebas Neue\", Impact, sans-serif;\n    --fb: \"Barlow\", system-ui, sans-serif;\n    --fc: \"Barlow Condensed\", system-ui, sans-serif;\n\n    background: var(--tr-bg);\n    color: var(--tr-ink);\n    padding: 24px 16px 48px;\n    box-sizing: border-box;\n  }\n  .tree-hero *, .tree-hero *::before, .tree-hero *::after { box-sizing: border-box; }\n\n  .tree-hero__grid {\n    max-width: 1240px;\n    margin: 0 auto;\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 24px;\n  }\n  @media (min-width: 860px) {\n    .tree-hero { padding: 40px 24px 64px; }\n    .tree-hero__grid { grid-template-columns: 1.1fr 1fr; gap: 48px; align-items: start; }\n  }\n\n  \/* ---------- Stock state toggle ---------- *\/\n  .tree-hero .tree-block--in,\n  .tree-hero .tree-block--out { display: none; }\n  .tree-hero[data-stock=\"in\"]  .tree-block--in  { display: flex; flex-direction: column; gap: 10px; }\n  .tree-hero[data-stock=\"in\"]  .tree-stock--in  { display: flex; }\n  .tree-hero[data-stock=\"out\"] .tree-block--out { display: flex; flex-direction: column; gap: 10px; }\n  .tree-hero[data-stock=\"out\"] .tree-stock--out { display: flex; }\n  .tree-stock--in, .tree-stock--out { display: none; }\n\n  \/* ---------- Gallery slider ---------- *\/\n  .tree-gallery { display: flex; flex-direction: column; gap: 10px; }\n  .tree-gallery__stage {\n    position: relative;\n    background: var(--tr-white);\n    border-radius: 6px;\n    overflow: hidden;\n    aspect-ratio: 1 \/ 1;\n  }\n  .tree-gallery__track {\n    display: flex;\n    width: 100%;\n    height: 100%;\n    overflow-x: auto;\n    scroll-snap-type: x mandatory;\n    scroll-behavior: smooth;\n    scrollbar-width: none;\n    -ms-overflow-style: none;\n  }\n  .tree-gallery__track::-webkit-scrollbar { display: none; }\n  .tree-gallery__slide {\n    flex: 0 0 100%;\n    width: 100%;\n    height: 100%;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n  .tree-gallery__slide img {\n    width: 100%; height: 100%;\n    object-fit: cover;\n    display: block;\n  }\n  .tree-gallery__badge {\n    position: absolute; top: 12px; left: 12px;\n    background: var(--tr-black); color: var(--tr-white);\n    font-family: var(--fc); font-size: 12px; letter-spacing: .08em;\n    text-transform: uppercase;\n    padding: 6px 10px; border-radius: 6px;\n    z-index: 3;\n    pointer-events: none;\n  }\n  .tree-gallery__arrow {\n    position: absolute;\n    top: 50%;\n    transform: translateY(-50%);\n    width: 44px; height: 44px;\n    background: rgba(255,255,255,.92);\n    border: 0;\n    border-radius: 50%;\n    display: flex; align-items: center; justify-content: center;\n    cursor: pointer;\n    z-index: 3;\n    transition: background .12s ease, transform .12s ease, opacity .12s ease;\n    color: var(--tr-black);\n    box-shadow: 0 2px 12px rgba(0,0,0,.12);\n  }\n  .tree-gallery__arrow:hover {\n    background: var(--tr-white);\n    transform: translateY(-50%) scale(1.06);\n  }\n  .tree-gallery__arrow:active { transform: translateY(-50%) scale(.96); }\n  .tree-gallery__arrow:disabled {\n    opacity: .35;\n    cursor: not-allowed;\n  }\n  .tree-gallery__arrow svg { width: 20px; height: 20px; }\n  .tree-gallery__arrow--prev { left: 12px; }\n  .tree-gallery__arrow--next { right: 12px; }\n  .tree-gallery__counter {\n    position: absolute;\n    bottom: 12px; right: 12px;\n    background: rgba(0,0,0,.65);\n    color: var(--tr-white);\n    font-family: var(--fc);\n    font-size: 11px;\n    letter-spacing: .08em;\n    padding: 4px 10px;\n    border-radius: 999px;\n    z-index: 3;\n    pointer-events: none;\n  }\n  .tree-gallery__dots {\n    display: flex;\n    justify-content: center;\n    gap: 6px;\n    padding: 4px 0 0;\n  }\n  .tree-gallery__dot {\n    width: 7px; height: 7px;\n    border: 0;\n    border-radius: 50%;\n    background: var(--tr-sand);\n    cursor: pointer;\n    transition: background .15s ease, transform .15s ease;\n    padding: 0;\n  }\n  .tree-gallery__dot[aria-current=\"true\"] {\n    background: var(--tr-accent);\n    transform: scale(1.3);\n  }\n\n  \/* ---------- Info column ---------- *\/\n  .tree-info { display: flex; flex-direction: column; gap: 16px; }\n  .tree-info__eyebrow {\n    font-family: var(--fc);\n    font-size: 13px; letter-spacing: .14em;\n    text-transform: uppercase;\n    color: var(--tr-accent);\n  }\n  .tree-info__title {\n    font-family: var(--fo);\n    font-weight: 600;\n    font-size: clamp(32px, 4.6vw, 50px);\n    line-height: 1;\n    text-transform: uppercase;\n    margin: 0;\n    color: var(--tr-black);\n  }\n  .tree-info__subtitle {\n    font-family: var(--fb);\n    font-size: 16px;\n    line-height: 1.5;\n    color: var(--tr-ink);\n    margin: 0;\n    max-width: 54ch;\n  }\n\n  .tree-info__reviews {\n    display: flex; align-items: center; gap: 10px;\n    font-family: var(--fb); font-size: 14px;\n    color: var(--tr-muted);\n  }\n  .tree-info__stars { color: #d7d0c2; letter-spacing: 2px; }\n\n  \/* ---------- Feature pills ---------- *\/\n  .tree-features {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 8px;\n  }\n  @media (min-width: 500px) {\n    .tree-features { grid-template-columns: repeat(4, 1fr); }\n  }\n  .tree-features__item {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    text-align: center;\n    gap: 6px;\n    padding: 12px 8px;\n    background: var(--tr-white);\n    border-radius: 6px;\n  }\n  .tree-features__icon {\n    width: 28px; height: 28px;\n    color: var(--tr-accent);\n  }\n  .tree-features__icon svg { width: 100%; height: 100%; }\n  .tree-features__label {\n    font-family: var(--fc);\n    font-size: 11px;\n    letter-spacing: .08em;\n    text-transform: uppercase;\n    color: var(--tr-ink);\n    line-height: 1.2;\n    font-weight: 600;\n  }\n\n  \/* ---------- Price row ---------- *\/\n  .tree-info__price-row {\n    display: flex; align-items: baseline; gap: 12px;\n    padding-top: 4px;\n    flex-wrap: wrap;\n  }\n  .tree-info__price {\n    font-family: var(--fo);\n    font-size: 30px;\n    font-weight: 600;\n    color: var(--tr-black);\n  }\n  .tree-info__installments {\n    font-family: var(--fb);\n    font-size: 13px;\n    color: var(--tr-ink);\n  }\n  .tree-info__installments b { font-weight: 600; }\n\n  \/* ---------- Variant selector (Wheels vs No Wheels) ---------- *\/\n  .tree-variants {\n    display: flex; flex-direction: column; gap: 10px;\n  }\n  .tree-variants__label {\n    display: flex; align-items: baseline; justify-content: space-between;\n    font-family: var(--fc);\n    font-size: 12px;\n    letter-spacing: .1em;\n    text-transform: uppercase;\n    color: var(--tr-ink);\n  }\n  .tree-variants__label b {\n    font-family: var(--fd);\n    font-size: 16px;\n    color: var(--tr-black);\n    letter-spacing: .04em;\n    font-weight: 400;\n  }\n  .tree-variants__cards {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 10px;\n  }\n  .tree-variants__card {\n    position: relative;\n    display: flex; flex-direction: column;\n    gap: 8px;\n    padding: 14px 14px 16px;\n    background: var(--tr-white);\n    border: 2px solid transparent;\n    border-radius: 6px;\n    cursor: pointer;\n    text-align: left;\n    font-family: var(--fb);\n    transition: border-color .12s ease, transform .12s ease;\n  }\n  .tree-variants__card:hover { border-color: var(--tr-sand); }\n  .tree-variants__card[aria-pressed=\"true\"] {\n    border-color: var(--tr-accent);\n    background: var(--tr-off);\n  }\n  .tree-variants__card[aria-pressed=\"true\"]::before {\n    content: \"\";\n    position: absolute; top: -1px; right: -1px;\n    width: 22px; height: 22px;\n    background: var(--tr-accent) url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'\/%3E%3C\/svg%3E\") center\/14px no-repeat;\n    border-radius: 0 6px 0 6px;\n  }\n  .tree-variants__card-icon {\n    width: 36px; height: 36px;\n    color: var(--tr-accent);\n  }\n  .tree-variants__card-icon svg { width: 100%; height: 100%; }\n  .tree-variants__card-name {\n    font-family: var(--fd);\n    font-size: 22px;\n    letter-spacing: .04em;\n    color: var(--tr-black);\n    line-height: 1;\n  }\n  .tree-variants__card-meta {\n    font-family: var(--fb);\n    font-size: 12px;\n    color: var(--tr-muted);\n    line-height: 1.35;\n  }\n  .tree-variants__card-tag {\n    align-self: flex-start;\n    font-family: var(--fc);\n    font-size: 10px;\n    letter-spacing: .1em;\n    text-transform: uppercase;\n    color: var(--tr-white);\n    background: var(--tr-accent);\n    padding: 3px 8px;\n    border-radius: 4px;\n    font-weight: 600;\n    margin-top: 2px;\n  }\n  .tree-variants__card[data-available=\"false\"] {\n    opacity: .55;\n    cursor: not-allowed;\n  }\n  .tree-variants__card[data-available=\"false\"]::after {\n    content: \"Sold out\";\n    position: absolute; bottom: 6px; right: 8px;\n    font-family: var(--fc);\n    font-size: 10px;\n    letter-spacing: .08em;\n    text-transform: uppercase;\n    color: #c0392b;\n  }\n\n  \/* ---------- Specs strip ---------- *\/\n  .tree-specs {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 1px;\n    background: var(--tr-sand);\n    border-radius: 6px;\n    overflow: hidden;\n  }\n  .tree-specs__cell {\n    background: var(--tr-white);\n    padding: 12px 10px;\n    text-align: center;\n  }\n  .tree-specs__k {\n    font-family: var(--fc);\n    font-size: 11px; letter-spacing: .1em;\n    text-transform: uppercase;\n    color: var(--tr-ink); opacity: .7;\n  }\n  .tree-specs__v {\n    font-family: var(--fd);\n    font-size: 22px;\n    line-height: 1;\n    margin-top: 4px;\n    letter-spacing: .02em;\n    color: var(--tr-black);\n  }\n\n  \/* ---------- Stock lines ---------- *\/\n  .tree-stock {\n    font-family: var(--fb);\n    font-size: 13px;\n    color: var(--tr-ink);\n    align-items: center; gap: 8px;\n    padding: 10px 12px;\n    background: var(--tr-white);\n    border-radius: 6px;\n  }\n  .tree-stock__dot {\n    width: 8px; height: 8px; border-radius: 50%;\n    flex: 0 0 8px;\n  }\n  .tree-stock--in .tree-stock__dot {\n    background: #2ecc71;\n    box-shadow: 0 0 0 3px rgba(46,204,113,.2);\n  }\n  .tree-stock--out .tree-stock__dot {\n    background: #e25c3b;\n    box-shadow: 0 0 0 3px rgba(226,92,59,.2);\n  }\n\n  \/* ---------- Add-to-cart ---------- *\/\n  .tree-cta__btn {\n    display: flex; align-items: center; justify-content: center;\n    gap: 10px;\n    width: 100%;\n    background: var(--tr-accent);\n    color: var(--tr-white);\n    font-family: var(--fo);\n    font-size: 18px; letter-spacing: .06em;\n    text-transform: uppercase;\n    border: 0; border-radius: 6px;\n    padding: 16px 20px;\n    cursor: pointer;\n    transition: transform .12s ease, background .12s ease;\n  }\n  .tree-cta__btn:hover { background: var(--tr-accent-d); }\n  .tree-cta__btn:active { transform: scale(.98); }\n\n  \/* ---------- Notify form ---------- *\/\n  .tree-notify__label {\n    font-family: var(--fc);\n    font-size: 12px;\n    letter-spacing: .1em;\n    text-transform: uppercase;\n    color: var(--tr-ink);\n    margin: 0;\n  }\n  .tree-notify__row { display: flex; gap: 8px; }\n  .tree-notify__input {\n    flex: 1;\n    font-family: var(--fb);\n    font-size: 15px;\n    padding: 14px 16px;\n    border: 1px solid var(--tr-sand);\n    border-radius: 6px;\n    background: var(--tr-white);\n    color: var(--tr-ink);\n    outline: none;\n    transition: border-color .12s ease;\n    min-width: 0;\n  }\n  .tree-notify__input:focus { border-color: var(--tr-accent); }\n  .tree-notify__btn {\n    display: flex; align-items: center; justify-content: center;\n    gap: 10px;\n    background: var(--tr-black);\n    color: var(--tr-white);\n    font-family: var(--fo);\n    font-size: 15px; letter-spacing: .06em;\n    text-transform: uppercase;\n    border: 0; border-radius: 6px;\n    padding: 0 22px;\n    cursor: pointer;\n    transition: transform .12s ease, background .12s ease;\n    white-space: nowrap;\n  }\n  .tree-notify__btn:hover { background: var(--tr-accent); }\n  .tree-notify__btn:active { transform: scale(.98); }\n  .tree-notify__btn:disabled { opacity: .6; cursor: not-allowed; }\n  .tree-notify__hint {\n    font-family: var(--fb);\n    font-size: 12px;\n    color: var(--tr-muted);\n    margin: 0;\n  }\n  .tree-notify__status {\n    display: none;\n    font-family: var(--fb);\n    font-size: 13px;\n    padding: 12px 14px;\n    border-radius: 6px;\n    margin: 0;\n    line-height: 1.4;\n  }\n  .tree-notify__status--ok {\n    background: #e8f5ea; color: #1e6b2e;\n    border: 1px solid #c6e5cc;\n  }\n  .tree-notify__status--err {\n    background: #fbece8; color: #a83a1f;\n    border: 1px solid #f0cfc6;\n  }\n  .tree-notify[data-state=\"success\"] .tree-notify__row,\n  .tree-notify[data-state=\"success\"] .tree-notify__hint,\n  .tree-notify[data-state=\"success\"] .tree-notify__label { display: none; }\n  .tree-notify[data-state=\"success\"] .tree-notify__status--ok { display: block; }\n  .tree-notify[data-state=\"error\"] .tree-notify__status--err { display: block; }\n\n  \/* ---------- Trust row ---------- *\/\n  .tree-trust {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 8px;\n    padding-top: 8px;\n    margin: 0;\n    list-style: none;\n  }\n  .tree-trust__item {\n    display: flex; align-items: center; gap: 8px;\n    font-family: var(--fb);\n    font-size: 12px;\n    line-height: 1.25;\n    color: var(--tr-ink);\n  }\n  .tree-trust__item svg { flex: 0 0 18px; width: 18px; height: 18px; color: var(--tr-accent); }\n\u003c\/style\u003e \u003csection class=\"tree-hero\" data-stock=\"in\" data-product-handle=\"weight-tree\" aria-label=\"Weight Tree\"\u003e \u003cdiv class=\"tree-hero__grid\"\u003e \u003cdiv class=\"tree-gallery\"\u003e \u003cdiv class=\"tree-gallery__stage\"\u003e \u003cspan class=\"tree-gallery__badge\"\u003eHeavy-duty steel\u003c\/span\u003e \u003cbutton type=\"button\" class=\"tree-gallery__arrow tree-gallery__arrow--prev\" aria-label=\"Previous image\"\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpolyline points=\"15 18 9 12 15 6\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003c\/button\u003e \u003cdiv class=\"tree-gallery__track\" id=\"tree-gallery-track\"\u003e \u003cdiv class=\"tree-gallery__slide\"\u003e \u003cimg src=\"https:\/\/kensui.com\/cdn\/shop\/files\/5_afae0716-2891-456c-ade7-6bd2ffee7ea8_1024x1024@2x.jpg?v=1775132071\" alt=\"Kensui Weight Tree — vertical plate storage\" width=\"1024\" height=\"1024\" loading=\"eager\" fetchpriority=\"high\"\u003e \u003c\/div\u003e \u003cdiv class=\"tree-gallery__slide\"\u003e \u003cimg src=\"https:\/\/kensui.com\/cdn\/shop\/files\/1_f0c6a604-8deb-406c-b5dc-2bde8cb847dc_1024x1024@2x.jpg?v=1775132071\" alt=\"Weight tree loaded with plates\" width=\"1024\" height=\"1024\" loading=\"lazy\"\u003e \u003c\/div\u003e \u003cdiv class=\"tree-gallery__slide\"\u003e \u003cimg src=\"https:\/\/kensui.com\/cdn\/shop\/files\/weight-tree-wheels_1024x1024@2x.jpg?v=1775132071\" alt=\"Locking caster wheels detail\" width=\"1024\" height=\"1024\" loading=\"lazy\"\u003e \u003c\/div\u003e \u003cdiv class=\"tree-gallery__slide\"\u003e \u003cimg src=\"https:\/\/kensui.com\/cdn\/shop\/files\/weight-tree-sleeves_2_1024x1024@2x.jpg?v=1775132071\" alt=\"Barbell holder sleeves with protective lip\" width=\"1024\" height=\"1024\" loading=\"lazy\"\u003e \u003c\/div\u003e \u003cdiv class=\"tree-gallery__slide\"\u003e \u003cimg src=\"https:\/\/kensui.com\/cdn\/shop\/files\/weight-tree-sleeves_1024x1024@2x.jpg?v=1775132071\" alt=\"Storage pegs with rounded loading caps\" width=\"1024\" height=\"1024\" loading=\"lazy\"\u003e \u003c\/div\u003e \u003cdiv class=\"tree-gallery__slide\"\u003e \u003cimg src=\"https:\/\/kensui.com\/cdn\/shop\/files\/2_28e45292-802a-4c6d-bcfc-5d656cda0c44_1024x1024@2x.jpg?v=1775132071\" alt=\"Weight tree in a home gym\" width=\"1024\" height=\"1024\" loading=\"lazy\"\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cbutton type=\"button\" class=\"tree-gallery__arrow tree-gallery__arrow--next\" aria-label=\"Next image\"\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpolyline points=\"9 18 15 12 9 6\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003c\/button\u003e \u003cdiv class=\"tree-gallery__counter\" id=\"tree-gallery-counter\"\u003e1 \/ 6\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"tree-gallery__dots\" id=\"tree-gallery-dots\" role=\"tablist\" aria-label=\"Gallery images\"\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"tree-info\"\u003e \u003cdiv class=\"tree-info__eyebrow\"\u003eMove it. Load it. Forget the clutter.\u003c\/div\u003e \u003ch1 class=\"tree-info__title\"\u003eWeight Tree\u003c\/h1\u003e \u003cp class=\"tree-info__subtitle\"\u003e A solid-steel storage system that keeps your plates and bars organized, protected, and ready to roll. Vertical footprint, rounded loading caps, and protective barbell holders — built for serious training environments. \u003c\/p\u003e \u003cdiv class=\"tree-features\" aria-label=\"Key features\"\u003e \u003cdiv class=\"tree-features__item\"\u003e \u003cdiv class=\"tree-features__icon\"\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003crect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"\u003e\u003c\/rect\u003e\u003cpath d=\"M7 7h10M7 12h10M7 17h10\"\u003e\u003c\/path\u003e\u003c\/svg\u003e \u003c\/div\u003e \u003cdiv class=\"tree-features__label\"\u003eHeavy-duty\u003cbr\u003esteel\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"tree-features__item\"\u003e \u003cdiv class=\"tree-features__icon\"\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003ccircle cx=\"6\" cy=\"18\" r=\"3\"\u003e\u003c\/circle\u003e\u003ccircle cx=\"18\" cy=\"18\" r=\"3\"\u003e\u003c\/circle\u003e\u003cpath d=\"M9 18h6M3 6h18M3 6v12M21 6v12\"\u003e\u003c\/path\u003e\u003c\/svg\u003e \u003c\/div\u003e \u003cdiv class=\"tree-features__label\"\u003eLocking\u003cbr\u003ecasters\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"tree-features__item\"\u003e \u003cdiv class=\"tree-features__icon\"\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003ccircle cx=\"6.5\" cy=\"12\" r=\"3\"\u003e\u003c\/circle\u003e\u003ccircle cx=\"17.5\" cy=\"12\" r=\"3\"\u003e\u003c\/circle\u003e\u003cpath d=\"M9.5 12h5\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 9v6M19 9v6\"\u003e\u003c\/path\u003e\u003c\/svg\u003e \u003c\/div\u003e \u003cdiv class=\"tree-features__label\"\u003eBarbell\u003cbr\u003eholders\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"tree-features__item\"\u003e \u003cdiv class=\"tree-features__icon\"\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003crect x=\"9\" y=\"3\" width=\"6\" height=\"18\" rx=\"2\"\u003e\u003c\/rect\u003e\u003cpath d=\"M9 8h6M9 16h6\"\u003e\u003c\/path\u003e\u003c\/svg\u003e \u003c\/div\u003e \u003cdiv class=\"tree-features__label\"\u003eCompact\u003cbr\u003efootprint\u003c\/div\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"tree-info__price-row\"\u003e \u003cspan class=\"tree-info__price\" id=\"tree-price\"\u003e$199 USD\u003c\/span\u003e \u003cspan class=\"tree-info__installments\"\u003e or 4 payments of \u003cb id=\"tree-installment\"\u003e$49.75\u003c\/b\u003e with Shop Pay \u003c\/span\u003e \u003c\/div\u003e \u003cdiv class=\"tree-variants\"\u003e \u003cdiv class=\"tree-variants__label\"\u003e \u003cspan\u003eChoose your model\u003c\/span\u003e \u003cb id=\"tree-selected-name\"\u003eWheels\u003c\/b\u003e \u003c\/div\u003e \u003cdiv class=\"tree-variants__cards\" role=\"radiogroup\" aria-label=\"Model\"\u003e \u003cbutton type=\"button\" class=\"tree-variants__card\" role=\"radio\" aria-pressed=\"true\" data-variant-name=\"Wheels\" data-variant-id=\"REPLACE_WHEELS_ID\"\u003e \u003cdiv class=\"tree-variants__card-icon\"\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003ccircle cx=\"6\" cy=\"18\" r=\"3\"\u003e\u003c\/circle\u003e\u003ccircle cx=\"18\" cy=\"18\" r=\"3\"\u003e\u003c\/circle\u003e\u003cpath d=\"M9 18h6\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 6h14M5 6v9M19 6v9M9 6v9M15 6v9\"\u003e\u003c\/path\u003e\u003c\/svg\u003e \u003c\/div\u003e \u003cspan class=\"tree-variants__card-name\"\u003eWith Wheels\u003c\/span\u003e \u003cspan class=\"tree-variants__card-meta\"\u003eLocking casters — roll, lock, lift, repeat.\u003c\/span\u003e \u003c\/button\u003e \u003cbutton type=\"button\" class=\"tree-variants__card\" role=\"radio\" aria-pressed=\"false\" data-variant-name=\"No Wheels\" data-variant-id=\"REPLACE_NO_WHEELS_ID\"\u003e \u003cdiv class=\"tree-variants__card-icon\"\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M5 6h14M5 6v14M19 6v14M9 6v14M15 6v14M3 20h18\"\u003e\u003c\/path\u003e\u003c\/svg\u003e \u003c\/div\u003e \u003cspan class=\"tree-variants__card-name\"\u003eNo Wheels\u003c\/span\u003e \u003cspan class=\"tree-variants__card-meta\"\u003eStatic base — for permanent gym setups.\u003c\/span\u003e \u003c\/button\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"tree-stock tree-stock--in\"\u003e \u003cspan class=\"tree-stock__dot\" aria-hidden=\"true\"\u003e\u003c\/span\u003e \u003cspan\u003eIn stock - ships in 24 hours. Delivers in \u003cb\u003e3–5 days\u003c\/b\u003e\u003c\/span\u003e \u003c\/div\u003e \u003cdiv class=\"tree-stock tree-stock--out\"\u003e \u003cspan class=\"tree-stock__dot\" aria-hidden=\"true\"\u003e\u003c\/span\u003e \u003cspan\u003e\u003cb\u003eSold out\u003c\/b\u003e — restocking soon. Enter your email below and we’ll ping you the moment it’s back.\u003c\/span\u003e \u003c\/div\u003e \u003cform class=\"tree-block tree-block--in\" method=\"post\" action=\"\/cart\/add\"\u003e \u003cinput type=\"hidden\" name=\"id\" id=\"tree-cart-variant\" value=\"REPLACE_WHEELS_ID\"\u003e \u003cinput type=\"hidden\" name=\"quantity\" value=\"1\"\u003e \u003cbutton type=\"submit\" class=\"tree-cta__btn\"\u003e \u003csvg width=\"20\" height=\"20\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"\u003e \u003ccircle cx=\"9\" cy=\"21\" r=\"1\"\u003e\u003c\/circle\u003e\u003ccircle cx=\"20\" cy=\"21\" r=\"1\"\u003e\u003c\/circle\u003e \u003cpath d=\"M1 1h4l2.7 13.4a2 2 0 0 0 2 1.6h9.7a2 2 0 0 0 2-1.6L23 6H6\"\u003e\u003c\/path\u003e \u003c\/svg\u003e \u003cspan\u003eAdd to cart — \u003cspan id=\"tree-cta-price\"\u003e$199.00\u003c\/span\u003e\u003c\/span\u003e \u003c\/button\u003e \u003c\/form\u003e \u003cform class=\"tree-block tree-block--out tree-notify\" method=\"post\" action=\"#\" id=\"tree-notify-form\"\u003e \u003clabel class=\"tree-notify__label\" for=\"tree-notify-email\"\u003eNotify me when available\u003c\/label\u003e \u003cdiv class=\"tree-notify__row\"\u003e \u003cinput class=\"tree-notify__input\" id=\"tree-notify-email\" type=\"email\" name=\"contact[email]\" placeholder=\"you@example.com\" required\u003e \u003cinput type=\"hidden\" name=\"variant_id\" id=\"tree-notify-variant\" value=\"REPLACE_WHEELS_ID\"\u003e \u003cbutton class=\"tree-notify__btn\" type=\"submit\"\u003e \u003csvg width=\"18\" height=\"18\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"\u003e \u003cpath d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\"\u003e\u003c\/path\u003e \u003cpath d=\"M13.73 21a2 2 0 0 1-3.46 0\"\u003e\u003c\/path\u003e \u003c\/svg\u003e \u003cspan class=\"tree-notify__btn-label\"\u003eNotify me\u003c\/span\u003e \u003c\/button\u003e \u003c\/div\u003e \u003cp class=\"tree-notify__hint\"\u003eWe’ll only email you about this restock. No spam.\u003c\/p\u003e \u003cp class=\"tree-notify__status tree-notify__status--ok\" role=\"status\"\u003e ✓ You’re on the list. We’ll email you the moment it’s back in stock. \u003c\/p\u003e \u003cp class=\"tree-notify__status tree-notify__status--err\" role=\"alert\"\u003e Something went wrong. Please try again or email support@kensui.com. \u003c\/p\u003e \u003c\/form\u003e \u003cul class=\"tree-trust\" aria-label=\"Guarantees\"\u003e \u003cli class=\"tree-trust__item\"\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"\u003e\u003cpath d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e 100‑day risk‑free trial \u003c\/li\u003e \u003cli class=\"tree-trust__item\"\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"\u003e\u003crect x=\"1\" y=\"3\" width=\"15\" height=\"13\"\u003e\u003c\/rect\u003e\u003cpath d=\"M16 8h4l3 3v5h-7zM5.5 20a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM18.5 20a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Free shipping $100+ \u003c\/li\u003e \u003cli class=\"tree-trust__item\"\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"\u003e\u003cpath d=\"M9 11H5a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2h-4\"\u003e\u003c\/path\u003e\u003cpolyline points=\"9 11 9 7 15 7 15 11\"\u003e\u003c\/polyline\u003e\u003ccircle cx=\"12\" cy=\"16\" r=\"1\"\u003e\u003c\/circle\u003e\u003c\/svg\u003e Trusted by 200,000+ \u003c\/li\u003e \u003c\/ul\u003e \u003c\/div\u003e \u003c\/div\u003e \u003c\/section\u003e \u003cscript\u003e\n(function () {\n  var root = document.querySelector('.tree-hero[data-product-handle]');\n  if (!root) return;\n\n  var KLAVIYO_PUBLIC_KEY = 'QeupfE';\n\n  \/\/ ---- Gallery slider ----\n  var track = root.querySelector('#tree-gallery-track');\n  var slides = track ? track.querySelectorAll('.tree-gallery__slide') : [];\n  var prevBtn = root.querySelector('.tree-gallery__arrow--prev');\n  var nextBtn = root.querySelector('.tree-gallery__arrow--next');\n  var counter = root.querySelector('#tree-gallery-counter');\n  var dotsEl = root.querySelector('#tree-gallery-dots');\n  var currentIndex = 0;\n\n  if (dotsEl \u0026\u0026 slides.length) {\n    for (var i = 0; i \u003c slides.length; i++) {\n      var dot = document.createElement('button');\n      dot.type = 'button';\n      dot.className = 'tree-gallery__dot';\n      dot.setAttribute('role', 'tab');\n      dot.setAttribute('aria-label', 'Go to image ' + (i + 1));\n      dot.setAttribute('aria-current', i === 0 ? 'true' : 'false');\n      dot.setAttribute('data-index', i);\n      dotsEl.appendChild(dot);\n    }\n  }\n  var dots = dotsEl ? dotsEl.querySelectorAll('.tree-gallery__dot') : [];\n\n  function goToSlide(index) {\n    if (!track || !slides.length) return;\n    index = Math.max(0, Math.min(slides.length - 1, index));\n    currentIndex = index;\n    track.scrollTo({ left: slides[index].offsetLeft, behavior: 'smooth' });\n    updateSliderUI();\n  }\n\n  function updateSliderUI() {\n    if (counter) counter.textContent = (currentIndex + 1) + ' \/ ' + slides.length;\n    dots.forEach(function (d, i) {\n      d.setAttribute('aria-current', i === currentIndex ? 'true' : 'false');\n    });\n    if (prevBtn) prevBtn.disabled = currentIndex === 0;\n    if (nextBtn) nextBtn.disabled = currentIndex === slides.length - 1;\n  }\n\n  if (prevBtn) prevBtn.addEventListener('click', function () { goToSlide(currentIndex - 1); });\n  if (nextBtn) nextBtn.addEventListener('click', function () { goToSlide(currentIndex + 1); });\n  dots.forEach(function (d) {\n    d.addEventListener('click', function () {\n      goToSlide(parseInt(d.getAttribute('data-index'), 10));\n    });\n  });\n\n  if (track) {\n    var scrollTimer;\n    track.addEventListener('scroll', function () {\n      clearTimeout(scrollTimer);\n      scrollTimer = setTimeout(function () {\n        var idx = Math.round(track.scrollLeft \/ track.clientWidth);\n        if (idx !== currentIndex) {\n          currentIndex = idx;\n          updateSliderUI();\n        }\n      }, 80);\n    });\n  }\n\n  updateSliderUI();\n\n  \/\/ ---- Variant state ----\n  var cards = root.querySelectorAll('.tree-variants__card');\n  var selected = root.querySelector('.tree-variants__card[aria-pressed=\"true\"]') || cards[0];\n\n  function applySelection(card) {\n    if (card.getAttribute('data-available') === 'false') return;\n    cards.forEach(function (c) { c.setAttribute('aria-pressed', 'false'); });\n    card.setAttribute('aria-pressed', 'true');\n    selected = card;\n\n    var name = card.getAttribute('data-variant-name');\n    var id = card.getAttribute('data-variant-id');\n\n    root.querySelector('#tree-selected-name').textContent = name;\n    root.querySelector('#tree-cart-variant').value = id;\n    root.querySelector('#tree-notify-variant').value = id;\n\n    \/\/ Jump slider to the wheels detail when \"Wheels\" is selected\n    if (name === 'Wheels' \u0026\u0026 slides.length \u003e 2) {\n      goToSlide(2); \/\/ wheels detail is slide 3\n    }\n\n    var available = card.getAttribute('data-available') !== 'false';\n    root.setAttribute('data-stock', available ? 'in' : 'out');\n\n    var priceCents = card.getAttribute('data-price-cents');\n    if (priceCents) updatePriceDisplays(parseInt(priceCents, 10));\n  }\n\n  function formatMoney(cents) {\n    \/\/ Try Shopify's built-in formatter first (respects shop's money format + active currency)\n    if (window.Shopify \u0026\u0026 typeof window.Shopify.formatMoney === 'function') {\n      var fmt = (window.Shopify.money_format) || '${{amount}}';\n      return window.Shopify.formatMoney(cents, fmt);\n    }\n    \/\/ Fallback: USD formatting\n    return '$' + (cents \/ 100).toFixed(2);\n  }\n\n  function getCurrencyCode() {\n    \/\/ Shopify Currency app exposes the active currency on Shopify.currency.active\n    if (window.Shopify \u0026\u0026 window.Shopify.currency \u0026\u0026 window.Shopify.currency.active) {\n      return window.Shopify.currency.active;\n    }\n    return 'USD';\n  }\n\n  function updatePriceDisplays(priceCents) {\n    var formatted = formatMoney(priceCents);\n    var currency = getCurrencyCode();\n    root.querySelector('#tree-price').textContent = formatted + ' ' + currency;\n    root.querySelector('#tree-installment').textContent = formatMoney(priceCents \/ 4);\n    root.querySelector('#tree-cta-price').textContent = formatted;\n  }\n\n  cards.forEach(function (c) {\n    c.addEventListener('click', function () { applySelection(c); });\n  });\n\n  \/\/ ---- Initial price render (uses fallback price until fetch resolves) ----\n  \/\/ Default $199 if we have nothing better yet\n  updatePriceDisplays(19900);\n\n  \/\/ ---- Live Shopify product JSON fetch ----\n  var handle = root.getAttribute('data-product-handle');\n  fetch('\/products\/' + handle + '.js', { headers: { 'Accept': 'application\/json' } })\n    .then(function (r) { return r.ok ? r.json() : null; })\n    .then(function (data) {\n      if (!data || !data.variants) return;\n\n      \/\/ Match cards to variants by name fragment\n      cards.forEach(function (card) {\n        var wantName = card.getAttribute('data-variant-name').toLowerCase();\n        var match;\n        if (wantName === 'no wheels') {\n          \/\/ Match exactly \"no wheels\" (be careful — \"wheels\" matches both)\n          match = data.variants.find(function (v) {\n            var vn = (v.name || v.title || '').toLowerCase();\n            return vn.indexOf('no wheel') !== -1 || vn.indexOf('without') !== -1;\n          });\n        } else {\n          \/\/ \"Wheels\" variant — match anything with \"wheel\" but not \"no wheel\"\n          match = data.variants.find(function (v) {\n            var vn = (v.name || v.title || '').toLowerCase();\n            return vn.indexOf('wheel') !== -1 \u0026\u0026 vn.indexOf('no wheel') === -1 \u0026\u0026 vn.indexOf('without') === -1;\n          });\n        }\n\n        if (match) {\n          card.setAttribute('data-variant-id', match.id);\n          card.setAttribute('data-price-cents', match.price);\n          card.setAttribute('data-available', match.available ? 'true' : 'false');\n        } else {\n          card.setAttribute('data-available', 'false');\n        }\n      });\n\n      \/\/ If currently selected is unavailable, fall back to first available\n      if (selected.getAttribute('data-available') === 'false') {\n        var firstAvail = Array.prototype.find.call(cards, function (c) {\n          return c.getAttribute('data-available') !== 'false';\n        });\n        if (firstAvail) selected = firstAvail;\n      }\n\n      applySelection(selected);\n    })\n    .catch(function () { \/* silent *\/ });\n\n  \/\/ ---- Re-render prices if user changes currency on the page ----\n  \/\/ Most Shopify currency apps fire a custom event or modify Shopify.currency.active.\n  \/\/ Watch for both common patterns:\n  document.addEventListener('currency:changed', function () {\n    if (selected) applySelection(selected);\n  });\n  \/\/ Some apps (e.g. Shopify's native multi-currency) reload the page on switch,\n  \/\/ but if not, this listener catches it.\n\n  \/\/ ---- Klaviyo back-in-stock submit ----\n  var form = root.querySelector('#tree-notify-form');\n  if (!form) return;\n\n  form.addEventListener('submit', function (e) {\n    e.preventDefault();\n\n    var emailInput = form.querySelector('input[name=\"contact[email]\"]');\n    var variantInput = form.querySelector('input[name=\"variant_id\"]');\n    var btn = form.querySelector('.tree-notify__btn');\n    var btnLabel = form.querySelector('.tree-notify__btn-label');\n\n    var email = (emailInput.value || '').trim();\n    var variantId = (variantInput.value || '').trim();\n\n    if (!email || !variantId || variantId.indexOf('REPLACE_') === 0) {\n      form.setAttribute('data-state', 'error');\n      return;\n    }\n\n    btn.disabled = true;\n    var originalLabel = btnLabel.textContent;\n    btnLabel.textContent = 'Submitting…';\n    form.removeAttribute('data-state');\n\n    var payload = {\n      data: {\n        type: 'back-in-stock-subscription',\n        attributes: {\n          profile: { data: { type: 'profile', attributes: { email: email } } },\n          channels: ['EMAIL']\n        },\n        relationships: {\n          variant: { data: { type: 'catalog-variant', id: '$shopify:::$default:::' + variantId } }\n        }\n      }\n    };\n\n    fetch('https:\/\/a.klaviyo.com\/client\/back-in-stock-subscriptions\/?company_id=' + KLAVIYO_PUBLIC_KEY, {\n      method: 'POST',\n      headers: { 'Content-Type': 'application\/json', 'revision': '2024-10-15' },\n      body: JSON.stringify(payload)\n    })\n      .then(function (res) {\n        if (res.ok || res.status === 202) {\n          form.setAttribute('data-state', 'success');\n        } else {\n          form.setAttribute('data-state', 'error');\n          btn.disabled = false;\n          btnLabel.textContent = originalLabel;\n        }\n      })\n      .catch(function () {\n        form.setAttribute('data-state', 'error');\n        btn.disabled = false;\n        btnLabel.textContent = originalLabel;\n      });\n  });\n})();\n\u003c\/script\u003e \u003c\/div\u003e \u003cdiv id=\"s-3cdaa2b6-28c0-4cec-bc6e-763ef3405ef7\" class=\"shg-c shg-align-left\"\u003e \u003cstyle\u003e\n  .ks-trust {\n    --kst-bg: #f5f1ea;       \/* cream *\/\n    --kst-white: #ffffff;\n    --kst-off: #faf7f2;\n    --kst-sand: #e8e0d3;\n    --kst-ink: #2a2a2a;      \/* char *\/\n    --kst-black: #111111;\n    --kst-muted: #8a8378;\n    --kst-accent: #1972bc;   \/* blue *\/\n    --kst-accent-d: #155a96;\n    --fo: \"Oswald\", Impact, sans-serif;\n    --fd: \"Bebas Neue\", Impact, sans-serif;\n    --fb: \"Barlow\", system-ui, sans-serif;\n    --fc: \"Barlow Condensed\", system-ui, sans-serif;\n    box-sizing: border-box;\n  }\n  .ks-trust *, .ks-trust *::before, .ks-trust *::after { box-sizing: border-box; }\n\n  \/* ========== GUARANTEE BLOCK ========== *\/\n  .ks-guarantee {\n    background: var(--kst-black);\n    color: var(--kst-white);\n    padding: 72px 16px;\n  }\n  .ks-guarantee__grid {\n    max-width: 1200px;\n    margin: 0 auto;\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 40px;\n    align-items: center;\n  }\n  @media (min-width: 860px) {\n    .ks-guarantee { padding: 96px 24px; }\n    .ks-guarantee__grid { grid-template-columns: 360px 1fr; gap: 72px; }\n  }\n\n  \/* ----- Badge (stamped seal style) ----- *\/\n  .ks-guarantee__badge-wrap {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n  }\n  .ks-guarantee__badge {\n    position: relative;\n    width: 280px;\n    height: 280px;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    background: var(--kst-accent);\n    color: var(--kst-white);\n    border-radius: 6px;\n    padding: 24px;\n    text-align: center;\n    box-shadow: 0 0 0 6px var(--kst-black), 0 0 0 8px var(--kst-accent);\n    transform: rotate(-4deg);\n  }\n  .ks-guarantee__badge::before,\n  .ks-guarantee__badge::after {\n    content: \"\";\n    position: absolute;\n    left: 14px; right: 14px;\n    height: 1px;\n    background: rgba(255,255,255,.35);\n  }\n  .ks-guarantee__badge::before { top: 14px; }\n  .ks-guarantee__badge::after  { bottom: 14px; }\n\n  .ks-guarantee__badge-arc {\n    font-family: var(--fc);\n    font-size: 11px;\n    letter-spacing: .28em;\n    text-transform: uppercase;\n    color: rgba(255,255,255,.85);\n    margin-bottom: 4px;\n  }\n  .ks-guarantee__badge-top {\n    display: flex;\n    align-items: flex-start;\n    justify-content: center;\n    line-height: .85;\n    gap: 4px;\n  }\n  .ks-guarantee__badge-days {\n    font-family: var(--fo);\n    font-size: 128px;\n    line-height: .85;\n    color: var(--kst-white);\n    letter-spacing: -.04em;\n    font-weight: 700;\n  }\n  .ks-guarantee__badge-unit {\n    font-family: var(--fd);\n    font-size: 28px;\n    letter-spacing: .04em;\n    color: var(--kst-white);\n    text-transform: uppercase;\n    margin-top: 10px;\n  }\n  .ks-guarantee__badge-label {\n    font-family: var(--fd);\n    font-size: 20px;\n    letter-spacing: .12em;\n    color: var(--kst-white);\n    text-transform: uppercase;\n    line-height: 1;\n    margin-top: 2px;\n  }\n  .ks-guarantee__badge-sub {\n    font-family: var(--fc);\n    font-size: 11px;\n    letter-spacing: .18em;\n    text-transform: uppercase;\n    color: rgba(255,255,255,.7);\n    margin: 10px 0 0;\n  }\n\n  \/* ----- Content ----- *\/\n  .ks-guarantee__eyebrow {\n    font-family: var(--fc);\n    font-size: 13px;\n    letter-spacing: .14em;\n    text-transform: uppercase;\n    color: var(--kst-accent);\n    margin: 0 0 12px;\n  }\n  .ks-guarantee__title {\n    font-family: var(--fo);\n    font-weight: 600;\n    font-size: clamp(32px, 4.2vw, 52px);\n    line-height: 1;\n    text-transform: uppercase;\n    color: var(--kst-white);\n    margin: 0 0 20px;\n  }\n  .ks-guarantee__title em {\n    color: var(--kst-accent);\n    font-style: normal;\n  }\n  .ks-guarantee__desc {\n    font-family: var(--fb);\n    font-size: 16px;\n    line-height: 1.6;\n    color: rgba(255,255,255,.72);\n    margin: 0 0 28px;\n    max-width: 56ch;\n  }\n\n  .ks-guarantee__features {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 8px;\n  }\n  @media (min-width: 600px) {\n    .ks-guarantee__features { grid-template-columns: 1fr 1fr; gap: 10px; }\n  }\n  .ks-guarantee__feature {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    padding: 12px 14px;\n    background: rgba(255,255,255,.04);\n    border: 1px solid rgba(255,255,255,.08);\n    border-radius: 6px;\n    font-family: var(--fb);\n    font-size: 14px;\n    color: var(--kst-white);\n  }\n  .ks-guarantee__feature-icon {\n    flex: 0 0 20px;\n    width: 20px; height: 20px;\n    border-radius: 50%;\n    background: var(--kst-accent);\n    display: flex; align-items: center; justify-content: center;\n    color: var(--kst-white);\n  }\n  .ks-guarantee__feature-icon svg { width: 12px; height: 12px; }\n\n  \/* ========== SOCIAL PROOF BLOCK ========== *\/\n  .ks-social {\n    background: var(--kst-bg);\n    padding: 72px 0 80px;\n  }\n  .ks-social__header {\n    text-align: center;\n    max-width: 700px;\n    margin: 0 auto 40px;\n    padding: 0 20px;\n  }\n  .ks-social__eyebrow {\n    font-family: var(--fc);\n    font-size: 13px;\n    letter-spacing: .14em;\n    text-transform: uppercase;\n    color: var(--kst-accent);\n    margin: 0 0 10px;\n  }\n  .ks-social__count {\n    font-family: var(--fo);\n    font-size: clamp(56px, 9vw, 96px);\n    line-height: 1;\n    color: var(--kst-black);\n    display: block;\n    margin: 0 0 6px;\n    letter-spacing: -.02em;\n  }\n  .ks-social__title {\n    font-family: var(--fd);\n    font-size: clamp(20px, 2.5vw, 26px);\n    letter-spacing: .04em;\n    color: var(--kst-ink);\n    text-transform: uppercase;\n    margin: 0;\n  }\n\n  \/* ----- Marquee ----- *\/\n  .ks-marquee {\n    position: relative;\n    overflow: hidden;\n    mask-image: linear-gradient(to right, transparent 0, #000 80px, #000 calc(100% - 80px), transparent 100%);\n    -webkit-mask-image: linear-gradient(to right, transparent 0, #000 80px, #000 calc(100% - 80px), transparent 100%);\n  }\n  .ks-marquee__track {\n    display: flex;\n    animation: ks-scroll 40s linear infinite;\n    will-change: transform;\n  }\n  .ks-marquee:hover .ks-marquee__track { animation-play-state: paused; }\n  @keyframes ks-scroll {\n    0%   { transform: translateX(0); }\n    100% { transform: translateX(-50%); }\n  }\n  .ks-marquee__group {\n    display: flex;\n    gap: 14px;\n    padding: 0 7px;\n    flex-shrink: 0;\n  }\n\n  .ks-athlete {\n    position: relative;\n    width: 200px; height: 200px;\n    border-radius: 6px;\n    overflow: hidden;\n    flex-shrink: 0;\n    background: var(--kst-white);\n    cursor: pointer;\n  }\n  @media (max-width: 600px) {\n    .ks-athlete { width: 150px; height: 150px; }\n  }\n  .ks-athlete img {\n    width: 100%; height: 100%;\n    object-fit: cover;\n    display: block;\n    transition: transform .4s ease;\n  }\n  .ks-athlete:hover img { transform: scale(1.06); }\n  .ks-athlete__overlay {\n    position: absolute;\n    inset: auto 0 0 0;\n    padding: 30px 12px 10px;\n    background: linear-gradient(to top, rgba(0,0,0,.85) 0%, transparent 100%);\n    opacity: 0;\n    transition: opacity .25s ease;\n  }\n  .ks-athlete:hover .ks-athlete__overlay { opacity: 1; }\n  .ks-athlete__name {\n    font-family: var(--fd);\n    font-size: 16px;\n    letter-spacing: .04em;\n    color: var(--kst-white);\n    line-height: 1;\n    margin-bottom: 3px;\n  }\n  .ks-athlete__sport {\n    font-family: var(--fc);\n    font-size: 11px;\n    letter-spacing: .1em;\n    text-transform: uppercase;\n    color: var(--kst-accent);\n  }\n\n  \/* ----- Stats ----- *\/\n  .ks-stats {\n    max-width: 1200px;\n    margin: 56px auto 0;\n    padding: 0 20px;\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 1px;\n    background: var(--kst-sand);\n    border-radius: 6px;\n    overflow: hidden;\n  }\n  @media (min-width: 860px) {\n    .ks-stats { grid-template-columns: repeat(4, 1fr); }\n  }\n  .ks-stat {\n    background: var(--kst-white);\n    padding: 28px 16px;\n    text-align: center;\n  }\n  .ks-stat__num {\n    font-family: var(--fo);\n    font-size: clamp(32px, 4vw, 44px);\n    line-height: 1;\n    color: var(--kst-black);\n    margin: 0 0 8px;\n    letter-spacing: -.01em;\n  }\n  .ks-stat__label {\n    font-family: var(--fc);\n    font-size: 12px;\n    letter-spacing: .12em;\n    text-transform: uppercase;\n    color: var(--kst-muted);\n    margin: 0;\n  }\n\n  #judgeme_widget_placeholder {\n    max-width: 1200px;\n    margin: 48px auto 0;\n    padding: 0 20px;\n  }\n\u003c\/style\u003e \u003cdiv class=\"ks-trust\"\u003e \u003csection class=\"ks-guarantee\" aria-label=\"100-day guarantee\"\u003e \u003cdiv class=\"ks-guarantee__grid\"\u003e \u003cdiv class=\"ks-guarantee__badge-wrap\"\u003e \u003cdiv class=\"ks-guarantee__badge\" aria-label=\"100 day money back guarantee\"\u003e \u003cspan class=\"ks-guarantee__badge-arc\"\u003eKensui Promise\u003c\/span\u003e \u003cdiv class=\"ks-guarantee__badge-top\"\u003e \u003cspan class=\"ks-guarantee__badge-days\"\u003e100\u003c\/span\u003e \u003cspan class=\"ks-guarantee__badge-unit\"\u003eDays\u003c\/span\u003e \u003c\/div\u003e \u003cspan class=\"ks-guarantee__badge-label\"\u003eMoney Back\u003c\/span\u003e \u003cspan class=\"ks-guarantee__badge-sub\"\u003eNo questions asked\u003c\/span\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"ks-guarantee__content\"\u003e \u003cp class=\"ks-guarantee__eyebrow\"\u003eThe Kensui promise\u003c\/p\u003e \u003ch2 class=\"ks-guarantee__title\"\u003eYour success\u003cbr\u003e\u003cem\u003eis guaranteed.\u003c\/em\u003e\n\u003c\/h2\u003e \u003cp class=\"ks-guarantee__desc\"\u003e We want you to reach your fitness goals, enjoy your life, and feel healthy. The last thing we want is to create more stress — so if you decide this isn’t for you, we’ll give you a no-hassle, no-questions-asked 100% refund. \u003c\/p\u003e \u003cul class=\"ks-guarantee__features\" role=\"list\"\u003e \u003cli class=\"ks-guarantee__feature\"\u003e \u003cspan class=\"ks-guarantee__feature-icon\" aria-hidden=\"true\"\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003c\/span\u003e 100‑day risk-free trial \u003c\/li\u003e \u003cli class=\"ks-guarantee__feature\"\u003e \u003cspan class=\"ks-guarantee__feature-icon\" aria-hidden=\"true\"\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003c\/span\u003e Full refund if not satisfied \u003c\/li\u003e \u003cli class=\"ks-guarantee__feature\"\u003e \u003cspan class=\"ks-guarantee__feature-icon\" aria-hidden=\"true\"\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003c\/span\u003e No questions asked \u003c\/li\u003e \u003cli class=\"ks-guarantee__feature\"\u003e \u003cspan class=\"ks-guarantee__feature-icon\" aria-hidden=\"true\"\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003c\/span\u003e Warranty included \u003c\/li\u003e \u003c\/ul\u003e \u003c\/div\u003e \u003c\/div\u003e \u003c\/section\u003e \u003csection class=\"ks-social\" aria-label=\"Trusted by 200,000+ athletes\"\u003e \u003cdiv class=\"ks-social__header\"\u003e \u003cp class=\"ks-social__eyebrow\"\u003eTrusted worldwide\u003c\/p\u003e \u003cspan class=\"ks-social__count\" data-animate-count=\"200000\" data-suffix=\"+\"\u003e200,000+\u003c\/span\u003e \u003ch2 class=\"ks-social__title\"\u003eAthletes worldwide\u003c\/h2\u003e \u003c\/div\u003e \u003cdiv class=\"ks-marquee\"\u003e \u003cdiv class=\"ks-marquee__track\"\u003e \u003cdiv class=\"ks-marquee__group\"\u003e \u003cfigure class=\"ks-athlete\"\u003e \u003cimg loading=\"lazy\" src=\"https:\/\/i.shgcdn.com\/1a870660-76c0-4799-be89-7cf273afe2b0\/-\/format\/auto\/-\/preview\/3000x3000\/-\/quality\/lighter\/-\/resize\/400x\/\" srcset=\"https:\/\/i.shgcdn.com\/1a870660-76c0-4799-be89-7cf273afe2b0\/-\/format\/auto\/-\/preview\/3000x3000\/-\/quality\/lighter\/-\/resize\/300x\/ 300w, https:\/\/i.shgcdn.com\/1a870660-76c0-4799-be89-7cf273afe2b0\/-\/format\/auto\/-\/preview\/3000x3000\/-\/quality\/lighter\/-\/resize\/400x\/ 400w\" sizes=\"200px\" width=\"400\" height=\"400\" alt=\"\"\u003e \u003cfigcaption class=\"ks-athlete__overlay\"\u003e \u003cdiv class=\"ks-athlete__name\"\u003eJohn D.\u003c\/div\u003e \u003cdiv class=\"ks-athlete__sport\"\u003eCrossFit\u003c\/div\u003e \u003c\/figcaption\u003e \u003c\/figure\u003e \u003cfigure class=\"ks-athlete\"\u003e \u003cimg loading=\"lazy\" src=\"https:\/\/i.shgcdn.com\/fb23d8ec-a3f2-4bab-a011-d4c2976f27a7\/-\/format\/auto\/-\/preview\/3000x3000\/-\/quality\/lighter\/-\/resize\/400x\/\" srcset=\"https:\/\/i.shgcdn.com\/fb23d8ec-a3f2-4bab-a011-d4c2976f27a7\/-\/format\/auto\/-\/preview\/3000x3000\/-\/quality\/lighter\/-\/resize\/300x\/ 300w, https:\/\/i.shgcdn.com\/fb23d8ec-a3f2-4bab-a011-d4c2976f27a7\/-\/format\/auto\/-\/preview\/3000x3000\/-\/quality\/lighter\/-\/resize\/400x\/ 400w\" sizes=\"200px\" width=\"400\" height=\"400\" alt=\"\"\u003e \u003cfigcaption class=\"ks-athlete__overlay\"\u003e \u003cdiv class=\"ks-athlete__name\"\u003eSarah M.\u003c\/div\u003e \u003cdiv class=\"ks-athlete__sport\"\u003eCalisthenics\u003c\/div\u003e \u003c\/figcaption\u003e \u003c\/figure\u003e \u003cfigure class=\"ks-athlete\"\u003e \u003cimg loading=\"lazy\" src=\"https:\/\/i.shgcdn.com\/99b9bf0a-ba81-43b2-8628-8b74b1768199\/-\/format\/auto\/-\/preview\/3000x3000\/-\/quality\/lighter\/-\/resize\/400x\/\" srcset=\"https:\/\/i.shgcdn.com\/99b9bf0a-ba81-43b2-8628-8b74b1768199\/-\/format\/auto\/-\/preview\/3000x3000\/-\/quality\/lighter\/-\/resize\/300x\/ 300w, https:\/\/i.shgcdn.com\/99b9bf0a-ba81-43b2-8628-8b74b1768199\/-\/format\/auto\/-\/preview\/3000x3000\/-\/quality\/lighter\/-\/resize\/400x\/ 400w\" sizes=\"200px\" width=\"400\" height=\"400\" alt=\"\"\u003e \u003cfigcaption class=\"ks-athlete__overlay\"\u003e \u003cdiv class=\"ks-athlete__name\"\u003eEric B.\u003c\/div\u003e \u003cdiv class=\"ks-athlete__sport\"\u003ePowerlifting\u003c\/div\u003e \u003c\/figcaption\u003e \u003c\/figure\u003e \u003cfigure class=\"ks-athlete\"\u003e \u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/7.jpg?v=1747906467\u0026amp;width=400\u0026amp;format=webp\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/7.jpg?v=1747906467\u0026amp;width=300\u0026amp;format=webp 300w, https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/7.jpg?v=1747906467\u0026amp;width=400\u0026amp;format=webp 400w\" sizes=\"200px\" width=\"400\" height=\"400\" alt=\"\"\u003e \u003cfigcaption class=\"ks-athlete__overlay\"\u003e \u003cdiv class=\"ks-athlete__name\"\u003eLuke K.\u003c\/div\u003e \u003cdiv class=\"ks-athlete__sport\"\u003eYoga\u003c\/div\u003e \u003c\/figcaption\u003e \u003c\/figure\u003e \u003cfigure class=\"ks-athlete\"\u003e \u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/10_73d4f91e-83c8-424c-9287-64f823c17c35.jpg?v=1747906467\u0026amp;width=400\u0026amp;format=webp\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/10_73d4f91e-83c8-424c-9287-64f823c17c35.jpg?v=1747906467\u0026amp;width=300\u0026amp;format=webp 300w, https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/10_73d4f91e-83c8-424c-9287-64f823c17c35.jpg?v=1747906467\u0026amp;width=400\u0026amp;format=webp 400w\" sizes=\"200px\" width=\"400\" height=\"400\" alt=\"\"\u003e \u003cfigcaption class=\"ks-athlete__overlay\"\u003e \u003cdiv class=\"ks-athlete__name\"\u003eTom B.\u003c\/div\u003e \u003cdiv class=\"ks-athlete__sport\"\u003ePowerlifting\u003c\/div\u003e \u003c\/figcaption\u003e \u003c\/figure\u003e \u003cfigure class=\"ks-athlete\"\u003e \u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/5_da5a09f9-6eef-4008-a04b-c67b919bb772.jpg?v=1747906467\u0026amp;width=400\u0026amp;format=webp\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/5_da5a09f9-6eef-4008-a04b-c67b919bb772.jpg?v=1747906467\u0026amp;width=300\u0026amp;format=webp 300w, https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/5_da5a09f9-6eef-4008-a04b-c67b919bb772.jpg?v=1747906467\u0026amp;width=400\u0026amp;format=webp 400w\" sizes=\"200px\" width=\"400\" height=\"400\" alt=\"\"\u003e \u003cfigcaption class=\"ks-athlete__overlay\"\u003e \u003cdiv class=\"ks-athlete__name\"\u003eElias S.\u003c\/div\u003e \u003cdiv class=\"ks-athlete__sport\"\u003eMMA\u003c\/div\u003e \u003c\/figcaption\u003e \u003c\/figure\u003e \u003cfigure class=\"ks-athlete\"\u003e \u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/6_f24a5899-7d7e-4c4e-a5d8-c2078dc665a8.jpg?v=1747906467\u0026amp;width=400\u0026amp;format=webp\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/6_f24a5899-7d7e-4c4e-a5d8-c2078dc665a8.jpg?v=1747906467\u0026amp;width=300\u0026amp;format=webp 300w, https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/6_f24a5899-7d7e-4c4e-a5d8-c2078dc665a8.jpg?v=1747906467\u0026amp;width=400\u0026amp;format=webp 400w\" sizes=\"200px\" width=\"400\" height=\"400\" alt=\"\"\u003e \u003cfigcaption class=\"ks-athlete__overlay\"\u003e \u003cdiv class=\"ks-athlete__name\"\u003eAlex P.\u003c\/div\u003e \u003cdiv class=\"ks-athlete__sport\"\u003eCalisthenics\u003c\/div\u003e \u003c\/figcaption\u003e \u003c\/figure\u003e \u003cfigure class=\"ks-athlete\"\u003e \u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/2.jpg?v=1747906467\u0026amp;width=400\u0026amp;format=webp\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/2.jpg?v=1747906467\u0026amp;width=300\u0026amp;format=webp 300w, https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/2.jpg?v=1747906467\u0026amp;width=400\u0026amp;format=webp 400w\" sizes=\"200px\" width=\"400\" height=\"400\" alt=\"\"\u003e \u003cfigcaption class=\"ks-athlete__overlay\"\u003e \u003cdiv class=\"ks-athlete__name\"\u003eNina L.\u003c\/div\u003e \u003cdiv class=\"ks-athlete__sport\"\u003eSwimming\u003c\/div\u003e \u003c\/figcaption\u003e \u003c\/figure\u003e \u003c\/div\u003e \u003cdiv class=\"ks-marquee__group\" aria-hidden=\"true\"\u003e \u003cfigure class=\"ks-athlete\"\u003e \u003cimg loading=\"lazy\" src=\"https:\/\/i.shgcdn.com\/1a870660-76c0-4799-be89-7cf273afe2b0\/-\/format\/auto\/-\/preview\/3000x3000\/-\/quality\/lighter\/-\/resize\/400x\/\" width=\"400\" height=\"400\" alt=\"\"\u003e \u003cfigcaption class=\"ks-athlete__overlay\"\u003e \u003cdiv class=\"ks-athlete__name\"\u003eJohn D.\u003c\/div\u003e \u003cdiv class=\"ks-athlete__sport\"\u003eCrossFit\u003c\/div\u003e \u003c\/figcaption\u003e \u003c\/figure\u003e \u003cfigure class=\"ks-athlete\"\u003e \u003cimg loading=\"lazy\" src=\"https:\/\/i.shgcdn.com\/fb23d8ec-a3f2-4bab-a011-d4c2976f27a7\/-\/format\/auto\/-\/preview\/3000x3000\/-\/quality\/lighter\/-\/resize\/400x\/\" width=\"400\" height=\"400\" alt=\"\"\u003e \u003cfigcaption class=\"ks-athlete__overlay\"\u003e \u003cdiv class=\"ks-athlete__name\"\u003eSarah M.\u003c\/div\u003e \u003cdiv class=\"ks-athlete__sport\"\u003eCalisthenics\u003c\/div\u003e \u003c\/figcaption\u003e \u003c\/figure\u003e \u003cfigure class=\"ks-athlete\"\u003e \u003cimg loading=\"lazy\" src=\"https:\/\/i.shgcdn.com\/99b9bf0a-ba81-43b2-8628-8b74b1768199\/-\/format\/auto\/-\/preview\/3000x3000\/-\/quality\/lighter\/-\/resize\/400x\/\" width=\"400\" height=\"400\" alt=\"\"\u003e \u003cfigcaption class=\"ks-athlete__overlay\"\u003e \u003cdiv class=\"ks-athlete__name\"\u003eEric B.\u003c\/div\u003e \u003cdiv class=\"ks-athlete__sport\"\u003ePowerlifting\u003c\/div\u003e \u003c\/figcaption\u003e \u003c\/figure\u003e \u003cfigure class=\"ks-athlete\"\u003e \u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/7.jpg?v=1747906467\u0026amp;width=400\u0026amp;format=webp\" width=\"400\" height=\"400\" alt=\"\"\u003e \u003cfigcaption class=\"ks-athlete__overlay\"\u003e \u003cdiv class=\"ks-athlete__name\"\u003eLuke K.\u003c\/div\u003e \u003cdiv class=\"ks-athlete__sport\"\u003eYoga\u003c\/div\u003e \u003c\/figcaption\u003e \u003c\/figure\u003e \u003cfigure class=\"ks-athlete\"\u003e \u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/10_73d4f91e-83c8-424c-9287-64f823c17c35.jpg?v=1747906467\u0026amp;width=400\u0026amp;format=webp\" width=\"400\" height=\"400\" alt=\"\"\u003e \u003cfigcaption class=\"ks-athlete__overlay\"\u003e \u003cdiv class=\"ks-athlete__name\"\u003eTom B.\u003c\/div\u003e \u003cdiv class=\"ks-athlete__sport\"\u003ePowerlifting\u003c\/div\u003e \u003c\/figcaption\u003e \u003c\/figure\u003e \u003cfigure class=\"ks-athlete\"\u003e \u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/5_da5a09f9-6eef-4008-a04b-c67b919bb772.jpg?v=1747906467\u0026amp;width=400\u0026amp;format=webp\" width=\"400\" height=\"400\" alt=\"\"\u003e \u003cfigcaption class=\"ks-athlete__overlay\"\u003e \u003cdiv class=\"ks-athlete__name\"\u003eElias S.\u003c\/div\u003e \u003cdiv class=\"ks-athlete__sport\"\u003eMMA\u003c\/div\u003e \u003c\/figcaption\u003e \u003c\/figure\u003e \u003cfigure class=\"ks-athlete\"\u003e \u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/6_f24a5899-7d7e-4c4e-a5d8-c2078dc665a8.jpg?v=1747906467\u0026amp;width=400\u0026amp;format=webp\" width=\"400\" height=\"400\" alt=\"\"\u003e \u003cfigcaption class=\"ks-athlete__overlay\"\u003e \u003cdiv class=\"ks-athlete__name\"\u003eAlex P.\u003c\/div\u003e \u003cdiv class=\"ks-athlete__sport\"\u003eCalisthenics\u003c\/div\u003e \u003c\/figcaption\u003e \u003c\/figure\u003e \u003cfigure class=\"ks-athlete\"\u003e \u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/2.jpg?v=1747906467\u0026amp;width=400\u0026amp;format=webp\" width=\"400\" height=\"400\" alt=\"\"\u003e \u003cfigcaption class=\"ks-athlete__overlay\"\u003e \u003cdiv class=\"ks-athlete__name\"\u003eNina L.\u003c\/div\u003e \u003cdiv class=\"ks-athlete__sport\"\u003eSwimming\u003c\/div\u003e \u003c\/figcaption\u003e \u003c\/figure\u003e \u003c\/div\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"ks-stats\" role=\"list\"\u003e \u003cdiv class=\"ks-stat\" role=\"listitem\"\u003e \u003cdiv class=\"ks-stat__num\" data-animate-count=\"200000\" data-suffix=\"+\"\u003e200K+\u003c\/div\u003e \u003cdiv class=\"ks-stat__label\"\u003eHappy Athletes\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"ks-stat\" role=\"listitem\"\u003e \u003cdiv class=\"ks-stat__num\"\u003e4.9★\u003c\/div\u003e \u003cdiv class=\"ks-stat__label\"\u003eAverage Rating\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"ks-stat\" role=\"listitem\"\u003e \u003cdiv class=\"ks-stat__num\" data-animate-count=\"50\" data-suffix=\"+\"\u003e50+\u003c\/div\u003e \u003cdiv class=\"ks-stat__label\"\u003eCountries\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"ks-stat\" role=\"listitem\"\u003e \u003cdiv class=\"ks-stat__num\" data-animate-count=\"99\" data-suffix=\"%\"\u003e99%\u003c\/div\u003e \u003cdiv class=\"ks-stat__label\"\u003eSatisfaction\u003c\/div\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cdiv id=\"judgeme_widget_placeholder\"\u003e\u003c\/div\u003e \u003c\/section\u003e \u003c\/div\u003e \u003cscript\u003e\n(function () {\n  \/\/ Counter animation on scroll-in, works for any element with data-animate-count\n  function formatNum(n, target) {\n    if (target \u003e= 1000) {\n      \/\/ Show \"200K+\" style for big numbers\n      if (target \u003e= 1000) return Math.floor(n \/ 1000) + 'K';\n    }\n    return Math.floor(n).toString();\n  }\n\n  function animate(el) {\n    var target = parseInt(el.getAttribute('data-animate-count'), 10);\n    var suffix = el.getAttribute('data-suffix') || '';\n    if (isNaN(target)) return;\n    var duration = 1400;\n    var start = null;\n    function step(ts) {\n      if (!start) start = ts;\n      var t = Math.min(1, (ts - start) \/ duration);\n      var eased = 1 - Math.pow(1 - t, 3); \/\/ ease-out cubic\n      var current = target * eased;\n      el.textContent = formatNum(current, target) + suffix;\n      if (t \u003c 1) requestAnimationFrame(step);\n      else el.textContent = (target \u003e= 1000 ? Math.floor(target\/1000) + 'K' : target) + suffix;\n    }\n    requestAnimationFrame(step);\n  }\n\n  var nodes = document.querySelectorAll('[data-animate-count]');\n  if (!('IntersectionObserver' in window)) {\n    nodes.forEach(animate);\n    return;\n  }\n  var io = new IntersectionObserver(function (entries) {\n    entries.forEach(function (e) {\n      if (e.isIntersecting) {\n        animate(e.target);\n        io.unobserve(e.target);\n      }\n    });\n  }, { threshold: 0.4 });\n  nodes.forEach(function (n) { io.observe(n); });\n})();\n\u003c\/script\u003e \u003c\/div\u003e \u003c\/div\u003e","brand":"Kensui","offers":[{"title":"Wheels","offer_id":47753276227796,"sku":null,"price":199.0,"currency_code":"USD","in_stock":true},{"title":"No Wheels","offer_id":47753276260564,"sku":null,"price":149.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/5_afae0716-2891-456c-ade7-6bd2ffee7ea8.jpg?v=1775132071","url":"https:\/\/kensui.com\/products\/weight-tree","provider":"Kensui","version":"1.0","type":"link"}