AdaptaBELL™
.ab-hero { --ab-bg: #f5f5f5; --ab-white: #ffffff; --ab-off: #f5f5f5; --ab-sand: #e7decf; --ab-ink: #26241f; --ab-black: #16140f; --ab-muted: #948c7d; --ab-accent: #1972bc; --ab-acc ent-d:#155a96; --ab-accent-tint: #e9f1f8; --fo: "Oswald", Impact, sans-serif; --fd: "Bebas Neue", Impact, sans-serif; --fb: "Barlow", system-ui, sans-serif; --fc: "Barlow Condensed", system-ui, sans-serif; background: radial-gradient(120% 80% at 100% 0%, #f8f4ec 0%, var(--ab-bg) 55%); color: var(--ab-ink); padding: 28px 16px 40px; box-sizing: border-box; } .ab-hero *, .ab-hero *::before, .ab-hero *::after { box-sizing: border-box; } .ab-hero__grid { max-width: 1240px; margin: 0 auto; display: grid; grid-template-columns: 1fr; gap: 24px; } @media (min-width: 880px) { .ab-hero { padding: 48px 28px 56px; } .ab-hero__grid { grid-template-columns: 1.08fr 1fr; gap: 52px; align-items: start; } } /* Stock toggle */ .ab-hero .ab-block--in, .ab-hero .ab-block--out { display: none; } .ab-hero[data-stock="in"] .ab-block--in { display: flex; flex-direction: column; gap: 10px; } .ab-hero[data-stock="in"] .ab-stock--in { display: flex; } .ab-hero[data-stock="out"] .ab-block--out { display: flex; flex-direction: column; gap: 10px; } .ab-hero[data-stock="out"] .ab-stock--out { display: flex; } .ab-stock--in, .ab-stock--out { display: none; } /* ============ GALLERY ============ */ .ab-gallery { display: flex; flex-direction: column; gap: 10px; position: sticky; top: 16px; } @media (max-width: 879px){ .ab-gallery { position: static; } } .ab-gallery__stage { position: relative; background: var(--ab-white); border: 1px solid var(--ab-sand); border-radius: 6px; overflow: hidden; aspect-ratio: 1 / 1; box-shadow: 0 24px 48px -28px rgba(22,20,15,.30); } .ab-gallery__track { display: flex; width: 100%; height: 100%; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; -ms-overflow-style: none; } .ab-gallery__track::-webkit-scrollbar { display: none; } .ab-gallery__slide { flex: 0 0 100%; width: 100%; height: 100%; scroll-snap-align: start; scroll-snap-stop: always; } .ab-gallery__slide img { width: 100%; height: 100%; object-fit: cover; display: block; } .ab-gallery__badge { position: absolute; top: 14px; left: 14px; background: var(--ab-black); color: var(--ab-white); font-family: var(--fc); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; font-weight: 600; padding: 6px 11px; border-radius: 5px; z-index: 3; pointer-events: none; } .ab-gallery__pair { position: absolute; top: 14px; right: 14px; background: var(--ab-accent); color: var(--ab-white); font-family: var(--fc); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; font-weight: 600; padding: 6px 11px; border-radius: 5px; z-index: 3; pointer-events: none; } .ab-gallery__arrow { position: absolute; top: 50%; transform: translateY(-50%); width: 44px; height: 44px; background: rgba(255,255,255,.92); backdrop-filter: blur(4px); border: 1px solid var(--ab-sand); border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; z-index: 3; transition: background .12s ease, transform .12s ease, opacity .12s ease; color: var(--ab-black); box-shadow: 0 4px 16px -6px rgba(0,0,0,.2); } .ab-gallery__arrow:hover { background: var(--ab-white); transform: translateY(-50%) scale(1.07); } .ab-gallery__arrow:active { transform: translateY(-50%) scale(.95); } .ab-gallery__arrow:disabled { opacity: 0; pointer-events: none; } .ab-gallery__arrow svg { width: 19px; height: 19px; } .ab-gallery__arrow--prev { left: 14px; } .ab-gallery__arrow--next { right: 14px; } .ab-gallery__counter { position: absolute; bottom: 14px; right: 14px; background: rgba(22,20,15,.72); color: var(--ab-white); font-family: var(--fc); font-size: 11px; letter-spacing: .1em; font-weight: 500; padding: 4px 11px; border-radius: 999px; z-index: 3; pointer-events: none; } /* Thumbnails */ .ab-gallery__thumbs { display: flex; gap: 7px; overflow-x: auto; overflow-y: hidden; scroll-behavior: smooth; scrollbar-width: none; -ms-overflow-style: none; padding: 3px 0; } .ab-gallery__thumbs::-webkit-scrollbar { display: none; } .ab-gallery__thumb { flex: 0 0 calc((100% - 56px) / 9.5); aspect-ratio: 1 / 1; background: var(--ab-white); border: 1.5px solid var(--ab-sand); border-radius: 5px; overflow: hidden; cursor: pointer; padding: 0; opacity: .62; transition: border-color .15s ease, transform .15s ease, opacity .15s ease; } .ab-gallery__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; } .ab-gallery__thumb[aria-current="true"] { border-color: var(--ab-accent); opacity: 1; } .ab-gallery__thumb:hover { transform: translateY(-2px); opacity: 1; } /* ============ BUY BOX ============ */ .ab-info { display: flex; flex-direction: column; gap: 18px; } .ab-info__eyebrow { display: flex; align-items: center; gap: 12px; margin-top:-12px; font-family: var(--fc); font-size: 13px; letter-spacing: .2em; text-transform: uppercase; color: var(--ab-accent); font-weight: 600; } .ab-info__eyebrow::after { content: ""; flex: 1; height: 1px; background: linear-gradient(90deg, var(--ab-sand), transparent); } .ab-info__title { font-family: var(--fo); font-weight: 600; font-size: clamp(40px, 6vw, 62px); line-height: .92; letter-spacing: -.01em; text-transform: uppercase; margin: -4px 0 0; color: var(--ab-black); } .ab-info__subtitle { font-family: var(--fb); font-size: 16px; line-height: 1.55; color: var(--ab-ink); margin: -2px 0 0; max-width: 52ch; opacity: .9; } .ab-info__subtitle b { color: var(--ab-black); font-weight: 600; } #judgeme_badge_placeholder { margin: -6px 0 -25px; min-height: 18px; } /* 2-tier cards */ .ab-tiers { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; } .ab-tier { position: relative; display: flex; flex-direction: column; gap: 7px; padding: 16px 14px; background: var(--ab-white); border: 1.5px solid var(--ab-sand); border-radius: 6px; cursor: pointer; text-align: left; font-family: var(--fb); transition: border-color .12s ease, box-shadow .12s ease, transform .12s ease; } .ab-tier:hover { border-color: var(--ab-accent); transform: translateY(-1px); } .ab-tier[aria-pressed="true"] { border-color: var(--ab-accent); box-shadow: 0 0 0 3px var(--ab-accent-tint); } .ab-tier[aria-pressed="true"]::before { content: ""; position: absolute; top: -1px; right: -1px; width: 22px; height: 22px; background: var(--ab-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; border-radius: 0 6px 0 6px; } .ab-tier__head { display: flex; align-items: baseline; justify-content: space-between; gap: 4px; } .ab-tier__name { font-family: var(--fd); font-size: 23px; letter-spacing: .04em; color: var(--ab-black); line-height: 1; } .ab-tier__price { font-family: var(--fo); font-size: 18px; font-weight: 600; color: var(--ab-black); line-height: 1; } .ab-tier__capacity { font-family: var(--fo); font-size: 22px; font-weight: 600; color: var(--ab-accent); line-height: 1; letter-spacing: -.01em; } .ab-tier__capacity small { font-family: var(--fc); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--ab-muted); font-weight: 600; margin-left: 2px; } .ab-tier__build { font-family: var(--fb); font-size: 11px; color: var(--ab-muted); line-height: 1.35; margin-top: 2px; } .ab-tier__build b { color: var(--ab-black); font-weight: 600; } .ab-tier[data-available="false"] { opacity: .55; cursor: not-allowed; } .ab-tier[data-available="false"]::after { content: "Sold out"; position: absolute; bottom: 6px; right: 8px; font-family: var(--fc); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: #c0392b; } /* Price */ .ab-price-row { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; padding-top: 2px; } .ab-price { font-family: var(--fo); font-size: 34px; font-weight: 600; color: var(--ab-black); line-height: 1; letter-spacing: -.01em; } .ab-freeship { display: none; align-items: center; gap: 5px; font-family: var(--fc); font-size: 12px; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; color: #1e6b2e; background: #e7f6ec; border: 1px solid #c6e5cc; padding: 4px 9px; border-radius: 4px; line-height: 1; } .ab-freeship.is-visible { display: inline-flex; } .ab-freeship svg { width: 14px; height: 14px; } .ab-installments { font-family: var(--fb); font-size: 13px; color: var(--ab-muted); } .ab-installments b { color: var(--ab-ink); font-weight: 600; } /* Stock */ .ab-stock { font-family: var(--fb); font-size: 13.5px; color: var(--ab-ink); align-items: center; gap: 9px; line-height: 1.4; } .ab-stock b { color: var(--ab-black); font-weight: 600; } .ab-stock__dot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 9px; } .ab-stock--in .ab-stock__dot { background: #34c373; box-shadow: 0 0 0 3px rgba(52,195,115,.2); animation: abPulse 2.4s ease-in-out infinite; } .ab-stock--out .ab-stock__dot { background: #e25c3b; box-shadow: 0 0 0 3px rgba(226,92,59,.2); } @keyframes abPulse { 0%,100%{ box-shadow:0 0 0 3px rgba(52,195,115,.2); } 50%{ box-shadow:0 0 0 6px rgba(52,195,115,.08); } } /* CTA */ .ab-cta__btn { display: flex; align-items: center; justify-content: center; gap: 11px; flex: 1; width: 100%; background: var(--ab-accent); color: var(--ab-white); font-family: var(--fo); font-size: 18px; letter-spacing: .05em; text-transform: uppercase; border: 0; border-radius: 6px; padding: 12px 20px; cursor: pointer; box-shadow: 0 14px 28px -12px rgba(25,114,188,.6); transition: transform .12s ease, background .12s ease, box-shadow .12s ease; } .ab-cta__btn:hover { background: var(--ab-accent-d); transform: translateY(-1px); box-shadow: 0 18px 32px -12px rgba(25,114,188,.7); } .ab-cta__btn:active { transform: translateY(0) scale(.99); } .ab-cta__btn svg { width: 20px; height: 20px; flex: 0 0 20px; } .ab-cta__labels { display: flex; flex-direction: column; align-items: center; gap: 3px; line-height: 1; } .ab-cta__main { font-family: var(--fo); font-size: 18px; letter-spacing: .05em; line-height: 1; } .ab-cta__sub { font-family: var(--fc); font-size: 11.5px; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: rgba(255,255,255,.78); line-height: 1; } /* Notify (sold-out form) */ .ab-notify__label { font-family: var(--fc); font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--ab-ink); margin: 0; font-weight: 600; } .ab-notify__row { display: flex; gap: 8px; } .ab-notify__input { flex: 1; font-family: var(--fb); font-size: 15px; padding: 14px 16px; border: 1px solid var(--ab-sand); border-radius: 6px; background: var(--ab-white); color: var(--ab-ink); outline: none; transition: border-color .12s ease, box-shadow .12s ease; min-width: 0; } .ab-notify__input:focus { border-color: var(--ab-accent); box-shadow: 0 0 0 3px var(--ab-accent-tint); } .ab-notify__btn { display: flex; align-items: center; justify-content: center; gap: 9px; background: var(--ab-black); color: var(--ab-white); font-family: var(--fo); font-size: 15px; letter-spacing: .05em; text-transform: uppercase; border: 0; border-radius: 6px; padding: 0 22px; cursor: pointer; transition: transform .12s ease, background .12s ease; white-space: nowrap; } .ab-notify__btn:hover { background: var(--ab-accent); } .ab-notify__btn:active { transform: scale(.98); } .ab-notify__btn:disabled { opacity: .6; cursor: not-allowed; } .ab-notify__btn svg { width: 17px; height: 17px; } .ab-notify__hint { font-family: var(--fb); font-size: 12px; color: var(--ab-muted); margin: 0; } .ab-notify__status { display: none; font-family: var(--fb); font-size: 13px; padding: 12px 14px; border-radius: 6px; margin: 0; line-height: 1.4; } .ab-notify__status--ok { background: #e7f6ec; color: #1e6b2e; border: 1px solid #c6e5cc; } .ab-notify__status--err { background: #fbece8; color: #a83a1f; border: 1px solid #f0cfc6; } .ab-notify[data-state="success"] .ab-notify__row, .ab-notify[data-state="success"] .ab-notify__hint, .ab-notify[data-state="success"] .ab-notify__label { display: none; } .ab-notify[data-state="success"] .ab-notify__status--ok { display: block; } .ab-notify[data-state="error"] .ab-notify__status--err { display: block; } /* Trust */ .ab-trust { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 0; list-style: none; border-top: 1px solid var(--ab-sand); padding-top: 16px; } .ab-trust__item { display: flex; align-items: center; gap: 8px; font-family: var(--fb); font-size: 12px; line-height: 1.25; color: var(--ab-ink); } .ab-trust__item svg { flex: 0 0 17px; width: 17px; height: 17px; color: var(--ab-accent); } /* ============ DUAL-COMPAT SIGNATURE BAND ============ */ .ab-compat-band { max-width: 1240px; margin: 40px auto 0; background: var(--ab-white); border: 1px solid var(--ab-sand); border-radius: 6px; padding: 24px; box-shadow: 0 20px 44px -30px rgba(22,20,15,.25); } @media (min-width: 880px){ .ab-compat-band { padding: 28px 32px; } } .ab-compat-band__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 16px; margin-bottom: 20px; } .ab-compat-band__title { font-family: var(--fo); font-weight: 600; font-size: clamp(22px, 3vw, 30px); line-height: 1; text-transform: uppercase; margin: 0; color: var(--ab-black); letter-spacing: -.01em; } .ab-compat-band__title em { font-style: normal; color: var(--ab-accent); } .ab-compat-band__sub { font-family: var(--fc); font-size: 13px; letter-spacing: .16em; text-transform: uppercase; color: var(--ab-muted); font-weight: 500; } .ab-compat-band__row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } .ab-compat-band__cell { background: var(--ab-off); border: 1px solid var(--ab-sand); border-radius: 6px; padding: 18px 14px; display: flex; flex-direction: column; align-items: center; gap: 10px; } .ab-compat-band__diagram { width: 100%; height: 56px; color: var(--ab-accent); display: flex; align-items: center; justify-content: center; } .ab-compat-band__diagram svg { width: 100%; max-width: 130px; height: 100%; } .ab-compat-band__size { font-family: var(--fd); font-size: 26px; letter-spacing: .04em; color: var(--ab-black); line-height: 1; } .ab-compat-band__hint { font-family: var(--fc); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--ab-muted); line-height: 1.4; text-align: center; } /* Compat callout + specs strip */ .ab-strip { max-width: 1240px; margin: 12px auto 0; display: grid; grid-template-columns: 1fr; gap: 12px; } @media (min-width: 720px){ .ab-strip { grid-template-columns: 1.4fr 1fr; align-items: stretch; } } .ab-callout { display: flex; align-items: center; gap: 14px; padding: 16px 18px; background: var(--ab-black); border-radius: 6px; font-family: var(--fb); font-size: 13.5px; color: #d9d4ca; line-height: 1.45; } .ab-callout b { color: var(--ab-white); font-weight: 600; } .ab-callout__icon { flex: 0 0 40px; width: 40px; height: 40px; color: var(--ab-white); background: rgba(255,255,255,.08); border-radius: 50%; display: flex; align-items: center; justify-content: center; } .ab-callout__icon svg { width: 22px; height: 22px; } .ab-specs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--ab-sand); border-radius: 6px; overflow: hidden; border: 1px solid var(--ab-sand); } .ab-specs__cell { background: var(--ab-white); padding: 14px 6px; text-align: center; } .ab-specs__v { font-family: var(--fd); font-size: 21px; line-height: 1; letter-spacing: .02em; color: var(--ab-black); } .ab-specs__k { font-family: var(--fc); font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--ab-muted); margin-top: 5px; } /* Load-in animation */ @media (prefers-reduced-motion: no-preference) { .ab-info > *, .ab-compat-band, .ab-strip { opacity: 0; transform: translateY(14px); animation: abIn .55s cubic-bezier(.22,.61,.36,1) forwards; } .ab-info > *:nth-child(1){ animation-delay: .04s; } .ab-info > *:nth-child(2){ animation-delay: .09s; } .ab-info > *:nth-child(3){ animation-delay: .14s; } .ab-info > *:nth-child(4){ animation-delay: .19s; } .ab-info > *:nth-child(5){ animation-delay: .24s; } .ab-info > *:nth-child(6){ animation-delay: .29s; } .ab-info > *:nth-child(7){ animation-delay: .34s; } .ab-info > *:nth-child(8){ animation-delay: .39s; } .ab-info > *:nth-child(9){ animation-delay: .44s; } .ab-compat-band { animation-delay: .30s; } .ab-strip { animation-delay: .40s; } } @keyframes abIn { to { opacity: 1; transform: none; } } Best Seller Sold as pair 1 / 32 Adjustable Dumbbells · Plate-Loaded · Pair AdaptaBELL™ Adjustable dumbbells that load plates you already own — both 28 mm and 50 mm. Overhang-free design. Pro $49 140lb / pair DURACORE™ reinforced polymer. Max $149 300lb / pair Metal build + UHMW protection. $49 USD Free shipping or 4 payments of $12.25 with Shop Pay In stock — ships in 24 hours. Delivers in 3–5 days. Sold out — restocking soon. Drop your email and we’ll ping you the moment it’s back. Add to cart — $49 100‑Day Risk‑Free Trial Notify me We’ll let you know when it’s back Notify me when available Notify me We’ll only email you about this restock. No spam. ✓ You’re on the list. We’ll email you the moment it’s back in stock. Something went wrong. Please try again or email [email protected]. 100‑day risk‑free trial Free shipping $100+ Trusted by 200,000+ Two plate sizes. One dumbbell. Universal fit 28 MM Standard plates · most home gyms 50 MM Olympic plates · commercial / serious lifters Overhang-free design — plates sit flush against the handle, so nothing digs into your forearm during curls and presses. Loads the 28 mm and 50 mm plates you already own. 140 LB Capacity 28 + 50 MM Plates POLYMER Build (function () { var root = document.querySelector('.ab-hero[data-product-handle]'); if (!root) return; var KLAVIYO_PUBLIC_KEY = 'QeupfE'; // Currency formatting driven by Shopify Markets active currency. var CURRENCY_LOCALE = { USD: 'en-US', CAD: 'en-CA', AUD: 'en-AU', NZD: 'en-NZ', GBP: 'en-GB', EUR: 'de-DE', CHF: 'de-CH', SEK: 'sv-SE', NOK: 'nb-NO', DKK: 'da-DK', JPY: 'ja-JP', CNY: 'zh-CN', HKD: 'en-HK', SGD: 'en-SG', KRW: 'ko-KR', INR: 'en-IN', MXN: 'es-MX', BRL: 'pt-BR', ZAR: 'en-ZA', AED: 'ar-AE', PLN: 'pl-PL', CZK: 'cs-CZ', ILS: 'he-IL', TRY: 'tr-TR' }; var ZERO_DECIMAL_CURRENCIES = { JPY: 1, KRW: 1, VND: 1, CLP: 1, ISK: 1, HUF: 1, TWD: 1, XOF: 1, XAF: 1 }; function getCurrencyCode() { if (window.Shopify && window.Shopify.currency && window.Shopify.currency.active) return window.Shopify.currency.active; return 'USD'; } function formatMoney(cents) { var code = getCurrencyCode(); var locale = CURRENCY_LOCALE[code] || 'en-US'; var zeroDecimal = !!ZERO_DECIMAL_CURRENCIES[code]; var amount = (cents || 0) / 100; try { return new Intl.NumberFormat(locale, { style: 'currency', currency: code, minimumFractionDigits: 0, maximumFractionDigits: zeroDecimal ? 0 : 2 }).format(amount); } catch (e) { return (zeroDecimal ? String(Math.round(amount)) : '$' + amount.toFixed(2)); } } // Ship-destination: ISO country code + emoji flag function flagEmoji(code) { if (!code || code.length !== 2) return ''; var A = 0x1F1E6; var c = code.toUpperCase(); var a = c.charCodeAt(0), b = c.charCodeAt(1); if (a < 65 || a > 90 || b < 65 || b > 90) return ''; return String.fromCodePoint(A + (a - 65), A + (b - 65)); } function getCountryCode() { if (window.Shopify && window.Shopify.country) return String(window.Shopify.country).toUpperCase(); var loc = (navigator.language || '').split('-')[1]; return loc ? loc.toUpperCase() : ''; } function updateShipDestination() { var dest = root.querySelector('#ab-ship-dest'); if (!dest) return; var code = getCountryCode(); if (code.length !== 2) { dest.textContent = ''; return; } var flag = flagEmoji(code); dest.textContent = ' to ' + code + (flag ? ' ' + flag : ''); } function updatePriceDisplays(priceCents) { var formatted = formatMoney(priceCents); var currency = getCurrencyCode(); root.querySelector('#ab-price').textContent = formatted + ' ' + currency; root.querySelector('#ab-installment').textContent = formatMoney(priceCents / 4); root.querySelector('#ab-cta-price').textContent = formatted; var freeship = root.querySelector('#ab-freeship'); if (freeship) freeship.classList.toggle('is-visible', priceCents >= 10000); } // Gallery slider var track = root.querySelector('#ab-gallery-track'); var slides = track ? track.querySelectorAll('.ab-gallery__slide') : []; var prevBtn = root.querySelector('.ab-gallery__arrow--prev'); var nextBtn = root.querySelector('.ab-gallery__arrow--next'); var counter = root.querySelector('#ab-gallery-counter'); var thumbsEl = root.querySelector('#ab-gallery-thumbs'); var currentIndex = 0; if (counter && slides.length) counter.textContent = '1 / ' + slides.length; function findSlideIndexByImage(url) { if (!url || !slides.length) return -1; var target = url.split('?')[0].toLowerCase(); for (var i = 0; i < slides.length; i++) { var img = slides[i].querySelector('img'); if (!img || !img.src) continue; var src = img.src.split('?')[0].toLowerCase(); if (src === target) return i; var srcFile = src.substring(src.lastIndexOf('/') + 1); var targetFile = target.substring(target.lastIndexOf('/') + 1); if (srcFile && targetFile && srcFile === targetFile) return i; } return -1; } if (thumbsEl && slides.length) { for (var i = 0; i < slides.length; i++) { var slideImg = slides[i].querySelector('img'); var rawSrc = slideImg ? slideImg.src : ''; // GIF-aware thumbnail handling — Shopify CDN scaling breaks GIF animation var thumbSrc = rawSrc; if (rawSrc && rawSrc.indexOf('.gif') === -1) { thumbSrc = rawSrc.replace(/&width=\d+/, '&width=160'); } var btn = document.createElement('button'); btn.type = 'button'; btn.className = 'ab-gallery__thumb'; btn.setAttribute('role', 'tab'); btn.setAttribute('aria-label', 'Go to image ' + (i + 1)); btn.setAttribute('aria-current', i === 0 ? 'true' : 'false'); btn.setAttribute('data-index', i); btn.innerHTML = ''; thumbsEl.appendChild(btn); } } var thumbs = thumbsEl ? thumbsEl.querySelectorAll('.ab-gallery__thumb') : []; function goToSlide(index) { if (!track || !slides.length) return; index = Math.max(0, Math.min(slides.length - 1, index)); currentIndex = index; track.scrollTo({ left: slides[index].offsetLeft, behavior: 'smooth' }); updateSliderUI(); } function updateSliderUI() { if (counter) counter.textContent = (currentIndex + 1) + ' / ' + slides.length; thumbs.forEach(function (t, i) { t.setAttribute('aria-current', i === currentIndex ? 'true' : 'false'); }); if (prevBtn) prevBtn.disabled = currentIndex === 0; if (nextBtn) nextBtn.disabled = currentIndex === slides.length - 1; if (thumbsEl && thumbs[currentIndex]) { var t = thumbs[currentIndex]; var stripRect = thumbsEl.getBoundingClientRect(); var thumbRect = t.getBoundingClientRect(); if (thumbRect.left < stripRect.left || thumbRect.right > stripRect.right) { thumbsEl.scrollTo({ left: t.offsetLeft - thumbsEl.clientWidth / 2 + t.clientWidth / 2, behavior: 'smooth' }); } } } if (prevBtn) prevBtn.addEventListener('click', function () { goToSlide(currentIndex - 1); }); if (nextBtn) nextBtn.addEventListener('click', function () { goToSlide(currentIndex + 1); }); thumbs.forEach(function (t) { t.addEventListener('click', function () { goToSlide(parseInt(t.getAttribute('data-index'), 10)); }); }); if (track) { var scrollTimer; track.addEventListener('scroll', function () { clearTimeout(scrollTimer); scrollTimer = setTimeout(function () { var idx = Math.round(track.scrollLeft / track.clientWidth); if (idx !== currentIndex) { currentIndex = idx; updateSliderUI(); } }, 80); }); } updateSliderUI(); updateShipDestination(); // Exercise grid → click to jump to gallery slide (grid is optional) var exerciseItems = root.querySelectorAll('.ab-exercises__item'); exerciseItems.forEach(function (item) { var targetFile = (item.getAttribute('data-target-file') || '').toLowerCase(); if (!targetFile) return; item.addEventListener('click', function () { for (var i = 0; i < slides.length; i++) { var sImg = slides[i].querySelector('img'); if (!sImg) continue; var sFile = sImg.src.split('?')[0].split('/').pop().toLowerCase(); if (sFile === targetFile) { goToSlide(i); var stage = root.querySelector('.ab-gallery__stage'); if (stage) stage.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); return; } } }); }); // Tier state var tiers = root.querySelectorAll('.ab-tier'); var selected = root.querySelector('.ab-tier[aria-pressed="true"]') || tiers[0]; function applySelection(tier) { tiers.forEach(function (t) { t.setAttribute('aria-pressed', 'false'); }); tier.setAttribute('aria-pressed', 'true'); selected = tier; var id = tier.getAttribute('data-variant-id'); var img = tier.getAttribute('data-variant-image'); var priceCents = parseInt(tier.getAttribute('data-price-cents'), 10); var capacity = tier.getAttribute('data-capacity'); var build = tier.getAttribute('data-build'); root.querySelector('#ab-cart-variant').value = id; root.querySelector('#ab-notify-variant').value = id; var specCap = root.querySelector('#ab-spec-capacity'); if (specCap && capacity) specCap.textContent = capacity + ' LB'; var specBuild = root.querySelector('#ab-spec-build'); if (specBuild && build) { specBuild.textContent = build.toUpperCase().split(' ')[0]; } if (img) { var idx = findSlideIndexByImage(img); if (idx !== -1) goToSlide(idx); } var available = tier.getAttribute('data-available') !== 'false'; root.setAttribute('data-stock', available ? 'in' : 'out'); var bellBtn = document.getElementById('adbBellBtn'); var notifyForm = document.getElementById('adbNotifyForm'); var notifyConfirm = document.getElementById('adbNotifyConfirm'); if (!available) { if (bellBtn) bellBtn.style.display = 'flex'; if (notifyForm) notifyForm.style.display = 'none'; if (notifyConfirm) notifyConfirm.style.display = 'none'; } else { if (bellBtn) bellBtn.style.display = 'none'; if (notifyForm) notifyForm.style.display = 'none'; if (notifyConfirm) notifyConfirm.style.display = 'none'; } if (priceCents) updatePriceDisplays(priceCents); } tiers.forEach(function (t) { t.addEventListener('click', function () { applySelection(t); }); }); // Live Shopify product JSON fetch var handle = root.getAttribute('data-product-handle'); fetch('/products/' + handle + '.js', { headers: { 'Accept': 'application/json' } }) .then(function (r) { return r.ok ? r.json() : null; }) .then(function (data) { if (!data || !data.variants) return; tiers.forEach(function (tier) { var wantName = (tier.getAttribute('data-variant-name') || '').toLowerCase(); var match = data.variants.find(function (v) { var vn = (v.name || v.title || '').toLowerCase(); return vn.indexOf(wantName) !== -1; }); if (match) { tier.setAttribute('data-variant-id', match.id); tier.setAttribute('data-price-cents', match.price); tier.setAttribute('data-available', match.available ? 'true' : 'false'); if (match.featured_image && match.featured_image.src) { tier.setAttribute('data-variant-image', match.featured_image.src); } } else { tier.setAttribute('data-available', 'false'); } }); if (selected.getAttribute('data-available') === 'false') { var firstAvail = Array.prototype.find.call(tiers, function (t) { return t.getAttribute('data-available') !== 'false'; }); if (firstAvail) selected = firstAvail; } applySelection(selected); }) .catch(function () {}); document.addEventListener('currency:changed', function () { if (selected) applySelection(selected); updateShipDestination(); }); // Klaviyo back-in-stock (sold-out form) var form = root.querySelector('#ab-notify-form'); if (!form) return; form.addEventListener('submit', function (e) { e.preventDefault(); var emailInput = form.querySelector('input[name="contact[email]"]'); var variantInput = form.querySelector('input[name="variant_id"]'); var btn = form.querySelector('.ab-notify__btn'); var btnLabel = form.querySelector('.ab-notify__btn-label'); var email = (emailInput.value || '').trim(); var variantId = (variantInput.value || '').trim(); if (!email || !variantId) { form.setAttribute('data-state', 'error'); return; } btn.disabled = true; var originalLabel = btnLabel.textContent; btnLabel.textContent = 'Submitting…'; form.removeAttribute('data-state'); var payload = { data: { type: 'back-in-stock-subscription', attributes: { profile: { data: { type: 'profile', attributes: { email: email } } }, channels: ['EMAIL'] }, relationships: { variant: { data: { type: 'catalog-variant', id: '$shopify:::$default:::' + variantId } } } } }; fetch('https://a.klaviyo.com/client/back-in-stock-subscriptions/?company_id=' + KLAVIYO_PUBLIC_KEY, { method: 'POST', headers: { 'Content-Type': 'application/json', 'revision': '2024-10-15' }, body: JSON.stringify(payload) }) .then(function (res) { if (res.ok || res.status === 202) { form.setAttribute('data-state', 'success'); } else { form.setAttribute('data-state', 'error'); btn.disabled = false; btnLabel.textContent = originalLabel; } }) .catch(function () { form.setAttribute('data-state', 'error'); btn.disabled = false; btnLabel.textContent = originalLabel; }); }); var adb_KLAVIYO_KEY = 'QeupfE'; window.adbToggleBell = function() { var form = document.getElementById('adbNotifyForm'); var confirm = document.getElementById('adbNotifyConfirm'); if (confirm && confirm.style.display === 'flex') return; if (!form) return; form.style.display = form.style.display === 'flex' ? 'none' : 'flex'; if (form.style.display === 'flex') { var el = document.getElementById('adbNotifyEmail'); if (el) el.focus(); } }; window.adbSubmitNotify = function() { var input = document.getElementById('adbNotifyEmail'); var email = input ? input.value : ''; if (!email || email.indexOf('@') === -1) { if (input) input.style.borderColor = '#E24B4A'; return; } if (input) input.style.borderColor = ''; var vid = selected ? selected.getAttribute('data-variant-id') : null; fetch('https://a.klaviyo.com/client/back-in-stock-subscriptions/?company_id=' + adb_KLAVIYO_KEY, { method: 'POST', headers: { 'content-type': 'application/json', 'revision': '2024-06-15' }, body: JSON.stringify({ data: { type: 'back-in-stock-subscription', attributes: { channels: ['EMAIL'], profile: { data: { type: 'profile', attributes: { email: email } } } }, relationships: { variant: { data: { type: 'catalog-variant', id: '$shopify:::$default:::' + String(vid) } } } } }) }) .then(function(res) { if (!res.ok) { if (input) input.style.borderColor = '#E24B4A'; return; } var form = document.getElementById('adbNotifyForm'); var confirm = document.getElementById('adbNotifyConfirm'); if (form) form.style.display = 'none'; if (confirm) confirm.style.display = 'flex'; var bell = document.getElementById('adbBellBtn'); if (bell) { bell.style.opacity = '0.4'; bell.onclick = null; } }) .catch(function() { if (input) input.style.borderColor = '#E24B4A'; }); }; })(); [ {"shortcode": "DMQKPSDtpu9", "handle": "charlexzfitness", "name": "", "product": "ADAPTABELL", "poster": "https://cdn.shopify.com/s/files/1/0229/1249/9792/files/bell-reel-1.jpg?v=1786454918", "video": "https://cdn.shopify.com/videos/c/o/v/f356bd60d7c84f2ba2d835a7bdf680d9.mp4"}, {"shortcode": "CpRGLh9pObE", "handle": "kensuifitness", "name": "", "product": "ADAPTABELL", "poster": "https://cdn.shopify.com/s/files/1/0229/1249/9792/files/bell-reel-2.jpg?v=1786454917", "video": "https://cdn.shopify.com/videos/c/o/v/bf76c773bb584e13a0e4f4294684c012.mp4"}, {"shortcode": "DZnc_IIoS0B", "handle": "sebastiancovin_", "name": "", "product": "ADAPTABELL", "poster": "https://cdn.shopify.com/s/files/1/0229/1249/9792/files/bell-reel-3.jpg?v=1786454918", "video": "https://cdn.shopify.com/videos/c/o/v/87cdf650b28a49a4b441256b6927f1c7.mp4"}, {"shortcode": "DXfn8nYDh9Q", "handle": "theironark", "name": "", "product": "ADAPTABELL", "poster": "https://cdn.shopify.com/s/files/1/0229/1249/9792/files/bell-reel-4.jpg?v=1786454918", "video": "https://cdn.shopify.com/videos/c/o/v/ad862960671d43778ec99bf1c60258a2.mp4"} ] From the community Loaded, pulled, tested Shared by lifters using the Adaptabell /* Heading face — matches the Kensui site. Safe no-op if the theme already loads it. */ @import url('https://fonts.googleapis.com/css2?family=Anton&display=swap'); /* ---------------------------------------------------------------- tokens */ .cpr-wrap{ --cpr-paper:#fdfbf8; --cpr-sand:#efe8df; --cpr-ink:#151412; --cpr-muted:#6d675f; --cpr-blue:#1972bc; --cpr-line:rgba(21,20,18,.12); --cpr-r:6px; --cpr-card:clamp(228px,68vw,292px); --cpr-gap:14px; --cpr-pad:20px; position:relative; isolation:isolate; padding:44px 0 48px; border-top:1px solid var(--cpr-line); color:var(--cpr-ink); background:radial-gradient(120% 90% at 50% 0%,#fffefc 0%,var(--cpr-paper) 42%,var(--cpr-sand) 100%); font-family:"Barlow","Helvetica Neue",Arial,sans-serif; -webkit-font-smoothing:antialiased; } .cpr-wrap *,.cpr-wrap *::before,.cpr-wrap *::after{box-sizing:border-box;} .cpr-inner{max-width:1280px;margin:0 auto;} /* ----------------------------------------------------------------- head */ .cpr-head{ display:flex;align-items:flex-end;justify-content:space-between;gap:20px; padding:0 var(--cpr-pad);margin:0 0 20px; } .cpr-eyebrow{ margin:0 0 6px;font-family:"Barlow Condensed","Barlow",sans-serif; font-size:13px;font-weight:600;letter-spacing:.16em;text-transform:uppercase; color:var(--cpr-muted); } .cpr-title{ margin:0;font-family:"Anton","Oswald","Bebas Neue",sans-serif;font-weight:400; font-size:clamp(26px,4.4vw,40px);line-height:1;letter-spacing:.015em;text-transform:uppercase; } .cpr-head-right{display:flex;align-items:center;gap:14px;flex:0 0 auto;} .cpr-source{ display:inline-flex;align-items:center;gap:7px; color:var(--cpr-muted);font-size:13px;font-weight:500;letter-spacing:.01em; } .cpr-nav{display:flex;gap:8px;} .cpr-arrow{ width:40px;height:40px;display:grid;place-items:center;cursor:pointer; border:1px solid var(--cpr-line);border-radius:var(--cpr-r); background:rgba(255,255,255,.6);color:var(--cpr-ink); transition:border-color .18s,color .18s,opacity .18s; } .cpr-arrow:hover:not(:disabled){border-color:var(--cpr-blue);color:var(--cpr-blue);} .cpr-arrow:disabled{opacity:.3;cursor:default;} /* ----------------------------------------------------------------- rail */ .cpr-rail-outer{position:relative;} .cpr-rail{ list-style:none;margin:0; display:flex;gap:var(--cpr-gap);align-items:center; padding:20px var(--cpr-pad) 24px; overflow-x:auto;overscroll-behavior-x:contain; scrollbar-width:none;-webkit-overflow-scrolling:touch; } .cpr-rail::-webkit-scrollbar{display:none;} .cpr-rail:focus-visible{outline:2px solid var(--cpr-blue);outline-offset:3px;border-radius:var(--cpr-r);} .cpr-card{ flex:0 0 var(--cpr-card); transform-origin:center center; will-change:transform,opacity; } .cpr-media{ position:relative;display:block;width:100%;aspect-ratio:9/16; padding:0;margin:0;border:1px solid var(--cpr-line);border-radius:var(--cpr-r); overflow:hidden;cursor:pointer; background:linear-gradient(160deg,#efe8df 0%,#e4dbcf 100%); box-shadow:0 2px 10px rgba(21,20,18,.06); transition:box-shadow .3s; } .cpr-card.is-active .cpr-media{box-shadow:0 18px 40px rgba(21,20,18,.18);} .cpr-media:focus-visible{outline:2px solid var(--cpr-blue);outline-offset:3px;} .cpr-poster,.cpr-video{ position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block; } .cpr-video{opacity:0;transition:opacity .4s;} .cpr-video.is-live{opacity:1;} .cpr-media::after{ content:"";position:absolute;inset:auto 0 0 0;height:52%;pointer-events:none; background:linear-gradient(to top,rgba(12,11,10,.62),rgba(12,11,10,0)); } .cpr-media.is-bare::after{opacity:.35;} .cpr-play{ position:absolute;top:50%;left:50%;translate:-50% -50%; width:52px;height:52px;border-radius:50%;display:grid;place-items:center; background:rgba(255,255,255,.9);color:var(--cpr-ink); transition:opacity .25s,scale .25s;z-index:2; } .cpr-media:hover .cpr-play{scale:1.06;} .cpr-media.is-playing .cpr-play{opacity:0;} /* variant / finish name — top-left label, high-contrast so it stays legible */ .cpr-tag{ position:absolute;top:12px;left:12px;z-index:2; font-family:"Barlow Condensed","Barlow",sans-serif; font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase; padding:5px 10px;border-radius:4px; background:var(--cpr-paper);color:var(--cpr-ink); box-shadow:0 1px 4px rgba(0,0,0,.16); } .cpr-ig{position:absolute;top:12px;right:12px;z-index:2;color:#fff;opacity:.9;filter:drop-shadow(0 1px 3px rgba(0,0,0,.45));} .cpr-onmedia{position:absolute;left:12px;right:12px;bottom:11px;z-index:2;text-align:left;} .cpr-handle{ display:block;color:#fff;font-size:14px;font-weight:600;letter-spacing:.01em; text-shadow:0 1px 4px rgba(0,0,0,.4); } .cpr-name{ display:block;margin-top:2px;color:rgba(255,255,255,.82); font-size:12px;font-weight:400;line-height:1.3; text-shadow:0 1px 4px rgba(0,0,0,.4); overflow:hidden;text-overflow:ellipsis;white-space:nowrap; } /* ------------------------------------------------------------- progress */ .cpr-progress{ margin:4px var(--cpr-pad) 0;height:2px;border-radius:2px; background:rgba(21,20,18,.10);overflow:hidden; } .cpr-progress span{ display:block;height:100%;width:30%;border-radius:2px;background:var(--cpr-blue); transform-origin:left center;transition:transform .25s ease; } /* ---------------------------------------------------------------- modal */ .cpr-modal{ position:fixed;inset:0;z-index:9999; display:flex;align-items:center;justify-content:center;gap:min(3vw,28px); padding:20px;background:rgba(14,13,12,.9); opacity:0;transition:opacity .22s ease; } .cpr-modal[hidden]{display:none;} .cpr-modal.is-open{opacity:1;} .cpr-modal-stage{ position:relative;height:min(86vh,900px);aspect-ratio:9/16;max-width:min(94vw,520px); border-radius:var(--cpr-r);overflow:hidden;background:#0e0d0c; } .cpr-modal-stage video{width:100%;height:100%;object-fit:contain;display:block;background:#0e0d0c;} .cpr-modal-stage img{width:100%;height:100%;object-fit:cover;display:block;} .cpr-modal-cap{ position:absolute;left:0;right:0;bottom:0;padding:14px 16px; background:linear-gradient(to top,rgba(12,11,10,.85),rgba(12,11,10,0)); color:#fff;font-size:14px;font-weight:600;pointer-events:none; } .cpr-modal-cap small{display:block;font-weight:400;opacity:.8;font-size:12px;margin-top:2px;} .cpr-modal-close,.cpr-modal-arrow{ border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);color:#fff; border-radius:var(--cpr-r);cursor:pointer;display:grid;place-items:center; transition:background .18s,border-color .18s; } .cpr-modal-close:hover,.cpr-modal-arrow:hover{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.4);} .cpr-modal-close{position:absolute;top:16px;right:16px;width:42px;height:42px;z-index:3;} .cpr-modal-arrow{width:46px;height:46px;flex:0 0 auto;} .cpr-modal-close:focus-visible,.cpr-modal-arrow:focus-visible{outline:2px solid #fff;outline-offset:2px;} /* ------------------------------------------------------------ responsive */ @media (max-width:767px){ .cpr-nav{display:none;} .cpr-head{align-items:flex-start;flex-direction:column;gap:10px;margin-bottom:10px;} .cpr-modal-arrow{display:none;} .cpr-modal-stage{height:auto;max-height:88vh;width:100%;} } @media (min-width:768px){ .cpr-wrap{--cpr-card:288px;--cpr-gap:18px;--cpr-pad:32px;padding:64px 0 68px;} } @media (min-width:1200px){ .cpr-wrap{--cpr-pad:40px;} } @media (prefers-reduced-motion:reduce){ .cpr-wrap *,.cpr-modal *{transition:none !important;animation:none !important;} .cpr-rail{scroll-behavior:auto;} } (function () { var root = document.getElementById('cpr-reels'); if (!root || root.dataset.cprInit) return; root.dataset.cprInit = '1'; var reels; try { reels = JSON.parse(document.getElementById('cpr-data').textContent); } catch (e) { console.warn('[cpr] Clip data is not valid JSON.'); return; } reels = reels.filter(function (r) { return r && (r.poster || r.video); }); if (!reels.length) return; var rail = root.querySelector('[data-cpr-rail]'); var bar = root.querySelector('[data-cpr-bar]'); var prevBtn = root.querySelector('[data-cpr-prev]'); var nextBtn = root.querySelector('[data-cpr-next]'); var modal = root.querySelector('[data-cpr-modal]'); var stage = root.querySelector('[data-cpr-stage]'); var reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; var saveData = !!(navigator.connection && navigator.connection.saveData); var autoplayOK = !reduceMotion && !saveData; /* Centred card vs its neighbours. 0.22 => centre is ~1.28x the others. */ var SHRINK = 0.22; var FADE = 0.42; var N = reels.length; var COPIES = 3; /* prev / centre / next — always enough to fill both sides */ var MID = N; /* index of the first card of the centre copy */ var IG_SVG = ''; var PLAY_SVG = ''; function esc(s) { return String(s == null ? '' : s).replace(/[&"']/g, function (c) { return { '&': '&', '', '"': '"', "'": ''' }[c]; }); } /* ---------------------------------------------- build rail (with clones) */ var frag = document.createDocumentFragment(); for (var copy = 0; copy < COPIES; copy++) { reels.forEach(function (r, ri) { var slide = copy * N + ri; var li = document.createElement('li'); li.className = 'cpr-card'; li.dataset.real = ri; li.innerHTML = '' + (r.poster ? '' : '') + (r.video ? '' : '') + (r.product ? '' + esc(r.product) + '' : '') + '' + IG_SVG + '' + '' + PLAY_SVG + '' + '' + (r.handle ? '@' + esc(r.handle) + '' : '') + (r.name ? '' + esc(r.name) + '' : '') + '' + ''; frag.appendChild(li); }); } rail.appendChild(frag); var cards = Array.prototype.slice.call(rail.querySelectorAll('.cpr-card')); rail.querySelectorAll('.cpr-poster').forEach(function (img) { img.addEventListener('error', function () { img.style.display = 'none'; }); }); /* ------------------------------------------ centre detection + scaling */ var active = -1; var ticking = false; var setWidth = 0; /* px width of one copy of the reel set */ function measure() { if (cards.length > N) setWidth = cards[N].offsetLeft - cards[0].offsetLeft; } function centerOffsetFor(i) { var c = cards[i]; return c.offsetLeft + (c.offsetWidth / 2) - (rail.clientWidth / 2); } /* pick the clone of a real reel that sits closest to a reference slide */ function slideNear(real, ref) { var best = real, bestD = Infinity; for (var c = 0; c < COPIES; c++) { var s = real + c * N, d = Math.abs(s - ref); if (d < bestD) { bestD = d; best = s; } } return best; } function loadVideo(i) { if (i < 0 || i >= cards.length) return; var v = cards[i].querySelector('.cpr-video'); if (v && !v.src && v.dataset.src) v.src = v.dataset.src; } function setActive(i) { active = i; cards.forEach(function (card, idx) { var v = card.querySelector('.cpr-video'); card.classList.toggle('is-active', idx === i); if (!v) return; var media = card.querySelector('.cpr-media'); if (idx === i) { if (!autoplayOK) return; if (!v.src && v.dataset.src) v.src = v.dataset.src; var p = v.play(); if (p && p.then) { p.then(function () { v.classList.add('is-live'); media.classList.add('is-playing'); }) .catch(function () { /* autoplay blocked — poster stays */ }); } } else { v.pause(); v.classList.remove('is-live'); media.classList.remove('is-playing'); } }); loadVideo(i - 1); loadVideo(i + 1); } /* keep the scroll position inside the centre copy so the row never ends */ function wrap() { if (!setWidth) return; if (rail.scrollLeft < setWidth * 0.5) rail.scrollLeft += setWidth; else if (rail.scrollLeft > setWidth * 2.5) rail.scrollLeft -= setWidth; } function paint() { wrap(); var mid = rail.scrollLeft + (rail.clientWidth / 2); var nearest = 0, nearestDist = Infinity; cards.forEach(function (card, i) { var cardMid = card.offsetLeft + (card.offsetWidth / 2); var dist = Math.abs(cardMid - mid); var norm = Math.min(dist / (card.offsetWidth * 1.15), 1); card.style.transform = 'scale(' + (1 - SHRINK * norm).toFixed(4) + ')'; card.style.opacity = (1 - FADE * norm).toFixed(3); card.style.zIndex = String(100 - Math.round(norm * 100)); if (dist < nearestDist) { nearestDist = dist; nearest = i; } }); if (bar) { var slot = ((nearest % N) + N) % N; bar.style.width = (100 / N) + '%'; bar.style.transform = 'translateX(' + (slot * 100) + '%)'; } if (nearest !== active) setActive(nearest); ticking = false; } rail.addEventListener('scroll', function () { if (!ticking) { ticking = true; requestAnimationFrame(paint); } }, { passive: true }); /* --------------------------------------------------------- navigation */ function goTo(i) { rail.scrollTo({ left: centerOffsetFor(i), behavior: reduceMotion ? 'auto' : 'smooth' }); } if (prevBtn) prevBtn.addEventListener('click', function () { goTo(active - 1); }); if (nextBtn) nextBtn.addEventListener('click', function () { goTo(active + 1); }); rail.addEventListener('click', function (e) { var btn = e.target.closest('.cpr-media'); if (!btn) return; var i = parseInt(btn.dataset.i, 10); if (i !== active) { goTo(slideNear(parseInt(btn.dataset.real, 10), active)); return; } open(parseInt(btn.dataset.real, 10)); }); rail.addEventListener('keydown', function (e) { if (e.key === 'ArrowLeft') { e.preventDefault(); goTo(active - 1); } if (e.key === 'ArrowRight') { e.preventDefault(); goTo(active + 1); } }); /* --------------------------------------------- player (real indices) */ var current = 0; var lastFocus = null; function render(i) { current = (i + N) % N; var r = reels[current]; var media = r.video ? '' : (r.poster ? '' : ''); var cap = (r.handle || r.product || r.name) ? '' + (r.handle ? '@' + esc(r.handle) : '') + (r.product ? '' + esc(r.product) + (r.name ? ' — ' + esc(r.name) : '') + '' : (r.name ? '' + esc(r.name) + '' : '')) + '' : ''; stage.innerHTML = media + cap; } function open(i) { lastFocus = document.activeElement; cards.forEach(function (c) { var v = c.querySelector('.cpr-video'); if (v) { v.pause(); c.querySelector('.cpr-media').classList.remove('is-playing'); } }); render(i); modal.hidden = false; document.body.style.overflow = 'hidden'; requestAnimationFrame(function () { modal.classList.add('is-open'); }); modal.querySelector('[data-cpr-close]').focus(); } function close() { modal.classList.remove('is-open'); document.body.style.overflow = ''; var back = current; setTimeout(function () { modal.hidden = true; stage.innerHTML = ''; rail.scrollLeft = centerOffsetFor(MID + back); paint(); }, reduceMotion ? 0 : 220); if (lastFocus && lastFocus.focus) lastFocus.focus(); } function step(dir) { render(current + dir); } modal.querySelector('[data-cpr-close]').addEventListener('click', close); modal.querySelector('[data-cpr-mprev]').addEventListener('click', function () { step(-1); }); modal.querySelector('[data-cpr-mnext]').addEventListener('click', function () { step(1); }); modal.addEventListener('click', function (e) { if (e.target === modal) close(); }); document.addEventListener('keydown', function (e) { if (modal.hidden) return; if (e.key === 'Escape') close(); if (e.key === 'ArrowLeft') step(-1); if (e.key === 'ArrowRight') step(1); }); /* ---------------------------------------------------------------- init */ function boot() { measure(); rail.scrollLeft = centerOffsetFor(MID); /* opens centered on the first reel */ paint(); } window.addEventListener('resize', function () { measure(); var realNow = active < 0 ? 0 : (((active % N) + N) % N); rail.scrollLeft = centerOffsetFor(MID + realNow); paint(); }); if (document.readyState === 'complete') boot(); else window.addEventListener('load', boot); boot(); })(); *,*::before,*::after{margin:0;padding:0;box-sizing:border-box} :root{ --white:#fff;--off:#f7f6f3;--cream:#f0efe9;--sand:#e8e6df; --w100:#d9d7d0;--w200:#bbb9b2;--gray:#8a8880;--dg:#5a5850; --char:#2c2b28;--black:#1a1918; --acc:#c8ff00;--acc-d:#9ec700;--acc-bg:rgba(200,255,0,0.08);--acc-s:rgba(200,255,0,0.15); --fd:'Bebas Neue',sans-serif;--fb:'Barlow',sans-serif;--fc:'Barlow Condensed',sans-serif; --mx:1320px;--r:6px; --s1:0 1px 3px rgba(0,0,0,0.04);--s2:0 4px 20px rgba(0,0,0,0.06);--s3:0 12px 40px rgba(0,0,0,0.08); } html{scroll-behavior:smooth} body{font-family:var(--fb);font-weight:500;background:var(--off);color:var(--char);-webkit-font-smoothing:antialiased;overflow-x:hidden} img{max-width:100%;display:block}a{color:inherit;text-decoration:none} button{cursor:pointer;border:none;background:none;font-family:inherit;color:inherit} .adb-wrap{max-width:1280px;margin:0 auto} .adb{display:grid;grid-template-columns:1.15fr 1fr;align-items:start;background:var(--white)} .adb-gal{position:relative;display:flex;flex-direction:column;background:var(--off);border-right:1px solid var(--sand)} .adb-main{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;cursor:zoom-in;background:var(--cream)} .adb-main img{width:100%;height:auto;display:block;transition:transform .6s cubic-bezier(.25,.46,.45,.94)} .adb-main:hover img{transform:scale(1.04)} .adb-arrows{position:absolute;top:50%;left:0;right:0;display:flex;justify-content:space-between;padding:0 12px;transform:translateY(-50%);z-index:2;pointer-events:none} .adb-arr{pointer-events:all;width:42px;height:42px;border-radius:50%;background:rgba(255,255,255,.9);backdrop-filter:blur(8px);border:1px solid var(--sand);display:flex;align-items:center;justify-content:center;transition:all .25s;box-shadow:var(--s1)} .adb-arr:hover{background:var(--white);box-shadow:var(--s2)} .adb-arr svg{width:16px;height:16px;stroke:var(--char)} .adb-thumbs{display:flex;gap:3px;padding:3px;background:var(--off)} .adb-th{flex:1;aspect-ratio:1;overflow:hidden;cursor:pointer;border-radius:4px;border:2px solid transparent;opacity:.45;transition:all .3s} .adb-th.on,.adb-th:hover{opacity:1;border-color:var(--black)} .adb-th img{width:100%;height:100%;object-fit:cover} .adb-info{padding:4px 52px;display:flex;flex-direction:column;justify-content:center;overflow-y:auto} .adb-ey{font-family:var(--fc);font-weight:800;font-size:13px;letter-spacing:.22em;text-transform:uppercase;color:#2d8a39;margin-bottom:8px;display:flex;align-items:center;gap:10px} .adb-ey::before{content:'';width:22px;height:2.5px;background:#2d8a39} .adb-h1{font-family:var(--fd);font-size:clamp(42px,5vw,68px);line-height:.9;letter-spacing:.03em;color:var(--black);margin-bottom:10px} .adb-sub{font-family:var(--fc);font-weight:700;font-size:18px;color:var(--dg);letter-spacing:.04em;margin-bottom:16px} .adb-stock{display:inline-flex;align-items:center;gap:8px;margin-bottom:20px;font-family:var(--fc);font-weight:700;font-size:14px;letter-spacing:.06em;color:#2d8a39} .adb-stock-dot{width:8px;height:8px;border-radius:50%;background:#2d8a39;animation:adbPulse 2s infinite} @keyframes adbPulse{0%,100%{opacity:1}50%{opacity:.4}} @keyframes adbSpin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}} .adb-feats{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px} .adb-ft{display:flex;align-items:center;gap:7px;padding:9px 16px;background:var(--off);border:1px solid var(--sand);border-radius:100px;font-family:var(--fc);font-weight:600;font-size:13px;color:var(--dg);transition:all .25s} .adb-ft:hover{border-color:var(--w200);background:var(--cream)} .adb-div{height:1px;background:var(--sand);margin-bottom:24px} .adb-var{margin-bottom:20px} .adb-var-label{font-family:var(--fc);font-weight:700;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--gray);margin-bottom:10px} .adb-var-label strong{color:var(--char)} .adb-var-opts{display:flex;gap:10px} .adb-vo{flex:1;padding:8px 16px;border:2px solid var(--sand);border-radius:var(--r);background:var(--white);text-align:center;transition:all .25s;cursor:pointer} .adb-vo:hover{border-color:var(--w200);background:var(--off)} .adb-vo.on{border-color:var(--black);background:var(--off);box-shadow:var(--s1)} .adb-vo-name{font-family:var(--fc);font-weight:800;font-size:24px;letter-spacing:.06em;text-transform:uppercase;color:var(--char);margin-bottom:2px} .adb-vo-price{font-family:var(--fb);font-weight:600;font-size:13px;color:var(--gray)} .adb-vo-desc{font-family:var(--fb);font-weight:600;font-size:16px;color:var(--w400);margin-top:3px} .adb-pb{background:var(--off);border:1px solid var(--sand);border-radius:var(--r);padding:8px 24px;margin-bottom:20px} .adb-pr{display:flex;align-items:baseline;gap:14px;margin-bottom:4px} .adb-p{font-family:var(--fd);font-weight:800;font-size:35px;color:var(--black)} .adb-free-ship{display:inline-flex;align-items:center;gap:5px;background:#2d8a39;color:#fff;font-family:var(--fc);font-weight:700;font-size:11px;letter-spacing:.08em;text-transform:uppercase;padding:4px 10px;border-radius:100px;white-space:nowrap;opacity:0;transform:translateX(-6px);transition:opacity .3s ease, transform .3s ease;pointer-events:none} .adb-free-ship.visible{opacity:0.7;transform:translateX(0);pointer-events:auto} .adb-free-ship svg{flex-shrink:0} .adb-inst{font-size:14px;color:var(--gray);font-weight:400} .adb-inst strong{color:var(--char);font-weight:700} .adb-cta{margin-bottom:18px} .adb-add{width:100%;height:56px;background:#1972bc;color:var(--white);font-family:var(--fc);font-weight:800;font-size:15px;letter-spacing:.14em;text-transform:uppercase;border-radius:var(--r);display:flex;align-items:center;justify-content:center;gap:10px;transition:all .3s} .adb-add:hover{background:#1560a0;transform:translateY(-1px);box-shadow:var(--s3)} .adb-pay{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:22px} .adb-pay-l{font-family:var(--fc);font-weight:600;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--w200)} .adb-pi{height:24px;padding:4px 10px;background:var(--off);border:1px solid var(--sand);border-radius:3px;font-family:var(--fc);font-weight:800;font-size:9px;letter-spacing:.06em;color:var(--gray);display:flex;align-items:center} .adb-tr{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;margin-bottom:28px} .adb-tri{background:var(--off);border:1px solid var(--sand);padding:14px 8px;text-align:center} .adb-tri:first-child{border-radius:var(--r) 0 0 var(--r)}.adb-tri:last-child{border-radius:0 var(--r) var(--r) 0} .adb-tri svg{margin:0 auto 5px;display:block} .adb-tri span{font-family:var(--fc);font-weight:700;font-size:10px;letter-spacing:-.04em;text-transform:uppercase;color:var(--gray)} .adb-acc{border-top:1px solid var(--sand)} .adb-aci{border-bottom:1px solid var(--sand)} .adb-act{width:100%;text-align:left;padding:18px 0;display:flex;justify-content:space-between;align-items:center;font-family:var(--fc);font-weight:700;font-size:14px;letter-spacing:.08em;text-transform:uppercase;color:var(--char);transition:color .25s} .adb-act:hover{color:var(--black)} .adb-acl{display:flex;align-items:center;gap:10px} .adb-ach{width:24px;height:24px;border-radius:50%;border:1px solid var(--sand);display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--gray);transition:all .3s} .adb-aci.open .adb-ach{background:var(--black);color:var(--white);transform:rotate(45deg)} .adb-acb{max-height:0;overflow:hidden;transition:max-height .4s ease} .adb-aci.open .adb-acb{max-height:500px} .adb-acc-c{padding-bottom:20px;font-size:15px;line-height:1.75;color:var(--dg);font-weight:400} .adb-acc-c ul{list-style:none;padding:0} .adb-acc-c ul li{padding:5px 0 5px 20px;position:relative} .adb-acc-c ul li::before{content:'';position:absolute;left:0;top:14px;width:8px;height:2px;background:var(--acc-d)} .adb-acc-c strong{color:var(--black);font-weight:700} @media(max-width:1024px){ .adb{grid-template-columns:1fr}.adb-main img{width:100%;height:auto;object-fit:contain}.adb-info{padding:32px 24px} } @media(max-width:640px){ .adb-info{padding:4px 16px} .adb-tr{grid-template-columns:repeat(4,1fr)} .adb-free-ship{font-size:10px;padding:3px 8px} .adb-urgency{font-size:12.5px} } .adb-badge { position: absolute; top: 16px; left: 16px; z-index: 3; background: #cc7777; color: #ffffff; font-family: var(--fc); font-weight: 800; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; padding: 8px 16px; border-radius: 4px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); display: flex; align-items: center; gap: 6px; } .adb-badge::before { font-size: 13px; } @media(max-width: 640px) { .adb-badge { font-size: 12px; padding: 6px 12px; top: 12px; left: 12px; } } (function(){ var PRODUCT_HANDLE = 'adaptabell'; var productData = null; var selectedVariantId = null; var currentStyle = 'MAX [150kg | 300lbs]'; /* ── Arrival date + country flag ── */ var BUSINESS_DAYS = 3; function addBusinessDays(date, days) { var result = new Date(date); var added = 0; while (added < days) { result.setDate(result.getDate() + 1); var dow = result.getDay(); if (dow !== 0 && dow !== 6) added++; } return result; } function formatArrival(date) { var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; return months[date.getMonth()] + ' ' + date.getDate(); } // Set arrival date (3 business days from today) (function setArrivalDate() { var el = document.getElementById('adbArrivalDate'); if (!el) return; var arrival = addBusinessDays(new Date(), BUSINESS_DAYS); el.textContent = formatArrival(arrival); })(); // Country flag via timezone geo-lookup (function setCountryFlag() { var el = document.getElementById('adbCountryFlag'); if (!el) return; try { var tz = Intl.DateTimeFormat().resolvedOptions().timeZone || ''; var tzToFlag = { 'America/New_York':'🇺🇸','America/Chicago':'🇺🇸','America/Denver':'🇺🇸','America/Los_Angeles':'🇺🇸', 'America/Phoenix':'🇺🇸','America/Anchorage':'🇺🇸','Pacific/Honolulu':'🇺🇸','America/Detroit':'🇺🇸', 'America/Indiana':'🇺🇸','America/Boise':'🇺🇸','America/Juneau':'🇺🇸','America/Adak':'🇺🇸', 'America/Toronto':'🇨🇦','America/Vancouver':'🇨🇦','America/Edmonton':'🇨🇦','America/Winnipeg':'🇨🇦', 'America/Halifax':'🇨🇦','America/Montreal':'🇨🇦','America/Regina':'🇨🇦', 'Europe/London':'🇬🇧','Europe/Paris':'🇫🇷','Europe/Berlin':'🇩🇪','Europe/Madrid':'🇪🇸', 'Europe/Rome':'🇮🇹','Europe/Amsterdam':'🇳🇱','Europe/Brussels':'🇧🇪','Europe/Zurich':'🇨🇭', 'Europe/Vienna':'🇦🇹','Europe/Stockholm':'🇸🇪','Europe/Oslo':'🇳🇴','Europe/Copenhagen':'🇩🇰', 'Europe/Helsinki':'🇫🇮','Europe/Dublin':'🇮🇪','Europe/Lisbon':'🇵🇹','Europe/Warsaw':'🇵🇱', 'Europe/Prague':'🇨🇿','Europe/Budapest':'🇭🇺','Europe/Bucharest':'🇷🇴','Europe/Athens':'🇬🇷', 'Europe/Istanbul':'🇹🇷','Europe/Moscow':'🇷🇺','Europe/Kiev':'🇺🇦', 'Asia/Tokyo':'🇯🇵','Asia/Seoul':'🇰🇷','Asia/Shanghai':'🇨🇳','Asia/Hong_Kong':'🇭🇰', 'Asia/Taipei':'🇹🇼','Asia/Singapore':'🇸🇬','Asia/Bangkok':'🇹🇭','Asia/Jakarta':'🇮🇩', 'Asia/Kolkata':'🇮🇳','Asia/Calcutta':'🇮🇳','Asia/Dubai':'🇦🇪','Asia/Riyadh':'🇸🇦', 'Asia/Manila':'🇵🇭','Asia/Kuala_Lumpur':'🇲🇾', 'Australia/Sydney':'🇦🇺','Australia/Melbourne':'🇦🇺','Australia/Brisbane':'🇦🇺', 'Australia/Perth':'🇦🇺','Australia/Adelaide':'🇦🇺', 'Pacific/Auckland':'🇳🇿', 'America/Mexico_City':'🇲🇽','America/Sao_Paulo':'🇧🇷','America/Argentina/Buenos_Aires':'🇦🇷', 'America/Bogota':'🇨🇴','America/Santiago':'🇨🇱','America/Lima':'🇵🇪', 'Africa/Johannesburg':'🇿🇦','Africa/Cairo':'🇪🇬','Africa/Lagos':'🇳🇬','Africa/Nairobi':'🇰🇪', 'Asia/Jerusalem':'🇮🇱','Asia/Tel_Aviv':'🇮🇱' }; el.textContent = tzToFlag[tz] || ''; } catch(e) { el.textContent = ''; } })(); var isImperial = (function() { try { var tz = Intl.DateTimeFormat().resolvedOptions().timeZone || ''; return tz.indexOf('America/') === 0 && tz.indexOf('America/Sao_Paulo') === -1 && tz.indexOf('America/Argentina') === -1 && tz.indexOf('America/Bogota') === -1 && tz.indexOf('America/Santiago') === -1 && tz.indexOf('America/Lima') === -1 && tz.indexOf('America/Mexico_City') === -1; } catch(e) { return true; } })(); /* ── Gallery ── */ var gallerySets = { 'PRO [70kg | 140lbs]': [ 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/adaptabell-pro.jpg?v=1763582649', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/ADAPTABELL-1.jpg?v=1771505896', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/ADAPTABELPro2.jpg?v=1771505896', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/ADAPTABELPro3.jpg?v=1771505896', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/ADAPTABELPro6.jpg?v=1771505896', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/products/adjusta-bell.gif?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/adjustabell-vs-other-brands.gif?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/adaptabell-with-review.jpg?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/these-are-killer-value-adaptabell.jpg?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/adaptabell-with-review-2.jpg?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/pairdumbells.jpg?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/products/adjustabell-full-set.jpg?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/products/standing-curl-218145.jpg?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/adaptabell-lunge.jpg?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/goblet-squat-adjustabell.jpg?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/products/bench-press-adjustabell-848321.jpg?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/adjustabell-shoulder-press.jpg?v=1763564290' ], 'MAX [150kg | 300lbs]': [ 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/adaptabell-max.jpg?v=1763582648', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/ADAPTABELL-1.jpg?v=1771505896', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/ADAPTABELL-2.jpg?v=1771505896', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/ADAPTABELMAX3.jpg?v=1771505896', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/ADAPTABELMAX4.jpg?v=1771505896', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/ADAPTABELMAX6.jpg?v=1771505896', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/products/adjusta-bell.gif?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/adjustabell-vs-other-brands.gif?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/chrome-plate-adjustabell.jpg?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/Adaptabell4.jpg?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/adaptabellsPAIR.jpg?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/adaptabells_vert.jpg?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/adjustabell-chrome-shoulder-press.jpg?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/adaptabell-hammer.jpg?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/adaptabell-bench.jpg?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/adaptabell-curl.jpg?v=1763564290', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/adaptabell-rows.jpg?v=1763564290' ] }; var imgs = []; var ci = 0; var hi = document.getElementById('adbHeroImage'); var thumbsContainer = document.getElementById('adbThumbs'); function thumbSrc(src){ if(!src)return src; if(src.indexOf('.gif')>-1)return src; if(src.indexOf('?')>-1)return src+'&width=200'; return src+'?width=200'; } function buildGallery() { imgs = gallerySets[currentStyle] || gallerySets['MAX [150kg | 300lbs]']; ci = 0; hi.src = imgs[0]; thumbsContainer.innerHTML = ''; imgs.forEach(function(src, i) { var btn = document.createElement('button'); btn.className = 'adb-th' + (i === 0 ? ' on' : ''); btn.dataset.i = i; btn.innerHTML = ''; btn.addEventListener('click', function() { setI(i); }); thumbsContainer.appendChild(btn); }); } (function setVariantDescriptions() { var proDesc = document.querySelector('[data-var*="PRO"] .adb-vo-desc'); var maxDesc = document.querySelector('[data-var*="MAX"] .adb-vo-desc'); if (proDesc) proDesc.textContent = isImperial ? 'Duracore™ — 140lb' : 'Duracore™ — 70kg'; if (maxDesc) maxDesc.textContent = isImperial ? 'Metal — 300lb' : 'Metal — 150kg'; })(); function setI(i) { ci = i; hi.src = imgs[i]; var ths = thumbsContainer.querySelectorAll('.adb-th'); ths.forEach(function(t, j) { t.classList.toggle('on', j === i); }); } window.adbNav = function(d) { var n = ci + d; if (n < 0) n = imgs.length - 1; if (n >= imgs.length) n = 0; setI(n); }; function formatMoney(cents) { if (typeof Shopify !== 'undefined' && typeof Shopify.formatMoney === 'function') { var fmt = '${{amount}}'; if (window.theme && window.theme.moneyFormat) fmt = window.theme.moneyFormat; else if (window.shopMoneyFormat) fmt = window.shopMoneyFormat; return Shopify.formatMoney(cents, fmt); } var symbol = '$'; if (typeof Shopify !== 'undefined' && Shopify.currency) { var c = Shopify.currency.active; var symbols = { USD:'$', EUR:'€', GBP:'£', CAD:'CA$', AUD:'A$', JPY:'¥', CHF:'CHF ', SEK:' kr', DKK:' kr', NOK:' kr', NZD:'NZ$', SGD:'S$', HKD:'HK$', MXN:'MX$', BRL:'R$', INR:'₹', PLN:' zł', CZK:' Kč', ILS:'₪', THB:'฿', TWD:'NT$', KRW:'₩', PHP:'₱', MYR:'RM ', ZAR:'R ' }; if (symbols[c]) symbol = symbols[c]; else symbol = c + ' '; } var raw = cents / 100; var amt = raw % 1 === 0 ? raw.toFixed(0) : raw.toFixed(2); var after = ['SEK','DKK','NOK','PLN','CZK']; var curr = (typeof Shopify !== 'undefined' && Shopify.currency) ? Shopify.currency.active : 'USD'; if (after.indexOf(curr) > -1) return amt + symbol; return symbol + amt; } function getVariantByTitle(title) { if (!productData) return null; for (var i = 0; i < productData.variants.length; i++) { if (productData.variants[i].title === title) return productData.variants[i]; } return productData.variants[0]; } function updateFreeShipBadge() { var badge = document.getElementById('adbFreeShipBadge'); if (!badge) return; if (currentStyle.indexOf('MAX') > -1) { badge.classList.add('visible'); } else { badge.classList.remove('visible'); } } function updateStockState() { if (!productData) return; var variant = getVariantByTitle(currentStyle); if (!variant) return; var btn = document.getElementById('adbAddBtn'); var bellBtn = document.getElementById('adbBellBtn'); var notifyForm = document.getElementById('adbNotifyForm'); var notifyConfirm = document.getElementById('adbNotifyConfirm'); var stockEl = document.getElementById('adbStockStatus'); if (!variant.available) { btn.disabled = true; btn.innerHTML = 'Sold Out'; btn.style.background = '#bbb9b2'; btn.style.cursor = 'not-allowed'; btn.style.pointerEvents = 'none'; if (bellBtn) bellBtn.style.display = 'flex'; if (notifyForm) notifyForm.style.display = 'none'; if (notifyConfirm) notifyConfirm.style.display = 'none'; if (stockEl) { stockEl.innerHTML = ' Sold Out'; stockEl.style.color = '#dc2626'; } } else { btn.disabled = false; btn.innerHTML = ' Add to Cart'; btn.style.background = '#1972bc'; btn.style.cursor = 'pointer'; btn.style.pointerEvents = 'auto'; if (bellBtn) bellBtn.style.display = 'none'; if (notifyForm) notifyForm.style.display = 'none'; if (notifyConfirm) notifyConfirm.style.display = 'none'; if (stockEl) { stockEl.style.color = '#2d8a39'; } } } var ADB_KLAVIYO_KEY = 'QeupfE'; window.adbToggleBell = function() { var form = document.getElementById('adbNotifyForm'); var confirm = document.getElementById('adbNotifyConfirm'); if (confirm && confirm.style.display === 'flex') return; if (!form) return; form.style.display = form.style.display === 'flex' ? 'none' : 'flex'; if (form.style.display === 'flex') { var el = document.getElementById('adbNotifyEmail'); if (el) el.focus(); } }; window.adbSubmitNotify = function() { var input = document.getElementById('adbNotifyEmail'); var email = input ? input.value : ''; if (!email || email.indexOf('@') === -1) { if (input) input.style.borderColor = '#E24B4A'; return; } if (input) input.style.borderColor = '#ddd'; var variant = getVariantByTitle(currentStyle); var vid = variant ? variant.id : selectedVariantId; fetch('https://a.klaviyo.com/client/back-in-stock-subscriptions/?company_id=' + ADB_KLAVIYO_KEY, { method: 'POST', headers: { 'content-type': 'application/json', 'revision': '2024-06-15' }, body: JSON.stringify({ data: { type: 'back-in-stock-subscription', attributes: { channels: ['EMAIL'], profile: { data: { type: 'profile', attributes: { email: email } } } }, relationships: { variant: { data: { type: 'catalog-variant', id: '$shopify:::$default:::' + String(vid) } } } } }) }) .then(function(res) { if (!res.ok) { if (input) input.style.borderColor = '#E24B4A'; return; } var form = document.getElementById('adbNotifyForm'); var confirm = document.getElementById('adbNotifyConfirm'); if (form) form.style.display = 'none'; if (confirm) confirm.style.display = 'flex'; var bell = document.getElementById('adbBellBtn'); if (bell) { bell.style.opacity = '0.4'; bell.onclick = null; } }) .catch(function() { if (input) input.style.borderColor = '#E24B4A'; }); }; function updatePriceDisplay() { if (!productData) { updateFreeShipBadge(); return; } ['PRO [70kg | 140lbs]', 'MAX [150kg | 300lbs]'].forEach(function(s) { var v = getVariantByTitle(s); var key = s.indexOf('PRO') > -1 ? 'PRO' : 'MAX'; var el = document.getElementById('adbVarPrice' + key); if (v && el) el.textContent = formatMoney(v.price); }); var variant = getVariantByTitle(currentStyle); if (!variant) return; selectedVariantId = variant.id; var priceStr = formatMoney(variant.price); var heroPrice = document.getElementById('adbHeroPrice'); if (heroPrice) heroPrice.textContent = priceStr; updateFreeShipBadge(); updateStockState(); } function refetchProduct() { fetch('/products/' + PRODUCT_HANDLE + '.js') .then(function(r) { return r.json(); }) .then(function(p) { productData = p; updatePriceDisplay(); }); } window.adbSelectVar = function(btn) { currentStyle = btn.dataset.var; document.querySelectorAll('.adb-vo').forEach(function(b) { b.classList.remove('on'); }); btn.classList.add('on'); document.getElementById('adbStyleName').textContent = currentStyle; buildGallery(); updatePriceDisplay(); // Fallback if product data hasn't loaded if (!productData) { var h = document.getElementById('adbHeroPrice'); if (h) h.textContent = currentStyle.indexOf('PRO') > -1 ? '$49' : '$149'; } }; buildGallery(); fetch('/products/' + PRODUCT_HANDLE + '.js') .then(function(r) { return r.json(); }) .then(function(product) { productData = product; updatePriceDisplay(); }) .catch(function() { var h = document.getElementById('adbHeroPrice'); if (h) h.textContent = currentStyle.indexOf('PRO') > -1 ? '$49' : '$149'; updateFreeShipBadge(); }); document.addEventListener('DOMContentLoaded', function() { // Listen for Shopify's native currency change event document.addEventListener('currency:change', refetchProduct); // Watch for URL/cookie changes (Shopify Markets) var lastHref = location.href; setInterval(function() { if (location.href !== lastHref) { lastHref = location.href; refetchProduct(); } }, 1000); // Watch for DOM price changes (catches most currency switcher apps) var priceWatch = document.querySelector('.money, [data-currency]'); if (priceWatch) { new MutationObserver(function() { refetchProduct(); }) .observe(priceWatch, { characterData: true, childList: true, subtree: true }); } // Observe the body for any currency selector changes document.addEventListener('change', function(e) { var t = e.target; if (t.name === 'currency' || t.dataset.currency !== undefined || t.closest('[data-currency-selector], .currency-selector, [data-disclosure-list]')) { setTimeout(refetchProduct, 300); } }); }); window.adbAddToCart = function() { var btn = document.getElementById('adbAddBtn'); var origHTML = btn.innerHTML; btn.innerHTML = ' Adding...'; btn.style.opacity = '.7'; btn.style.pointerEvents = 'none'; var vid = selectedVariantId; var doAdd; if (vid) { doAdd = fetch('/cart/add.js', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ items: [{ id: vid, quantity: 1 }] }) }); } else { doAdd = fetch('/products/' + PRODUCT_HANDLE + '.js') .then(function(r) { return r.json(); }) .then(function(product) { var v = getVariantByTitle(currentStyle) || product.variants[0]; return fetch('/cart/add.js', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ items: [{ id: v.id, quantity: 1 }] }) }); }); } doAdd .then(function(r) { return r.json(); }) .then(function() { btn.innerHTML = ' Added to Cart!'; btn.style.background = '#2d8a39'; btn.style.opacity = '1'; fetch(window.location.pathname) .then(function(r) { return r.text(); }) .then(function(html) { var doc = new DOMParser().parseFromString(html, 'text/html'); var drawerSelectors = ['#cart-drawer','#CartDrawer','[id*="cart-drawer"]','[id*="cart-sidebar"]','[id*="mini-cart"]','[id*="slide-cart"]','[id*="CartDrawer"]','.cart-drawer','[data-cart-drawer]','[data-section-id*="cart"]','.side-cart','.slidecart']; for (var s = 0; s < drawerSelectors.length; s++) { var fresh = doc.querySelector(drawerSelectors[s]); var current = document.querySelector(drawerSelectors[s]); if (fresh && current) { current.outerHTML = fresh.outerHTML; break; } } doc.querySelectorAll('[id^="shopify-section-"]').forEach(function(freshSec) { if (freshSec.id.toLowerCase().includes('cart')) { var current = document.getElementById(freshSec.id); if (current) current.outerHTML = freshSec.outerHTML; } }); var countSels = '[data-cart-count], .cart-count, .cart-item-count, .js-cart-count, .cart-count-bubble, .cart__count, [data-cart-item-count], .header__cart-count, .CartCount, .site-header__cart-count'; var freshCounts = doc.querySelectorAll(countSels); var pageCounts = document.querySelectorAll(countSels); freshCounts.forEach(function(el, i) { if (pageCounts[i]) pageCounts[i].outerHTML = el.outerHTML; }); }) .catch(function() {}) .finally(function() { setTimeout(function() { var cartTrigger = document.querySelector('[data-cart-toggle], .js-cart-toggle, .cart-toggle, a[href="/cart"], .site-header__cart, .header__icon--cart, .js-drawer-open-cart, [data-action="toggle-cart"], .cart-link, .cart-icon-bubble'); if (cartTrigger) cartTrigger.click(); }, 200); }); setTimeout(function() { btn.innerHTML = origHTML; btn.style.background = '#1972bc'; btn.style.pointerEvents = 'auto'; }, 2000); }) .catch(function() { btn.innerHTML = origHTML; btn.style.opacity = '1'; btn.style.pointerEvents = 'auto'; window.location.href = '/products/' + PRODUCT_HANDLE; }); }; window.adbTogAcc = function(b) { var i = b.parentElement, o = i.classList.contains('open'); document.querySelectorAll('.adb-aci').forEach(function(x) { x.classList.remove('open'); }); if (!o) i.classList.add('open'); }; })(); @import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Inter:wght@400;500;600&display=swap'); .abl-video *, .abl-video *::before, .abl-video *::after { margin:0; padding:0; box-sizing:border-box; } .abl-video { padding: 80px 24px; background: #fff; border-top: 1px solid #e8e6df; border-bottom: 1px solid #e8e6df; font-family: 'Inter', -apple-system, sans-serif; -webkit-font-smoothing: antialiased; } .abl-video-container { max-width: 1100px; margin: 0 auto; } .abl-video-sh { text-align: center; margin-bottom: 48px; } .abl-video-sh .abl-video-label { font-family: 'Bebas Neue', sans-serif; font-size: 14px; letter-spacing: 3px; color: #22a87a; text-transform: uppercase; margin-bottom: 8px; } .abl-video-sh h2 { font-family: 'Bebas Neue', sans-serif; font-size: clamp(32px, 5vw, 52px); letter-spacing: 1px; line-height: 1.05; color: #2c2b28; } .abl-video-sh p { margin-top: 10px; font-size: 14px; color: #5a5850; max-width: 520px; margin-left: auto; margin-right: auto; } .abl-video-inner { max-width: 800px; margin: 0 auto; } .abl-video-embed { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; border-radius: 8px; background: #1a1918; box-shadow: 0 8px 32px rgba(0,0,0,0.1); } .abl-video-embed > div, .abl-video-embed > iframe, .abl-video-embed > .wistia_embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .abl-vpills { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; max-width: 900px; margin: 40px auto 0; } .abl-vpill { text-align: center; padding: 20px 16px; background: #f7f6f3; border: 1px solid #e8e6df; border-radius: 8px; } .abl-vpill-check { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; background: rgba(52,211,153,0.08); margin-bottom: 10px; } .abl-vpill h4 { font-family: 'Bebas Neue', sans-serif; font-size: 17px; letter-spacing: 1px; color: #2c2b28; margin-bottom: 4px; } .abl-vpill p { font-size: 12px; color: #8a8880; line-height: 1.4; } @media (max-width: 768px) { .abl-vpills { grid-template-columns: 1fr 1fr; } } @media (max-width: 480px) { .abl-vpills { grid-template-columns: 1fr; } } Deep Dive SEE IT IN ACTION A full breakdown of the AdaptaBELL — design, features, and how it works HOLDS 300LBS Don't limit your potential with light weights. KNURLED HANDLE High-quality materials to handle intense workouts. PORTABLE & LIGHT A great addition to your home gym or on-the-go workouts. FITS MOST PLATES Works with both standard and Olympic plates. (function() { var loaded = false; var target = document.getElementById('abl-wistia-lazy'); if (!target) return; var observer = new IntersectionObserver(function(entries) { if (entries[0].isIntersecting && !loaded) { loaded = true; observer.disconnect(); var s1 = document.createElement('script'); s1.src = 'https://fast.wistia.com/embed/medias/wistia_async_osypas5bau.jsonp'; s1.async = true; var s2 = document.createElement('script'); s2.src = 'https://fast.wistia.com/assets/external/E-v1.js'; s2.async = true; var embed = document.createElement('div'); embed.className = 'wistia_embed wistia_async_osypas5bau'; embed.style.cssText = 'width:100%;height:100%;'; target.appendChild(embed); document.head.appendChild(s1); document.head.appendChild(s2); } }, { rootMargin: '200px' }); observer.observe(target); })(); .testimonial-section { background: #f7f6f3; padding: 80px 24px; text-align: center; } .testimonial-container { max-width: 1100px; margin: 0 auto; } .testimonial-quote { font-family: 'Barlow', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-size: clamp(20px, 3vw, 28px); font-weight: 600; line-height: 1.5; color: #1a1918; margin: 0 0 40px; max-width: 900px; margin-left: auto; margin-right: auto; } .testimonial-logo { display: flex; justify-content: center; align-items: center; } .testimonial-logo svg { width: 200px; height: auto; fill: #1a1918; } @media (max-width: 768px) { .testimonial-section { padding: 60px 20px; } .testimonial-quote { font-size: 18px; margin-bottom: 32px; } .testimonial-logo svg { width: 60px; } } "Compact, efficient and versatile, the adaptabells by Kensui Fitness is the perfect addition to your home gym. The unique plate-loaded and flat-end dumbbell works with any weight plate and is adjustable up to 300lbs." GQ /*@media (max-width: 749px) {*/ /* div { grid-template-columns: repeat(2, 1fr) !important; }*/ /*}*/ .kabs-section { font-family: 'Outfit', sans-serif; background: linear-gradient(180deg, #111111 0%, #0a0a0a 100%); padding: 60px 20px; position: relative; overflow: hidden; } .kabs-section * { box-sizing: border-box; margin: 0; padding: 0; } .kabs-container { max-width: 1000px; margin: 0 auto; position: relative; } /* Header */ .kabs-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 32px; gap: 20px; } .kabs-header-left { display: flex; align-items: center; gap: 16px; } .kabs-badge { display: flex; align-items: center; gap: 6px; background: rgba(59, 130, 246, 0.1); border: 1px solid rgba(59, 130, 246, 0.2); padding: 6px 12px; border-radius: 20px; } .kabs-badge svg { width: 14px; height: 14px; color: #3b82f6; } .kabs-badge span { font-size: 11px; font-weight: 600; letter-spacing: 1.5px; text-transform: uppercase; color: #3b82f6; } .kabs-title { font-family: 'Bebas Neue', sans-serif; font-size: clamp(28px, 4vw, 36px); color: #ffffff; letter-spacing: 1px; } /* Navigation */ .kabs-nav { display: flex; align-items: center; gap: 12px; } .kabs-nav-btn { width: 44px; height: 44px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, 0.15); background: rgba(255, 255, 255, 0.05); color: #ffffff; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; } .kabs-nav-btn:hover { background: rgba(59, 130, 246, 0.2); border-color: rgba(59, 130, 246, 0.4); } .kabs-nav-btn:disabled { opacity: 0.3; cursor: not-allowed; } .kabs-nav-btn svg { width: 20px; height: 20px; } /* Slider Container */ .kabs-slider-wrapper { overflow: hidden; border-radius: 16px; } .kabs-slider { display: flex; transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1); } /* Slide */ .kabs-slide { min-width: 100%; padding: 0 4px; } .kabs-card { display: grid; grid-template-columns: 200px 1fr; gap: 32px; background: linear-gradient(145deg, rgba(255,255,255,0.04) 0%, rgba(255,255,255,0.01) 100%); border: 1px solid rgba(255,255,255,0.06); border-radius: 16px; padding: 32px; align-items: center; } /* Image side */ .kabs-image-container { position: relative; } .kabs-avatar { width: 100%; aspect-ratio: 1; border-radius: 12px; object-fit: cover; border: 3px solid rgba(59, 130, 246, 0.2); } .kabs-video-btn { position: absolute; bottom: 12px; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 6px; background: rgba(0, 0, 0, 0.85); backdrop-filter: blur(8px); padding: 8px 14px; border-radius: 20px; color: #ffffff; font-size: 12px; font-weight: 500; text-decoration: none; transition: all 0.3s ease; white-space: nowrap; } .kabs-video-btn:hover { background: #3b82f6; } .kabs-video-btn svg { width: 14px; height: 14px; } /* Content side */ .kabs-content { position: relative; } .kabs-author-row { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; } .kabs-author-info { flex: 1; } .kabs-author-name { font-size: 16px; font-weight: 600; color: #ffffff; margin-bottom: 2px; } .kabs-author-title { font-size: 12px; color: rgba(255, 255, 255, 0.5); } .kabs-publication { display: inline-flex; align-items: center; gap: 5px; padding: 5px 10px; background: rgba(255, 255, 255, 0.05); border-radius: 4px; font-size: 10px; font-weight: 600; color: rgba(255, 255, 255, 0.6); letter-spacing: 0.5px; } .kabs-publication svg { width: 10px; height: 10px; } .kabs-stars { display: flex; gap: 2px; margin-bottom: 12px; } .kabs-stars svg { width: 16px; height: 16px; fill: #facc15; } .kabs-quote { font-family: 'Playfair Display', serif; font-size: 20px; font-weight: 600; color: #ffffff; line-height: 1.4; margin-bottom: 12px; } .kabs-body { font-size: 14px; line-height: 1.7; color: rgba(255, 255, 255, 0.6); } .kabs-highlight { color: #60a5fa; font-weight: 500; } /* Dots */ .kabs-dots { display: flex; justify-content: center; gap: 8px; margin-top: 24px; } .kabs-dot { width: 8px; height: 8px; border-radius: 50%; background: rgba(255, 255, 255, 0.2); border: none; cursor: pointer; transition: all 0.3s ease; padding: 0; } .kabs-dot.active { background: #3b82f6; width: 24px; border-radius: 4px; } /* Trust bar */ .kabs-trust { display: flex; align-items: center; justify-content: center; gap: 32px; margin-top: 32px; padding-top: 24px; border-top: 1px solid rgba(255, 255, 255, 0.06); } .kabs-trust-item { display: flex; align-items: center; gap: 8px; } .kabs-trust-value { font-family: 'Bebas Neue', sans-serif; font-size: 24px; color: #ffffff; } .kabs-trust-label { font-size: 12px; color: rgba(255, 255, 255, 0.5); } .kabs-trust-divider { width: 1px; height: 32px; background: rgba(255, 255, 255, 0.1); } /* Responsive */ @media (max-width: 768px) { .kabs-section { padding: 48px 16px; } .kabs-header { flex-direction: column; align-items: flex-start; gap: 16px; } .kabs-header-left { flex-direction: column; align-items: flex-start; gap: 12px; } .kabs-nav { align-self: flex-end; } .kabs-card { grid-template-columns: 1fr; gap: 24px; padding: 24px; } .kabs-image-container { max-width: 160px; margin: 0 auto; } .kabs-quote { font-size: 18px; } .kabs-trust { flex-wrap: wrap; gap: 20px; } .kabs-trust-divider { display: none; } } @media (max-width: 480px) { .kabs-card { padding: 20px; } .kabs-author-row { flex-direction: column; align-items: flex-start; gap: 8px; } .kabs-quote { font-size: 16px; } .kabs-body { font-size: 13px; } .kabs-nav-btn { width: 38px; height: 38px; } .kabs-trust-item { flex-direction: column; align-items: center; gap: 4px; flex: 1; min-width: 80px; } .kabs-trust-value { font-size: 20px; } .kabs-trust-label { font-size: 10px; text-align: center; } } Expert Approved Trusted By Industry Experts Watch Review Coop Mitchell Founder & Lead Reviewer Garage Gym Reviews "I think these are killer value. You're getting a much better value than spin locks." In that goal of trying to minimize space and maximize your dinero, these really hit the spot. Nick Nilson Founder of Fitstep.com Fitstep.com "Bottom line, these things are awesome. Some of the best home gym equipment you can get." They solve one of your biggest problems with adjustable dumbbells... the post that sticks out past the plates. Mark Strange Founder, Muscle Building Shorts YouTube "I have no fear of them loosening up on me. Nice flat edges on the side." I also like dumbbells that have a nice flat side so I can put them on my knees for temporary support. Angus Logan Fitness Reviewer AngusLogan.co.uk "Dumbbells are super versatile. This is a cool addition. 33 quid absolute bargain!" Pretty happy with these, a good purchase. 4.9★ Rating 481+ Reviews 89% 5-Star 200K+ Athletes (function() { const slider = document.getElementById('kabsSlider'); const dots = document.querySelectorAll('.kabs-dot'); const prevBtn = document.getElementById('kabsPrev'); const nextBtn = document.getElementById('kabsNext'); const slides = slider.querySelectorAll('.kabs-slide'); const totalSlides = slides.length; let currentIndex = 0; let autoplayInterval; function goToSlide(index) { if (index < 0) index = totalSlides - 1; if (index >= totalSlides) index = 0; currentIndex = index; slider.style.transform = `translateX(-${currentIndex * 100}%)`; dots.forEach((dot, i) => { dot.classList.toggle('active', i === currentIndex); }); } function nextSlide() { goToSlide(currentIndex + 1); } function prevSlide() { goToSlide(currentIndex - 1); } function startAutoplay() { autoplayInterval = setInterval(nextSlide, 5000); } function stopAutoplay() { clearInterval(autoplayInterval); } // Event listeners nextBtn.addEventListener('click', () => { nextSlide(); stopAutoplay(); startAutoplay(); }); prevBtn.addEventListener('click', () => { prevSlide(); stopAutoplay(); startAutoplay(); }); dots.forEach((dot, index) => { dot.addEventListener('click', () => { goToSlide(index); stopAutoplay(); startAutoplay(); }); }); // Touch/swipe support let touchStartX = 0; let touchEndX = 0; slider.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; stopAutoplay(); }, { passive: true }); slider.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; const diff = touchStartX - touchEndX; if (Math.abs(diff) > 50) { if (diff > 0) { nextSlide(); } else { prevSlide(); } } startAutoplay(); }, { passive: true }); // Start autoplay startAutoplay(); // Pause on hover slider.parentElement.addEventListener('mouseenter', stopAutoplay); slider.parentElement.addEventListener('mouseleave', startAutoplay); })(); .kabc-section { max-width: 1200px; margin: 0 auto; font-family: 'Outfit', sans-serif; padding: 60px 20px; background: #f9f9f9; } .kabc-section * { box-sizing: border-box; margin: 0; padding: 0; } /* Header */ .kabc-header { text-align: center; margin-bottom: 48px; } .kabc-subtitle { font-size: 12px; font-weight: 600; letter-spacing: 3px; text-transform: uppercase; color: #888; margin-bottom: 12px; } .kabc-title { font-family: 'Bebas Neue', sans-serif; font-size: clamp(36px, 5vw, 48px); color: #1a1a1a; letter-spacing: 2px; } .kabc-title span { color: #2563eb; } /* Comparison Container */ .kabc-container { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; position: relative; } /* VS Badge */ .kabc-vs { position: absolute; left: 50%; top: 200px; transform: translate(-50%, -50%); width: 56px; height: 56px; background: #1a1a1a; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-family: 'Bebas Neue', sans-serif; font-size: 18px; color: white; letter-spacing: 1px; z-index: 10; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); } /* Product Card */ .kabc-card { background: #ffffff; border-radius: 16px; padding: 32px; position: relative; box-shadow: 0 2px 16px rgba(0, 0, 0, 0.04); transition: all 0.3s ease; border: 2px solid transparent; } .kabc-card:hover { transform: translateY(-4px); box-shadow: 0 12px 40px rgba(0, 0, 0, 0.08); } .kabc-card.kabc-pro:hover { border-color: rgba(37, 99, 235, 0.2); } .kabc-card.kabc-max:hover { border-color: rgba(26, 26, 26, 0.2); } /* Badge */ .kabc-badge { position: absolute; top: 16px; right: 16px; padding: 6px 12px; border-radius: 20px; font-size: 10px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; } .kabc-card.kabc-pro .kabc-badge { background: linear-gradient(135deg, #2563eb, #3b82f6); color: white; } .kabc-card.kabc-max .kabc-badge { background: linear-gradient(135deg, #1a1a1a, #333); color: white; } /* Product Image */ .kabc-image { height: 200px; display: flex; align-items: center; justify-content: center; margin-bottom: 24px; position: relative; } .kabc-image::before { content: ''; position: absolute; width: 160px; height: 160px; border-radius: 50%; opacity: 0.06; } .kabc-card.kabc-pro .kabc-image::before { background: radial-gradient(circle, #2563eb, transparent 70%); } .kabc-card.kabc-max .kabc-image::before { background: radial-gradient(circle, #1a1a1a, transparent 70%); } .kabc-image img { max-height: 180px; object-fit: contain; position: relative; z-index: 1; transition: transform 0.3s ease; } .kabc-card:hover .kabc-image img { transform: scale(1.05); } /* Product Name */ .kabc-product-header { text-align: center; margin-bottom: 24px; padding-bottom: 20px; border-bottom: 1px solid #f0f0f0; } .kabc-product-name { font-family: 'Bebas Neue', sans-serif; font-size: 28px; letter-spacing: 2px; margin-bottom: 4px; } .kabc-card.kabc-pro .kabc-product-name { color: #2563eb; } .kabc-card.kabc-max .kabc-product-name { color: #1a1a1a; } .kabc-product-tagline { font-size: 13px; color: #888; font-weight: 500; } /* Specs */ .kabc-specs { display: flex; flex-direction: column; gap: 0; margin-bottom: 24px; } .kabc-spec { display: flex; justify-content: space-between; align-items: center; padding: 14px 0; border-bottom: 1px solid #f5f5f5; } .kabc-spec:last-child { border-bottom: none; } .kabc-spec-label { font-size: 14px; color: #666; font-weight: 500; } .kabc-spec-value { font-size: 15px; font-weight: 600; color: #1a1a1a; } /* Highlighted spec */ .kabc-spec.kabc-highlight { background: linear-gradient(90deg, transparent, rgba(37, 99, 235, 0.04)); margin: 0 -16px; padding: 14px 16px; border-radius: 8px; border-bottom: none; } .kabc-card.kabc-max .kabc-spec.kabc-highlight { background: linear-gradient(90deg, transparent, rgba(26, 26, 26, 0.04)); } .kabc-spec.kabc-highlight .kabc-spec-value { color: #2563eb; font-size: 16px; } .kabc-card.kabc-max .kabc-spec.kabc-highlight .kabc-spec-value { color: #1a1a1a; } /* Price */ .kabc-price-section { text-align: center; padding: 20px 0; margin-bottom: 20px; background: #fafafa; border-radius: 12px; } .kabc-price-label { font-size: 12px; color: #888; text-transform: uppercase; letter-spacing: 1px; margin-bottom: 4px; } .kabc-price { font-family: 'Bebas Neue', sans-serif; font-size: 42px; letter-spacing: 1px; } .kabc-card.kabc-pro .kabc-price { color: #2563eb; } .kabc-card.kabc-max .kabc-price { color: #1a1a1a; } .kabc-price-note { font-size: 12px; color: #888; margin-top: 4px; } /* CTA Button */ .kabc-cta { width: 100%; padding: 16px 24px; border: none; border-radius: 8px; font-family: 'Outfit', sans-serif; font-size: 14px; font-weight: 600; letter-spacing: 1px; text-transform: uppercase; cursor: pointer; transition: all 0.3s ease; position: relative; overflow: hidden; } .kabc-card.kabc-pro .kabc-cta { background: linear-gradient(135deg, #2563eb, #3b82f6); color: white; } .kabc-card.kabc-pro .kabc-cta:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(37, 99, 235, 0.35); } .kabc-card.kabc-max .kabc-cta { background: linear-gradient(135deg, #1a1a1a, #333); color: white; } .kabc-card.kabc-max .kabc-cta:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25); } /* Feature callout */ .kabc-feature { display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 16px; padding: 10px; background: #f8f8f8; border-radius: 8px; } .kabc-feature svg { width: 16px; height: 16px; flex-shrink: 0; } .kabc-card.kabc-pro .kabc-feature svg { color: #2563eb; } .kabc-card.kabc-max .kabc-feature svg { color: #1a1a1a; } .kabc-feature span { font-size: 12px; color: #666; font-weight: 500; } /* Responsive - Tablet */ @media (max-width: 700px) { .kabc-section { padding: 48px 16px; } .kabc-container { grid-template-columns: 1fr 1fr; gap: 12px; } .kabc-vs { width: 44px; height: 44px; font-size: 14px; top: 140px; } .kabc-card { padding: 16px; } .kabc-badge { position: static; display: inline-block; margin-bottom: 12px; padding: 4px 8px; font-size: 8px; } .kabc-image { height: 120px; margin-bottom: 16px; } .kabc-image img { max-height: 100px; } .kabc-product-header { margin-bottom: 16px; padding-bottom: 12px; } .kabc-product-name { font-size: 18px; letter-spacing: 1px; } .kabc-product-tagline { font-size: 10px; } .kabc-spec { padding: 10px 0; flex-direction: column; align-items: flex-start; gap: 2px; } .kabc-spec-label { font-size: 10px; color: #888; } .kabc-spec-value { font-size: 13px; } .kabc-spec.kabc-highlight { margin: 0 -12px; padding: 10px 12px; } .kabc-spec.kabc-highlight .kabc-spec-value { font-size: 14px; } .kabc-price-section { padding: 14px 8px; margin-bottom: 14px; } .kabc-price-label { font-size: 9px; } .kabc-price { font-size: 28px; } .kabc-price-note { font-size: 9px; } .kabc-cta { padding: 12px 16px; font-size: 11px; letter-spacing: 0.5px; } .kabc-feature { margin-top: 12px; padding: 8px; gap: 6px; } .kabc-feature svg { width: 12px; height: 12px; } .kabc-feature span { font-size: 9px; } .kabc-header { margin-bottom: 32px; } .kabc-title { font-size: 32px; } .kabc-subtitle { font-size: 10px; } } /* Extra small screens */ @media (max-width: 400px) { .kabc-section { padding: 40px 12px; } .kabc-container { gap: 8px; } .kabc-vs { width: 36px; height: 36px; font-size: 12px; top: 120px; } .kabc-card { padding: 12px; } .kabc-badge { font-size: 7px; padding: 3px 6px; } .kabc-image { height: 90px; margin-bottom: 12px; } .kabc-image img { max-height: 80px; } .kabc-product-name { font-size: 15px; } .kabc-product-tagline { font-size: 9px; } .kabc-spec { padding: 8px 0; } .kabc-spec-label { font-size: 9px; } .kabc-spec-value { font-size: 12px; } .kabc-spec.kabc-highlight { margin: 0 -8px; padding: 8px; } .kabc-spec.kabc-highlight .kabc-spec-value { font-size: 12px; } .kabc-price-section { padding: 10px 6px; margin-bottom: 12px; } .kabc-price { font-size: 24px; } .kabc-cta { padding: 10px 12px; font-size: 10px; } .kabc-feature { margin-top: 10px; padding: 6px; } .kabc-feature span { font-size: 8px; } } Choose Your Model PRO vs MAX VS Best Seller ADAPTABELL PRO Lightweight & Portable Peg Length 9cm Handle Diameter 34mm Material Nylon Fiberglass Weight Capacity 140lbs Price per pair $49 Free shipping over $100 Heavy Duty ADAPTABELL MAX Maximum Strength Peg Length 10.75cm Handle Diameter 38mm Material Aluminum Alloy Weight Capacity 300lbs Price per pair $149 Free shipping over $100 @import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Inter:wght@400;500;600&display=swap'); .abl-features *, .abl-features *::before, .abl-features *::after { margin:0; padding:0; box-sizing:border-box; } .abl-features { padding: 80px 0; background: #f7f6f3; font-family: 'Inter', -apple-system, sans-serif; -webkit-font-smoothing: antialiased; } .abl-feat { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; max-width: 1100px; margin: 0 auto; padding: 40px 24px; } .abl-feat:nth-child(even) .abl-feat-img { order: 2; } .abl-feat:nth-child(even) .abl-feat-txt { order: 1; } .abl-feat-img { border-radius: 8px; overflow: hidden; background: #e8e6df; /*aspect-ratio: 4/3;*/ } .abl-feat-img img { width: 100%; height: 100%; object-fit: cover; display: block; } .abl-feat-label { font-family: 'Bebas Neue', sans-serif; font-size: 14px; letter-spacing: 3px; color: #22a87a; text-transform: uppercase; margin-bottom: 8px; } .abl-feat-txt h3 { font-family: 'Bebas Neue', sans-serif; font-size: clamp(28px, 4vw, 42px); letter-spacing: 1px; line-height: 1.05; color: #2c2b28; margin-bottom: 12px; } .abl-feat-txt p { font-size: 14px; color: #5a5850; line-height: 1.7; margin-bottom: 16px; } .abl-feat-list { list-style: none; display: flex; flex-direction: column; gap: 8px; } .abl-feat-list li { display: flex; align-items: center; gap: 8px; font-size: 13px; color: #5a5850; } .abl-feat-list li svg { flex-shrink: 0; } @media (max-width: 768px) { .abl-feat { grid-template-columns: 1fr; gap: 24px; } .abl-feat:nth-child(even) .abl-feat-img { order: 0; } .abl-feat:nth-child(even) .abl-feat-txt { order: 0; } } Revolutionary Design NO OVERHANG Place on your knees for shoulder press, pain-free. Full range of motion for curls, rows, and bench press. No plates digging into your thighs or chest. Pain-free shoulder pressing Unrestricted movement patterns Rest on thighs between sets Maximum Strength GO HEAVY Don't limit your potential with light dumbbells. The AdaptaBELL MAX safely holds up to 300 lbs with knurled aluminum handles built for serious lifting. 300 lb max capacity (MAX) Knurled handles for secure grip Won't loosen during use Universal Compatibility ONE SIZE FITS ALL Works with both 28mm (Standard) and 50mm (Olympic) weight plates. Use the plates you already own from any brand — CAP, Rogue, Yes4All, or any other. Standard + Olympic compatible Works with any brand plates No proprietary plates needed Travel Ready TRAIN ANYWHERE Hotel and condo gyms never have dumbbells over 50 lbs. Throw AdaptaBELLs in your backpack, use the gym's plates, and lift as heavy as you need. Fits in a backpack or suitcase Use any gym's weight plates Never miss a workout .ezab-section { font-family: 'Outfit', sans-serif; background: linear-gradient(180deg, #111 0%, #0a0a0a 100%); padding: 80px 20px; color: white; } .ezab-section * { box-sizing: border-box; margin: 0; padding: 0; } .ezab-container { max-width: 1100px; margin: 0 auto; } /* Header */ .ezab-header { text-align: center; margin-bottom: 48px; } .ezab-badge { display: inline-flex; align-items: center; gap: 8px; background: rgba(37, 99, 235, 0.15); border: 1px solid rgba(37, 99, 235, 0.3); padding: 8px 16px; border-radius: 24px; margin-bottom: 16px; } .ezab-badge svg { width: 16px; height: 16px; color: #3b82f6; } .ezab-badge span { font-size: 11px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; color: #3b82f6; } .ezab-title { font-family: 'Bebas Neue', sans-serif; font-size: clamp(36px, 5vw, 52px); letter-spacing: 2px; color: white; margin-bottom: 12px; } .ezab-title span { background: linear-gradient(135deg, #3b82f6, #60a5fa); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .ezab-subtitle { font-size: 18px; color: rgba(255, 255, 255, 0.6); max-width: 550px; margin: 0 auto; } /* Comparison Table */ .ezab-table { background: rgba(255, 255, 255, 0.02); border: 1px solid rgba(255, 255, 255, 0.06); border-radius: 24px; overflow: hidden; } /* Product Headers */ .ezab-products { display: grid; grid-template-columns: 1.4fr repeat(4, 1fr); background: linear-gradient(180deg, rgba(255,255,255,0.04) 0%, transparent 100%); border-bottom: 1px solid rgba(255, 255, 255, 0.06); } .ezab-product-label { padding: 24px; display: flex; align-items: flex-end; } .ezab-product-label-text { font-size: 12px; font-weight: 600; color: rgba(255, 255, 255, 0.4); text-transform: uppercase; letter-spacing: 1px; } .ezab-product { padding: 24px 16px; text-align: center; position: relative; border-left: 1px solid rgba(255, 255, 255, 0.04); } .ezab-product.ezab-winner { background: linear-gradient(180deg, rgba(37, 99, 235, 0.12) 0%, rgba(37, 99, 235, 0.04) 100%); } .ezab-product.ezab-winner::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, #3b82f6, #60a5fa); } .ezab-winner-badge { position: absolute; top: 16px; left: 50%; transform: translateX(-50%); background: linear-gradient(135deg, #3b82f6, #60a5fa); color: white; padding: 5px 12px; border-radius: 6px; font-size: 9px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; white-space: nowrap; } .ezab-product-image { height: 100px; display: flex; align-items: center; justify-content: center; margin-bottom: 12px; margin-top: 12px; } .ezab-product.ezab-winner .ezab-product-image { margin-top: 24px; } .ezab-product-image img { max-height: 90px; max-width: 100%; object-fit: contain; filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.3)); } .ezab-product-name { font-family: 'Bebas Neue', sans-serif; font-size: 16px; letter-spacing: 0.5px; color: rgba(255, 255, 255, 0.9); line-height: 1.2; } .ezab-product.ezab-winner .ezab-product-name { color: #60a5fa; font-size: 18px; } /* Feature Rows */ .ezab-features { padding: 0; } .ezab-row { display: grid; grid-template-columns: 1.4fr repeat(4, 1fr); transition: background 0.2s ease; } .ezab-row:hover { background: rgba(255, 255, 255, 0.02); } .ezab-row:nth-child(odd) { background: rgba(255, 255, 255, 0.01); } .ezab-row:nth-child(odd):hover { background: rgba(255, 255, 255, 0.03); } .ezab-cell { padding: 20px 16px; display: flex; align-items: center; justify-content: center; border-left: 1px solid rgba(255, 255, 255, 0.04); border-bottom: 1px solid rgba(255, 255, 255, 0.04); } .ezab-cell:first-child { justify-content: flex-start; padding-left: 24px; border-left: none; } .ezab-cell.ezab-highlight { background: rgba(37, 99, 235, 0.06); } .ezab-row:nth-child(odd) .ezab-cell.ezab-highlight { background: rgba(37, 99, 235, 0.08); } .ezab-feature-name { font-size: 14px; font-weight: 600; color: rgba(255, 255, 255, 0.9); display: flex; align-items: center; gap: 12px; } .ezab-feature-icon { width: 36px; height: 36px; background: rgba(255, 255, 255, 0.05); border-radius: 10px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .ezab-feature-icon svg { width: 18px; height: 18px; color: rgba(255, 255, 255, 0.5); } /* Check / X icons */ .ezab-check { width: 32px; height: 32px; background: linear-gradient(135deg, #22c55e, #16a34a); border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 12px rgba(34, 197, 94, 0.3); } .ezab-check svg { width: 18px; height: 18px; color: white; } .ezab-x { width: 32px; height: 32px; background: rgba(239, 68, 68, 0.15); border-radius: 50%; display: flex; align-items: center; justify-content: center; } .ezab-x svg { width: 16px; height: 16px; color: #ef4444; } /* Price Row */ .ezab-row.ezab-price-row { background: rgba(255, 255, 255, 0.03); border-top: 1px solid rgba(255, 255, 255, 0.08); } .ezab-row.ezab-price-row:hover { background: rgba(255, 255, 255, 0.04); } .ezab-row.ezab-price-row .ezab-cell { border-bottom: none; } .ezab-price { font-family: 'Bebas Neue', sans-serif; font-size: 24px; letter-spacing: 1px; } .ezab-price.ezab-expensive { color: #ef4444; } .ezab-price.ezab-moderate { color: #facc15; } .ezab-price.ezab-best { color: #22c55e; } .ezab-price-label { font-size: 10px; color: rgba(255, 255, 255, 0.4); text-transform: uppercase; letter-spacing: 1px; margin-top: 4px; } .ezab-price-wrapper { text-align: center; } /* Footer with scores */ .ezab-footer { display: grid; grid-template-columns: 1.4fr repeat(4, 1fr); background: rgba(255, 255, 255, 0.02); border-top: 1px solid rgba(255, 255, 255, 0.08); } .ezab-footer-label { padding: 24px; display: flex; align-items: center; } .ezab-footer-label-text { font-size: 12px; font-weight: 600; color: rgba(255, 255, 255, 0.4); text-transform: uppercase; letter-spacing: 1px; } .ezab-footer-cell { padding: 24px 16px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; border-left: 1px solid rgba(255, 255, 255, 0.04); } .ezab-footer-cell.ezab-highlight { background: rgba(37, 99, 235, 0.06); } .ezab-score { text-align: center; } .ezab-score-value { font-family: 'Bebas Neue', sans-serif; font-size: 32px; color: rgba(255, 255, 255, 0.4); } .ezab-footer-cell.ezab-highlight .ezab-score-value { color: #60a5fa; } .ezab-score-label { font-size: 10px; color: rgba(255, 255, 255, 0.4); margin-top: 2px; } .ezab-cta { padding: 12px 24px; background: linear-gradient(135deg, #3b82f6, #2563eb); border: none; border-radius: 10px; font-family: 'Outfit', sans-serif; font-size: 13px; font-weight: 600; color: white; cursor: pointer; transition: all 0.3s ease; text-decoration: none; } .ezab-cta:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(59, 130, 246, 0.4); } /* Trust bar */ .ezab-trust { display: flex; align-items: center; justify-content: center; gap: 32px; margin-top: 40px; padding: 24px; background: rgba(255, 255, 255, 0.02); border-radius: 16px; border: 1px solid rgba(255, 255, 255, 0.04); } .ezab-trust-item { display: flex; align-items: center; gap: 12px; } .ezab-trust-icon { width: 44px; height: 44px; background: rgba(59, 130, 246, 0.1); border-radius: 12px; display: flex; align-items: center; justify-content: center; } .ezab-trust-icon svg { width: 22px; height: 22px; color: #3b82f6; } .ezab-trust-text { font-size: 14px; color: rgba(255, 255, 255, 0.5); } .ezab-trust-text strong { color: white; display: block; font-size: 18px; margin-bottom: 2px; } .ezab-trust-divider { width: 1px; height: 40px; background: rgba(255, 255, 255, 0.1); } /* Responsive */ @media (max-width: 900px) { .ezab-section { padding: 60px 12px; } .ezab-trust { flex-wrap: wrap; gap: 20px; } .ezab-trust-divider { display: none; } } @media (max-width: 600px) { .ezab-products, .ezab-row, .ezab-footer { grid-template-columns: 0.8fr repeat(4, 1fr); /* Remove min-width entirely */ } .ezab-product-label, .ezab-footer-label { padding: 10px 6px; } .ezab-product { padding: 10px 4px; } .ezab-product-image { height: 44px; margin-top: 8px; margin-bottom: 6px; } .ezab-product-image img { max-height: 40px; } .ezab-product-name { font-size: 9px; letter-spacing: 0; } .ezab-winner-badge { font-size: 7px; padding: 3px 6px; top: 8px; } .ezab-product.ezab-winner .ezab-product-image { margin-top: 22px; } .ezab-cell { padding: 10px 4px; } .ezab-cell:first-child { padding-left: 6px; } .ezab-feature-icon { display: none; } /* hide icons to save space */ .ezab-feature-name { font-size: 10px; gap: 0; } .ezab-check, .ezab-x { width: 20px; height: 20px; } .ezab-check svg, .ezab-x svg { width: 11px; height: 11px; } .ezab-price { font-size: 14px; } .ezab-price-label { font-size: 8px; } .ezab-product-label-text { font-size: 9px; } .ezab-trust { flex-direction: column; text-align: center; } .ezab-trust-item { flex-direction: column; gap: 4px; } } Comparison Why ADAPTABELL? See how AdaptaBELL stacks up against traditional dumbbell options Compare Options TraditionalDumbbell Set AdjustableDumbbell #1 AdjustableDumbbell #2 Best Choice ADAPTABELL No Overhang Compact / Portable Eco-Friendly Microloading Cost (USD) $1,000+ Full Set $39-300 Per Pair $700+ Per Pair $49-149 Complete System @import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Inter:wght@400;500;600&display=swap'); .abl-exercises *, .abl-exercises *::before, .abl-exercises *::after { margin:0; padding:0; box-sizing:border-box; } .abl-exercises { padding: 80px 24px; background: #f7f6f3; font-family: 'Inter', -apple-system, sans-serif; -webkit-font-smoothing: antialiased; } .abl-ex-container { max-width: 1100px; margin: 0 auto; } .abl-ex-sh { text-align: center; margin-bottom: 48px; } .abl-ex-sh .abl-ex-label { font-family: 'Bebas Neue', sans-serif; font-size: 14px; letter-spacing: 3px; color: #22a87a; text-transform: uppercase; margin-bottom: 8px; } .abl-ex-sh h2 { font-family: 'Bebas Neue', sans-serif; font-size: clamp(32px, 5vw, 52px); letter-spacing: 1px; line-height: 1.05; color: #2c2b28; } .abl-ex-sh p { margin-top: 10px; font-size: 14px; color: #5a5850; max-width: 520px; margin-left: auto; margin-right: auto; } .abl-ex-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; max-width: 900px; margin: 0 auto; } .abl-ex-card { background: #fff; border: 1px solid #e8e6df; border-radius: 8px; overflow: hidden; transition: border-color 0.25s, box-shadow 0.25s; } .abl-ex-card:hover { border-color: #d9d7d0; box-shadow: 0 4px 16px rgba(0,0,0,0.04); } .abl-ex-card img { width: 100%; aspect-ratio: 4/3; object-fit: cover; display: block; } .abl-ex-body { padding: 16px; } .abl-ex-tag { font-family: 'Bebas Neue', sans-serif; font-size: 11px; letter-spacing: 2px; color: #22a87a; text-transform: uppercase; margin-bottom: 4px; } .abl-ex-body h4 { font-family: 'Bebas Neue', sans-serif; font-size: 18px; letter-spacing: 1px; color: #2c2b28; margin-bottom: 4px; } .abl-ex-body p { font-size: 12px; color: #8a8880; } @media (max-width: 768px) { .abl-ex-grid { grid-template-columns: 1fr 1fr; } } @media (max-width: 480px) { .abl-ex-grid { grid-template-columns: 1fr; } } Unlock Your Potential EXERCISES YOU CAN FINALLY DO Movements that were previously impossible with traditional adjustable dumbbells Chest BENCH PRESS Full range of motion, no plates in the way Back ROWS Complete the movement without obstruction Biceps BICEP CURLS Full supination without plate interference Triceps TRICEP EXTENSIONS Overhead movements without hitting your back Shoulders SHOULDER PRESS Rest on knees between sets, pain-free Legs GOBLET SQUAT Hold comfortably at chest level without bulk .adb-faq { --adb-bg: #f5f5f5; --adb-white: #ffffff; --adb-off: #faf7f2; --adb-sand: #e7decf; --adb-ink: #26241f; --adb-black: #16140f; --adb-muted: #948c7d; --adb-accent: #1972bc; --adb-accent-d:#155a96; --adb-accent-tint: #e9f1f8; --fo: "Oswald", Impact, sans-serif; --fd: "Bebas Neue", Impact, sans-serif; --fb: "Barlow", system-ui, sans-serif; --fc: "Barlow Condensed", system-ui, sans-serif; background: radial-gradient(120% 80% at 100% 0%, #f8f4ec 0%, var(--adb-bg) 55%); color: var(--adb-ink); padding: 64px 16px 72px; box-sizing: border-box; position: relative; overflow: hidden; } .adb-faq *, .adb-faq *::before, .adb-faq *::after { box-sizing: border-box; } @media (min-width: 880px) { .adb-faq { padding: 88px 28px 96px; } } .adb-faq__inner { max-width: 820px; margin: 0 auto; position: relative; z-index: 1; } /* ============ HEADER ============ */ .adb-faq__head { text-align: center; margin-bottom: 44px; } .adb-faq__eyebrow { display: flex; align-items: center; justify-content: center; gap: 14px; font-family: var(--fc); font-size: 13px; letter-spacing: .22em; text-transform: uppercase; color: var(--adb-accent); font-weight: 600; margin-bottom: 16px; } .adb-faq__eyebrow::before, .adb-faq__eyebrow::after { content: ""; width: 48px; height: 1px; } .adb-faq__eyebrow::before { background: linear-gradient(90deg, transparent, var(--adb-sand)); } .adb-faq__eyebrow::after { background: linear-gradient(90deg, var(--adb-sand), transparent); } .adb-faq__title { font-family: var(--fo); font-weight: 600; font-size: clamp(32px, 4.6vw, 50px); line-height: .96; letter-spacing: -.01em; text-transform: uppercase; margin: 0; color: var(--adb-black); } .adb-faq__title em { font-style: normal; color: var(--adb-accent); } /* ============ ACCORDION ============ */ .adb-faq__list { display: grid; gap: 12px; } .adb-faq__item { background: var(--adb-white); border: 1px solid var(--adb-sand); border-radius: 6px; overflow: hidden; box-shadow: 0 20px 44px -34px rgba(22,20,15,.28); transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease; } .adb-faq__item:hover { transform: translateY(-1px); box-shadow: 0 22px 48px -32px rgba(22,20,15,.34); } .adb-faq__item.is-open { border-color: var(--adb-accent); box-shadow: 0 22px 50px -30px rgba(25,114,188,.30); } .adb-faq__q { width: 100%; text-align: left; background: none; border: 0; cursor: pointer; padding: 22px 24px; display: flex; align-items: center; justify-content: space-between; gap: 18px; transition: background .2s ease; } .adb-faq__q:hover { background: linear-gradient(90deg, var(--adb-accent-tint) 0%, transparent 100%); } .adb-faq__q-text { font-family: var(--fb); font-size: 17px; font-weight: 600; line-height: 1.35; color: var(--adb-black); } @media (max-width: 768px) { .adb-faq__q-text { font-size: 15.5px; } .adb-faq__q { padding: 18px 18px; } } .adb-faq__toggle { flex: 0 0 36px; width: 36px; height: 36px; border-radius: 50%; background: var(--adb-accent-tint); color: var(--adb-accent); display: flex; align-items: center; justify-content: center; position: relative; transition: background .25s ease, transform .25s ease, color .25s ease; } .adb-faq__toggle::before, .adb-faq__toggle::after { content: ""; position: absolute; background: currentColor; border-radius: 2px; transition: opacity .25s ease, transform .25s ease; } .adb-faq__toggle::before { width: 13px; height: 2px; } .adb-faq__toggle::after { width: 2px; height: 13px; } .adb-faq__item.is-open .adb-faq__toggle { background: var(--adb-accent); color: var(--adb-white); transform: rotate(180deg); } .adb-faq__item.is-open .adb-faq__toggle::after { opacity: 0; transform: rotate(90deg); } .adb-faq__a { max-height: 0; overflow: hidden; transition: max-height .35s cubic-bezier(.4,0,.2,1); } .adb-faq__item.is-open .adb-faq__a { max-height: 800px; } .adb-faq__a-inner { padding: 0 24px 24px; color: var(--adb-ink); font-family: var(--fb); font-size: 15px; line-height: 1.75; } @media (max-width: 768px) { .adb-faq__a-inner { padding: 0 18px 20px; } } .adb-faq__a-inner p { margin: 0 0 12px; } .adb-faq__a-inner p:last-child { margin-bottom: 0; } .adb-faq__a-inner strong { color: var(--adb-black); font-weight: 600; } .adb-faq__a-inner ul { margin: 12px 0; padding-left: 20px; } .adb-faq__a-inner ul:last-child { margin-bottom: 0; } .adb-faq__a-inner li { margin-bottom: 9px; } .adb-faq__a-inner li:last-child { margin-bottom: 0; } .adb-faq__a-inner li::marker { color: var(--adb-accent); } /* ============ BACKGROUND ACCENTS ============ */ .adb-faq__glow { position: absolute; border-radius: 50%; pointer-events: none; z-index: 0; } .adb-faq__glow--1 { top: -180px; right: -180px; width: 520px; height: 520px; background: radial-gradient(circle, rgba(25,114,188,.06) 0%, transparent 70%); } .adb-faq__glow--2 { bottom: -180px; left: -180px; width: 460px; height: 460px; background: radial-gradient(circle, rgba(231,222,207,.5) 0%, transparent 70%); } /* ============ LOAD-IN ============ */ @media (prefers-reduced-motion: no-preference) { .adb-faq__head, .adb-faq__item { opacity: 0; transform: translateY(16px); animation: adbIn .55s cubic-bezier(.22,.61,.36,1) forwards; } .adb-faq__head { animation-delay: .02s; } .adb-faq__item:nth-child(1) { animation-delay: .08s; } .adb-faq__item:nth-child(2) { animation-delay: .12s; } .adb-faq__item:nth-child(3) { animation-delay: .16s; } .adb-faq__item:nth-child(4) { animation-delay: .20s; } .adb-faq__item:nth-child(5) { animation-delay: .24s; } .adb-faq__item:nth-child(6) { animation-delay: .28s; } .adb-faq__item:nth-child(7) { animation-delay: .32s; } .adb-faq__item:nth-child(8) { animation-delay: .36s; } .adb-faq__item:nth-child(9) { animation-delay: .40s; } .adb-faq__item:nth-child(10) { animation-delay: .44s; } } @keyframes adbIn { to { opacity: 1; transform: none; } } Support AdaptaBELL™ FAQs What exercises can you do? ADAPTABELL™ dumbbells are perfect for a complete workout routine: Upper Body: Bicep curls, shoulder presses, chest presses, rows, tricep extensions Lower Body: Goblet squats, lunges, step-ups, calf raises Core: Russian twists, weighted sit-ups, side bends Full Body: Thrusters, man makers, Turkish get-ups The adjustable weight system allows you to progress gradually and safely across all exercises. What are the AdaptaBELLs made of? ADAPTABELL™ dumbbells are constructed with premium materials: Core: High-grade ADC12 construction for maximum durability Coating: Powder-coated finish for corrosion resistance Grips: Knurled handles for secure grip Locking Mechanism: Precision-engineered aluminum components All materials are tested to withstand heavy daily use and meet commercial gym standards. Do the dumbbells loosen? No, they won’t loosen during use. ADAPTABELL™ features our patented SecureLock™ technology: Dual-locking mechanism prevents any loosening during exercises Tested for over 10,000 repetitions without any loosening Quick-release design that stays secure until you intentionally unlock it No need for constant retightening like traditional adjustable dumbbells Do they work with standard weight plates? Yes! ADAPTABELL™ is compatible with standard 1-inch hole weight plates: Works with any standard 1.1″ hole plates you already own Compatible with iron, rubber-coated, and vinyl plates Accepts plates from 1.25 lbs to 45 lbs Mix and match different plate brands without issues Do they work with Olympic weight plates? Yes, with our Olympic adapter! (sold separately) Olympic adapter converts the bar to accept 2-inch Olympic plates Quick and easy conversion — takes less than 30 seconds Maintains the same secure locking mechanism Allows use of bumper plates and Olympic iron plates The adapter is available as an add-on or included in our Pro Bundle. Can I mix plates of different hole sizes? For safety and stability, we recommend using plates with the same hole size: Use all standard (1″) plates OR all Olympic (2″) plates with adapter Mixing sizes can cause imbalance and potential safety issues Our adapter system makes it easy to switch between plate types Both configurations maintain perfect balance and security How much loading space is there? ADAPTABELL™ provides generous loading space: Pro model: 3.3 inches of loadable sleeve length per side Max model: 4 inches of loadable sleeve length per side The actual capacity depends on the thickness and weight of your plates. How much does the AdaptaBELL weigh? The ADAPTABELL™ handle assembly weighs: Pair of the Pro model: 710 g (1.56 lb) Pair of the Max model: 1,720 g (3.8 lb) Maximum capacity: 75–150 lbs per handle depending on model The lightweight design allows for smaller weight increments and better progression. Do AdaptaBELLs come in a pair? Yes! ADAPTABELL™ dumbbells are sold as a pair: Each order includes 2 complete dumbbell handles 4 secure locking collars included (2 per dumbbell) Perfect for bilateral and unilateral exercises Weight plates are sold separately or in bundle packages Check out our starter bundles that include plates for a complete set. Can I use them with other branded plates? Absolutely! ADAPTABELL™ works with plates from any brand: Compatible with CAP, Yes4All, Rogue, and all major brands Works with iron, rubber, urethane, and vinyl coated plates Standard 1″ or Olympic 2″ (with adapter) compatibility No proprietary plates required — use what you have! This universal compatibility saves you money and maximizes flexibility. (function () { var root = document.querySelector('.adb-faq'); if (!root) return; var items = root.querySelectorAll('.adb-faq__item'); items.forEach(function (item) { var btn = item.querySelector('.adb-faq__q'); if (!btn) return; btn.addEventListener('click', function () { var wasOpen = item.classList.contains('is-open'); items.forEach(function (other) { other.classList.remove('is-open'); var b = other.querySelector('.adb-faq__q'); if (b) b.setAttribute('aria-expanded', 'false'); }); if (!wasOpen) { item.classList.add('is-open'); btn.setAttribute('aria-expanded', 'true'); } }); }); })(); Introducing ADAPTA-BELLS Knurled Handles.Hold ups to 300lbs.Assembled in USA.Perfect for Home Gyms. BUY ADJUSTABELL PRO 👉 { "__shgImageV2Elements": { "uuid": "s-b82bd1eb-21ae-4f3d-b42e-ec138bf680b7" } } BUY ADJUSTABELL MAX 👉 { "__shgImageV2Elements": { "uuid": "s-f4f1330a-bb13-4f52-b147-b915dccf3de3" } } ⭐⭐⭐⭐⭐ 4.9 based on 300+ Reviews
More you might like
Related
AdaptaBELL™
Related
AdaptaBELL™
Related
AdaptaBELL™ Extension
Related