DUO-Rings™
*,*::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',-apple-system,BlinkMacSystemFont,'Arial Black',sans-serif; --fb:'Barlow',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif; --fc:'Barlow Condensed',-apple-system,BlinkMacSystemFont,'Arial Narrow',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); /* Guarantee section vars (kept, but not redefined in another :root) */ --primary-black:#1a1a1a; --dark-bg:#0f0f0f; --accent-green:#00c851; --accent-gold:#ffd700; --accent-blue:#2563eb; --text-white:#ffffff; --text-gray:#a0a0a0; } html{scroll-behavior:smooth} img{max-width:100%;display:block} a{color:inherit;text-decoration:none} button{cursor:pointer;border:none;background:none;font-family:inherit;color:inherit} .pdp-wrap{max-width:1280px;margin:0 auto} .pdp{display:grid;grid-template-columns:1.15fr 1fr;align-items:start;background:var(--white)} .pdp-gal{position:relative;display:flex;flex-direction:column;background:var(--off);border-right:1px solid var(--sand)} .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} .pdp-main img,.pdp-main video{width:100%;height:auto;display:block;transition:transform .6s cubic-bezier(.25,.46,.45,.94)} .pdp-main:hover img,.pdp-main:hover video{transform:scale(1.04)} .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} .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} .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)} .pdp-arr:hover{background:var(--white);box-shadow:var(--s2)} .pdp-arr svg{width:16px;height:16px;stroke:var(--char)} .pdp-thumbs{display:flex;gap:3px;padding:3px;background:var(--off)} .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} .pdp-th.on,.pdp-th:hover{opacity:1;border-color:var(--black)} .pdp-th img{width:100%;height:100%;object-fit:cover} .pdp-info{padding:8px 52px;display:flex;flex-direction:column;justify-content:center;overflow-y:auto} .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} .pdp-ey::before{content:'';width:22px;height:2.5px;background:#2d8a39} .pdp-h1{font-family:var(--fd);font-size:clamp(42px,5vw,68px);line-height:.9;letter-spacing:.03em;color:var(--black);margin-bottom:10px} .pdp-sub{font-family:var(--fc);font-weight:700;font-size:18px;color:var(--dg);letter-spacing:.04em;margin-bottom:16px} .pdp-rat{display:flex;align-items:center;gap:10px;margin-bottom:20px} .pdp-stars{color:#e8b400;font-size:15px;letter-spacing:2px} .pdp-rat-t{font-family:var(--fc);font-weight:600;font-size:14px;color:var(--gray)} .pdp-rat-t strong{color:var(--char);font-weight:700} .pdp-feats{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px} .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} .pdp-ft:hover{border-color:var(--w200);background:var(--cream)} .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} .pdp-stock-dot{width:8px;height:8px;border-radius:50%;background:#2d8a39;animation:pulse 2s infinite} @keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}} @keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}} .pdp-pb{background:var(--off);border:1px solid var(--sand);border-radius:var(--r);padding:10px 24px;margin-bottom:20px} .pdp-pr{display:flex;align-items:baseline;gap:14px;margin-bottom:4px} .pdp-p{font-family:'work sans',sans-serif;font-weight:800;font-size:28px;color:var(--black)} .pdp-inst{font-size:14px;color:var(--gray);font-weight:400} .pdp-inst strong{color:var(--char);font-weight:700} .pdp-cta{margin-bottom:18px} .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} .pdp-add:hover{background:#1560a0;transform:translateY(-1px);box-shadow:var(--s3)} .pdp-tr{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;margin-bottom:28px} .pdp-tri{background:var(--off);border:1px solid var(--sand);padding:14px 8px;text-align:center} .pdp-tri:first-child{border-radius:var(--r) 0 0 var(--r)}.pdp-tri:last-child{border-radius:0 var(--r) var(--r) 0} .pdp-tri svg{margin:0 auto 5px;display:block} .pdp-tri span{font-family:var(--fc);font-weight:700;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--gray)} .pdp-acc{border-top:1px solid var(--sand)} .pdp-aci{border-bottom:1px solid var(--sand)} .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} .pdp-act:hover{color:var(--black)} .pdp-acl{display:flex;align-items:center;gap:10px} .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} .pdp-aci.open .pdp-ach{background:var(--black);color:var(--white);transform:rotate(45deg)} .pdp-acb{max-height:0;overflow:hidden;transition:max-height .4s ease} .pdp-aci.open .pdp-acb{max-height:500px} .pdp-acc-c{padding-bottom:20px;font-size:15px;line-height:1.75;color:var(--dg);font-weight:400} .pdp-acc-c ul{list-style:none;padding:0} .pdp-acc-c ul li{padding:5px 0 5px 20px;position:relative} .pdp-acc-c ul li::before{content:'';position:absolute;left:0;top:14px;width:8px;height:2px;background:var(--acc-d)} .pdp-acc-c strong{color:var(--black);font-weight:700} @media(max-width:1024px){ .pdp{grid-template-columns:1fr} .pdp-main{min-height:400px} .pdp-main img,.pdp-main video{width:100%;height:100%;object-fit:contain} .pdp-info{padding:32px 24px} } @media(max-width:640px){ .pdp-info{padding:8px 16px} .pdp-main{min-height:300px} } /* ═══ PRESS LOGOS ═══ */ .press-bar{padding:48px 24px;background:var(--white)} .press-logos{display:flex;align-items:center;justify-content:center;gap:48px;max-width:1100px;margin:0 auto;flex-wrap:wrap} .press-logo{opacity:.35;transition:opacity .35s ease;user-select:none;white-space:nowrap} .press-logo:hover{opacity:.65} .pn-paper{font-family:var(--fd);font-size:38px;letter-spacing:.18em;color:var(--black)} .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)} .pn-mf span{font-size:14px;letter-spacing:.04em} .pn-barbend{font-family:var(--fc);font-weight:800;font-size:30px;letter-spacing:.01em;font-style:italic;color:var(--black)} .pn-mh{font-family:var(--fd);font-size:30px;letter-spacing:.04em;color:var(--black)} .pn-gq{font-family:var(--fd);font-size:46px;letter-spacing:.06em;color:var(--black)} .pn-gp{font-family:var(--fc);font-weight:800;font-size:20px;letter-spacing:.14em;text-transform:uppercase;color:var(--black)} /* ═══ TESTIMONIAL QUOTE ═══ */ .quote-sec{padding:72px 24px;background:#edf3f7} .quote-inner{max-width:820px;margin:0 auto;text-align:center} .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} .quote-src{font-family:var(--fb);font-weight:900;font-size:18px;color:var(--black);letter-spacing:.02em} /* Layout helper */ .w{max-width:var(--mx);margin:0 auto;padding:0 24px} /* ═══ SECTIONS ═══ */ .sec{padding:88px 0} .sec-w{background:var(--white)} .sec-hd{text-align:center;margin-bottom:52px} .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} .sec-t{font-family:var(--fd);font-size:clamp(40px,4.5vw,62px);line-height:.92;letter-spacing:.03em;color:var(--black)} /* ═══ DUAL THICKNESS HERO ═══ */ .dual-hero{display:grid;grid-template-columns:1fr 1fr;min-height:600px} .dual-img{overflow:hidden;background:var(--cream);position:relative} .dual-img img{width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.4,.0,.2,1)} .dual-cnt{padding:64px 56px;display:flex;flex-direction:column;justify-content:center;background:var(--white)} .dual-cnt .sec-ey{text-align:left;margin-bottom:12px} .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} .dual-cnt p{font-size:16px;line-height:1.7;color:var(--dg);font-weight:400;margin-bottom:28px} .thick-tabs{display:flex;gap:0;margin-bottom:24px} .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} .thick-tab:first-child{border-radius:var(--r) 0 0 var(--r);border-right:1px solid var(--sand)} .thick-tab:last-child{border-radius:0 var(--r) var(--r) 0;border-left:1px solid var(--sand)} .thick-tab.on{background:var(--black);border-color:var(--black);color:var(--white)} .thick-tab .th-size{font-family:var(--fd);font-size:36px;letter-spacing:.04em;line-height:1} .thick-tab .th-std{font-family:var(--fc);font-weight:700;font-size:13px;letter-spacing:.08em;text-transform:uppercase;margin-top:2px} .thick-tab .th-use{font-family:var(--fc);font-weight:500;font-size:12px;color:var(--gray);margin-top:2px;font-style:italic} .thick-tab.on .th-use{color:rgba(255,255,255,.5)} .thick-body{display:none} .thick-body.on{display:block} .thick-label{font-family:var(--fc);font-weight:800;font-size:17px;letter-spacing:.1em;text-transform:uppercase;color:var(--black);margin-bottom:12px} .thick-list{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:8px} .thick-list li{font-family:var(--fc);font-weight:600;font-size:18px;color:var(--char);display:flex;align-items:center;gap:8px} .thick-list li::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--acc-d);flex-shrink:0} /* ═══ FEATURE CARDS ═══ */ .feat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px} .feat-card{background:var(--white);border:1px solid var(--sand);border-radius:var(--r);padding:32px 24px;text-align:center;transition:all .35s} .feat-card:hover{box-shadow:var(--s2);transform:translateY(-4px)} .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} .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} .feat-card p{font-size:14px;line-height:1.6;color:var(--gray);font-weight:400} /* ═══ IMAGE GRID ═══ */ .img-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;border-radius:var(--r);overflow:hidden} .img-grid-item{aspect-ratio:1;overflow:hidden;background:var(--cream);cursor:pointer} .img-grid-item img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease} .img-grid-item:hover img{transform:scale(1.08)} /* ═══ FEATURE SPLITS ═══ */ .feat-split{display:grid;grid-template-columns:1fr 1fr;min-height:480px} .feat-split.rev .feat-img{order:2} .feat-split.rev .feat-cnt{order:1} .feat-img{overflow:hidden;background:var(--cream);position:relative} .feat-img img{width:100%;height:100%;object-fit:cover} .feat-cnt{padding:60px 56px;display:flex;flex-direction:column;justify-content:center} .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} .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} .feat-cnt p{font-size:16px;line-height:1.7;color:var(--dg);font-weight:400;margin-bottom:24px} .feat-pills{display:flex;flex-wrap:wrap;gap:8px} .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)} .feat-cnt ul{list-style:none;display:flex;flex-direction:column;gap:10px} .feat-cnt ul li{font-size:15px;color:var(--dg);font-weight:400;display:flex;align-items:center;gap:10px} .feat-cnt ul li::before{content:'';width:8px;height:2px;background:var(--acc-d);flex-shrink:0} .feat-cnt ul li strong{color:var(--black);font-weight:700} /* ═══ VIDEO ═══ */ .video-wrap{position:relative;max-width:960px;margin:0 auto;border-radius:10px;overflow:hidden;box-shadow:var(--s3);background:var(--black)} .video-poster{position:relative;cursor:pointer;aspect-ratio:16/9;overflow:hidden;background:var(--black)} .video-poster img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease,filter .6s ease} .video-poster:hover img{transform:scale(1.03);filter:brightness(.8)} .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} .video-poster:hover .video-play{transform:translate(-50%,-50%) scale(1.12);background:var(--acc)} .video-play svg{width:32px;height:32px;margin-left:4px} .wistia-wrap{position:relative;padding-bottom:56.25%;height:0} .wistia-wrap iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none} /* ═══ FAQ ═══ */ .fq-l{max-width:760px;margin:0 auto} .fq-i{border:1px solid var(--sand);background:var(--white);margin-bottom:8px;border-radius:var(--r);overflow:hidden} .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} .fq-q:hover{background:var(--off)} .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)} .fq-i.open .fq-ch{background:var(--black);color:var(--white);transform:rotate(45deg)} .fq-a{max-height:0;overflow:hidden;transition:max-height .4s ease} .fq-i.open .fq-a{max-height:300px} .fq-ai{padding:0 24px 20px;font-size:15px;line-height:1.75;color:var(--gray);font-weight:400} /* ═══ REVEAL ═══ */ .rv-a{opacity:0;transform:translateY(30px);transition:opacity .7s ease,transform .7s ease} .rv-a.vis{opacity:1;transform:translateY(0)} /* Guarantee + Social proof (unchanged, just without duplicate reset/:root) */ body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;overflow-x:hidden} .guarantee-section{background:linear-gradient(135deg,#1a1a1a 0%,#2c2c2c 100%);padding:100px 0;position:relative;overflow:hidden} .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} .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} .shield-container{display:flex;justify-content:center;align-items:center;position:relative} .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} @keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-20px)}} .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} .guarantee-content{padding:20px} .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} .title-highlight{color:var(--accent-green);-webkit-text-fill-color:var(--accent-green)} .guarantee-description{font-size:18px;line-height:1.8;color:var(--text-gray);margin-bottom:40px} .guarantee-features{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-bottom:40px} .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} .guarantee-feature:hover{background:rgba(0,200,81,.1);transform:translateX(5px)} .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} .feature-text{flex:1;font-size:16px;font-weight:500} .social-proof-section{background:#fff;padding:80px 0;position:relative} .social-proof-header{text-align:center;max-width:800px;margin:0 auto 60px;padding:0 20px} .social-proof-title{font-size:48px;font-weight:900;color:var(--primary-black);margin-bottom:20px} .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} .social-proof-subtitle{font-size:20px;color:var(--text-gray)} .photo-marquee-container{position:relative;overflow:hidden;margin-bottom:20px} .photo-marquee{display:flex;animation:scroll 30s linear infinite} .photo-marquee:hover{animation-play-state:paused} @keyframes scroll{0%{transform:translateX(0)}100%{transform:translateX(-50%)}} .photo-grid{display:flex;gap:20px;padding:0 10px} .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)} .athlete-photo:hover{transform:scale(1.05);box-shadow:0 15px 40px rgba(0,0,0,.2)} .athlete-photo img{width:100%;height:100%;object-fit:cover} .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} .athlete-photo:hover .athlete-overlay{opacity:1} .athlete-name{font-size:14px;font-weight:600;color:#fff;margin-bottom:3px} .athlete-sport{font-size:12px;color:var(--accent-green)} .stats-container{max-width:1200px;margin:60px auto 0;padding:0 20px;display:grid;grid-template-columns:repeat(4,1fr);gap:40px} .stat-card{text-align:center;padding:30px;border-radius:20px;transition:all .3s ease} .stat-card:hover{transform:translateY(-10px);box-shadow:0 20px 50px rgba(0,0,0,.1)} .stat-number{font-size:42px;font-weight:900;color:var(--accent-green);margin-bottom:10px} .stat-label{font-size:16px;color:var(--text-gray);text-transform:uppercase;letter-spacing:1px} @media(max-width:768px){ .press-logos{gap:28px 36px} .pn-paper{font-size:30px} .pn-mf{font-size:18px}.pn-mf span{font-size:11px} .pn-barbend{font-size:24px} .pn-mh{font-size:24px} .pn-gq{font-size:36px} .pn-gp{font-size:16px} .quote-sec{padding:52px 24px} .guarantee-title{font-size:36px} .athlete-count{font-size:48px} .guarantee-features{grid-template-columns:1fr} .stats-container{grid-template-columns:1fr} .athlete-photo{width:150px;height:150px} } @media(max-width:1024px){ .dual-hero,.feat-split{grid-template-columns:1fr} .feat-split.rev .feat-img,.feat-split.rev .feat-cnt{order:0} .feat-img,.dual-img{height:auto;aspect-ratio:1} .feat-img img,.dual-img img{object-fit:contain} .feat-grid{grid-template-columns:1fr 1fr} .img-grid{grid-template-columns:1fr 1fr} .guarantee-container{grid-template-columns:1fr;text-align:center} .shield-container{margin-bottom:40px} .stats-container{grid-template-columns:repeat(2,1fr)} } Patent Pending Hybrid Gymnastic Rings DUO-RINGS™ The First 2-in-1 Dual Thickness Gymnastic Rings In Stock — Ready to Ship Dual Thickness 16ft Marked Straps 1,200 lb Capacity $59 or 4 easy installments on Shop Pay or PayPal Add to Cart 100-Day Trial Easy Returns Secure Pay HSA/FSA Description+ DUO-Rings™ are the world's first hybrid gymnastic rings offering both 28mm (FIG Standard) and 32mm (CrossTrain Standard) thicknesses in a single ring. Designed in Japan from premium birch wood with 4.8m numbered nylon straps. What's Included+ 1 pair of DUO-Rings (28mm/32mm dual thickness) 2x numbered straps — 4.8m / 16ft each Cam buckle system for instant height adjustment Specs+ Material — Premium birch wood Ring Diameter — 28mm / 32mm (dual) Strap Width — 3/4" (compact design) Strap Length — 4.8m / 16ft (numbered) Capacity — Tested to 1,200 lbs Total Weight — 900g / 1.9 lbs (full set) Shipping & Returns+ Free shipping on orders over $300 100-day risk-free trial — full refund Worldwide shipping to 50+ countries (function(){ var HANDLE='duo-rings', productData=null, selectedVariantId=null, ci=0, HERO_WIDTH=600, THUMB_WIDTH=80; var heroImg=document.getElementById('heroImage'); var heroPrice=document.getElementById('pdpHeroPrice'); var addBtn=document.getElementById('pdpAddBtn'); var thumbsWrap=document.getElementById('pdpThumbs'); var origBtnHTML=addBtn.innerHTML; var imgs=[ 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/duo-ring-main.jpg?v=1767452030', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/duo-ring-close-up.jpg?v=1767452026', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/DUO-rings2.jpg?v=1771510451', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/DUO-rings1.jpg?v=1771510451', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/products/IMG_2251-413952.jpg?v=1767447608', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/DUO-rings3.jpg?v=1771510451', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/DUO-rings4.jpg?v=1771510451', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/DUO-rings5.jpg?v=1771510451', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/rings.jpg?v=1767447608', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/files/neo-rings.jpg?v=1767447608', 'https://cdn.shopify.com/s/files/1/0229/1249/9792/products/neo_rings-186715.jpg?v=1767447608' ]; function imgUrl(base,width){return base+'&width='+width+'&format=webp'} function buildThumbs(){ thumbsWrap.innerHTML=''; imgs.forEach(function(src,i){ var btn=document.createElement('button'); btn.className='pdp-th'+(i===0?' on':''); btn.dataset.i=i; var img=document.createElement('img'); img.src=imgUrl(src,THUMB_WIDTH); img.alt=''; img.width=THUMB_WIDTH; img.height=THUMB_WIDTH; img.loading=i>2?'lazy':'eager'; img.decoding='async'; img.fetchPriority = i>2 ? 'low' : 'auto'; btn.appendChild(img); thumbsWrap.appendChild(btn); }); } function setI(i){ ci=i; heroImg.src=imgUrl(imgs[i],HERO_WIDTH); heroImg.srcset=imgUrl(imgs[i],400)+' 400w, '+imgUrl(imgs[i],800)+' 800w'; var ths=thumbsWrap.children; for (var j=0;j=imgs.length) n=0; setI(n); }); function formatMoney(cents){ if(typeof Shopify!=='undefined'&&typeof Shopify.formatMoney==='function'){ var fmt=(window.theme&&window.theme.moneyFormat)||window.shopMoneyFormat||'${{amount}}'; 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 '}; symbol = symbols[c] || (c+' '); } var amt=(cents/100).toFixed(2); var after=['SEK','DKK','NOK','PLN','CZK']; var curr=(typeof Shopify!=='undefined'&&Shopify.currency)?Shopify.currency.active:'USD'; return (after.indexOf(curr)>-1) ? (amt+symbol) : (symbol+amt); } function updatePrice(){ if(!productData) return; var v=productData.variants[0]; selectedVariantId=v.id; heroPrice.textContent=formatMoney(v.price); } function fetchProduct(){ fetch('/products/'+HANDLE+'.js') .then(function(r){return r.json()}) .then(function(p){productData=p;updatePrice()}) .catch(function(){}); } buildThumbs(); // Defer product JSON fetch so it doesn't compete with first paint if('requestIdleCallback' in window) requestIdleCallback(fetchProduct,{timeout:1500}); else setTimeout(fetchProduct,400); document.addEventListener('currency:change',fetchProduct); addBtn.addEventListener('click',function(){ addBtn.innerHTML=' Adding...'; addBtn.style.opacity='.7'; addBtn.style.pointerEvents='none'; var doAdd; if(selectedVariantId){ doAdd=fetch('/cart/add.js',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({items:[{id:selectedVariantId,quantity:1}]})}); }else{ doAdd=fetch('/products/'+HANDLE+'.js').then(function(r){return r.json()}).then(function(p){ return fetch('/cart/add.js',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({items:[{id:p.variants[0].id,quantity:1}]})}); }); } doAdd.then(function(r){return r.json()}).then(function(){ addBtn.innerHTML=' Added to Cart!'; addBtn.style.background='#2d8a39'; addBtn.style.opacity='1'; fetch('/cart.js').then(function(r){return r.json()}).then(function(cart){ 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'; document.querySelectorAll(countSels).forEach(function(el){el.textContent=cart.item_count}); }).catch(function(){}); setTimeout(function(){ 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'); if(trigger) trigger.click(); },200); setTimeout(function(){ addBtn.innerHTML=origBtnHTML; addBtn.style.background='#1972bc'; addBtn.style.pointerEvents='auto'; },2000); }).catch(function(){ addBtn.innerHTML=origBtnHTML; addBtn.style.opacity='1'; addBtn.style.pointerEvents='auto'; window.location.href='/products/'+HANDLE; }); }); document.getElementById('pdpAcc').addEventListener('click',function(e){ var btn=e.target.closest('.pdp-act'); if(!btn) return; var item=btn.parentElement; var wasOpen=item.classList.contains('open'); var items=document.querySelectorAll('.pdp-aci'); for(var k=0;k' + ''; } (function(){ var poster=document.getElementById('videoPoster'); if(poster){ poster.addEventListener('click', loadVideo, {passive:true}); poster.addEventListener('keydown', function(e){ if(e.key==='Enter' || e.key===' ') { e.preventDefault(); loadVideo(); } }); } // Scroll reveal (same, but no random delay = less layout/paint churn) var obs=new IntersectionObserver(function(es){ es.forEach(function(e){ if(e.isIntersecting){ e.target.classList.add('vis'); obs.unobserve(e.target); } }); },{threshold:.1,rootMargin:'0px 0px -40px 0px'}); document.querySelectorAll('.rv-a').forEach(function(el){obs.observe(el)}); })(); (function(){ // Counter: rAF, run once function animateCounter(el, target, dur){ var start=null; function step(ts){ if(!start) start=ts; var p=Math.min((ts-start)/dur,1); el.textContent = Math.floor(p*target).toLocaleString() + '+'; if(p