Skip Navigation Website Accessibility
 


Chums Tideline Adjustable Retainer

Just like the best-selling Tideline retainer, the Tideline Adjustable is sleek, durable, versatile, and any angler's best friend. Made from ultra-lightweight stainless steel cable complete with dual adjustable beads, you'll unlock the perfect fit every time. Plus, swapping between wire-frame glasses while tying flies to heavier polarized lenses while chasing fish has never been easier with small and large interchangeable silicone ends that won't stretch out or lose their shape. Proudly made in the USA, the Tideline Adjustable is a simple essential that upgrades any fishing trip.

(function(){ // Toggle aria-expanded for navbar toggles / dropdowns document.addEventListener('click', function(e){ var btn = e.target.closest('[data-toggle="aria"]'); if(!btn) return; var targetSelector = btn.getAttribute('data-target'); var el = targetSelector ? document.querySelector(targetSelector) : null; var expanded = btn.getAttribute('aria-expanded') === 'true'; btn.setAttribute('aria-expanded', (!expanded).toString()); if(el) el.classList.toggle('open'); }); // Keyboard close for dropdowns/overlays on ESC document.addEventListener('keydown', function(e){ if(e.key === 'Escape'){ document.querySelectorAll('.open').forEach(function(x){ x.classList.remove('open'); }); document.querySelectorAll('[aria-expanded="true"]').forEach(function(b){ b.setAttribute('aria-expanded','false'); }); } }); // Brief product-card animation on add-to-cart (use data-add-btn on button) document.addEventListener('click', function(e){ var add = e.target.closest('[data-add-btn]'); if(!add) return; var card = add.closest('.card'); if(card){ card.classList.remove('fade-added'); void card.offsetWidth; card.classList.add('fade-added'); setTimeout(function(){ card.classList.remove('fade-added'); }, 600); } }); // Lazy image fallback for images with data-src var imgs = Array.prototype.slice.call(document.querySelectorAll('img[data-src]')); if('IntersectionObserver' in window && imgs.length){ var io = new IntersectionObserver(function(entries){ entries.forEach(function(e){ if(e.isIntersecting){ var i = e.target; i.src = i.getAttribute('data-src'); i.onload = function(){ i.classList.add('loaded'); } io.unobserve(i); } }); },{rootMargin:'120px'}); imgs.forEach(function(i){ io.observe(i); }); } else { imgs.forEach(function(i){ i.src = i.getAttribute('data-src'); i.onload = function(){ i.classList.add('loaded'); }}); } })();