{"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\n\n   AF APPLE-STYLE DARK MODE — STUBBY PDP (FINAL)\n\n\n   LOCKED OPTION A PALETTE\n\n\n   ========================= *\/\n\n\n:root {\n\n\n  \/* Locked Palette *\/\n\n\n  --af-graphite: #0B0D0B;\n\n\n  --af-tech: #9FB8A0;\n\n\n  --af-olive: #1A2517;\n\n\n  --af-signal: #22C55E;\n\n\n\n  \/* Functional Mappings *\/\n\n\n  --bg-color: var(--af-graphite);\n\n\n  --card-bg: #0B0D0B;\n\n\n  --text-main: #f5f5f7;\n\n\n  --text-muted: #A3A3A8;\n\n\n  \n\n\n  \/* Borders \u0026 Shadows *\/\n\n\n  --border: rgba(159, 184, 160, 0.2); \n\n\n  --border-soft: rgba(159, 184, 160, 0.1);\n\n\n  --shadow: 0 20px 40px rgba(0,0,0,0.6);\n\n\n  --glow: 0 0 20px rgba(159, 184, 160, 0.15); \/* Premium lift *\/\n\n\n}\n\n\n\n.af-luxury-page {\n\n\n  background: var(--bg-color);\n\n\n  color: var(--text-main);\n\n\n  padding: 60px 20px;\n\n\n  font-family: -apple-system, BlinkMacSystemFont, \"SF Pro Text\", \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n\n\n  line-height: 1.6;\n\n\n  -webkit-font-smoothing: antialiased;\n\n\n}\n\n\n.af-luxury-page * { box-sizing: border-box; }\n\n\n.af-container { max-width: 1000px; margin: 0 auto; }\n\n\n\n\/* HEADER \u0026 TYPOGRAPHY *\/\n\n\n.af-eyebrow {\n\n\n  color: var(--af-tech);\n\n\n  letter-spacing: .1em;\n\n\n  text-transform: uppercase;\n\n\n  font-weight: 800;\n\n\n  font-size: .75rem;\n\n\n  margin: 0 0 16px;\n\n\n  text-align: center;\n\n\n}\n\n\n.af-hero {\n\n\n  display: flex;\n\n\n  flex-direction: column;\n\n\n  align-items: center;\n\n\n  margin-bottom: 32px;\n\n\n}\n\n\n.af-hero h1 {\n\n\n  margin: 0 0 14px;\n\n\n  font-weight: 800;\n\n\n  line-height: 1.05;\n\n\n  font-size: clamp(2.5rem, 5vw, 4rem);\n\n\n  letter-spacing: -0.02em;\n\n\n  background: linear-gradient(180deg, #fff, #a1a1aa);\n\n\n  -webkit-background-clip: text;\n\n\n  -webkit-text-fill-color: transparent;\n\n\n  text-align: center;\n\n\n}\n\n\n.af-lead {\n\n\n  font-size: 1.3rem;\n\n\n  color: #fff;\n\n\n  font-weight: 750;\n\n\n  text-align: center;\n\n\n  margin: 12px 0 10px;\n\n\n}\n\n\n.af-lede {\n\n\n  margin: 0 auto 0;\n\n\n  max-width: 760px;\n\n\n  color: var(--text-muted);\n\n\n  font-size: 1.1rem;\n\n\n  text-align: center;\n\n\n  line-height: 1.6;\n\n\n}\n\n\n\n\/* CARDS *\/\n\n\n.af-card {\n\n\n  background: rgba(255,255,255,0.02);\n\n\n  border-radius: 24px;\n\n\n  padding: 32px;\n\n\n  margin: 24px 0;\n\n\n  border: 1px solid var(--border);\n\n\n  box-shadow: var(--shadow);\n\n\n}\n\n\n.af-card--tech {\n\n\n  background: linear-gradient(180deg, rgba(159,184,160,0.05), var(--af-graphite));\n\n\n  border: 1px solid rgba(159,184,160,0.25);\n\n\n}\n\n\n.af-card--glow {\n\n\n  box-shadow: var(--glow);\n\n\n  border-color: rgba(159,184,160,0.4);\n\n\n}\n\n\n.af-h2 {\n\n\n  margin: 0 0 12px;\n\n\n  font-size: 1.8rem;\n\n\n  line-height: 1.2;\n\n\n  font-weight: 800;\n\n\n  color: #fff;\n\n\n  letter-spacing: -0.01em;\n\n\n}\n\n\n.af-muted {\n\n\n  color: var(--text-muted);\n\n\n  font-size: 1.05rem;\n\n\n  margin: 0 0 1rem;\n\n\n}\n\n\n\n\/* VALUE SNAPSHOT MODULE (NEW) *\/\n\n\n.af-value-stack {\n\n\n  display: flex;\n\n\n  flex-direction: column;\n\n\n  gap: 16px;\n\n\n}\n\n\n.af-value-row {\n\n\n  display: flex;\n\n\n  align-items: flex-start;\n\n\n  gap: 16px;\n\n\n  padding: 12px 0;\n\n\n  border-bottom: 1px solid var(--border-soft);\n\n\n}\n\n\n.af-value-row:last-child { border-bottom: none; }\n\n\n.af-value-icon {\n\n\n  color: var(--af-tech);\n\n\n  font-size: 1.4rem;\n\n\n  line-height: 1;\n\n\n  flex-shrink: 0;\n\n\n  margin-top: 2px;\n\n\n}\n\n\n.af-value-content strong {\n\n\n  display: block;\n\n\n  color: #fff;\n\n\n  font-size: 1.05rem;\n\n\n  font-weight: 700;\n\n\n  margin-bottom: 4px;\n\n\n}\n\n\n.af-value-content span {\n\n\n  color: var(--text-muted);\n\n\n  font-size: 0.95rem;\n\n\n  line-height: 1.4;\n\n\n}\n\n\n\n\/* IMAGE WRAPPERS *\/\n\n\n.af-img-wrap {\n\n\n  margin: 0 0 16px 0;\n\n\n  border-radius: 20px;\n\n\n  overflow: hidden;\n\n\n  border: 1px solid var(--border-soft);\n\n\n  background: #000;\n\n\n  position: relative;\n\n\n}\n\n\n.af-img { display: block; width: 100%; height: auto; }\n\n\nvideo.af-img { border-radius: 20px; width: 100%; height: auto; }\n\n\n\n\/* BUTTONS *\/\n\n\n.af-btn-wrap {\n\n\n  display: flex;\n\n\n  justify-content: center;\n\n\n  flex-wrap: wrap;\n\n\n  gap: 12px;\n\n\n  margin-top: 20px;\n\n\n  align-items: center;\n\n\n}\n\n\n.af-btn {\n\n\n  display: inline-flex;\n\n\n  align-items: center;\n\n\n  justify-content: center;\n\n\n  padding: 16px 32px;\n\n\n  border-radius: 999px;\n\n\n  font-weight: 750;\n\n\n  text-decoration: none;\n\n\n  font-size: 1.05rem;\n\n\n  transition: all .2s ease;\n\n\n  border: 0;\n\n\n  cursor: pointer;\n\n\n  min-height: 52px;\n\n\n}\n\n\n.af-btn-primary {\n\n\n  background: var(--af-signal);\n\n\n  color: #000;\n\n\n  border: 1px solid var(--af-signal);\n\n\n  font-weight: 900;\n\n\n  box-shadow: 0 4px 15px rgba(34, 197, 94, 0.4);\n\n\n}\n\n\n.af-btn-primary:hover { filter: brightness(1.1); transform: translateY(-2px); }\n\n\n.af-btn-secondary {\n\n\n  background: rgba(255,255,255,0.03);\n\n\n  color: #fff;\n\n\n  border: 1px solid rgba(255,255,255,0.15);\n\n\n  font-size: 1rem;\n\n\n}\n\n\n.af-btn-secondary:hover { background: rgba(255,255,255,0.08); border-color: #fff; }\n\n\n\n\/* INTERACTION MODULE *\/\n\n\n.af-hero-interaction {\n\n\n  background: rgba(255,255,255,0.03);\n\n\n  border: 1px solid var(--af-tech);\n\n\n  border-radius: 28px;\n\n\n  padding: 24px;\n\n\n  margin: 0 auto;\n\n\n  max-width: 580px;\n\n\n  width: 100%;\n\n\n  backdrop-filter: blur(10px);\n\n\n  text-align: center;\n\n\n  \/* Glow applied via class in HTML, or default shadow here *\/\n\n\n  box-shadow: 0 20px 50px rgba(0,0,0,0.5);\n\n\n}\n\n\n.af-interaction-label {\n\n\n  font-size: .85rem;\n\n\n  text-transform: uppercase;\n\n\n  letter-spacing: .08em;\n\n\n  color: var(--af-tech);\n\n\n  margin-bottom: 12px;\n\n\n  font-weight: 800;\n\n\n  display: block;\n\n\n}\n\n\n.af-swatch-row {\n\n\n  display: flex;\n\n\n  justify-content: center;\n\n\n  gap: 14px;\n\n\n  margin-bottom: 16px;\n\n\n  flex-wrap: wrap;\n\n\n}\n\n\n.af-swatch {\n\n\n  width: 36px; height: 36px; border-radius: 50%;\n\n\n  border: 2px solid rgba(255,255,255,0.2);\n\n\n  cursor: pointer;\n\n\n  transition: transform .2s;\n\n\n  padding: 0;\n\n\n  background: #111;\n\n\n}\n\n\n.af-swatch:hover { transform: scale(1.15); border-color: #fff; }\n\n\n.af-swatch[aria-selected=\"true\"] {\n\n\n  border-color: var(--af-signal);\n\n\n  box-shadow: 0 0 0 4px rgba(34, 197, 94, 0.25);\n\n\n  transform: scale(1.15);\n\n\n}\n\n\n\/* Swatch Colors *\/\n\n\n.af-swatch[data-af-finish=\"Black\"], .af-swatch[data-af-bundle-finish=\"Black\"], .af-swatch[data-af-finish-both-stubby=\"Black\"], .af-swatch[data-af-finish-40=\"Black\"], .af-swatch[data-af-finish-both-40=\"Black\"] {background:#111;}\n\n\n.af-swatch[data-af-finish=\"Blue\"], .af-swatch[data-af-bundle-finish=\"Blue\"], .af-swatch[data-af-finish-both-stubby=\"Blue\"], .af-swatch[data-af-finish-40=\"Blue\"], .af-swatch[data-af-finish-both-40=\"Blue\"] {background:#1e3a8a;}\n\n\n.af-swatch[data-af-finish=\"Augusta Green\"], .af-swatch[data-af-bundle-finish=\"Augusta Green\"], .af-swatch[data-af-finish-both-stubby=\"Augusta Green\"], .af-swatch[data-af-finish-40=\"Green\"], .af-swatch[data-af-finish-both-40=\"Green\"] {background:#14532d;}\n\n\n.af-swatch[data-af-finish=\"Birdie Blue\"], .af-swatch[data-af-bundle-finish=\"Birdie Blue\"], .af-swatch[data-af-finish-both-stubby=\"Birdie Blue\"] {background:#0ea5e9;}\n\n\n.af-swatch[data-af-finish=\"Grey\"], .af-swatch[data-af-bundle-finish=\"Grey\"], .af-swatch[data-af-finish-both-stubby=\"Grey\"], .af-swatch[data-af-finish-40=\"Grey\"], .af-swatch[data-af-finish-both-40=\"Grey\"] {background:#4b5563;}\n\n\n.af-swatch[data-af-finish=\"Gunmetal Grey\"], .af-swatch[data-af-bundle-finish=\"Gunmetal Grey\"], .af-swatch[data-af-finish-both-stubby=\"Gunmetal Grey\"] {background:#374151;}\n\n\n.af-swatch[data-af-finish=\"Red\"], .af-swatch[data-af-bundle-finish=\"Red\"], .af-swatch[data-af-finish-both-stubby=\"Red\"] {background:#991b1b;}\n\n\n\n.af-nudge {\n\n\n  text-align: center;\n\n\n  margin-top: 12px;\n\n\n  color: var(--text-muted);\n\n\n  font-size: .95rem;\n\n\n}\n\n\n\n\/* STEPS *\/\n\n\n.af-steps {\n\n\n  display: grid;\n\n\n  grid-template-columns: 1fr;\n\n\n  gap: 20px;\n\n\n  margin-top: 20px;\n\n\n}\n\n\n.af-step {\n\n\n  background: rgba(159,184,160,0.05);\n\n\n  border: 1px solid rgba(159,184,160,0.2);\n\n\n  border-radius: 20px;\n\n\n  padding: 24px;\n\n\n}\n\n\n.af-step h3 {\n\n\n  margin: 16px 0 8px 0;\n\n\n  font-size: 1.3rem;\n\n\n  font-weight: 900;\n\n\n  color: var(--af-signal);\n\n\n  text-transform: uppercase;\n\n\n  letter-spacing: 0.02em;\n\n\n}\n\n\n.af-step p {\n\n\n  margin: 0;\n\n\n  color: #e5e7eb;\n\n\n  font-size: 1.1rem;\n\n\n  line-height: 1.5;\n\n\n}\n\n\n\n\/* DRAWERS *\/\n\n\n.af-drawer {\n\n\n  border-top: 1px solid var(--border);\n\n\n  padding: 16px 0;\n\n\n  margin-top: 16px;\n\n\n}\n\n\n.af-drawer summary {\n\n\n  cursor: pointer;\n\n\n  font-weight: 700;\n\n\n  color: #fff;\n\n\n  font-size: 1.05rem;\n\n\n  list-style: none;\n\n\n  display: flex;\n\n\n  justify-content: space-between;\n\n\n  align-items: center;\n\n\n  padding: 4px 0;\n\n\n}\n\n\n.af-drawer summary::-webkit-details-marker { display: none; }\n\n\n.af-drawer summary::after { content: \"+\"; font-weight: 400; color: var(--text-muted); font-size: 1.5rem; }\n\n\n.af-drawer[open] summary::after { content: \"−\"; }\n\n\n.af-drawer .af-drawer-body { margin-top: 12px; color: var(--text-muted); line-height: 1.6; }\n\n\n\n\/* LISTS *\/\n\n\n.af-bullets { margin: 0; padding-left: 1.1rem; color: #e5e7eb; }\n\n\n.af-bullets li { margin: .5rem 0; }\n\n\n.af-bullets strong { color: #fff; }\n\n\n  \n\n\n\/* TABLES \u0026 GRIDS *\/\n\n\n.af-compare-table {\n\n\n  width: 100%;\n\n\n  border-collapse: separate;\n\n\n  border-spacing: 0;\n\n\n  margin: 20px 0;\n\n\n  font-size: 1rem;\n\n\n  color: var(--text-main);\n\n\n  border: 1px solid var(--border);\n\n\n  border-radius: 12px;\n\n\n  overflow: hidden;\n\n\n}\n\n\n.af-compare-table th, .af-compare-table td { padding: 14px 16px; text-align: left; border-bottom: 1px solid var(--border-soft); }\n\n\n.af-compare-table th { background: rgba(159,184,160,0.1); color: #fff; font-weight: 700; }\n\n\n.af-compare-table td:first-child { font-weight: 700; color: var(--af-tech); width: 35%; }\n\n\n.af-compare-table tr:last-child td { border-bottom: none; }\n\n\n\n.af-grid-2 { display: grid; grid-template-columns: 1fr; gap: 24px; }\n\n\n@media (min-width: 768px) {\n\n\n  .af-grid-2 { grid-template-columns: 1fr 1fr; }\n\n\n  .af-bundle-preview { grid-template-columns: 1fr 1fr !important; }\n\n\n}\n\n\n@media (max-width: 767px) {\n\n\n  .af-luxury-page { padding: 40px 16px; }\n\n\n  .af-card { padding: 24px; }\n\n\n  .af-btn { width: 100%; }\n\n\n}\n\n\n\n\/* STANDARDS *\/\n\n\n.af-standards-citation {\n\n\n  margin: 40px 0 0 0;\n\n\n  padding: 24px;\n\n\n  background: var(--af-olive);\n\n\n  border: 1px solid rgba(159,184,160,0.3);\n\n\n  border-radius: 20px;\n\n\n}\n\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\u003c\/p\u003e\n\u003ch1\u003eMagna-Anchor™ Stubby\u003c\/h1\u003e\n\u003cp class=\"af-lead\"\u003eClean contact. Calm decisions.\u003c\/p\u003e\n\u003cp class=\"af-lede\" style=\"margin-bottom: 24px;\"\u003eThe compact magnetic system that actually stays on your bag, not the ground.\u003c\/p\u003e\n\u003cdiv data-af-variant-sync=\"\" class=\"af-hero-interaction af-card--glow\"\u003e\n\u003cdiv class=\"af-img-wrap\"\u003e\u003cimg class=\"af-img\" data-af-hero-img=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/2026_Amazon_Main_Image.jpg?v=1769714394\" alt=\"Magna-Anchor Magnetic Towel — Stubby\" loading=\"eager\"\u003e\u003c\/div\u003e\n\u003cspan class=\"af-interaction-label\"\u003eSelect Finish\u003c\/span\u003e\n\u003cdiv class=\"af-swatch-row\" role=\"listbox\" aria-label=\"Choose finish\"\u003e\n\u003cbutton class=\"af-swatch\" type=\"button\" data-af-finish=\"Black\" aria-label=\"Black\"\u003e\u003c\/button\u003e \u003cbutton class=\"af-swatch\" type=\"button\" data-af-finish=\"Blue\" aria-label=\"Blue\"\u003e\u003c\/button\u003e \u003cbutton class=\"af-swatch\" type=\"button\" data-af-finish=\"Augusta Green\" aria-label=\"Augusta Green\"\u003e\u003c\/button\u003e \u003cbutton class=\"af-swatch\" type=\"button\" data-af-finish=\"Birdie Blue\" aria-label=\"Birdie Blue\"\u003e\u003c\/button\u003e \u003cbutton class=\"af-swatch\" type=\"button\" data-af-finish=\"Grey\" aria-label=\"Grey\"\u003e\u003c\/button\u003e \u003cbutton class=\"af-swatch\" type=\"button\" data-af-finish=\"Gunmetal Grey\" aria-label=\"Gunmetal Grey\"\u003e\u003c\/button\u003e \u003cbutton class=\"af-swatch\" type=\"button\" data-af-finish=\"Red\" aria-label=\"Red\"\u003e\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"af-nudge\" data-af-status=\"\"\u003ePick a finish to see it.\u003c\/div\u003e\n\u003cdiv class=\"af-btn-wrap\"\u003e\n\u003cbutton class=\"af-btn af-btn-primary\" type=\"button\" data-af-atc=\"\"\u003eAdd Stubby to Cart\u003c\/button\u003e \u003ca class=\"af-btn af-btn-secondary\" href=\"#workflow\"\u003eSee the Routine\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"af-card af-card--glow\" style=\"margin-top: 32px; padding: 24px;\"\u003e\n\u003cdiv class=\"af-value-stack\"\u003e\n\u003cdiv class=\"af-value-row\"\u003e\n\u003cdiv class=\"af-value-icon\"\u003e◉\u003c\/div\u003e\n\u003cdiv class=\"af-value-content\"\u003e\n\u003cstrong\u003eAlways where you expect it\u003c\/strong\u003e \u003cspan\u003eNever search for your towel again.\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"af-value-row\"\u003e\n\u003cdiv class=\"af-value-icon\"\u003e◉\u003c\/div\u003e\n\u003cdiv class=\"af-value-content\"\u003e\n\u003cstrong\u003eClean grooves. Better contact.\u003c\/strong\u003e \u003cspan\u003ePredictable spin starts here.\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"af-value-row\"\u003e\n\u003cdiv class=\"af-value-icon\"\u003e◉\u003c\/div\u003e\n\u003cdiv class=\"af-value-content\"\u003e\n\u003cstrong\u003eStays clean all round\u003c\/strong\u003e \u003cspan\u003eCompact size stays off the ground.\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/header\u003e\n\u003csection class=\"af-card af-card--tech\" style=\"padding: 24px;\"\u003e\n\u003ch2 class=\"af-h2\" style=\"font-size: 1.4rem;\"\u003eWatch a golfer test it\u003c\/h2\u003e\n\u003cp class=\"af-muted\" style=\"font-size: 1rem;\"\u003eReal speed. Real routine.\u003c\/p\u003e\n\u003cdiv class=\"af-img-wrap\"\u003e\u003cvideo class=\"af-img\" controls=\"controls\" playsinline=\"\" preload=\"metadata\" poster=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/2026_Amazon_Main_Image.jpg?v=1769714394\"\u003e\n\n\n      \u003csource src=\"https:\/\/cdn.shopify.com\/videos\/c\/o\/v\/01bd39c9ab2c44e6b5036037fc35b895.mp4\" type=\"video\/mp4\"\u003e\u003c\/video\u003e\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection id=\"workflow\" class=\"af-card af-card--tech\"\u003e\n\u003ch2 class=\"af-h2\"\u003eScrub → Wash → Dry\u003c\/h2\u003e\n\u003cp class=\"af-muted\"\u003eThree steps. No thinking. Clean gear without slowing the round.\u003c\/p\u003e\n\u003cdiv class=\"af-steps\" aria-label=\"Scrub Wash Dry steps\"\u003e\n\u003cdiv class=\"af-step\"\u003e\n\u003cdiv class=\"af-img-wrap\"\u003e\u003cimg loading=\"lazy\" class=\"af-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/Gemini_Generated_Image_x5yyywx5yyywx5yy.png?v=1770299282\" alt=\"Scrubbing club\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"af-img-wrap\"\u003e\u003cvideo class=\"af-img\" controls=\"controls\" playsinline=\"\" preload=\"metadata\" poster=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/Gemini_Generated_Image_x5yyywx5yyywx5yy.png?v=1770299282\"\u003e\u003csource src=\"https:\/\/cdn.shopify.com\/videos\/c\/o\/v\/60c75c71626e4e409c45f976ad497ce7.mov\" type=\"video\/quicktime\"\u003e\u003csource src=\"https:\/\/cdn.shopify.com\/videos\/c\/o\/v\/60c75c71626e4e409c45f976ad497ce7.mov\" type=\"video\/mp4\"\u003e\u003c\/source\u003e\u003c\/video\u003e\u003c\/div\u003e\n\u003ch3\u003e1. Scrub\u003c\/h3\u003e\n\u003cp\u003eLoosen what wiping can’t remove. The scrub pad applies focused friction to break packed debris free.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"af-step\"\u003e\n\u003cdiv class=\"af-img-wrap\"\u003e\u003cimg loading=\"lazy\" class=\"af-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/Gemini_Generated_Image_8sxn1w8sxn1w8sxn.png?v=1770299798\" alt=\"Washing ball\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"af-img-wrap\"\u003e\u003cvideo class=\"af-img\" controls=\"controls\" playsinline=\"\" preload=\"metadata\" poster=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/Gemini_Generated_Image_8sxn1w8sxn1w8sxn.png?v=1770299798\"\u003e\u003csource src=\"https:\/\/cdn.shopify.com\/videos\/c\/o\/v\/40052d60ea544d01bf589309f85e13f3.mov\" type=\"video\/quicktime\"\u003e\u003csource src=\"https:\/\/cdn.shopify.com\/videos\/c\/o\/v\/40052d60ea544d01bf589309f85e13f3.mov\" type=\"video\/mp4\"\u003e\u003c\/source\u003e\u003c\/video\u003e\u003c\/div\u003e\n\u003ch3\u003e2. Wash\u003c\/h3\u003e\n\u003cp\u003eRinse grime away. The wet pocket keeps mud off your grips and hands.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"af-step\"\u003e\n\u003cdiv class=\"af-img-wrap\"\u003e\u003cimg loading=\"lazy\" class=\"af-img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/Gemini_Generated_Image_wqabnrwqabnrwqab.jpg?v=1770300553\" alt=\"Drying ball\"\u003e\u003c\/div\u003e\n\u003ch3\u003e3. Dry\u003c\/h3\u003e\n\u003cp\u003eRestore clean contact. A dry ball flies true and rolls true.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection id=\"instant-access\" class=\"af-card af-card--tech\" style=\"margin-top: 40px;\"\u003e\n\u003ch2 class=\"af-h2\"\u003eMake it automatic: Instant Access Upgrade\u003c\/h2\u003e\n\u003cp class=\"af-muted\"\u003eStop chasing your towel. Give it a home.\u003c\/p\u003e\n\u003cdiv class=\"af-img-wrap\"\u003e\n\u003cdiv class=\"af-bundle-preview\" style=\"display: grid; grid-template-columns: 1fr; gap: 12px;\"\u003e\n\u003cimg loading=\"lazy\" class=\"af-img\" data-af-bundle-pad-img=\"\" alt=\"Magnetic Landing Pad preview\"\u003e \u003cimg loading=\"lazy\" class=\"af-img\" data-af-bundle-stubby-img=\"\" alt=\"Stubby towel bundle preview\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/2026_Amazon_Main_Image.jpg?v=1769714394\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cspan class=\"af-interaction-label\"\u003ePick Bundle Finish\u003c\/span\u003e\n\u003cdiv aria-label=\"Choose finish for bundle\" role=\"listbox\" class=\"af-swatch-row\" data-af-bundle-variant-sync=\"\"\u003e\n\u003cbutton class=\"af-swatch\" data-af-bundle-finish=\"Black\" type=\"button\"\u003e\u003c\/button\u003e \u003cbutton class=\"af-swatch\" data-af-bundle-finish=\"Blue\" type=\"button\"\u003e\u003c\/button\u003e \u003cbutton class=\"af-swatch\" data-af-bundle-finish=\"Augusta Green\" type=\"button\"\u003e\u003c\/button\u003e \u003cbutton class=\"af-swatch\" data-af-bundle-finish=\"Birdie Blue\" type=\"button\"\u003e\u003c\/button\u003e \u003cbutton class=\"af-swatch\" data-af-bundle-finish=\"Grey\" type=\"button\"\u003e\u003c\/button\u003e \u003cbutton class=\"af-swatch\" data-af-bundle-finish=\"Gunmetal Grey\" type=\"button\"\u003e\u003c\/button\u003e \u003cbutton class=\"af-swatch\" data-af-bundle-finish=\"Red\" type=\"button\"\u003e\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"af-btn-wrap\"\u003e\n\u003cbutton data-af-atc-bundle=\"\" class=\"af-btn af-btn-primary\" type=\"button\"\u003eAdd Stubby + Landing Pad\u003c\/button\u003e \u003ca href=\"\/products\/magnetic-landing-pad\" class=\"af-btn af-btn-secondary\"\u003eView Pad Details\u003c\/a\u003e\n\u003c\/div\u003e\n\u003cdetails class=\"af-drawer\" style=\"margin-top: 24px;\"\u003e\n\u003csummary\u003eWhy access is the multiplier\u003c\/summary\u003e\n\u003cdiv class=\"af-drawer-body\"\u003eAccess friction kills routines. If the towel doesn’t re-dock to the same spot every time, you stop using it. The Landing Pad creates a guaranteed, steel-core docking point so Stubby is always where your hand expects it.\u003c\/div\u003e\n\u003c\/details\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 reduces drag risk.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFast players:\u003c\/strong\u003e quickest clean-and-dock routine.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMinimalists:\u003c\/strong\u003e function without chaos.\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 need a huge wet zone, choose The 40.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eClip lovers:\u003c\/strong\u003e if you prefer dangly towels, this system isn't for you.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"af-card\"\u003e\n\u003ch2 class=\"af-h2\"\u003eProof \u0026amp; Method\u003c\/h2\u003e\n\u003cdetails class=\"af-drawer\"\u003e\n\u003csummary\u003eWhat we test\u003c\/summary\u003e\n\u003cdiv class=\"af-drawer-body\"\u003eWe test magnet strength (retention), scrub pad effectiveness (cleaning), ease of access (usability), and stitching quality (durability). Reliability beats marketing hype.\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"af-drawer\"\u003e\n\u003csummary\u003eWhy rinse beats smear\u003c\/summary\u003e\n\u003cdiv class=\"af-drawer-body\"\u003eWiping dirt on a dry towel just moves it around. The wet wash pocket rinses debris off the club so you don't transfer mud to your hands or grips.\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"af-drawer\"\u003e\n\u003csummary\u003eWhy docking beats clipping\u003c\/summary\u003e\n\u003cdiv class=\"af-drawer-body\"\u003eClips require two hands or awkward fumbling. Magnetic docking is instant and one-handed, removing friction from your routine so you actually use the towel.\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"af-drawer\"\u003e\n\u003csummary\u003eCare \u0026amp; wash instructions\u003c\/summary\u003e\n\u003cdiv class=\"af-drawer-body\"\u003eWash cold on gentle cycle. Air dry or tumble dry low. Do not use high heat, as it can degrade microfiber performance. Magnet is sealed.\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"af-drawer\"\u003e\n\u003csummary\u003eFull comparison: Stubby vs The 40\u003c\/summary\u003e\n\u003cdiv class=\"af-drawer-body\"\u003e\n\u003ctable class=\"af-compare-table\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth scope=\"col\"\u003eFeature\u003c\/th\u003e\n\u003cth scope=\"col\"\u003eStubby (16×24)\u003c\/th\u003e\n\u003cth scope=\"col\"\u003eThe 40 (16×40)\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth scope=\"row\"\u003eSize\u003c\/th\u003e\n\u003ctd\u003eCompact (16\" x 24\")\u003c\/td\u003e\n\u003ctd\u003eLarge (16\" x 40\")\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth scope=\"row\"\u003eBest for\u003c\/th\u003e\n\u003ctd\u003eWalkers, Fast Routine\u003c\/td\u003e\n\u003ctd\u003eRiders, Muddy Rounds\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth scope=\"row\"\u003eWet\/Dry\u003c\/th\u003e\n\u003ctd\u003eSingle wash pocket\u003c\/td\u003e\n\u003ctd\u003eDual wash pockets\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/section\u003e\n\u003csection id=\"other-options\" style=\"display: block;\"\u003e\n\u003cdiv class=\"af-card\"\u003e\n\u003ch2 class=\"af-h2\"\u003eNeed more towel?\u003c\/h2\u003e\n\u003cp class=\"af-muted\"\u003eMeet \"The 40\" (16x40). Best for riders and mud.\u003c\/p\u003e\n\u003cdiv class=\"af-hero-interaction\" data-af-the40-sync=\"\"\u003e\n\u003cdiv class=\"af-img-wrap\"\u003e\u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/mAIN_IMAGE_UPDATE_28.jpg?v=1767904750\" data-af-the40-img=\"\" class=\"af-img\" alt=\"The 40 Magnetic Towel\"\u003e\u003c\/div\u003e\n\u003cspan class=\"af-interaction-label\"\u003eFinish\u003c\/span\u003e\n\u003cdiv class=\"af-swatch-row\" role=\"listbox\"\u003e\n\u003cbutton class=\"af-swatch\" data-af-finish-40=\"Black\"\u003e\u003c\/button\u003e \u003cbutton class=\"af-swatch\" data-af-finish-40=\"Blue\"\u003e\u003c\/button\u003e \u003cbutton class=\"af-swatch\" data-af-finish-40=\"Green\"\u003e\u003c\/button\u003e \u003cbutton class=\"af-swatch\" data-af-finish-40=\"Grey\"\u003e\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"af-btn-wrap\"\u003e\u003cbutton type=\"button\" class=\"af-btn af-btn-secondary\" data-af-atc-40=\"\"\u003eAdd The 40 Bundle\u003c\/button\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"af-card\"\u003e\n\u003ch2 class=\"af-h2\"\u003eRun both?\u003c\/h2\u003e\n\u003cp class=\"af-muted\"\u003eStubby for dirt. The 40 for hands\/grips.\u003c\/p\u003e\n\u003cdiv style=\"margin-top: 14px;\"\u003e\n\u003cdiv style=\"margin-bottom: 24px;\" data-af-both-stubby-sync=\"\"\u003e\n\u003cdiv class=\"af-img-wrap\"\u003e\u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/2026_Amazon_Main_Image.jpg?v=1769714394\" data-af-both-stubby-img=\"\" class=\"af-img\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"af-swatch-row\"\u003e\n\u003cbutton class=\"af-swatch\" data-af-finish-both-stubby=\"Black\"\u003e\u003c\/button\u003e\u003cbutton class=\"af-swatch\" data-af-finish-both-stubby=\"Blue\"\u003e\u003c\/button\u003e\u003cbutton class=\"af-swatch\" data-af-finish-both-stubby=\"Augusta Green\"\u003e\u003c\/button\u003e\u003cbutton class=\"af-swatch\" data-af-finish-both-stubby=\"Birdie Blue\"\u003e\u003c\/button\u003e\u003cbutton class=\"af-swatch\" data-af-finish-both-stubby=\"Grey\"\u003e\u003c\/button\u003e\u003cbutton class=\"af-swatch\" data-af-finish-both-stubby=\"Gunmetal Grey\"\u003e\u003c\/button\u003e\u003cbutton class=\"af-swatch\" data-af-finish-both-stubby=\"Red\"\u003e\u003c\/button\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-af-both-40-sync=\"\"\u003e\n\u003cdiv class=\"af-img-wrap\"\u003e\u003cimg loading=\"lazy\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/mAIN_IMAGE_UPDATE_28.jpg?v=1767904750\" data-af-both-40-img=\"\" class=\"af-img\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"af-swatch-row\"\u003e\n\u003cbutton class=\"af-swatch\" data-af-finish-both-40=\"Black\"\u003e\u003c\/button\u003e\u003cbutton class=\"af-swatch\" data-af-finish-both-40=\"Blue\"\u003e\u003c\/button\u003e\u003cbutton class=\"af-swatch\" data-af-finish-both-40=\"Green\"\u003e\u003c\/button\u003e\u003cbutton class=\"af-swatch\" data-af-finish-both-40=\"Grey\"\u003e\u003c\/button\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"af-btn-wrap\" style=\"margin-top: 14px;\"\u003e\u003cbutton type=\"button\" class=\"af-btn af-btn-secondary\" data-af-atc-both=\"\"\u003eAdd Both Towels\u003c\/button\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection style=\"text-align: center;\" class=\"af-card\"\u003e\n\u003ch2 class=\"af-h2\"\u003eClean contact. Reliable feedback.\u003c\/h2\u003e\n\u003cp class=\"af-muted\"\u003eStart with Stubby. Upgrade your system.\u003c\/p\u003e\n\u003cdiv class=\"af-btn-wrap\"\u003e\n\u003cbutton class=\"af-btn af-btn-primary\" type=\"button\" data-af-atc=\"\"\u003eAdd Stubby to cart\u003c\/button\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\u003csection class=\"af-standards-citation\"\u003e\n\u003ch3 style=\"margin: 0 0 .75rem 0; font-size: 1.15rem; font-weight: 900; color: #ffffff;\"\u003eEvaluated Against Published Testing Standards\u003c\/h3\u003e\n\u003cp style=\"margin: 0 0 1rem 0; font-size: 1.02rem; color: #d1d5db; line-height: 1.6;\"\u003eThis product is evaluated using Aiming Fluid Golf’s published magnetic gear testing framework.\u003c\/p\u003e\n\u003cdiv class=\"af-btn-wrap\"\u003e\u003ca class=\"af-btn af-btn-secondary\" href=\"\/pages\/our-golf-gear-testing-design-standards\"\u003eView Standards\u003c\/a\u003e\u003c\/div\u003e\n\u003c\/section\u003e\n\u003cscript type=\"application\/ld+json\"\u003e{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@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.\"}},{\"@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.”\"}},{\"@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.\"}},{\"@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.\"}},{\"@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.\"}}]}\u003c\/script\u003e \u003cscript\u003e\n\n\n(function(){\n\n\n  const finishToImage = {\"Red\": \"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/Updated_Main_Image_2.jpg?v=1769714394\",\"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\",\"Gunmetal Grey\": \"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/2026_Main_Image_732dcd44-f78d-458d-bd41-2e148e5b7af7.jpg?v=1769714394\",\"Grey\": \"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/2026_amazon_Main_Image_a81807c5-6f77-44c4-a531-5cf6b47a5bbd.jpg?v=1769714394\",\"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\",\"Blue\": \"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/2026_main_image.jpg?v=1769714394\",\"Black\": \"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/2026_Amazon_Main_Image.jpg?v=1769714394\"};\n\n\n  const finishToImage40 = {\"Green\": \"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/mAIN_IMAGE_UPDATE_29.jpg?v=1767904750\",\"Grey\": \"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/mAIN_IMAGE_UPDATE_26.jpg?v=1764811297\",\"Blue\": \"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/mAIN_IMAGE_UPDATE_27.jpg?v=1767904750\",\"Black\": \"https:\/\/cdn.shopify.com\/s\/files\/1\/0555\/0830\/3915\/files\/mAIN_IMAGE_UPDATE_28.jpg?v=1767904750\"};\n\n\n  const finishToVariantId40 = {\"Green\": 40882080153643,\"Grey\": 40882080088107,\"Blue\": 40882080055339,\"Black\": 40882080022571};\n\n\n  \n\n\n  \/\/ FIXED: Hardcoded Stubby IDs for \"Run Both\" section logic\n\n\n  const finishToVariantIdStubby = {\n\n\n    \"Red\": 40987341815851,\n\n\n    \"Birdie Blue\": 42663187546155,\n\n\n    \"Gunmetal Grey\": 41151790088235,\n\n\n    \"Grey\": 40882080743467,\n\n\n    \"Augusta Green\": 40882080776235,\n\n\n    \"Blue\": 40882080710699,\n\n\n    \"Black\": 40882080677931\n\n\n  };\n\n\n\n  const landingPadHandle = \"magnetic-landing-pad\";\n\n\n  const module = document.querySelector('[data-af-variant-sync]');\n\n\n  if(!module) return;\n\n\n  const status = module.querySelector('[data-af-status]');\n\n\n  const swatches = Array.from(module.querySelectorAll('[data-af-finish]'));\n\n\n  const heroImg = module.querySelector('[data-af-hero-img]');\n\n\n  const towelOnlyBtns = Array.from(document.querySelectorAll('[data-af-atc]'));\n\n\n  const bundleSwatches = Array.from(document.querySelectorAll('[data-af-bundle-finish]'));\n\n\n  const bundleStubbyImg = document.querySelector('[data-af-bundle-stubby-img]');\n\n\n  const bundlePadImg = document.querySelector('[data-af-bundle-pad-img]');\n\n\n  const bundleBtns = Array.from(document.querySelectorAll('[data-af-atc-bundle]'));\n\n\n  const bundleStatus = document.querySelector('[data-af-bundle-status]');\n\n\n  const swatches40 = Array.from(document.querySelectorAll('[data-af-finish-40]'));\n\n\n  const img40 = document.querySelector('[data-af-the40-img]');\n\n\n  const atc40Btn = document.querySelector('[data-af-atc-40]');\n\n\n  const status40 = document.querySelector('[data-af-the40-status]');\n\n\n  const bothStubbySwatches = Array.from(document.querySelectorAll('[data-af-finish-both-stubby]'));\n\n\n  const both40Swatches = Array.from(document.querySelectorAll('[data-af-finish-both-40]'));\n\n\n  const bothStubbyImg = document.querySelector('[data-af-both-stubby-img]');\n\n\n  const both40Img = document.querySelector('[data-af-both-40-img]');\n\n\n  const atcBothBtn = document.querySelector('[data-af-atc-both]');\n\n\n  const statusBoth = document.querySelector('[data-af-both-status]');\n\n\n  let selected40VariantId = finishToVariantId40['Black'];\n\n\n  let selectedBothStubbyFinish = 'Black';\n\n\n  let selectedBoth40VariantId = finishToVariantId40['Black'];\n\n\n  \n\n\n  function setStatus(msg){ if(status) status.textContent = msg; }\n\n\n  function setBundleStatus(msg){ if(bundleStatus) bundleStatus.textContent = msg; }\n\n\n  function norm(s){ return (s||'').toLowerCase().replace(\/\\s+\/g,' ').trim(); }\n\n\n  const variantSelect = document.querySelector('form[action^=\"\/cart\/add\"] select[name=\"id\"]') || document.querySelector('form[action*=\"\/cart\/add\"] select[name=\"id\"]') || document.querySelector('select[name=\"id\"]');\n\n\n  const nativeAtc = document.querySelector('form[action^=\"\/cart\/add\"] button[type=\"submit\"], form[action^=\"\/cart\/add\"] [type=\"submit\"]') || document.querySelector('form[action*=\"\/cart\/add\"] button[type=\"submit\"], form[action*=\"\/cart\/add\"] [type=\"submit\"]') || document.querySelector('button[name=\"add\"], button[type=\"submit\"][name=\"add\"]');\n\n\n  function findOptionByFinish(finishLabel){ if(!variantSelect || !variantSelect.options) return null; const finish = norm(finishLabel); return Array.from(variantSelect.options).find(o =\u003e norm(o.text).includes(finish)) || null; }\n\n\n  function setVariantByFinish(finishLabel){ if(variantSelect){ const opt = findOptionByFinish(finishLabel); if(opt){ variantSelect.value = opt.value; variantSelect.dispatchEvent(new Event('change', { bubbles:true })); return true; } } return false; }\n\n\n  function setImages(finishLabel){ const url = finishToImage[finishLabel]; if(!url) return; if(heroImg){ heroImg.src = url; heroImg.alt = 'Magna-Anchor Towel — Stubby — ' + finishLabel; } if(bundleStubbyImg){ bundleStubbyImg.src = url; bundleStubbyImg.alt = 'Stubby towel bundle preview — ' + finishLabel; } }\n\n\n  function setSelectedSwatches(finishLabel){ swatches.forEach(btn =\u003e btn.setAttribute('aria-selected', btn.dataset.afFinish === finishLabel ? 'true' : 'false')); bundleSwatches.forEach(btn =\u003e btn.setAttribute('aria-selected', btn.dataset.afBundleFinish === finishLabel ? 'true' : 'false')); }\n\n\n  function selectFinish(finishLabel){ setSelectedSwatches(finishLabel); setImages(finishLabel); const found = setVariantByFinish(finishLabel); setStatus(found ? ('Selected: ' + finishLabel) : ('Selected: ' + finishLabel + ' (Variant not found in dropdown)')); }\n\n\n  swatches.forEach(btn =\u003e btn.addEventListener('click', () =\u003e selectFinish(btn.dataset.afFinish)));\n\n\n  bundleSwatches.forEach(btn =\u003e btn.addEventListener('click', () =\u003e selectFinish(btn.dataset.afBundleFinish)));\n\n\n  swatches40.forEach(btn =\u003e btn.addEventListener('click', () =\u003e { const f = btn.getAttribute('data-af-finish-40'); swatches40.forEach(b =\u003e b.setAttribute('aria-selected', b.getAttribute('data-af-finish-40') === f ? 'true' : 'false')); if(img40 \u0026\u0026 finishToImage40[f]) img40.src = finishToImage40[f]; selected40VariantId = finishToVariantId40[f]; }));\n\n\n  bothStubbySwatches.forEach(btn =\u003e btn.addEventListener('click', () =\u003e { const f = btn.getAttribute('data-af-finish-both-stubby'); bothStubbySwatches.forEach(b =\u003e b.setAttribute('aria-selected', b.getAttribute('data-af-finish-both-stubby') === f ? 'true' : 'false')); if(bothStubbyImg \u0026\u0026 finishToImage[f]) bothStubbyImg.src = finishToImage[f]; selectedBothStubbyFinish = f; }));\n\n\n  both40Swatches.forEach(btn =\u003e btn.addEventListener('click', () =\u003e { const f = btn.getAttribute('data-af-finish-both-40'); both40Swatches.forEach(b =\u003e b.setAttribute('aria-selected', b.getAttribute('data-af-finish-both-40') === f ? 'true' : 'false')); if(both40Img \u0026\u0026 finishToImage40[f]) both40Img.src = finishToImage40[f]; selectedBoth40VariantId = finishToVariantId40[f]; }));\n\n\n  function clickNativeAtc(){ if(nativeAtc){ nativeAtc.click(); return true; } return false; }\n\n\n  towelOnlyBtns.forEach(b =\u003e b.addEventListener('click', () =\u003e { if(!clickNativeAtc()){ setStatus('Theme Add to Cart button not found.'); window.scrollTo({ top: 0, behavior: 'smooth' }); } }));\n\n\n  async function addToCart(items, statusEl, fallbackToNative = false){ if(statusEl) statusEl.textContent = \"Adding...\"; try{ const addRes = await fetch('\/cart\/add.js', { method: 'POST', headers: { 'Content-Type':'application\/json', 'Accept':'application\/json' }, credentials: 'same-origin', body: JSON.stringify({ items }) }); if(!addRes.ok) throw new Error('Add failed'); window.location.href = '\/cart'; } catch(e){ if(statusEl) statusEl.textContent = \"Error adding to cart.\"; if(fallbackToNative) clickNativeAtc(); } }\n\n\n  let cachedPadVariantId = null;\n\n\n  async function getLandingPadVariantId(){ if(cachedPadVariantId) return cachedPadVariantId; const res = await fetch('\/products\/' + landingPadHandle + '.js', { credentials: 'same-origin' }); if(!res.ok) throw new Error('Landing Pad product fetch failed.'); const data = await res.json(); const v = (data.variants || []).find(x =\u003e x.available) || (data.variants || [])[0]; if(!v || !v.id) throw new Error('Landing Pad variant not found.'); cachedPadVariantId = v.id; if(bundlePadImg \u0026\u0026 (data.featured_image || (data.images \u0026\u0026 data.images[0]))) bundlePadImg.src = data.featured_image || data.images[0]; return cachedPadVariantId; }\n\n\n  bundleBtns.forEach(b =\u003e b.addEventListener('click', async () =\u003e { if(!variantSelect || !variantSelect.value){ setBundleStatus('Pick a finish first.'); return; } const towelId = Number(variantSelect.value); try { const padId = await getLandingPadVariantId(); addToCart([{ id: towelId, quantity: 1 }, { id: Number(padId), quantity: 1 }], bundleStatus, true); } catch(e){ setBundleStatus(\"Error loading Landing Pad.\"); } }));\n\n\n  \n\n\n  if(atc40Btn){ atc40Btn.addEventListener('click', () =\u003e { if(!selected40VariantId){ if(status40) status40.textContent = \"Select a finish.\"; return; } addToCart([{ id: selected40VariantId, quantity: 1 }], status40, false); }); }\n\n\n  \n\n\n  \/\/ FIXED: ADD BOTH HANDLER USES HARDCODED STUBBY IDs\n\n\n  if(atcBothBtn){ \n\n\n    atcBothBtn.addEventListener('click', () =\u003e { \n\n\n      const stubbyId = finishToVariantIdStubby[selectedBothStubbyFinish];\n\n\n      if(!stubbyId || !selectedBoth40VariantId){ \n\n\n        if(statusBoth) statusBoth.textContent = \"Selection incomplete.\"; return; \n\n\n      } \n\n\n      addToCart([{ id: stubbyId, quantity: 1 }, { id: selectedBoth40VariantId, quantity: 1 }], statusBoth, false); \n\n\n    }); \n\n\n  }\n\n\n  \n\n\n  selectFinish('Black');\n\n\n  getLandingPadVariantId().catch(()=\u003e{});\n\n\n  if(swatches40[0]) swatches40[3].click();\n\n\n  if(bothStubbySwatches[0]) bothStubbySwatches[0].click();\n\n\n  if(both40Swatches[0]) both40Swatches[0].click();\n\n\n})();\n\n\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c!-- AUTHORITY BRIDGE: Why Magnetic Towels Fall Off --\u003e\n\u003csection style=\"margin-top: 40px;\" class=\"af-card\"\u003e\n\u003ch3 style=\"margin-top: 0; color: #fff;\"\u003eWhy Magnetic Towels Fall Off (It’s Physics)\u003c\/h3\u003e\n\u003cp style=\"color: var(--text-muted); max-width: 700px;\"\u003eIf your magnetic golf towel keeps dropping off the cart rail, it’s not bad luck. Round rails create a geometry mismatch, vibration creates shear force, and aluminum frames kill magnetic hold. See the full breakdown.\u003c\/p\u003e\n\u003cdiv class=\"af-btn-wrap\"\u003e\u003ca class=\"af-btn af-btn-secondary\" href=\"\/pages\/magnetic-golf-towel-that-doesnt-fall-off\"\u003e Read the Full Explanation \u003c\/a\u003e\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c\/div\u003e","brand":"Aiming Fluid Golf","offers":[{"title":"Blue","offer_id":48082208555249,"sku":"AFMST2-BL","price":29.69,"currency_code":"USD","in_stock":true},{"title":"Black","offer_id":48082208588017,"sku":"AFMST2-B","price":29.69,"currency_code":"USD","in_stock":true},{"title":"Gunmetal Grey","offer_id":48082208620785,"sku":"MGTS-GG","price":29.69,"currency_code":"USD","in_stock":true},{"title":"Grey","offer_id":48082208653553,"sku":"AFMST2-G","price":29.69,"currency_code":"USD","in_stock":true},{"title":"Green","offer_id":48082208686321,"sku":"AFMST2-GR","price":29.69,"currency_code":"USD","in_stock":true},{"title":"Birdie Blue","offer_id":48082208719089,"sku":"AFMST2-BBL","price":29.69,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0795\/0870\/1425\/files\/2026_main_image.jpg?v=1777045165","url":"https:\/\/golfsurplus.shop\/products\/magna-anchor%e2%84%a2-magnetic-golf-towel-stubby-16-24","provider":"GOLF SURPLUS","version":"1.0","type":"link"}