{"product_id":"duo-rings™","title":"DUO-Rings™","description":"\u003cdiv class=\"shogun-root\" data-shogun-id=\"5f1ad53f3e7a0000608aa66f\" data-shogun-site-id=\"d921f9ba-aa7a-4156-9e44-53aad23b56fb\" data-shogun-page-id=\"5f1ad53f3e7a0000608aa66f\" data-shogun-page-version-id=\"69a6a0bbddd73dd48fbf6ee4\" data-shogun-platform-type=\"shopify\" data-shogun-variant-id=\"69a6a0bbddd73dd48fbf6ee5\" data-shogun-page-type=\"product\" data-shogun-power-up-type=\"\" data-shogun-power-up-id=\"\" data-region=\"main\"\u003e \u003cdiv id=\"s-d2ea488a-d6ac-40b7-9820-96cda9f58f65\" class=\"shg-c shg-align-left\"\u003e \u003cstyle\u003e\n*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}\n:root{\n  --white:#fff;--off:#f7f6f3;--cream:#f0efe9;--sand:#e8e6df;\n  --w100:#d9d7d0;--w200:#bbb9b2;--gray:#8a8880;--dg:#5a5850;\n  --char:#2c2b28;--black:#1a1918;\n  --acc:#c8ff00;--acc-d:#9ec700;--acc-bg:rgba(200,255,0,0.08);--acc-s:rgba(200,255,0,0.15);\n  --fd:'Bebas Neue',-apple-system,BlinkMacSystemFont,'Arial Black',sans-serif;\n  --fb:'Barlow',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;\n  --fc:'Barlow Condensed',-apple-system,BlinkMacSystemFont,'Arial Narrow',sans-serif;\n  --mx:1320px;--r:6px;\n  --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);\n  \/* Guarantee section vars (kept, but not redefined in another :root) *\/\n  --primary-black:#1a1a1a;\n  --dark-bg:#0f0f0f;\n  --accent-green:#00c851;\n  --accent-gold:#ffd700;\n  --accent-blue:#2563eb;\n  --text-white:#ffffff;\n  --text-gray:#a0a0a0;\n}\nhtml{scroll-behavior:smooth}\nimg{max-width:100%;display:block}\na{color:inherit;text-decoration:none}\nbutton{cursor:pointer;border:none;background:none;font-family:inherit;color:inherit}\n\n.pdp-wrap{max-width:1280px;margin:0 auto}\n.pdp{display:grid;grid-template-columns:1.15fr 1fr;align-items:start;background:var(--white)}\n.pdp-gal{position:relative;display:flex;flex-direction:column;background:var(--off);border-right:1px solid var(--sand)}\n.pdp-main{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;cursor:zoom-in;background:var(--cream);min-height:600px;aspect-ratio:1\/1}\n.pdp-main img,.pdp-main video{width:100%;height:auto;display:block;transition:transform .6s cubic-bezier(.25,.46,.45,.94)}\n.pdp-main:hover img,.pdp-main:hover video{transform:scale(1.04)}\n.pdp-badge{position:absolute;top:20px;left:20px;background:var(--black);color:var(--acc);font-family:var(--fc);font-weight:800;font-size:11px;letter-spacing:.14em;text-transform:uppercase;padding:7px 16px;border-radius:3px;z-index:2}\n.pdp-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}\n.pdp-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)}\n.pdp-arr:hover{background:var(--white);box-shadow:var(--s2)}\n.pdp-arr svg{width:16px;height:16px;stroke:var(--char)}\n.pdp-thumbs{display:flex;gap:3px;padding:3px;background:var(--off)}\n.pdp-th{flex:1;aspect-ratio:1;overflow:hidden;cursor:pointer;border-radius:4px;border:2px solid transparent;opacity:.45;transition:opacity .3s,border-color .3s}\n.pdp-th.on,.pdp-th:hover{opacity:1;border-color:var(--black)}\n.pdp-th img{width:100%;height:100%;object-fit:cover}\n\n.pdp-info{padding:8px 52px;display:flex;flex-direction:column;justify-content:center;overflow-y:auto}\n.pdp-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}\n.pdp-ey::before{content:'';width:22px;height:2.5px;background:#2d8a39}\n.pdp-h1{font-family:var(--fd);font-size:clamp(42px,5vw,68px);line-height:.9;letter-spacing:.03em;color:var(--black);margin-bottom:10px}\n.pdp-sub{font-family:var(--fc);font-weight:700;font-size:18px;color:var(--dg);letter-spacing:.04em;margin-bottom:16px}\n.pdp-rat{display:flex;align-items:center;gap:10px;margin-bottom:20px}\n.pdp-stars{color:#e8b400;font-size:15px;letter-spacing:2px}\n.pdp-rat-t{font-family:var(--fc);font-weight:600;font-size:14px;color:var(--gray)}\n.pdp-rat-t strong{color:var(--char);font-weight:700}\n.pdp-feats{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}\n.pdp-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:border-color .25s,background .25s}\n.pdp-ft:hover{border-color:var(--w200);background:var(--cream)}\n.pdp-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}\n.pdp-stock-dot{width:8px;height:8px;border-radius:50%;background:#2d8a39;animation:pulse 2s infinite}\n@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}\n@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}\n\n.pdp-pb{background:var(--off);border:1px solid var(--sand);border-radius:var(--r);padding:10px 24px;margin-bottom:20px}\n.pdp-pr{display:flex;align-items:baseline;gap:14px;margin-bottom:4px}\n.pdp-p{font-family:'work sans',sans-serif;font-weight:800;font-size:28px;color:var(--black)}\n.pdp-inst{font-size:14px;color:var(--gray);font-weight:400}\n.pdp-inst strong{color:var(--char);font-weight:700}\n\n.pdp-cta{margin-bottom:18px}\n.pdp-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:background .3s,transform .3s,box-shadow .3s}\n.pdp-add:hover{background:#1560a0;transform:translateY(-1px);box-shadow:var(--s3)}\n\n.pdp-tr{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;margin-bottom:28px}\n.pdp-tri{background:var(--off);border:1px solid var(--sand);padding:14px 8px;text-align:center}\n.pdp-tri:first-child{border-radius:var(--r) 0 0 var(--r)}.pdp-tri:last-child{border-radius:0 var(--r) var(--r) 0}\n.pdp-tri svg{margin:0 auto 5px;display:block}\n.pdp-tri span{font-family:var(--fc);font-weight:700;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--gray)}\n\n.pdp-acc{border-top:1px solid var(--sand)}\n.pdp-aci{border-bottom:1px solid var(--sand)}\n.pdp-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}\n.pdp-act:hover{color:var(--black)}\n.pdp-acl{display:flex;align-items:center;gap:10px}\n.pdp-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:background .3s,color .3s,transform .3s}\n.pdp-aci.open .pdp-ach{background:var(--black);color:var(--white);transform:rotate(45deg)}\n.pdp-acb{max-height:0;overflow:hidden;transition:max-height .4s ease}\n.pdp-aci.open .pdp-acb{max-height:500px}\n.pdp-acc-c{padding-bottom:20px;font-size:15px;line-height:1.75;color:var(--dg);font-weight:400}\n.pdp-acc-c ul{list-style:none;padding:0}\n.pdp-acc-c ul li{padding:5px 0 5px 20px;position:relative}\n.pdp-acc-c ul li::before{content:'';position:absolute;left:0;top:14px;width:8px;height:2px;background:var(--acc-d)}\n.pdp-acc-c strong{color:var(--black);font-weight:700}\n\n@media(max-width:1024px){\n  .pdp{grid-template-columns:1fr}\n  .pdp-main{min-height:400px}\n  .pdp-main img,.pdp-main video{width:100%;height:100%;object-fit:contain}\n  .pdp-info{padding:32px 24px}\n}\n@media(max-width:640px){\n  .pdp-info{padding:8px 16px}\n  .pdp-main{min-height:300px}\n}\n\n\/* ═══ PRESS LOGOS ═══ *\/\n.press-bar{padding:48px 24px;background:var(--white)}\n.press-logos{display:flex;align-items:center;justify-content:center;gap:48px;max-width:1100px;margin:0 auto;flex-wrap:wrap}\n.press-logo{opacity:.35;transition:opacity .35s ease;user-select:none;white-space:nowrap}\n.press-logo:hover{opacity:.65}\n.pn-paper{font-family:var(--fd);font-size:38px;letter-spacing:.18em;color:var(--black)}\n.pn-mf{font-family:var(--fc);font-weight:900;font-size:22px;text-transform:uppercase;letter-spacing:.02em;line-height:1;text-align:center;color:var(--black)}\n.pn-mf span{font-size:14px;letter-spacing:.04em}\n.pn-barbend{font-family:var(--fc);font-weight:800;font-size:30px;letter-spacing:.01em;font-style:italic;color:var(--black)}\n.pn-mh{font-family:var(--fd);font-size:30px;letter-spacing:.04em;color:var(--black)}\n.pn-gq{font-family:var(--fd);font-size:46px;letter-spacing:.06em;color:var(--black)}\n.pn-gp{font-family:var(--fc);font-weight:800;font-size:20px;letter-spacing:.14em;text-transform:uppercase;color:var(--black)}\n\n\/* ═══ TESTIMONIAL QUOTE ═══ *\/\n.quote-sec{padding:72px 24px;background:#edf3f7}\n.quote-inner{max-width:820px;margin:0 auto;text-align:center}\n.quote-text{font-family:var(--fb);font-weight:500;font-style:italic;font-size:clamp(20px,2.5vw,28px);line-height:1.65;color:var(--char);margin-bottom:28px}\n.quote-src{font-family:var(--fb);font-weight:900;font-size:18px;color:var(--black);letter-spacing:.02em}\n\n\/* Layout helper *\/\n.w{max-width:var(--mx);margin:0 auto;padding:0 24px}\n\n\/* ═══ SECTIONS ═══ *\/\n.sec{padding:88px 0}\n.sec-w{background:var(--white)}\n.sec-hd{text-align:center;margin-bottom:52px}\n.sec-ey{font-family:var(--fc);font-weight:800;font-size:13px;letter-spacing:.22em;text-transform:uppercase;color:var(--acc-d);margin-bottom:10px}\n.sec-t{font-family:var(--fd);font-size:clamp(40px,4.5vw,62px);line-height:.92;letter-spacing:.03em;color:var(--black)}\n\n\/* ═══ DUAL THICKNESS HERO ═══ *\/\n.dual-hero{display:grid;grid-template-columns:1fr 1fr;min-height:600px}\n.dual-img{overflow:hidden;background:var(--cream);position:relative}\n.dual-img img{width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.4,.0,.2,1)}\n.dual-cnt{padding:64px 56px;display:flex;flex-direction:column;justify-content:center;background:var(--white)}\n.dual-cnt .sec-ey{text-align:left;margin-bottom:12px}\n.dual-cnt h2{font-family:var(--fd);font-size:clamp(36px,4vw,56px);line-height:.9;color:var(--black);margin-bottom:16px;letter-spacing:.03em}\n.dual-cnt p{font-size:16px;line-height:1.7;color:var(--dg);font-weight:400;margin-bottom:28px}\n.thick-tabs{display:flex;gap:0;margin-bottom:24px}\n.thick-tab{flex:1;padding:18px 20px;text-align:center;cursor:pointer;border:2px solid var(--sand);background:var(--off);transition:all .3s;position:relative}\n.thick-tab:first-child{border-radius:var(--r) 0 0 var(--r);border-right:1px solid var(--sand)}\n.thick-tab:last-child{border-radius:0 var(--r) var(--r) 0;border-left:1px solid var(--sand)}\n.thick-tab.on{background:var(--black);border-color:var(--black);color:var(--white)}\n.thick-tab .th-size{font-family:var(--fd);font-size:36px;letter-spacing:.04em;line-height:1}\n.thick-tab .th-std{font-family:var(--fc);font-weight:700;font-size:13px;letter-spacing:.08em;text-transform:uppercase;margin-top:2px}\n.thick-tab .th-use{font-family:var(--fc);font-weight:500;font-size:12px;color:var(--gray);margin-top:2px;font-style:italic}\n.thick-tab.on .th-use{color:rgba(255,255,255,.5)}\n.thick-body{display:none}\n.thick-body.on{display:block}\n.thick-label{font-family:var(--fc);font-weight:800;font-size:17px;letter-spacing:.1em;text-transform:uppercase;color:var(--black);margin-bottom:12px}\n.thick-list{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:8px}\n.thick-list li{font-family:var(--fc);font-weight:600;font-size:18px;color:var(--char);display:flex;align-items:center;gap:8px}\n.thick-list li::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--acc-d);flex-shrink:0}\n\n\/* ═══ FEATURE CARDS ═══ *\/\n.feat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}\n.feat-card{background:var(--white);border:1px solid var(--sand);border-radius:var(--r);padding:32px 24px;text-align:center;transition:all .35s}\n.feat-card:hover{box-shadow:var(--s2);transform:translateY(-4px)}\n.feat-icon{width:52px;height:52px;border-radius:50%;background:var(--acc-s);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-size:22px}\n.feat-card h3{font-family:var(--fc);font-weight:800;font-size:16px;letter-spacing:.06em;text-transform:uppercase;color:var(--black);margin-bottom:8px}\n.feat-card p{font-size:14px;line-height:1.6;color:var(--gray);font-weight:400}\n\n\/* ═══ IMAGE GRID ═══ *\/\n.img-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;border-radius:var(--r);overflow:hidden}\n.img-grid-item{aspect-ratio:1;overflow:hidden;background:var(--cream);cursor:pointer}\n.img-grid-item img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}\n.img-grid-item:hover img{transform:scale(1.08)}\n\n\/* ═══ FEATURE SPLITS ═══ *\/\n.feat-split{display:grid;grid-template-columns:1fr 1fr;min-height:480px}\n.feat-split.rev .feat-img{order:2}\n.feat-split.rev .feat-cnt{order:1}\n.feat-img{overflow:hidden;background:var(--cream);position:relative}\n.feat-img img{width:100%;height:100%;object-fit:cover}\n.feat-cnt{padding:60px 56px;display:flex;flex-direction:column;justify-content:center}\n.feat-cnt .tag{display:inline-flex;align-items:center;gap:6px;font-family:var(--fc);font-weight:800;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--black);background:var(--acc);padding:5px 14px;border-radius:100px;margin-bottom:16px;width:fit-content}\n.feat-cnt h2{font-family:var(--fd);font-size:clamp(30px,3.5vw,44px);line-height:.92;color:var(--black);margin-bottom:14px;letter-spacing:.03em}\n.feat-cnt p{font-size:16px;line-height:1.7;color:var(--dg);font-weight:400;margin-bottom:24px}\n.feat-pills{display:flex;flex-wrap:wrap;gap:8px}\n.feat-pill{display:flex;align-items:center;gap:6px;padding:10px 18px;background:var(--off);border:1px solid var(--sand);border-radius:var(--r);font-family:var(--fc);font-weight:700;font-size:13px;letter-spacing:.04em;color:var(--char)}\n.feat-cnt ul{list-style:none;display:flex;flex-direction:column;gap:10px}\n.feat-cnt ul li{font-size:15px;color:var(--dg);font-weight:400;display:flex;align-items:center;gap:10px}\n.feat-cnt ul li::before{content:'';width:8px;height:2px;background:var(--acc-d);flex-shrink:0}\n.feat-cnt ul li strong{color:var(--black);font-weight:700}\n\n\/* ═══ VIDEO ═══ *\/\n.video-wrap{position:relative;max-width:960px;margin:0 auto;border-radius:10px;overflow:hidden;box-shadow:var(--s3);background:var(--black)}\n.video-poster{position:relative;cursor:pointer;aspect-ratio:16\/9;overflow:hidden;background:var(--black)}\n.video-poster img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease,filter .6s ease}\n.video-poster:hover img{transform:scale(1.03);filter:brightness(.8)}\n.video-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:88px;height:88px;border-radius:50%;background:rgba(255,255,255,.95);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;box-shadow:0 8px 36px rgba(0,0,0,.3);transition:all .35s;z-index:2}\n.video-poster:hover .video-play{transform:translate(-50%,-50%) scale(1.12);background:var(--acc)}\n.video-play svg{width:32px;height:32px;margin-left:4px}\n.wistia-wrap{position:relative;padding-bottom:56.25%;height:0}\n.wistia-wrap iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}\n\n\/* ═══ FAQ ═══ *\/\n.fq-l{max-width:760px;margin:0 auto}\n.fq-i{border:1px solid var(--sand);background:var(--white);margin-bottom:8px;border-radius:var(--r);overflow:hidden}\n.fq-q{width:100%;text-align:left;padding:20px 24px;display:flex;justify-content:space-between;align-items:center;font-family:var(--fc);font-weight:700;font-size:16px;letter-spacing:.04em;color:var(--black);transition:all .25s}\n.fq-q:hover{background:var(--off)}\n.fq-ch{width:28px;height:28px;border-radius:50%;background:var(--off);display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--gray);transition:all .3s;flex-shrink:0;border:1px solid var(--sand)}\n.fq-i.open .fq-ch{background:var(--black);color:var(--white);transform:rotate(45deg)}\n.fq-a{max-height:0;overflow:hidden;transition:max-height .4s ease}\n.fq-i.open .fq-a{max-height:300px}\n.fq-ai{padding:0 24px 20px;font-size:15px;line-height:1.75;color:var(--gray);font-weight:400}\n\n\/* ═══ REVEAL ═══ *\/\n.rv-a{opacity:0;transform:translateY(30px);transition:opacity .7s ease,transform .7s ease}\n.rv-a.vis{opacity:1;transform:translateY(0)}\n\n\/* Guarantee + Social proof (unchanged, just without duplicate reset\/:root) *\/\nbody{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;overflow-x:hidden}\n.guarantee-section{background:linear-gradient(135deg,#1a1a1a 0%,#2c2c2c 100%);padding:100px 0;position:relative;overflow:hidden}\n.guarantee-section::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 20% 50%,rgba(0,200,81,.1) 0%,transparent 50%),radial-gradient(circle at 80% 50%,rgba(37,99,235,.1) 0%,transparent 50%);pointer-events:none}\n.guarantee-container{max-width:1200px;margin:0 auto;padding:0 20px;display:grid;grid-template-columns:400px 1fr;gap:80px;align-items:center;position:relative;z-index:1}\n.shield-container{display:flex;justify-content:center;align-items:center;position:relative}\n.shield{width:300px;height:350px;background:linear-gradient(135deg,var(--accent-green) 0%,#00a844 100%);clip-path:polygon(50% 0%,100% 25%,100% 75%,50% 100%,0% 75%,0% 25%);display:flex;align-items:center;justify-content:center;position:relative;box-shadow:0 30px 80px rgba(0,200,81,.3);animation:float 6s ease-in-out infinite}\n@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-20px)}}\n.shield-inner{width:280px;height:330px;background:linear-gradient(135deg,#1a1a1a 0%,#2c2c2c 100%);clip-path:polygon(50% 2%,98% 26%,98% 74%,50% 98%,2% 74%,2% 26%);display:flex;align-items:center;justify-content:center;padding:40px}\n.guarantee-content{padding:20px}\n.guarantee-title{font-size:56px;font-weight:900;line-height:1.1;margin-bottom:30px;background:linear-gradient(135deg,var(--text-white) 0%,var(--text-gray) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}\n.title-highlight{color:var(--accent-green);-webkit-text-fill-color:var(--accent-green)}\n.guarantee-description{font-size:18px;line-height:1.8;color:var(--text-gray);margin-bottom:40px}\n.guarantee-features{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-bottom:40px}\n.guarantee-feature{display:flex;align-items:center;gap:15px;padding:15px;background:rgba(0,200,81,.05);border:1px solid rgba(0,200,81,.2);border-radius:12px;transition:all .3s ease}\n.guarantee-feature:hover{background:rgba(0,200,81,.1);transform:translateX(5px)}\n.feature-icon{width:40px;height:40px;background:linear-gradient(135deg,var(--accent-green) 0%,#00a844 100%);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}\n.feature-text{flex:1;font-size:16px;font-weight:500}\n\n.social-proof-section{background:#fff;padding:80px 0;position:relative}\n.social-proof-header{text-align:center;max-width:800px;margin:0 auto 60px;padding:0 20px}\n.social-proof-title{font-size:48px;font-weight:900;color:var(--primary-black);margin-bottom:20px}\n.athlete-count{font-size:72px;font-weight:900;background:linear-gradient(135deg,var(--accent-green) 0%,var(--accent-blue) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;display:inline-block;margin-bottom:10px}\n.social-proof-subtitle{font-size:20px;color:var(--text-gray)}\n.photo-marquee-container{position:relative;overflow:hidden;margin-bottom:20px}\n.photo-marquee{display:flex;animation:scroll 30s linear infinite}\n.photo-marquee:hover{animation-play-state:paused}\n@keyframes scroll{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}\n.photo-grid{display:flex;gap:20px;padding:0 10px}\n.athlete-photo{width:200px;height:200px;border-radius:15px;overflow:hidden;position:relative;flex-shrink:0;transition:all .3s ease;cursor:pointer;box-shadow:0 10px 30px rgba(0,0,0,.1)}\n.athlete-photo:hover{transform:scale(1.05);box-shadow:0 15px 40px rgba(0,0,0,.2)}\n.athlete-photo img{width:100%;height:100%;object-fit:cover}\n.athlete-overlay{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(to top,rgba(0,0,0,.8) 0%,transparent 100%);padding:20px 15px 15px;opacity:0;transition:opacity .3s ease}\n.athlete-photo:hover .athlete-overlay{opacity:1}\n.athlete-name{font-size:14px;font-weight:600;color:#fff;margin-bottom:3px}\n.athlete-sport{font-size:12px;color:var(--accent-green)}\n.stats-container{max-width:1200px;margin:60px auto 0;padding:0 20px;display:grid;grid-template-columns:repeat(4,1fr);gap:40px}\n.stat-card{text-align:center;padding:30px;border-radius:20px;transition:all .3s ease}\n.stat-card:hover{transform:translateY(-10px);box-shadow:0 20px 50px rgba(0,0,0,.1)}\n.stat-number{font-size:42px;font-weight:900;color:var(--accent-green);margin-bottom:10px}\n.stat-label{font-size:16px;color:var(--text-gray);text-transform:uppercase;letter-spacing:1px}\n\n@media(max-width:768px){\n  .press-logos{gap:28px 36px}\n  .pn-paper{font-size:30px}\n  .pn-mf{font-size:18px}.pn-mf span{font-size:11px}\n  .pn-barbend{font-size:24px}\n  .pn-mh{font-size:24px}\n  .pn-gq{font-size:36px}\n  .pn-gp{font-size:16px}\n  .quote-sec{padding:52px 24px}\n  .guarantee-title{font-size:36px}\n  .athlete-count{font-size:48px}\n  .guarantee-features{grid-template-columns:1fr}\n  .stats-container{grid-template-columns:1fr}\n  .athlete-photo{width:150px;height:150px}\n}\n@media(max-width:1024px){\n  .dual-hero,.feat-split{grid-template-columns:1fr}\n  .feat-split.rev .feat-img,.feat-split.rev .feat-cnt{order:0}\n  .feat-img,.dual-img{height:auto;aspect-ratio:1}\n  .feat-img img,.dual-img img{object-fit:contain}\n  .feat-grid{grid-template-columns:1fr 1fr}\n  .img-grid{grid-template-columns:1fr 1fr}\n  .guarantee-container{grid-template-columns:1fr;text-align:center}\n  .shield-container{margin-bottom:40px}\n  .stats-container{grid-template-columns:repeat(2,1fr)}\n}\n\u003c\/style\u003e \u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e \u003clink rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin\u003e \u003clink rel=\"preload\" as=\"style\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Bebas+Neue\u0026amp;family=Barlow:wght@500;700;800\u0026amp;family=Barlow+Condensed:wght@500;700;800\u0026amp;display=swap\"\u003e \u003clink rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Bebas+Neue\u0026amp;family=Barlow:wght@500;700;800\u0026amp;family=Barlow+Condensed:wght@500;700;800\u0026amp;display=swap\" media=\"print\" onload=\"this.media='all'\"\u003e \u003cnoscript\u003e \u003clink rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Bebas+Neue\u0026amp;family=Barlow:wght@500;700;800\u0026amp;family=Barlow+Condensed:wght@500;700;800\u0026amp;display=swap\"\u003e \u003c\/noscript\u003e \u003cdiv class=\"pdp-wrap\"\u003e \u003csection class=\"pdp\"\u003e \u003cdiv class=\"pdp-gal\"\u003e \u003cdiv class=\"pdp-main\" id=\"mainImg\"\u003e \u003cdiv class=\"pdp-badge\"\u003ePatent Pending\u003c\/div\u003e \u003cimg id=\"heroImage\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/duo-ring-main.jpg?v=1767452030\u0026amp;width=600\u0026amp;format=webp\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/duo-ring-main.jpg?v=1767452030\u0026amp;width=400\u0026amp;format=webp 400w, https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/duo-ring-main.jpg?v=1767452030\u0026amp;width=800\u0026amp;format=webp 800w\" sizes=\"(max-width: 768px) 100vw, 50vw\" alt=\"DUO-Rings gymnastic rings\" width=\"600\" height=\"600\" fetchpriority=\"high\" decoding=\"async\"\u003e \u003cdiv class=\"pdp-arrows\"\u003e \u003cbutton class=\"pdp-arr\" aria-label=\"Previous image\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\"\u003e\u003cpath d=\"M15 18l-6-6 6-6\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e \u003cbutton class=\"pdp-arr\" aria-label=\"Next image\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\"\u003e\u003cpath d=\"M9 18l6-6-6-6\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/button\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"pdp-thumbs\" id=\"pdpThumbs\"\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"pdp-info\"\u003e \u003cdiv class=\"pdp-ey\"\u003eHybrid Gymnastic Rings\u003c\/div\u003e \u003ch1 class=\"pdp-h1\"\u003eDUO-RINGS™\u003c\/h1\u003e \u003cdiv class=\"pdp-sub\"\u003eThe First 2-in-1 Dual Thickness Gymnastic Rings\u003c\/div\u003e \u003cspan id=\"judgeme_badge_placeholder\" loading=\"lazy\"\u003e\u003c\/span\u003e \u003cdiv class=\"pdp-stock\"\u003e\n\u003cspan class=\"pdp-stock-dot\"\u003e\u003c\/span\u003e In Stock — Ready to Ship\u003c\/div\u003e \u003cdiv class=\"pdp-feats\"\u003e \u003cdiv class=\"pdp-ft\"\u003eDual Thickness\u003c\/div\u003e \u003cdiv class=\"pdp-ft\"\u003e16ft Marked Straps\u003c\/div\u003e \u003cdiv class=\"pdp-ft\"\u003e1,200 lb Capacity\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"pdp-pb\"\u003e \u003cdiv class=\"pdp-pr\"\u003e\u003cspan class=\"pdp-p\" id=\"pdpHeroPrice\"\u003e$59\u003c\/span\u003e\u003c\/div\u003e \u003cdiv class=\"pdp-inst\" style=\"margin-top:-10px;\"\u003e or 4 easy installments on \u003cstrong\u003eShop Pay\u003c\/strong\u003e or \u003cstrong\u003ePayPal\u003c\/strong\u003e\n\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"pdp-cta\"\u003e \u003cbutton class=\"pdp-add\" id=\"pdpAddBtn\"\u003e\u003csvg width=\"18\" height=\"18\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\u003e\u003cpath d=\"M6 2L3 6v14a2 2 0 002 2h14a2 2 0 002-2V6l-3-4z\"\u003e\u003c\/path\u003e\u003cline x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"\u003e\u003c\/line\u003e\u003cpath d=\"M16 10a4 4 0 01-8 0\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Add to Cart\u003c\/button\u003e \u003c\/div\u003e \u003cdiv class=\"pdp-tr\"\u003e \u003cdiv class=\"pdp-tri\"\u003e\n\u003csvg width=\"18\" height=\"18\" viewbox=\"0 0 16 16\" fill=\"none\"\u003e\u003cpath d=\"M8 1L2 4v4c0 3.3 2.6 6.4 6 7 3.4-.6 6-3.7 6-7V4L8 1z\" stroke=\"#9ec700\" stroke-width=\"1.2\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003cspan\u003e100-Day Trial\u003c\/span\u003e\n\u003c\/div\u003e \u003cdiv class=\"pdp-tri\"\u003e\n\u003csvg width=\"18\" height=\"18\" viewbox=\"0 0 16 16\" fill=\"none\"\u003e\u003cpath d=\"M14 4l-8 8-4-4\" stroke=\"#9ec700\" stroke-width=\"1.5\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003cspan\u003eEasy Returns\u003c\/span\u003e\n\u003c\/div\u003e \u003cdiv class=\"pdp-tri\"\u003e\n\u003csvg width=\"18\" height=\"18\" viewbox=\"0 0 16 16\" fill=\"none\"\u003e\u003crect x=\"2\" y=\"6\" width=\"12\" height=\"8\" rx=\"1\" stroke=\"#9ec700\" stroke-width=\"1.2\"\u003e\u003c\/rect\u003e\u003cpath d=\"M5 6V4a3 3 0 016 0v2\" stroke=\"#9ec700\" stroke-width=\"1.2\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003cspan\u003eSecure Pay\u003c\/span\u003e\n\u003c\/div\u003e \u003cdiv class=\"pdp-tri\"\u003e\n\u003csvg width=\"18\" height=\"18\" viewbox=\"0 0 16 16\" fill=\"none\"\u003e\u003ccircle cx=\"6\" cy=\"12\" r=\"1.5\" stroke=\"#9ec700\" stroke-width=\"1\"\u003e\u003c\/circle\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"1.5\" stroke=\"#9ec700\" stroke-width=\"1\"\u003e\u003c\/circle\u003e\u003cpath d=\"M1 1h2l1.5 8h8l1.5-5H5\" stroke=\"#9ec700\" stroke-width=\"1.2\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003cspan\u003eHSA\/FSA\u003c\/span\u003e\n\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"pdp-acc\" id=\"pdpAcc\"\u003e \u003cdiv class=\"pdp-aci open\"\u003e\n\u003cbutton class=\"pdp-act\"\u003e\u003cspan class=\"pdp-acl\"\u003e\u003csvg width=\"16\" height=\"16\" viewbox=\"0 0 16 16\" fill=\"none\"\u003e\u003crect x=\"2\" y=\"2\" width=\"12\" height=\"12\" rx=\"2\" stroke=\"#9ec700\" stroke-width=\"1.2\"\u003e\u003c\/rect\u003e\u003cpath d=\"M5 7h6M5 9.5h4\" stroke=\"#9ec700\" stroke-width=\"1\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Description\u003c\/span\u003e\u003cspan class=\"pdp-ach\"\u003e+\u003c\/span\u003e\u003c\/button\u003e\u003cdiv class=\"pdp-acb\"\u003e\u003cdiv class=\"pdp-acc-c\"\u003e\n\u003cstrong\u003eDUO-Rings™\u003c\/strong\u003e are the world's first hybrid gymnastic rings offering both \u003cstrong\u003e28mm\u003c\/strong\u003e (FIG Standard) and \u003cstrong\u003e32mm\u003c\/strong\u003e (CrossTrain Standard) thicknesses in a single ring. Designed in Japan from premium birch wood with 4.8m numbered nylon straps.\u003c\/div\u003e\u003c\/div\u003e\n\u003c\/div\u003e \u003cdiv class=\"pdp-aci\"\u003e\n\u003cbutton class=\"pdp-act\"\u003e\u003cspan class=\"pdp-acl\"\u003e\u003csvg width=\"16\" height=\"16\" viewbox=\"0 0 16 16\" fill=\"none\"\u003e\u003cpath d=\"M14 4l-8 8-4-4\" stroke=\"#9ec700\" stroke-width=\"1.5\"\u003e\u003c\/path\u003e\u003c\/svg\u003e What's Included\u003c\/span\u003e\u003cspan class=\"pdp-ach\"\u003e+\u003c\/span\u003e\u003c\/button\u003e\u003cdiv class=\"pdp-acb\"\u003e\u003cdiv class=\"pdp-acc-c\"\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003e1 pair\u003c\/strong\u003e of DUO-Rings (28mm\/32mm dual thickness)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e2x numbered straps\u003c\/strong\u003e — 4.8m \/ 16ft each\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCam buckle system\u003c\/strong\u003e for instant height adjustment\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/div\u003e\u003c\/div\u003e\n\u003c\/div\u003e \u003cdiv class=\"pdp-aci\"\u003e\n\u003cbutton class=\"pdp-act\"\u003e\u003cspan class=\"pdp-acl\"\u003e\u003csvg width=\"16\" height=\"16\" viewbox=\"0 0 16 16\" fill=\"none\"\u003e\u003cpath d=\"M8 1v14M1 8h14\" stroke=\"#9ec700\" stroke-width=\"1.2\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Specs\u003c\/span\u003e\u003cspan class=\"pdp-ach\"\u003e+\u003c\/span\u003e\u003c\/button\u003e\u003cdiv class=\"pdp-acb\"\u003e\u003cdiv class=\"pdp-acc-c\"\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eMaterial\u003c\/strong\u003e — Premium birch wood\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRing Diameter\u003c\/strong\u003e — 28mm \/ 32mm (dual)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eStrap Width\u003c\/strong\u003e — 3\/4\" (compact design)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eStrap Length\u003c\/strong\u003e — 4.8m \/ 16ft (numbered)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCapacity\u003c\/strong\u003e — Tested to 1,200 lbs\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eTotal Weight\u003c\/strong\u003e — 900g \/ 1.9 lbs (full set)\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/div\u003e\u003c\/div\u003e\n\u003c\/div\u003e \u003cdiv class=\"pdp-aci\"\u003e\n\u003cbutton class=\"pdp-act\"\u003e\u003cspan class=\"pdp-acl\"\u003e\u003csvg width=\"16\" height=\"16\" viewbox=\"0 0 16 16\" fill=\"none\"\u003e\u003ccircle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"#9ec700\" stroke-width=\"1.2\"\u003e\u003c\/circle\u003e\u003cpath d=\"M6 6s0-2 2-2 2 1.5 2 2-1 1.5-2 1.5v1\" stroke=\"#9ec700\" stroke-width=\"1\"\u003e\u003c\/path\u003e\u003ccircle cx=\"8\" cy=\"11\" r=\".5\" fill=\"#9ec700\"\u003e\u003c\/circle\u003e\u003c\/svg\u003e Shipping \u0026amp; Returns\u003c\/span\u003e\u003cspan class=\"pdp-ach\"\u003e+\u003c\/span\u003e\u003c\/button\u003e\u003cdiv class=\"pdp-acb\"\u003e\u003cdiv class=\"pdp-acc-c\"\u003e\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eFree shipping\u003c\/strong\u003e on orders over $300\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e100-day risk-free trial\u003c\/strong\u003e — full refund\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eWorldwide shipping\u003c\/strong\u003e to 50+ countries\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/div\u003e\u003c\/div\u003e\n\u003c\/div\u003e \u003c\/div\u003e \u003c\/div\u003e \u003c\/section\u003e \u003c\/div\u003e \u003cscript\u003e\n(function(){\n  var HANDLE='duo-rings', productData=null, selectedVariantId=null, ci=0, HERO_WIDTH=600, THUMB_WIDTH=80;\n  var heroImg=document.getElementById('heroImage');\n  var heroPrice=document.getElementById('pdpHeroPrice');\n  var addBtn=document.getElementById('pdpAddBtn');\n  var thumbsWrap=document.getElementById('pdpThumbs');\n  var origBtnHTML=addBtn.innerHTML;\n  var imgs=[\n    'https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/duo-ring-main.jpg?v=1767452030',\n    'https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/duo-ring-close-up.jpg?v=1767452026',\n    'https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/DUO-rings2.jpg?v=1771510451',\n    'https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/DUO-rings1.jpg?v=1771510451',\n    'https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/products\/IMG_2251-413952.jpg?v=1767447608',\n    'https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/DUO-rings3.jpg?v=1771510451',\n    'https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/DUO-rings4.jpg?v=1771510451',\n    'https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/DUO-rings5.jpg?v=1771510451',\n    'https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/rings.jpg?v=1767447608',\n    'https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/files\/neo-rings.jpg?v=1767447608',\n    'https:\/\/cdn.shopify.com\/s\/files\/1\/0229\/1249\/9792\/products\/neo_rings-186715.jpg?v=1767447608'\n  ];\n  function imgUrl(base,width){return base+'\u0026width='+width+'\u0026format=webp'}\n  function buildThumbs(){\n    thumbsWrap.innerHTML='';\n    imgs.forEach(function(src,i){\n      var btn=document.createElement('button');\n      btn.className='pdp-th'+(i===0?' on':'');\n      btn.dataset.i=i;\n\n      var img=document.createElement('img');\n      img.src=imgUrl(src,THUMB_WIDTH);\n      img.alt='';\n      img.width=THUMB_WIDTH;\n      img.height=THUMB_WIDTH;\n      img.loading=i\u003e2?'lazy':'eager';\n      img.decoding='async';\n      img.fetchPriority = i\u003e2 ? 'low' : 'auto';\n\n      btn.appendChild(img);\n      thumbsWrap.appendChild(btn);\n    });\n  }\n  function setI(i){\n    ci=i;\n    heroImg.src=imgUrl(imgs[i],HERO_WIDTH);\n    heroImg.srcset=imgUrl(imgs[i],400)+' 400w, '+imgUrl(imgs[i],800)+' 800w';\n    var ths=thumbsWrap.children;\n    for (var j=0;j\u003cths.length;j++) ths[j].classList.toggle('on', j===i);\n  }\n  thumbsWrap.addEventListener('click',function(e){\n    var th=e.target.closest('.pdp-th');\n    if(th\u0026\u0026th.dataset.i) setI(+th.dataset.i);\n  });\n  document.querySelector('.pdp-arrows').addEventListener('click',function(e){\n    var btn=e.target.closest('.pdp-arr'); if(!btn) return;\n    var isNext=btn.querySelector('path').getAttribute('d').indexOf('9')===0;\n    var n=ci+(isNext?1:-1);\n    if(n\u003c0) n=imgs.length-1;\n    if(n\u003e=imgs.length) n=0;\n    setI(n);\n  });\n  function formatMoney(cents){\n    if(typeof Shopify!=='undefined'\u0026\u0026typeof Shopify.formatMoney==='function'){\n      var fmt=(window.theme\u0026\u0026window.theme.moneyFormat)||window.shopMoneyFormat||'${{amount}}';\n      return Shopify.formatMoney(cents,fmt);\n    }\n    var symbol='$';\n    if(typeof Shopify!=='undefined'\u0026\u0026Shopify.currency){\n      var c=Shopify.currency.active;\n      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 '};\n      symbol = symbols[c] || (c+' ');\n    }\n    var amt=(cents\/100).toFixed(2);\n    var after=['SEK','DKK','NOK','PLN','CZK'];\n    var curr=(typeof Shopify!=='undefined'\u0026\u0026Shopify.currency)?Shopify.currency.active:'USD';\n    return (after.indexOf(curr)\u003e-1) ? (amt+symbol) : (symbol+amt);\n  }\n  function updatePrice(){\n    if(!productData) return;\n    var v=productData.variants[0];\n    selectedVariantId=v.id;\n    heroPrice.textContent=formatMoney(v.price);\n  }\n  function fetchProduct(){\n    fetch('\/products\/'+HANDLE+'.js')\n      .then(function(r){return r.json()})\n      .then(function(p){productData=p;updatePrice()})\n      .catch(function(){});\n  }\n\n  buildThumbs();\n  \/\/ Defer product JSON fetch so it doesn't compete with first paint\n  if('requestIdleCallback' in window) requestIdleCallback(fetchProduct,{timeout:1500});\n  else setTimeout(fetchProduct,400);\n\n  document.addEventListener('currency:change',fetchProduct);\n\n  addBtn.addEventListener('click',function(){\n    addBtn.innerHTML='\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" style=\"animation:spin .6s linear infinite\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\/\u003e\u003cpath d=\"M12 6v6l4 2\"\/\u003e\u003c\/svg\u003e Adding...';\n    addBtn.style.opacity='.7';\n    addBtn.style.pointerEvents='none';\n\n    var doAdd;\n    if(selectedVariantId){\n      doAdd=fetch('\/cart\/add.js',{method:'POST',headers:{'Content-Type':'application\/json'},body:JSON.stringify({items:[{id:selectedVariantId,quantity:1}]})});\n    }else{\n      doAdd=fetch('\/products\/'+HANDLE+'.js').then(function(r){return r.json()}).then(function(p){\n        return fetch('\/cart\/add.js',{method:'POST',headers:{'Content-Type':'application\/json'},body:JSON.stringify({items:[{id:p.variants[0].id,quantity:1}]})});\n      });\n    }\n\n    doAdd.then(function(r){return r.json()}).then(function(){\n      addBtn.innerHTML='\u003csvg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" stroke-width=\"2.5\"\u003e\u003cpath d=\"M20 6L9 17l-5-5\"\/\u003e\u003c\/svg\u003e Added to Cart!';\n      addBtn.style.background='#2d8a39';\n      addBtn.style.opacity='1';\n\n      fetch('\/cart.js').then(function(r){return r.json()}).then(function(cart){\n        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';\n        document.querySelectorAll(countSels).forEach(function(el){el.textContent=cart.item_count});\n      }).catch(function(){});\n\n      setTimeout(function(){\n        var trigger=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');\n        if(trigger) trigger.click();\n      },200);\n\n      setTimeout(function(){\n        addBtn.innerHTML=origBtnHTML;\n        addBtn.style.background='#1972bc';\n        addBtn.style.pointerEvents='auto';\n      },2000);\n    }).catch(function(){\n      addBtn.innerHTML=origBtnHTML;\n      addBtn.style.opacity='1';\n      addBtn.style.pointerEvents='auto';\n      window.location.href='\/products\/'+HANDLE;\n    });\n  });\n\n  document.getElementById('pdpAcc').addEventListener('click',function(e){\n    var btn=e.target.closest('.pdp-act'); if(!btn) return;\n    var item=btn.parentElement;\n    var wasOpen=item.classList.contains('open');\n    var items=document.querySelectorAll('.pdp-aci');\n    for(var k=0;k\u003citems.length;k++) items[k].classList.remove('open');\n    if(!wasOpen) item.classList.add('open');\n  });\n})();\n\u003c\/script\u003e \u003csection class=\"press-bar\"\u003e \u003cdiv class=\"press-logos\"\u003e \u003cdiv class=\"press-logo\"\u003e\u003cspan class=\"pn-paper\"\u003ePAPER\u003c\/span\u003e\u003c\/div\u003e \u003cdiv class=\"press-logo\"\u003e\u003cspan class=\"pn-mf\"\u003eMUSCLE \u0026amp; FITNESS\u003c\/span\u003e\u003c\/div\u003e \u003cdiv class=\"press-logo\"\u003e\u003cspan class=\"pn-barbend\"\u003eBarBend\u003c\/span\u003e\u003c\/div\u003e \u003cdiv class=\"press-logo\"\u003e\u003cspan class=\"pn-mh\"\u003eMen'sHealth\u003c\/span\u003e\u003c\/div\u003e \u003cdiv class=\"press-logo\"\u003e\u003cspan class=\"pn-gq\"\u003eGQ\u003c\/span\u003e\u003c\/div\u003e \u003cdiv class=\"press-logo\"\u003e\u003cspan class=\"pn-gp\"\u003eGEAR PATROL\u003c\/span\u003e\u003c\/div\u003e \u003c\/div\u003e \u003c\/section\u003e \u003csection class=\"quote-sec\"\u003e \u003cdiv class=\"quote-inner\"\u003e \u003cdiv class=\"quote-text\"\u003e \"You're basically getting two sets of rings for the price of one.\u003cbr\u003e The DUO Rings are the most logical upgrade on the market.\u003cbr\u003e They've replaced my standard set permanently.\" \u003c\/div\u003e \u003cdiv class=\"quote-src\"\u003eCalisthenics.com\u003c\/div\u003e \u003c\/div\u003e \u003c\/section\u003e \u003csection class=\"dual-hero\"\u003e \u003cdiv class=\"dual-img\"\u003e \u003cimg id=\"ringImg\" src=\"https:\/\/i.shgcdn.com\/d6e8dfdf-9c13-4cbe-b929-dfdb064a7215\/-\/format\/auto\/-\/preview\/3000x3000\/-\/quality\/lighter\/\" alt=\"Dual thickness ring\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" style=\"transform:rotate(-90deg)\"\u003e \u003c\/div\u003e \u003cdiv class=\"dual-cnt\"\u003e \u003cdiv class=\"sec-ey\"\u003ePatent Pending\u003c\/div\u003e \u003ch2\u003eONE RING TO RULE THEM ALL\u003c\/h2\u003e \u003cp\u003eThe first true 2-in-1 dual thickness gymnastic ring. Simply rotate 180° to switch between FIG and CrossTrain standards.\u003c\/p\u003e \u003cdiv class=\"thick-tabs\"\u003e \u003cdiv class=\"thick-tab on\" onclick=\"switchThick(0)\"\u003e \u003cdiv class=\"th-size\"\u003e28 MM\u003c\/div\u003e \u003cdiv class=\"th-std\"\u003eFIG Standard\u003c\/div\u003e \u003cdiv class=\"th-use\"\u003eUsed in Gymnastics\u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"thick-tab\" onclick=\"switchThick(1)\"\u003e \u003cdiv class=\"th-size\"\u003e32 MM\u003c\/div\u003e \u003cdiv class=\"th-std\"\u003eCrossTrain Standard\u003c\/div\u003e \u003cdiv class=\"th-use\"\u003eUsed in CrossFit®\u003c\/div\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"thick-body on\" id=\"tb0\"\u003e \u003cdiv class=\"thick-label\"\u003eOptimal for Pulling Movements\u003c\/div\u003e \u003cul class=\"thick-list\"\u003e \u003cli\u003eRing rows\u003c\/li\u003e\n\u003cli\u003eRing pull-ups\u003c\/li\u003e\n\u003cli\u003eSkin the cat\u003c\/li\u003e\n\u003cli\u003eFront levers\u003c\/li\u003e \u003c\/ul\u003e \u003c\/div\u003e \u003cdiv class=\"thick-body\" id=\"tb1\"\u003e \u003cdiv class=\"thick-label\"\u003eOptimal for Pushing Movements\u003c\/div\u003e \u003cul class=\"thick-list\"\u003e \u003cli\u003eRing muscle-ups\u003c\/li\u003e\n\u003cli\u003eRing push-ups\u003c\/li\u003e\n\u003cli\u003eRing dips\u003c\/li\u003e\n\u003cli\u003eL-sits \u0026amp; Planche\u003c\/li\u003e \u003c\/ul\u003e \u003c\/div\u003e \u003c\/div\u003e \u003c\/section\u003e \u003csection class=\"sec\"\u003e\u003cdiv class=\"w\"\u003e \u003cdiv class=\"sec-hd rv-a\"\u003e\n\u003cdiv class=\"sec-ey\"\u003eWatch\u003c\/div\u003e\n\u003cdiv class=\"sec-t\"\u003eSEE IT IN ACTION\u003c\/div\u003e\n\u003c\/div\u003e \u003cdiv class=\"video-wrap rv-a\" id=\"videoWrap\"\u003e \u003cdiv class=\"video-poster\" id=\"videoPoster\" role=\"button\" tabindex=\"0\" aria-label=\"Play video\"\u003e \u003cimg src=\"https:\/\/fast.wistia.com\/embed\/medias\/czmlguljym\/swatch\" alt=\"\" loading=\"lazy\" decoding=\"async\"\u003e \u003cdiv class=\"video-play\"\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\"\u003e\u003cpath d=\"M10 8l6 4-6 4V8z\" fill=\"currentColor\"\u003e\u003c\/path\u003e\u003c\/svg\u003e \u003c\/div\u003e \u003c\/div\u003e \u003c\/div\u003e \u003c\/div\u003e\u003c\/section\u003e \u003cscript\u003e\nfunction switchThick(n){\n  document.querySelectorAll('.thick-tab').forEach(function(t,i){t.classList.toggle('on',i===n)});\n  document.querySelectorAll('.thick-body').forEach(function(b,i){b.classList.toggle('on',i===n)});\n  var img=document.getElementById('ringImg');\n  if(img) img.style.transform='rotate('+(n===0?-90:90)+'deg)';\n}\nfunction togFaq(b){\n  var i=b.parentElement,o=i.classList.contains('open');\n  document.querySelectorAll('.fq-i').forEach(function(x){x.classList.remove('open')});\n  if(!o) i.classList.add('open');\n}\nfunction loadVideo(){\n  var wrap=document.getElementById('videoWrap');\n  if(!wrap) return;\n  wrap.innerHTML =\n    '\u003cdiv class=\"wistia-wrap\"\u003e' +\n      '\u003ciframe src=\"https:\/\/fast.wistia.net\/embed\/iframe\/czmlguljym?autoPlay=1\u0026playerColor=c8ff00\u0026controlsVisibleOnLoad=true\" ' +\n      'allow=\"autoplay;fullscreen\" allowfullscreen loading=\"lazy\"\u003e\u003c\/iframe\u003e' +\n    '\u003c\/div\u003e';\n}\n(function(){\n  var poster=document.getElementById('videoPoster');\n  if(poster){\n    poster.addEventListener('click', loadVideo, {passive:true});\n    poster.addEventListener('keydown', function(e){\n      if(e.key==='Enter' || e.key===' ') { e.preventDefault(); loadVideo(); }\n    });\n  }\n\n  \/\/ Scroll reveal (same, but no random delay = less layout\/paint churn)\n  var obs=new IntersectionObserver(function(es){\n    es.forEach(function(e){\n      if(e.isIntersecting){ e.target.classList.add('vis'); obs.unobserve(e.target); }\n    });\n  },{threshold:.1,rootMargin:'0px 0px -40px 0px'});\n  document.querySelectorAll('.rv-a').forEach(function(el){obs.observe(el)});\n})();\n\u003c\/script\u003e \u003cscript\u003e\n(function(){\n  \/\/ Counter: rAF, run once\n  function animateCounter(el, target, dur){\n    var start=null;\n    function step(ts){\n      if(!start) start=ts;\n      var p=Math.min((ts-start)\/dur,1);\n      el.textContent = Math.floor(p*target).toLocaleString() + '+';\n      if(p\u003c1) requestAnimationFrame(step);\n    }\n    requestAnimationFrame(step);\n  }\n\n  var did=false;\n  var ob=new IntersectionObserver(function(entries){\n    entries.forEach(function(entry){\n      if(entry.isIntersecting \u0026\u0026 !did){\n        did=true;\n        var n=entry.target.querySelector('.stat-number');\n        if(n \u0026\u0026 \/200K\/i.test(n.textContent)) animateCounter(n,200000,900);\n        ob.disconnect();\n      }\n    });\n  },{threshold:.2});\n\n  var first=document.querySelector('.stat-card');\n  if(first) ob.observe(first);\n})();\n\u003c\/script\u003e \u003c\/div\u003e \u003c\/div\u003e","brand":"Kensui","offers":[{"title":"Default Title","offer_id":47667336216770,"sku":"rek-ring+strap","price":49.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0720\/6400\/8386\/files\/duo-ring-main.jpg?v=1778941951","url":"https:\/\/lifelineusa.store\/products\/duo-rings%e2%84%a2","provider":"LifeLineUSA","version":"1.0","type":"link"}