{"product_id":"magna-anchor™-magnetic-golf-towel-stubby-16-24","title":"Magna-Anchor™ Magnetic Golf Towel – Stubby (16×24)","description":"\u003cstyle\u003e\n\n\/* =========================\n\n   AF APPLE-STYLE DARK MODE — STUBBY PDP (CONVERSION + THEME-PROOF FINISH SWITCH)\n\n   ========================= *\/\n\n:root {\n\n  --bg-color: #000000;\n\n  --card-bg: #1c1c1e;\n\n  --text-main: #f5f5f7;\n\n  --text-muted: #86868b;\n\n  --accent: #22c55e;\n\n  --border: rgba(255, 255, 255, 0.1);\n\n}\n\n\n.af-luxury-page {\n\n  background: var(--bg-color);\n\n  color: var(--text-main);\n\n  padding: 60px 20px;\n\n  font-family: -apple-system, BlinkMacSystemFont, \"SF Pro Text\", \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n\n  line-height: 1.6;\n\n  -webkit-font-smoothing: antialiased;\n\n}\n\n.af-luxury-page * { box-sizing: border-box; }\n\n.af-container { max-width: 1000px; margin: 0 auto; }\n\n\n.af-eyebrow {\n\n  color: var(--accent);\n\n  letter-spacing: .1em;\n\n  text-transform: uppercase;\n\n  font-weight: 700;\n\n  font-size: .75rem;\n\n  margin: 0 0 16px;\n\n  text-align: center;\n\n}\n\n\n.af-hero {\n\n  display: flex;\n\n  flex-direction: column;\n\n  align-items: center;\n\n  margin-bottom: 40px;\n\n}\n\n\n.af-hero h1 {\n\n  margin: 0 0 20px;\n\n  font-weight: 700;\n\n  line-height: 1.1;\n\n  font-size: clamp(2.5rem, 5vw, 4rem);\n\n  letter-spacing: -0.02em;\n\n  background: linear-gradient(180deg, #fff, #a1a1aa);\n\n  -webkit-background-clip: text;\n\n  -webkit-text-fill-color: transparent;\n\n  text-align: center;\n\n}\n\n\n.af-lead {\n\n  font-size: 1.3rem;\n\n  color: #fff;\n\n  font-weight: 600;\n\n  text-align: center;\n\n  margin: 20px 0 12px;\n\n}\n\n\n.af-lede {\n\n  margin: 0 auto 24px;\n\n  max-width: 760px;\n\n  color: var(--text-muted);\n\n  font-size: 1.1rem;\n\n  text-align: center;\n\n  line-height: 1.6;\n\n}\n\n\n.af-hero-interaction {\n\n  background: rgba(28, 28, 30, 0.6);\n\n  border: 1px solid var(--border);\n\n  border-radius: 24px;\n\n  padding: 24px;\n\n  margin: 20px auto;\n\n  max-width: 560px;\n\n  width: 100%;\n\n  backdrop-filter: blur(10px);\n\n  text-align: center;\n\n}\n\n\n.af-interaction-label {\n\n  font-size: 0.8rem;\n\n  text-transform: uppercase;\n\n  letter-spacing: 0.05em;\n\n  color: var(--text-muted);\n\n  margin-bottom: 12px;\n\n  font-weight: 600;\n\n  display: block;\n\n}\n\n\n\/* Swatches *\/\n\n.af-swatch-row {\n\n  display: flex;\n\n  justify-content: center;\n\n  gap: 12px;\n\n  margin-bottom: 10px;\n\n  flex-wrap: wrap;\n\n}\n\n.af-swatch {\n\n  width: 32px;\n\n  height: 32px;\n\n  border-radius: 50%;\n\n  border: 2px solid rgba(255,255,255,0.2);\n\n  cursor: pointer;\n\n  transition: transform 0.2s, border-color 0.2s, box-shadow 0.2s;\n\n  padding: 0;\n\n  background: #111;\n\n}\n\n.af-swatch:hover { transform: scale(1.1); border-color: #fff; }\n\n.af-swatch[aria-selected=\"true\"]{\n\n  border-color: rgba(34,197,94,.95);\n\n  box-shadow: 0 0 0 4px rgba(34,197,94,.18);\n\n}\n\n\n.af-swatch[data-af-finish=\"Black\"] { background: #111; }\n\n.af-swatch[data-af-finish=\"Blue\"] { background: #1e3a8a; }\n\n.af-swatch[data-af-finish=\"Augusta Green\"] { background: #14532d; }\n\n.af-swatch[data-af-finish=\"Birdie Blue\"] { background: #0ea5e9; }\n\n.af-swatch[data-af-finish=\"Grey\"] { background: #4b5563; }\n\n.af-swatch[data-af-finish=\"Gunmetal Grey\"] { background: #374151; }\n\n.af-swatch[data-af-finish=\"Red\"] { background: #991b1b; }\n\n\n.af-nudge {\n\n  text-align: center;\n\n  margin-top: 10px;\n\n  color: var(--text-muted);\n\n  font-size: 0.9rem;\n\n}\n\n\n\/* Cards + typography *\/\n\n.af-card {\n\n  background: var(--card-bg);\n\n  border-radius: 24px;\n\n  padding: 40px;\n\n  margin: 24px 0;\n\n  border: 1px solid var(--border);\n\n  box-shadow: 0 20px 40px rgba(0,0,0,0.4);\n\n}\n\n.af-h2 {\n\n  margin: 0 0 16px;\n\n  font-size: 1.8rem;\n\n  line-height: 1.2;\n\n  font-weight: 600;\n\n  color: #fff;\n\n  letter-spacing: -0.01em;\n\n}\n\n.af-muted {\n\n  color: var(--text-muted);\n\n  font-size: 1.05rem;\n\n  margin: 0 0 1rem;\n\n}\n\n\n\/* Exec summary *\/\n\n.af-exec-summary {\n\n  background: #151516;\n\n  border: 1px solid rgba(34, 197, 94, 0.3);\n\n  border-radius: 20px;\n\n  padding: 24px;\n\n  margin: 0 auto 32px;\n\n  max-width: 820px;\n\n  text-align: left;\n\n}\n\n.af-exec-summary strong {\n\n  display: block;\n\n  font-size: .75rem;\n\n  letter-spacing: .05em;\n\n  text-transform: uppercase;\n\n  color: var(--accent);\n\n  font-weight: 700;\n\n  margin-bottom: 8px;\n\n}\n\n.af-exec-summary p {\n\n  margin: 0;\n\n  color: #d1d5db;\n\n  font-size: 1.05rem;\n\n  line-height: 1.6;\n\n}\n\n\n\/* Decision module *\/\n\n.af-decision {\n\n  background: rgba(28, 28, 30, 0.8);\n\n  border: 1px solid var(--border);\n\n  border-radius: 24px;\n\n  padding: 30px;\n\n  max-width: 900px;\n\n  margin: 0 auto 24px;\n\n  backdrop-filter: blur(10px);\n\n}\n\n.af-decision .af-kicker {\n\n  margin: 0 0 8px;\n\n  font-size: .8rem;\n\n  letter-spacing: .05em;\n\n  text-transform: uppercase;\n\n  font-weight: 700;\n\n  color: var(--accent);\n\n  text-align: center;\n\n}\n\n.af-decision .af-title {\n\n  margin: 0 0 16px;\n\n  font-weight: 700;\n\n  color: #fff;\n\n  font-size: 1.4rem;\n\n  text-align: center;\n\n}\n\n.af-bullets {\n\n  margin: 0;\n\n  padding-left: 1.2rem;\n\n  color: var(--text-muted);\n\n}\n\n.af-bullets li { margin: .8rem 0; }\n\n.af-bullets li strong { color: #fff; font-weight: 600; }\n\n\n\/* Chips *\/\n\n.af-chip-row {\n\n  display: flex;\n\n  flex-wrap: wrap;\n\n  gap: 10px;\n\n  margin-top: 24px;\n\n  justify-content: center;\n\n}\n\n.af-chip {\n\n  background: #2c2c2e;\n\n  border: 1px solid #3a3a3c;\n\n  color: #e5e5e7;\n\n  padding: 8px 16px;\n\n  border-radius: 999px;\n\n  font-size: 0.9rem;\n\n  font-weight: 500;\n\n}\n\n\n\/* Buttons *\/\n\n.af-btn-wrap {\n\n  display: flex;\n\n  justify-content: center;\n\n  flex-wrap: wrap;\n\n  gap: 12px;\n\n  margin-top: 16px;\n\n}\n\n.af-btn {\n\n  display: inline-flex;\n\n  align-items: center;\n\n  justify-content: center;\n\n  padding: 14px 28px;\n\n  border-radius: 999px;\n\n  font-weight: 600;\n\n  text-decoration: none;\n\n  font-size: 1rem;\n\n  transition: all 0.2s ease;\n\n  border: 0;\n\n  cursor: pointer;\n\n}\n\n.af-btn-primary {\n\n  background: var(--accent);\n\n  color: #000;\n\n  border: 1px solid var(--accent);\n\n}\n\n.af-btn-primary:hover {\n\n  background: #16a34a;\n\n  border-color: #16a34a;\n\n  transform: translateY(-2px);\n\n}\n\n.af-btn-secondary {\n\n  background: #2c2c2e;\n\n  color: #fff;\n\n  border: 1px solid #3a3a3c;\n\n}\n\n.af-btn-secondary:hover {\n\n  background: #3a3a3c;\n\n  border-color: #48484a;\n\n  transform: translateY(-2px);\n\n}\n\n\n\/* Grid *\/\n\n.af-grid-2 { display: grid; grid-template-columns: 1fr; gap: 24px; }\n\n@media (min-width: 768px) { .af-grid-2 { grid-template-columns: 1fr 1fr; } }\n\n\n\/* FAQ *\/\n\n.af-faq { border-top: 1px solid #2c2c2e; padding: 20px 0; }\n\n.af-faq summary {\n\n  cursor: pointer;\n\n  font-weight: 600;\n\n  color: #fff;\n\n  font-size: 1.1rem;\n\n  list-style: none;\n\n  display: flex;\n\n  justify-content: space-between;\n\n  align-items: center;\n\n}\n\n.af-faq summary::-webkit-details-marker { display: none; }\n\n.af-faq summary::after { content: \"+\"; font-weight: 400; color: var(--text-muted); font-size: 1.5rem; }\n\ndetails[open] summary::after { content: \"−\"; }\n\n.af-faq div { margin-top: 12px; color: var(--text-muted); line-height: 1.6; }\n\n\u003c\/style\u003e\n\u003cdiv class=\"af-luxury-page\"\u003e\n\u003cdiv class=\"af-container\"\u003e\n\u003cheader class=\"af-hero\"\u003e\n\u003cp class=\"af-eyebrow\"\u003eOn-Course Essentials • Compact 16×24 • Scrub + Wash Pocket\u003c\/p\u003e\n\u003ch1\u003eMagna-Anchor™ Magnetic Towel — “Stubby”\u003c\/h1\u003e\n\u003cdiv class=\"af-exec-summary\"\u003e\n\u003cstrong\u003eTest Verdict\u003c\/strong\u003e\n\u003cp\u003eThe Stubby is built for players who want a cleaning routine that stays fast under pressure. The scrub pad breaks debris loose, the deep waffle microfiber lifts it, and the wash pocket keeps the “wet job” separate from the dry wipe. \u003cbr\u003e\u003cbr\u003e\u003cstrong\u003eVerdict:\u003c\/strong\u003e Choose it when you want compact, controlled cleaning that won’t drag on a walk. Choose The 40 when you want maximum coverage and larger wet\/dry separation.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cp class=\"af-lead\"\u003eCleaning power that doesn’t turn into a soggy flag.\u003c\/p\u003e\n\u003cp class=\"af-lede\"\u003eMost towels fail the same way: they’re too big, too wet, or too annoying to access. Stubby fixes the friction with a compact footprint, dedicated cleaning zones, and a secure magnetic dock so the routine becomes automatic.\u003c\/p\u003e\n\u003cdiv data-af-variant-sync=\"\" class=\"af-hero-interaction\"\u003e\n\u003cspan class=\"af-interaction-label\"\u003ePick Your Finish\u003c\/span\u003e\n\u003cdiv aria-label=\"Choose finish\" role=\"listbox\" class=\"af-swatch-row\"\u003e\n\u003cbutton aria-selected=\"false\" aria-label=\"Black finish\" data-af-finish=\"Black\" type=\"button\" class=\"af-swatch\"\u003e\u003c\/button\u003e \u003cbutton aria-selected=\"false\" aria-label=\"Blue finish\" data-af-finish=\"Blue\" type=\"button\" class=\"af-swatch\"\u003e\u003c\/button\u003e \u003cbutton aria-selected=\"false\" aria-label=\"Augusta Green finish\" data-af-finish=\"Augusta Green\" type=\"button\" class=\"af-swatch\"\u003e\u003c\/button\u003e \u003cbutton aria-selected=\"false\" aria-label=\"Birdie Blue finish\" data-af-finish=\"Birdie Blue\" type=\"button\" class=\"af-swatch\"\u003e\u003c\/button\u003e \u003cbutton aria-selected=\"false\" aria-label=\"Grey finish\" data-af-finish=\"Grey\" type=\"button\" class=\"af-swatch\"\u003e\u003c\/button\u003e \u003cbutton aria-selected=\"false\" aria-label=\"Gunmetal Grey finish\" data-af-finish=\"Gunmetal Grey\" type=\"button\" class=\"af-swatch\"\u003e\u003c\/button\u003e \u003cbutton aria-selected=\"false\" aria-label=\"Red finish\" data-af-finish=\"Red\" type=\"button\" class=\"af-swatch\"\u003e\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv data-af-status=\"\" class=\"af-nudge\"\u003ePick a finish. I’ll sync the variant and force the gallery to switch.\u003c\/div\u003e\n\u003cspan class=\"af-interaction-label\"\u003eCheck Fit: 16×24 Compact\u003c\/span\u003e\n\u003cdiv class=\"af-btn-wrap\"\u003e\n\u003ca class=\"af-btn af-btn-primary\" href=\"#choose\"\u003eLock in my setup\u003c\/a\u003e \u003ca class=\"af-btn af-btn-secondary\" href=\"#workflow\"\u003eSee how it works\u003c\/a\u003e \u003cbutton data-af-atc=\"\" class=\"af-btn af-btn-primary\" type=\"button\"\u003eAdd to cart\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"af-nudge\"\u003eTip: If your bag isn’t magnet-friendly, add the Landing Pad for a guaranteed dock point.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"af-btn-wrap\"\u003e\n\u003ca class=\"af-btn af-btn-secondary\" href=\"\/pages\/golf-towel-cleaning-science-grooves-debris-gsm-magnet-physics\"\u003eCleaning Science\u003c\/a\u003e \u003ca class=\"af-btn af-btn-secondary\" href=\"\/collections\/magnetic-towels\"\u003eShop Magnetic Towels\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/header\u003e\n\u003csection class=\"af-card\"\u003e\n\u003ch2 class=\"af-h2\"\u003eThe real problem isn’t “dirty clubs.” It’s smeared debris.\u003c\/h2\u003e\n\u003cp class=\"af-muted\"\u003eGroove debris is compacted mud, grass, and sand. A flat towel often just redistributes it. Meanwhile, oversized towels turn into dragging, wet distractions when you walk.\u003c\/p\u003e\n\u003cp class=\"af-muted\"\u003eStubby solves that with \u003cstrong\u003etargeted cleaning zones\u003c\/strong\u003e and a compact size that stays out of your way. You stop improvising and start repeating a simple routine.\u003c\/p\u003e\n\u003c\/section\u003e\n\u003csection class=\"af-card\" id=\"workflow\"\u003e\n\u003ch2 class=\"af-h2\"\u003eThe workflow\u003c\/h2\u003e\n\u003cul class=\"af-bullets\"\u003e\n\u003cli\u003e\n\u003cstrong\u003eDock:\u003c\/strong\u003e Attach via Magna-Anchor™ magnet (top-right patch).\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eBreak:\u003c\/strong\u003e Use the scrub pad (front, corner) to loosen stubborn debris in grooves.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLift:\u003c\/strong\u003e Wipe clean with deep waffle microfiber.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eContain:\u003c\/strong\u003e Use the wash pocket (back) to isolate wet grime from your dry wipe.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRe-Dock:\u003c\/strong\u003e Snap it back to the same spot and move on.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv aria-hidden=\"true\" class=\"af-chip-row\"\u003e\n\u003cspan class=\"af-chip\"\u003e16×24 Compact\u003c\/span\u003e \u003cspan class=\"af-chip\"\u003eScrub Pad\u003c\/span\u003e \u003cspan class=\"af-chip\"\u003eWash Pocket\u003c\/span\u003e \u003cspan class=\"af-chip\"\u003eMagna-Anchor™\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"af-grid-2\"\u003e\n\u003cdiv class=\"af-card\"\u003e\n\u003ch2 class=\"af-h2\"\u003eWho it’s for\u003c\/h2\u003e\n\u003cul class=\"af-bullets\"\u003e\n\u003cli\u003e\n\u003cstrong\u003eWalkers:\u003c\/strong\u003e Compact size helps avoid dragging and bulk.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFast players:\u003c\/strong\u003e You want the quickest clean-and-dock routine.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMinimalists:\u003c\/strong\u003e You want function without extra towel flapping everywhere.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"af-card\"\u003e\n\u003ch2 class=\"af-h2\"\u003eWho it’s not for\u003c\/h2\u003e\n\u003cul class=\"af-bullets\"\u003e\n\u003cli\u003e\n\u003cstrong\u003eMaximum-coverage riders:\u003c\/strong\u003e If you want a larger wet\/dry separation zone, go \u003cstrong\u003eThe 40\u003c\/strong\u003e.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eZero-change people:\u003c\/strong\u003e If you insist on clips and love the swingy-dangly life, you won’t use the system.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"af-card\" id=\"choose\"\u003e\n\u003ch2 class=\"af-h2\"\u003eChoose your setup\u003c\/h2\u003e\n\u003cp class=\"af-muted\"\u003eDon’t overthink it. Choose the setup that removes the most friction from \u003cem\u003eyour\u003c\/em\u003e round.\u003c\/p\u003e\n\u003cdiv aria-label=\"Quick decision module\" class=\"af-decision\"\u003e\n\u003cp class=\"af-kicker\"\u003eSelect Option\u003c\/p\u003e\n\u003cp class=\"af-title\"\u003eWhich setup fits your game?\u003c\/p\u003e\n\u003cul class=\"af-bullets\"\u003e\n\u003cli\u003e\n\u003cstrong\u003eStubby\u003c\/strong\u003e if you walk, play fast, or want the cleanest “grab → scrub → re-dock” routine with minimal bulk.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eThe 40\u003c\/strong\u003e if you ride often or want maximum coverage and bigger wet\/dry separation.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAdd the Landing Pad\u003c\/strong\u003e if your bag’s magnetic surfaces are inconsistent and you want a guaranteed docking spot.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv class=\"af-btn-wrap\"\u003e\n\u003ca class=\"af-btn af-btn-secondary\" href=\"\/products\/magnetic-golf-towel-large-16x40\"\u003eView The 40 Towel\u003c\/a\u003e \u003ca class=\"af-btn af-btn-secondary\" href=\"\/products\/magnetic-landing-pad\"\u003eAdd Landing Pad\u003c\/a\u003e \u003ca class=\"af-btn af-btn-primary\" href=\"\/collections\/magnetic-towels\"\u003eShop Towels\u003c\/a\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"af-nudge\"\u003eTip: Use the “Add to cart” button above for the fastest checkout.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"af-card\"\u003e\n\u003ch2 class=\"af-h2\"\u003eProof without hype\u003c\/h2\u003e\n\u003cp class=\"af-muted\"\u003eThe magnet is a neodymium build, integrated under a silicone patch and designed to stay put through normal use and washing. The point isn’t magic. It’s reliability: the towel stays accessible, the routine stays consistent.\u003c\/p\u003e\n\u003cdiv class=\"af-btn-wrap\"\u003e\n\u003ca class=\"af-btn af-btn-secondary\" href=\"\/pages\/our-golf-gear-testing-design-standards\"\u003eRead Testing Standards\u003c\/a\u003e \u003ca class=\"af-btn af-btn-secondary\" href=\"\/pages\/strongest-magnetic-golf-towel-test-magna-anchor%E2%84%A2-vs-ghost-stickit-blue-tees\"\u003eHead-to-Head Test\u003c\/a\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"af-nudge\"\u003eIf you want the “always docks” experience on any bag, pair Stubby with the Landing Pad.\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection aria-label=\"Product FAQ\" class=\"af-card\"\u003e\n\u003ch2 class=\"af-h2\"\u003eProduct FAQ\u003c\/h2\u003e\n\u003cdetails class=\"af-faq\"\u003e\n\u003csummary\u003eWill this towel drag on the ground?\u003c\/summary\u003e\n\u003cdiv\u003eStubby is sized at 16×24 to reduce drag risk compared to oversized towels, especially on carry bags. Placement still matters, but the compact footprint helps.\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"af-faq\"\u003e\n\u003csummary\u003eWhat is the scrub pad for?\u003c\/summary\u003e\n\u003cdiv\u003eIt’s for breaking up dried mud and sand in grooves before you wipe clean with the microfiber. Think “loosen first, wipe second.”\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"af-faq\"\u003e\n\u003csummary\u003eWhere is the magnet and how does it attach?\u003c\/summary\u003e\n\u003cdiv\u003eThe magnet sits under the silicone patch. It’s designed to dock to common metal surfaces like clubs and other magnetic-friendly spots. For a guaranteed bag dock point, use the Landing Pad.\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"af-faq\"\u003e\n\u003csummary\u003eDo I need a Landing Pad?\u003c\/summary\u003e\n\u003cdiv\u003eIf your bag’s magnetic surfaces are inconsistent (or basically non-magnetic), the Landing Pad gives you a steel-core docking spot so the towel re-docks the same way every time.\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"af-faq\"\u003e\n\u003csummary\u003eCan I wash it?\u003c\/summary\u003e\n\u003cdiv\u003eYes. Wash cold on gentle\/low spin and air dry. Avoid high heat; hot dryers can degrade microfiber performance over time.\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/section\u003e\n\u003csection aria-label=\"Final call to action\" style=\"text-align: center;\" class=\"af-card\"\u003e\n\u003ch2 class=\"af-h2\"\u003eClean clubs. Fewer “tiny interruptions.” More golf.\u003c\/h2\u003e\n\u003cp class=\"af-muted\"\u003eIf you’re spending mental energy on your towel, you’re paying a tax every hole. Make the routine automatic.\u003c\/p\u003e\n\u003cdiv class=\"af-btn-wrap\"\u003e\n\u003ca class=\"af-btn af-btn-primary\" href=\"\/collections\/magnetic-towels\"\u003eShop Towels\u003c\/a\u003e \u003ca class=\"af-btn af-btn-secondary\" href=\"\/products\/magnetic-landing-pad\"\u003eAdd Landing Pad\u003c\/a\u003e \u003ca class=\"af-btn af-btn-secondary\" href=\"\/pages\/our-golf-gear-testing-design-standards\"\u003eTesting Standards\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003cscript type=\"application\/ld+json\"\u003e\n\n    {\n\n      \"@context\":\"https:\/\/schema.org\",\n\n      \"@type\":\"FAQPage\",\n\n      \"mainEntity\":[\n\n        {\"@type\":\"Question\",\"name\":\"Will this towel drag on the ground?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Stubby is sized at 16×24 to reduce drag risk compared to oversized towels, especially on carry bags. Placement still matters, but the compact footprint helps.\"}},\n\n        {\"@type\":\"Question\",\"name\":\"What is the scrub pad for?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"It’s for breaking up dried mud and sand in grooves before you wipe clean with the microfiber. Think “loosen first, wipe second.”\"}},\n\n        {\"@type\":\"Question\",\"name\":\"Where is the magnet and how does it attach?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"The magnet sits under the silicone patch. It’s designed to dock to common metal surfaces like clubs and other magnetic-friendly spots. For a guaranteed bag dock point, use the Landing Pad.\"}},\n\n        {\"@type\":\"Question\",\"name\":\"Do I need a Landing Pad?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"If your bag’s magnetic surfaces are inconsistent (or basically non-magnetic), the Landing Pad gives you a steel-core docking spot so the towel re-docks the same way every time.\"}},\n\n        {\"@type\":\"Question\",\"name\":\"Can I wash it?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. Wash cold on gentle\/low spin and air dry. Avoid high heat; hot dryers can degrade microfiber performance over time.\"}}\n\n      ]\n\n    }\n\n    \u003c\/script\u003e \u003cscript\u003e\n\n    (function(){\n\n      const finishToImage = {\n\n        \"Red\": \"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/Updated_Main_Image_2.jpg?v=1769714394\",\n\n        \"Birdie Blue\": \"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/2026_Amazon_Main_Image_4a14208d-a588-4d0c-8257-be4c6f929d2c.jpg?v=1769714394\",\n\n        \"Gunmetal Grey\": \"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/2026_Main_Image_732dcd44-f78d-458d-bd41-2e148e5b7af7.jpg?v=1769714394\",\n\n        \"Grey\": \"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/2026_amazon_Main_Image_a81807c5-6f77-44c4-a531-5cf6b47a5bbd.jpg?v=1769714394\",\n\n        \"Augusta Green\": \"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/2026_Amazon_Main_Image_128423e7-67ac-4508-82b8-2b1076ec7e3e.jpg?v=1769714394\",\n\n        \"Blue\": \"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/2026_main_image.jpg?v=1769714394\",\n\n        \"Black\": \"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/2026_Amazon_Main_Image.jpg?v=1769714394\"\n\n      };\n\n\n      const module = document.querySelector('[data-af-variant-sync]');\n\n      if(!module) return;\n\n\n      const status = module.querySelector('[data-af-status]');\n\n      const swatches = Array.from(module.querySelectorAll('[data-af-finish]'));\n\n      const atcBtn = module.querySelector('[data-af-atc]');\n\n\n      function setStatus(msg){ if(status) status.textContent = msg; }\n\n      function norm(s){ return (s||'').toLowerCase().replace(\/\\s+\/g,' ').trim(); }\n\n      function stripQuery(url){ return (url||'').split('?')[0]; }\n\n\n      \/\/ Find native variant select\n\n      const variantSelect =\n\n        document.querySelector('form[action^=\"\/cart\/add\"] select[name=\"id\"]') ||\n\n        document.querySelector('form[action*=\"\/cart\/add\"] select[name=\"id\"]') ||\n\n        document.querySelector('select[name=\"id\"]');\n\n\n      \/\/ Find native theme add to cart\n\n      const nativeAtc =\n\n        document.querySelector('form[action^=\"\/cart\/add\"] button[type=\"submit\"], form[action^=\"\/cart\/add\"] [type=\"submit\"]') ||\n\n        document.querySelector('form[action*=\"\/cart\/add\"] button[type=\"submit\"], form[action*=\"\/cart\/add\"] [type=\"submit\"]') ||\n\n        document.querySelector('button[name=\"add\"], button[type=\"submit\"][name=\"add\"]');\n\n\n      function findOptionByFinish(finishLabel){\n\n        if(!variantSelect || !variantSelect.options) return null;\n\n        const finish = norm(finishLabel);\n\n        return Array.from(variantSelect.options).find(o =\u003e norm(o.text).includes(finish)) || null;\n\n      }\n\n\n      function setSelectedSwatch(finishLabel){\n\n        swatches.forEach(btn =\u003e btn.setAttribute('aria-selected', btn.dataset.afFinish === finishLabel ? 'true' : 'false'));\n\n      }\n\n\n      \/\/ Find the \"product area\" to search within (keeps us from clicking random images on the page)\n\n      function getProductRoot(){\n\n        const addForm = document.querySelector('form[action^=\"\/cart\/add\"], form[action*=\"\/cart\/add\"]');\n\n        if(addForm) return addForm.closest('section, .shopify-section, main, body') || document;\n\n        return document;\n\n      }\n\n\n      \/\/ Strategy A (best): click the thumbnail\/button that contains the image URL\n\n      function clickGalleryItemByUrl(url){\n\n        const root = getProductRoot();\n\n        const target = stripQuery(url);\n\n\n        const candidates = Array.from(root.querySelectorAll(\n\n          'button, a, img, source, [data-src], [data-zoom], [data-image], [href]'\n\n        ));\n\n\n        \/\/ Look for any attribute containing the target URL base\n\n        for(const el of candidates){\n\n          const attrs = [\n\n            el.getAttribute('src'),\n\n            el.getAttribute('href'),\n\n            el.getAttribute('data-src'),\n\n            el.getAttribute('data-zoom'),\n\n            el.getAttribute('data-image'),\n\n            el.getAttribute('srcset')\n\n          ].filter(Boolean);\n\n\n          if(attrs.some(a =\u003e stripQuery(a).includes(target))){\n\n            const clickable = el.closest('button, a') || (el.tagName === 'BUTTON' || el.tagName === 'A' ? el : null);\n\n            if(clickable){\n\n              clickable.click();\n\n              return true;\n\n            }\n\n          }\n\n        }\n\n        return false;\n\n      }\n\n\n      \/\/ Strategy B (fallback): brute replace the currently active\/visible media nodes\n\n      function bruteSwapActiveMedia(url, finishLabel){\n\n        const root = getProductRoot();\n\n        const imgCandidates = [];\n\n\n        \/\/ Common “active media” patterns across themes\n\n        const activeWrappers = Array.from(root.querySelectorAll(\n\n          '[aria-current=\"true\"], .is-selected, .is-active, .active, [data-active=\"true\"], [data-selected=\"true\"]'\n\n        ));\n\n\n        activeWrappers.forEach(w =\u003e {\n\n          imgCandidates.push(...Array.from(w.querySelectorAll('img')));\n\n          const pics = Array.from(w.querySelectorAll('picture'));\n\n          pics.forEach(p =\u003e {\n\n            Array.from(p.querySelectorAll('source')).forEach(s =\u003e {\n\n              s.setAttribute('srcset', url);\n\n            });\n\n          });\n\n        });\n\n\n        \/\/ If we didn’t find “active”, grab the largest-looking product media imgs as a last resort\n\n        if(imgCandidates.length === 0){\n\n          imgCandidates.push(...Array.from(root.querySelectorAll('img')).filter(i =\u003e {\n\n            const s = (i.getAttribute('src') || '');\n\n            return s.includes('cdn.shopify.com') \u0026\u0026 !s.includes('logo') \u0026\u0026 !s.includes('icon');\n\n          }).slice(0, 3));\n\n        }\n\n\n        if(imgCandidates.length === 0) return false;\n\n\n        imgCandidates.forEach(img =\u003e {\n\n          img.src = url;\n\n          img.removeAttribute('srcset');\n\n          img.removeAttribute('sizes');\n\n          const oldAlt = img.getAttribute('alt') || 'Magna-Anchor towel';\n\n          const baseAlt = oldAlt.split('—')[0].trim();\n\n          img.setAttribute('alt', baseAlt + ' — ' + finishLabel);\n\n        });\n\n\n        return true;\n\n      }\n\n\n      function selectFinish(finishLabel){\n\n        const url = finishToImage[finishLabel];\n\n        if(!url){\n\n          setSelectedSwatch(finishLabel);\n\n          setStatus('Selected: ' + finishLabel + '. No image mapped.');\n\n          return;\n\n        }\n\n\n        \/\/ 1) Sync Shopify variant (real backend variant)\n\n        if(variantSelect){\n\n          const opt = findOptionByFinish(finishLabel);\n\n          if(opt){\n\n            variantSelect.value = opt.value;\n\n            variantSelect.dispatchEvent(new Event('change', { bubbles:true }));\n\n          }\n\n        }\n\n\n        \/\/ 2) Force gallery switch (theme-proof)\n\n        setSelectedSwatch(finishLabel);\n\n\n        \/\/ Try click-based switch first (best)\n\n        const clicked = clickGalleryItemByUrl(url);\n\n\n        \/\/ Give theme a moment; if nothing changes, fallback brute swap\n\n        setTimeout(() =\u003e {\n\n          if(clicked){\n\n            setStatus('Selected: ' + finishLabel + '.');\n\n            return;\n\n          }\n\n          const ok = bruteSwapActiveMedia(url, finishLabel);\n\n          setStatus(ok\n\n            ? ('Selected: ' + finishLabel + '.')\n\n            : ('Selected: ' + finishLabel + '. Gallery element not found in this theme.')\n\n          );\n\n        }, 80);\n\n      }\n\n\n      swatches.forEach(btn =\u003e btn.addEventListener('click', () =\u003e selectFinish(btn.dataset.afFinish)));\n\n\n      if(atcBtn){\n\n        atcBtn.addEventListener('click', () =\u003e {\n\n          if(nativeAtc){ nativeAtc.click(); }\n\n          else {\n\n            setStatus('Theme Add to Cart button not found. Use the main Add to Cart above.');\n\n            window.scrollTo({ top: 0, behavior: 'smooth' });\n\n          }\n\n        });\n\n      }\n\n\n      setStatus('Pick a finish. I’ll sync the variant and force the gallery to switch.');\n\n    })();\n\n    \u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"Aiming Fluid Golf","offers":[{"title":"Blue","offer_id":51392263356712,"sku":"AFMST2-BL","price":29.69,"currency_code":"USD","in_stock":true},{"title":"Black","offer_id":51392263389480,"sku":"AFMST2-B","price":29.69,"currency_code":"USD","in_stock":true},{"title":"Gunmetal Grey","offer_id":51392263422248,"sku":"MGTS-GG","price":29.69,"currency_code":"USD","in_stock":true},{"title":"Grey","offer_id":51392263455016,"sku":"AFMST2-G","price":29.69,"currency_code":"USD","in_stock":true},{"title":"Green","offer_id":51392263487784,"sku":"AFMST2-GR","price":29.69,"currency_code":"USD","in_stock":true},{"title":"Birdie Blue","offer_id":51392263553320,"sku":"AFMST2-BBL","price":29.69,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0854\/2152\/3240\/files\/2026_main_image.jpg?v=1778891225","url":"https:\/\/www.golfleaguellc.com\/products\/magna-anchor%e2%84%a2-magnetic-golf-towel-stubby-16-24","provider":"GOLF LEAGUE","version":"1.0","type":"link"}